\documentclass[signature]{deltares_report}
\usepackage[titletoc]{appendix}


%-----------------------------------------------

\begin{document}
\pagestyle{empty}
\cleardoublepage
%

\newcommand{\ProgramName}{DAM kernel}
\newcommand{\ProgramNamePlusSpace}{DAM kernel }

\title{\ProgramName}
\subtitle{Technical Design}
\projectnumber{1210702-000}
\client{Deltares - Geo engineering DKS}
\reference{1210702-000-GEO-0004}
\classification{-}

\date{Jan. 2017}
\version{0.1}

\keywords{Dike, safety assessment, design, software, macro stability, piping}

\references{Refer to \autoref{chapter5}.}

\summary{This document contains the technical design for \ProgramName, an application that computes the strength of a complete dikering with respect to several failure mechnanisms, such as macro stability and piping.\\
\\
\textbf{\footnotesize{Samenvatting}} \\
Dit document bevat het technisch ontwerp voor \ProgramName, een User Interface applicatie die een gebruiker in staat stelt om voor een dijktraject berekeningen uit te voeren voor verschillende faalmechanismen, waaronder macrostabiliteit en piping.}

\versioni{0.1}
\datei{Jan 2017}
\authori{Tom The}
\revieweri{John Bokma}
\approvali{Maya Sule}

\status{draft}


\deltarestitle


%------------------------------------------------------------------------------
\chapter{Introduction} \label{chapterIntroduction}

\section{Purpose and scope of this document} \label{sec:1.1}

This document contains the technical design for the standalone program \ProgramName, a software package for the automated calculation of the strength of dikes. DAM was developed by Deltares with and for STOWA for all water authorities.


\section{Other system documents} \label{sec:1.2}

The full documentation on the program comprises the following documents.

\renewcommand{\arraystretch}{1.3}

\begin{table}[H]
%\caption{xxx}
%\label{xxx}
\begin{tabular}{|p{40mm}|p{\textwidth-40mm-24pt}|} \hline
\textbf{Title} & \textbf{Content} \\ \hline
\ProgramNamePlusSpace - Architecture Overall \newline \citep{DAM_ArchitectureOverall} & Description of overall architecture of \ProgramNamePlusSpace and its components. \\ \hline
\ProgramNamePlusSpace- Functional Design \newline  \citep{DAMKernel_FunctionalDesign} & Description of the requirements and functional design. \\ \hline
\ProgramNamePlusSpace - Technical Design (this document) \newline \citep{DAMKernel_TechnicalDesign}& Description of the implementation of the technical design of \ProgramName. \\ \hline
\ProgramNamePlusSpace - Technical documentation \newline \citep{DAMKernel_TechnicalDocumentation} & Description of the arguments and usage of different software components, generated from in-line comment with Doxygen. \\ \hline
\ProgramNamePlusSpace - Test Plan \newline \citep{DAMKernel_TestPlan} & Description of the different regression and acceptation tests, including target values.  \\ \hline
\ProgramNamePlusSpace - Test Report \newline \citep{DAMKernel_TestReport} & Description of the test results (benchmarks and test scripts). \\ \hline
\end{tabular}
\end{table}


%------------------------------------------------------------------------------
\chapter{System Architecture} \label{chapterSystemArchitecture}

\section{DAM components} \label{sec:DamComponents}

\ProgramNamePlusSpace is part of the whole DAM system that contains several components. Please see \autoref{fig-DamComponents} for an overview of the components of DAM.

\begin{figure}[H]
  \begin{center}
    \includegraphics[width=15cm]{pictures/DamComponents.pdf}
  \end{center}

  \caption{\small \ProgramNamePlusSpace and its components.}
  \label{fig-DamComponents}
\end{figure}

The arrows illustrate the dependencies of the components.
 
\section{\ProgramNamePlusSpace components} \label{sec:DamKernelComponents}

The \ProgramNamePlusSpace itself also consists of several modules.
These can be seen in see \autoref{fig-DAMKernelComponents} 

\begin{figure}[H]
  \begin{center}
    \includegraphics[width=18cm]{pictures/DAMKernelComponents.pdf}
  \end{center}

  \caption{\small \ProgramNamePlusSpace and its components.}
  \label{fig-DAMKernelComponents}
\end{figure}

%------------------------------------------------------------------------------
\chapter{Architectural Choices} \label{chapterArchitecturalChoices}

