\documentclass[german,a4paper,oneside]{scrbook}

%----------------------------------------------
% PACKAGE MANAGEMENT
%
\usepackage[latin1]{inputenc} 
\usepackage{times}
\usepackage{fancyhdr}
%\usepackage[all, light]{draftcopy}
%\usepackage{supertabular}
%\usepackage{colortbl}
%\usepackage{epsf}
\usepackage{graphicx}
\usepackage{wasysym}

%----------------------------------------------
% Document DATE and VERSION
% set these values when releasing a new version

\newcommand{\documentdate}{11.11.2002}
\newcommand{\documentversion}{1.5}

%----------------------------------------------
% MACRO DEFINITION
%
%   \Fig{figure}{text}  : creates an mbox around 'figure' and
%                         writes 'text' at the bottom with leading
%                         'Fig. section.figno:'.
%                         Example:
%                         \Fig{\epsfxsize30mm \epsffile{x.eps}}{the x}\\
%   \FigNoEntry{}{}     : same as above, no entry in figures list
%
%   \FigCaption{}       : line with figure caption, setting figure
%                         counter and figures list
%

%****************************************************************************
%       Figure makro for graphics continously enumerated.
%

\newcounter{FigCnt}[chapter]
\newcommand{\Fig}[3]%
{
        \refstepcounter{FigCnt}
        \addcontentsline{lof}{figure}%
                {\protect\numberline{\thechapter.\arabic{FigCnt}}{#2}}
        \mbox{#1}
\nopagebreak

        {Fig. \thechapter.\arabic{FigCnt}: #3}
}

\newcommand{\FigNoEntry}[2]%
{
        \refstepcounter{FigCnt}
        \mbox{#1}
\nopagebreak

        {Fig. \thechapter.\arabic{FigCnt}: #2}
}

\newcommand{\FigCaption}[1]%
{
        \refstepcounter{FigCnt}
        \addcontentsline{lof}{figure}%
                {\protect\numberline{\thechapter.\arabic{FigCnt}}{#1}}

        %{Figure \thechapter.\arabic{FigCnt}: #1}
}


\newcommand{\APIMethod}[1]{{\small\tt #1 }}

%
% END MACRO DEFINITION
%----------------------------------------------


%----------------------------------------------
% DOCUMENT
\begin{document}


%-----------------------------------
% HEADER/FOOTER DEFINITION
% The settings here are for single page documents (only odd page set)

% for some pages latex switches back to pagestyle plain :-(
\fancypagestyle{plain}{%
	\fancyhf{} % clear all header and footer fields
	\fancyhead[LO]{\footnotesize GREAT-ER DSS Model Specification\\ \leftmark}
	\fancyfoot[RO]{\footnotesize Intevation GmbH} % Author
	\fancyfoot[CO]{\footnotesize \thepage/\pageref{theverylastpage}}
	% set the document title for the footer here!
	\fancyfoot[LO]{\footnotesize \documentdate 
	\\great-er\_dss\_model\_specification.tex}
	\renewcommand{\footrulewidth}{0.4pt}
}

% and now define pagestyle fancy
\fancyhead{} % clear all fields
\fancyhead[LO]{\footnotesize GREAT-ER DSS Model Specification\\ \leftmark}

\fancyfoot{}% clear all fields
\fancyfoot[RO]{\footnotesize Intevation GmbH} % Author
\fancyfoot[CO]{\footnotesize \thepage/\pageref{theverylastpage}}
% set the document title for the footer here!
\fancyfoot[LO]{\footnotesize \documentdate 
\\great-er\_dss\_model\_specification.tex}

\renewcommand{\footrulewidth}{0.4pt}

%
% END Header/Footer Definition
%-----------------------------------

%-----------------------------------
% DOCUMENT SETTINGS
\pagestyle{fancy}
\parindent0cm
% \parskip0.2cm 


%-----------------------------------
% TITLE PAGE
{

	 {\tt http://intevation.net}\\[2.0cm] 
}

% reenter the TITLE here
{
	\sffamily\bfseries\Large 
% e.g.:
	GREAT-ER 2.0\\[0.5cm]
	\huge Specification GREAT-ER DSS\\[4cm]

}

% a possible SUBTITLE
%\begin{flushleft}
%	\sffamily\bfseries\large 
%    	by Intevation GmbH\\[0.5cm]
%\end{flushleft}

\thispagestyle{empty}

\vfill

{\sffamily\small
	Intevation GmbH\\
	Georgstrasse 4\\
	49074 Osnabrück\\
	Germany\\
	\\
	Date: \documentdate
}


\newpage

% PAGE 4

\vfill

This document has been designed with \LaTeX{}.

{\scriptsize
\begin{verbatim}
\end{verbatim}
}
%Version: \documentversion \\
%Date: \documentdate

\vfill

\begin{center}Copyright (c) 2003 Intevation GmbH.\end{center}

%Permission is granted to copy, distribute and/or modify this document
%under the terms of the GNU Free Documentation License, Version 1.1
%or any later version published by the Free Software Foundation.
%A copy of the license is included in the section entitled "GNU
%Free Documentation License".

\tableofcontents

\chapter{Konzept}
\label{chap:concept}

Das Modellsystem aus GREAT-ER 2.0 soll um eine Datenschnittstelle erweitert
werden, die es ermöglicht, Daten vom Dateisystem zu lesen. Außerdem muss
das Datenmodell so erweitert werden, dass diffuse Einträge aus dem
Flusseinzugsgebiet in die Simulationen integriert werden können. Die
diffusen Einträge liegen als Werte zu einem mehrere Stretches umfassenden
Catchment vor. Daher muss das Datenmodell zum einen um eine Tabelle
erweitert werden, die diese Daten hält, zum andern muss die Tabelle mit
den Informationen über die einzelnen Stretches so erweitert werden, dass
der Gesamtinput aus dem Catchment auf die Stretches aufgeteilt werden kann.

\section{Programmablauf}

(Anmerkung: Wie genau der Programmablauf funktioniert, konnte ich der
Zeichnung jetzt doch nicht mehr entnehmen. Hier das, was ich erinnere:)

Das eigentliche Modellsystem GREAT-ER ist in ein Python Skript eingebettet,
dass vom DSS aufgerufen wird und mit exit oder return terminiert, wenn die
Simulation abgeschlossen ist. Dieses Skript ist also verantwortlich für das
Einlesen der Simulationsdaten, das Anstoßen des Modellsystem und das
Überprüfen, wann die Simulations terminiert hat.

Zwischenergebnisse der Simulation werden nach os.temp geschrieben (warum
hatten wir das so bestimmt, aus Performancegründen?). Am Ende schreibt das
Wrapperskript die Daten in eine Ergebnisdatei.

Eine konkrete Simulation wird gesteuert über die Datei {\bf simulini.dbf},
die folgenden Attribute enthält (Anmerkung: hierzu muss Frank evtl. noch seinen
Kommentar abgeben. Der weiß letztendlich besser, was das Modellsystem
braucht.)

Alle in der folgenden Tabelle definierten Pfade sind
relativ zu dem Pfad, unter dem simulini.dbf liegt.

\begin{tabular}{|l|p{6cm}|}
\hline
Name & Beschreibung\\\hline
MCSHOTS & Anzahl Monte Carlo Shots \\
%
% FKoo: Wir in GREAT-ER II nicht mehr benötigt.
%  FIRST\_SEG & Erstes Segment (?? Wo steht das in GREAT-ER 2.0? Hier könnt
%  das u.U. noch geändert werden)\\
RIVERNET & Pfad zur river.dbf\\
RIVERCLASS & Pfad zur rivclass.dbf\\
DISCH & Pfad zur disch.dbf\\
DISCHCLASS & Pfad zur dischclass.dbf\\
ENVIRONMENT & Pfad zur environmental.dbf\\
SUBSTANCE & Pfad zur substance.dbf\\
EMISSION & Pfad zur emission.dbf\\
RES\_RIVER & Prad zur res\_river.dbf\\
RES\_DISCH & Pfad zur res\_disch.dbf\\
MODE\_RIVER & River mode\\
MODE\_DISCH	& WWTP mode\\
MODE\_SEWER	& Sewer mode\\\hline
\end{tabular}


\section{Datenmodell}
\label{sec:datenmodell}

\subsection{Eingabedaten für das Simulationssystem}

Folgende Dbase-Tabellen werden benötigt (in Klammern ist jeweils angegeben,
welchen Tabellen und Attributen in der GREAT-ER 2.0 Oracle-Datenbank die
Tabellen entsprechen):

\paragraph{disch.dbf}

Spezifikation wie in der  disch\_tab in der Oracle Datenbank.

\paragraph{dischclass.dbf}

Spezifikation wie in der disch\_class\_tab in der Oracle Datenbank.

\paragraph{emission.dbf}

\begin{center}
\begin{tabular}{|l|l|}
\hline
Name&Type\\\hline
DISCH\_ID&Int (26,0)\\
CONSUMPTION&string (40,0)\\
FLUX\_NONDOM& string(40,0)\\
FLUX\_RUNOFF & string(40,0)\\\hline
\end{tabular}
\end{center}

siehe auch Tabelle market\_tab, gleichnamige Attribute in der Oracle
Datenbank.

\paragraph{input\_diff.dbf}

\begin{center}
\begin{tabular}{|l|l|p{6cm}|}
\hline
Name&Type&Beschreibung\\\hline
PARENT\_CATCH\_ID & Int(26,0) & Schlüssel für ein Parent catchment\\
DIFF\_INPUT & Float (11,4) & Diffuser Input der aus dem Parent catchment in
den Fluss geleitet wird.\\\hline
\end{tabular}
\end{center}



\paragraph{river.dbf}
Spezifikation wie in der  stretch\_tab in der Oracle Datenbank allerdings
ohne catch\_id, down1\_id und down2\_id. Dazu kommen folgenden zwei
Spalten:

\begin{center}
\begin{tabular}{|l|l|p{6cm}|}
\hline
Name&Type & Beschreibung\\\hline
PARENT\_CATCH\_ID & Int(26,0) & Referenzschlüssel zur ID des übergeordneten
Einzugsgebietes, aus dem die diffusen Einträge kommen.\\
PROC\_DIFF\_INPUT & float  (1,4) & Prozentualer Anteil des Diffusen Inputs
aus dem Parent Catchment, der in den Stretch erfolg.\\\hline
\end{tabular}
\end{center}

\paragraph{rivclass.dbf}
Spezifikation wie in der stretch\_class\_tab in der Oracle Datenbank.

Die nun folgenden Tabellen sind alle vom selben Aufbau, nämlich dreispaltig
mit
\begin{center}
\begin{tabular}{|l|l|p{6cm}|}
\hline
Name&Type&Description\\\hline
NAME & string(30,0) & Name des Parameters, entspricht der Field\_id in der
para\_tree\_def\_tab\\
VALUE & string(255,0) & Wert des Parameters als String. Der String besteht
entweder aus einer Zahl oder zwei mit Semikolon getrennten Zahlen.\\
DIST\_TYPE & string(11,0) & Verteilungstyp des Parameters\newline
0 = nicht verteilt\newline
1 = normal verteilt\newline
2 = log-normal verteilt\newline
3 = gleichverteilt\\\hline
\end{tabular}
\end{center}

Folgende Tabellen werden nach diesem Schema angelegt:
\paragraph{environmental.dbf}
mit folgenden Werten für 'NAME':
\begin{verbatim}
COMBINED_SEWER_FLOW
TEMP_RIVER
K_SS_CORR
BOD_CORR
TEMP_AIR
WIND_SPEED
H_AIR
TEMP_SEWAGE
SS_SEWAGE
F_OC_SEWAGE
RO_SS_SEWAGE
PHI_CAP_BOD
PHI_CAP_N
R_PRIM_BOD
R_PRIM_N
R_END
F_OC_ML
RO_SS_ML
PSI
KGA_KLA
ML_SALINITY
CS_Q_DWF
K_AIR
K_WATER
K_SORB_PRIM
K_SORB_ML
K_SORB_SEC
A_PRIM
A_SEC
TEMP_CORR
WIND_CORR
SS_CORR
DO_CORR
\end{verbatim}

(siehe field\_id aus para\_tree\_def\_tab mit block\_id = 'ENV')

\paragraph{substance.dbf}
mit folgenden Werten für 'NAME':
\begin{verbatim}
A_ANAEROBIC
A_ANOXIC
A_AS
A_RIVER
A_SORBED
B
CASNO
DEFAULT_CONSUMPTION
EINECSNO
H
KD_ML
KD_RIVER
KD_SEWAGE
K_AW
K_DEG
K_DO
K_HYDR_A
K_HYDR_B
K_HYDR_N
K_INSTREAM
K_MAX
K_OC
K_OW
K_PHOTO
K_S
K_SED
K_STD_BIODEG
K_VOL
K_WWTP_NONBIO
MM
NAME
PKA
PROTOLYSIS
Q10
R_ACTIVATED_SLUDGE
R_PRIMARY
R_SEWER
R_TRICKLING_FILTER
SYNONYM
VP
WS
Y
\end{verbatim}
(siehe field\_id aus para\_tree\_def\_tab mit block\_id = 'SUBST')

\subsection{Ausgabedaten des Simulationssystems}

\paragraph{res\_disch.dbf}
mit folgenden Werten für 'NAME':
\begin{verbatim}
CSIMINFLUENT
CSIMEFFLUENT
CSIM10
CSIM20
CSIM90

\end{verbatim}
(siehe field\_id aus para\_tree\_def\_tab mit block\_id = 'RES\_DISCH')

Zusätzlich enthält diese Tabelle eine weitere Spalte mit der disch\_id
des zugehörigen Discharges:

\begin{center}
\begin{tabular}{|l|l|}
\hline
Name&Type\\\hline
DISCH\_ID&Int (26,0)\\\hline
\end{tabular}
\end{center}

\paragraph{res\_river.dbf}
mit folgenden Werten für 'NAME':
\begin{verbatim}
CSIMEND
CSIMINTERN
CSIM15
CSIM90
CSIM10
CSIMSTART
\end{verbatim}
(siehe field\_id aus para\_tree\_def\_tab mit block\_id = 'RES\_STRETCH')

Zusätzlich enthält diese Tabelle eine weitere Spalte mit der stretch\_id
des zugehörigen Stretches:
\begin{center}
\begin{tabular}{|l|l|}
\hline
Name&Type\\\hline
STRETCH\_ID&Int (26,0)\\\hline
\end{tabular}
\end{center}

\section{API-Anforderungen}

Folgende API-Funktionen werden benötigt:
\begin{verbatim}
General:
        da_db_connect()
        da_db_disconnect()
        da_db_commit()
		da_get_version()

Session:
        da_get_sess()
        da_update_sess()

Model:
        da_get_mod_det(546, -1)
        da_get_mod

Results:
da_delete_res()
da_insert_res()
da_update_res()
da_insert_res_disch()
da_insert_bulk_res_stretch()

Stretch:
        da_get_stretch()
        da_get_stretch_class()

Disch:
        da_get_disch()
        da_get_disch_class()
        da_get_market()
        da_get_sess_disch()

Substance:
        da_get_subst_det()

Environment:
        da_get_env_det()
\end{verbatim}

Darüber hinaus muss die API erweitert werden um Funktionen, die die
Parent Catchment spezifischen Daten auslesen und sie mit den Stretch-Daten
verbinden und um eine Funktion, die die Ergebnisse in Dbf-Dateien schreibt.

\label{theverylastpage}
\end{document}