\section{Design principles} \label{sec:DesignPrinciples}
\begin{itemize}
	\item No circular references between objects. When it is really unavoidable, then do it through a generic interface (e.g. IParentObject)
	\item The calculation will support parallellization. So do not use global variables and avoid using statics.	
	\item Failure mechanisms will be connected through wrapper classes, which will share a common IFailureMechanism interface
	\item Surfaceline adapter classes will share a common ISurfacelineAdapter interface
	\item The \ProgramNamePlusSpace must provide progress information of the calculation, so clients of the kernel can show a progressbar
	\item The \ProgramNamePlusSpace must provide the possiblity to abort a calculation within a reasonable timespan.
	\item There should be no User Interface elements shown anytime during the calculation.
\end{itemize}

\section{External libraries and components} \label{sec:ExternalLibrariesAndComponents}
\ProgramNamePlusSpace uses third-party libraries and components. Only open sources and free components, that are free to redistribute are allowed to be used. 

Furthermore \ProgramNamePlusSpace uses the Delta Shell Light (DSL) library, that is developed by Deltares.

\section{DSL} \label{sec:DSL}
The \ProgramNamePlusSpace only uses part (the non-UI modules) of the DSL library
\begin{itemize}
	\item DSL-Core
	\item DSL-Probabilistic
	\item DSL-Geo
\end{itemize}

\section{Other libraries} \label{sec:OtherLibraries}
Other libraries that are used bij the \ProgramNamePlusSpace are:
\begin{itemize}
	\item Math.Net: mathematical library
\end{itemize}




%------------------------------------------------------------------------------
\chapter{Data Model}  \label{chapterDataModel}

\section{Main Data Model} \label{sec:MainDataModel}

The main data model can be seen in see \autoref{fig-DAMKernelDataModelMain} 

\begin{figure}[H]
  \begin{center}
    \includegraphics[width=15cm]{pictures/DAMKernelDataModelMain.pdf}
  \end{center}

  \caption{\small \ProgramNamePlusSpace main data model.}
  \label{fig-DAMKernelDataModelMain}
\end{figure}



\section{Location} \label{sec:Location}

The data model of the Location class can be seen in see \autoref{fig-DAMKernelDataModelLocation} 

\begin{figure}[H]
  \begin{center}
    \includegraphics[width=12cm]{pictures/DAMKernelDataModelLocation.pdf}
  \end{center}

  \caption{\small \ProgramNamePlusSpace kerenl Location object.}
  \label{fig-DAMKernelDataModelLocation}
\end{figure}




%------------------------------------------------------------------------------
\chapter{Data Description}  \label{chapterDataDescription}

\section{Type enumerations} \label{sec:TypeEnumerations}
\subsection{MainMechanismType}
\begin{itemize}
	\item Stability
	\item Piping
\end{itemize}

\section{Main Data Model} \label{sec:MainDataModelDescription}

\subsection{Input}
\paragraph*{DamProjectType}
\paragraph*{DamProjectCalculationSpecification}
\paragraph*{Locations}
\paragraph*{Segments}
\paragraph*{Soils}

\subsection{Output}
\paragraph*{CalculationResults}
\paragraph*{CalculationMessages}

\section{Location} \label{sec:LocationDescription}
\paragraph*{Segment}
\paragraph*{SurfaceLine}
\paragraph*{WaternetOptions}
\paragraph*{DesignOptions}
\paragraph*{SensorData}
\paragraph*{LoadScenario}
\paragraph*{IFailureMechanismOptions}
%------------------------------------------------------------------------------
\chapter{Module Description}  \label{chapterModuleDescription}

\section{\ProgramNamePlusSpace main modules} \label{sec:DamKernelMainModules}

\subsection{Assessment Regional Dikes}
\paragraph*{Regional assessment calculation}
\paragraph*{Regional scenario selector}
\paragraph*{Regional schematization factor calculator}
\subsection{Assessment Primary Dikes}
\paragraph*{Primary assessment calculation}
\subsection{Design Primary Dikes}
\paragraph*{Primary design calculation}
\subsection{NWO Calculation}
\paragraph*{Primary NWO calculation}

\section{\ProgramNamePlusSpace supporting modules} \label{sec:DamKernelSupportingModules}
\subsection{Failure mechanism wrappers}
\paragraph*{Surfaceline Adapter Height}
\paragraph*{Surfaceline Adapter Slope}
\paragraph*{Surfaceline Adapter Shoulder}
\paragraph*{Surfaceline Adapter NWO}
\subsection{Surfaceline adapters}
\subsection{Failure mechanism Calculation Runner}
\subsection{Geometry creator}
\subsection{Waternet creator}
\subsection{Scripting engine}

%------------------------------------------------------------------------------
\chapter{Literature}  \label{chapterLiterature}

\bibliography{../DAM_references/dam_references}



\cleardoublepage

\pagestyle{empty}
\cleardoublepage
\mbox{}

%------------------------------------------------------------------------------
\end{document}
