Index: dam kernel/trunk/doc/UML Diagrams/DAM kernel Components.uxf =================================================================== diff -u -r112 -r114 --- dam kernel/trunk/doc/UML Diagrams/DAM kernel Components.uxf (.../DAM kernel Components.uxf) (revision 112) +++ dam kernel/trunk/doc/UML Diagrams/DAM kernel Components.uxf (.../DAM kernel Components.uxf) (revision 114) @@ -4,8 +4,8 @@ UMLGeneric - 540 - 750 + 480 + 1220 290 80 @@ -17,95 +17,101 @@ UMLGeneric - 740 - 100 + 80 + 560 260 80 symbol=component -Primary design calculation +Primary design calculation +group=5 UMLGeneric - 400 + 440 100 240 80 symbol=component -Primary assessment calculation +Primary assessment calculation +group=4 UMLDeployment - 510 - 690 + 450 + 1160 690 - 480 + 590 Common modules UMLDeployment - 380 + 420 50 290 440 - Assessment Primary Dikes + Assessment Primary Dikes +group=4 UMLGeneric - 40 + 80 200 270 80 symbol=component -Regional scenario selector +Regional scenario selector +group=3 UMLGeneric - 40 + 80 300 270 80 symbol=component -Regional schematization factor calculator +Regional schematization factor calculator +group=3 UMLGeneric - 40 + 80 100 270 80 symbol=component -Regional assessment calculation +Regional assessment calculation +group=3 UMLGeneric - 540 - 850 + 480 + 1320 290 80 @@ -117,8 +123,8 @@ UMLGeneric - 850 - 850 + 790 + 1320 290 80 @@ -130,8 +136,8 @@ UMLGeneric - 540 - 950 + 480 + 1420 290 80 @@ -144,79 +150,85 @@ UMLDeployment 70 - 690 + 1160 350 - 490 + 590 - Failure mechanism wrappers + Failure mechanism wrappers +group=1 UMLDeployment - 30 + 70 50 300 440 - Assessment Regional Dikes + Assessment Regional Dikes +group=3 UMLDeployment - 720 - 50 + 60 + 510 310 440 - Design Primary Dikes + Design Primary Dikes +group=5 UMLGeneric 100 - 740 + 1210 290 80 symbol=component -Inward Macrostability wrapper +Inward Macrostability wrapper +group=1 UMLGeneric 100 - 840 + 1310 290 80 symbol=component -Outward Macrostability wrapper +Outward Macrostability wrapper +group=1 UMLGeneric 100 - 940 + 1410 290 80 symbol=component -Piping +Piping +group=1 UMLGeneric - 850 - 750 + 790 + 1220 290 80 @@ -229,8 +241,8 @@ UMLGeneric - 850 - 950 + 790 + 1420 290 80 @@ -243,8 +255,8 @@ UMLGeneric - 540 - 1050 + 790 + 1620 290 80 @@ -256,8 +268,8 @@ UMLGeneric - 850 - 1050 + 790 + 1520 290 80 @@ -269,59 +281,113 @@ UMLDeployment - 1060 - 50 + 420 + 510 290 440 - NWO Calculation -(NEW) + NWO Calculation Primary Dikes +(NEW) +group=6 UMLGeneric - 1080 - 100 + 440 + 560 250 80 symbol=component -Primary NWO calculation +Primary NWO calculation +group=6 UMLDeployment - 0 + 40 0 - 1390 - 530 + 1060 + 980 Main modules UMLDeployment - 0 - 630 - 1390 - 590 + 40 + 1100 + 1160 + 730 Supporting modules Relation - 680 - 520 + 410 + 970 30 - 130 + 150 lt=[=]-[<] - 10.0;10.0;10.0;110.0 + 10.0;10.0;10.0;130.0 + + UMLGeneric + + 480 + 1520 + 290 + 80 + + symbol=component + +Design Calculation Runner + + + + UMLGeneric + + 780 + 100 + 240 + 80 + + symbol=component + +Primary operation calculation +group=8 + + + + UMLDeployment + + 760 + 50 + 290 + 440 + + Operational Primary Dikes +group=8 + + + + UMLGeneric + + 480 + 1620 + 290 + 80 + + symbol=component + +Operation Calculation Runner + + Index: dam kernel/trunk/doc/Dam kernel - Technical Design/DAM kernel - Technical Design.tex =================================================================== diff -u -r112 -r114 --- dam kernel/trunk/doc/Dam kernel - Technical Design/DAM kernel - Technical Design.tex (.../DAM kernel - Technical Design.tex) (revision 112) +++ dam kernel/trunk/doc/Dam kernel - Technical Design/DAM kernel - Technical Design.tex (.../DAM kernel - Technical Design.tex) (revision 114) @@ -24,7 +24,7 @@ \keywords{Dike, safety assessment, design, software, macro stability, piping} -\references{Refer to \autoref{chapter5}.} +\references{Refer to \autoref{chapterLiterature}.} \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.\\ \\ @@ -38,20 +38,20 @@ \approvali{Maya Sule} \status{draft} +\disclaimer{This is a draft report, intended for discussion purposes only. No part of this report may be relied upon by either principals or third parties.} - \deltarestitle %------------------------------------------------------------------------------ \chapter{Introduction} \label{chapterIntroduction} -\section{Purpose and scope of this document} \label{sec:1.1} +\section{Purpose and scope of this document} \label{sec:PurposeAndScope} 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} +\section{Other system documents} \label{sec:SystemDocuments} The full documentation on the program comprises the following documents. @@ -69,6 +69,8 @@ \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} +\caption{\small \ProgramNamePlusSpace system documents.} +\label{table-SystemDocuments} \end{table} @@ -77,7 +79,7 @@ \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. +\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. In \citep{DAM_ArchitectureOverall} a description of the overall architecture of the DAM system can be found. \begin{figure}[H] \begin{center} @@ -95,6 +97,9 @@ The \ProgramNamePlusSpace itself also consists of several modules. These can be seen in see \autoref{fig-DAMKernelComponents} +All of the submodules inside the Main Modules are completely independent. +All of the submodules inside the Supporting Modules are also independent. But all these submodules can be used by each of the main modules. + \begin{figure}[H] \begin{center} \includegraphics[width=18cm]{pictures/DAMKernelComponents.pdf} @@ -109,7 +114,7 @@ \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 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 @@ -118,6 +123,12 @@ \item There should be no User Interface elements shown anytime during the calculation. \end{itemize} +\section{Programming environment} \label{sec:ProgrammingEnvironment} +The \ProgramNamePlusSpace will be developed in C\# with the .NET 4.5 framework. The development environment will be Visual Studio 2015. + +\section{Error handling} \label{sec:ErrorHandling} +Errors are handled through the standard exception handling of the .NET framework. Error messages must contain as much information as possible, so a user can trace back the error to the input data. + \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. @@ -188,50 +199,106 @@ \subsection{Input} \paragraph*{DamProjectType} +\begin{itemize} + \item Assessment + \item Design + \item Operational +\end{itemize} \paragraph*{DamProjectCalculationSpecification} +This class specifies which failuremechanism is to be calculated and it also contains the specific options for the selelected mechanism (e.g.\ which calculation model) \paragraph*{Locations} -\paragraph*{Segments} +This is a collection of locations, with each location containing the location specific data. +\paragraph*{Soil Segments} +This is a collection of soil segments, with each segment containing the subsoil data for a specific failure mechanism.\textbf{} \paragraph*{Soils} +This is a collection of soils, with each soil containing the soil parameters needed for the calculation of all failure mechanisms.\textbf{} \subsection{Output} \paragraph*{CalculationResults} +A calculation result holds the result for a specific location, a specific failure mechanism, and a specific subsoil scenario of a specific segment defined in the location data. \paragraph*{CalculationMessages} +These are all the message that are generated by the calculation. A message must containt as much information as possible to trace back the information tho the input data (e.g.\ a specific location, a specific failure mechanism, and a specific subsoil scenario of a specific segment defined in the location data). \section{Location} \label{sec:LocationDescription} -\paragraph*{Segment} +\paragraph*{SoilSegment} +A soil segment contains the subsoil data for a specific failure mechanism \paragraph*{SurfaceLine} +A surfaceline is describes the dike profile in a specific location. In the Design calculation it can also be the new dike profile, which can meet design creteria in a specific load scenario. \paragraph*{WaternetOptions} +The options that support the creation of a waternet in a specific location. \paragraph*{DesignOptions} +The options that will be used in the Design calculation (e.g.\ how to design a shoulder when needed). \paragraph*{SensorData} +The sensor data can be used to define a waternet based on live sensor data. This sensor data holds information about ID and location of the sensor. The actaul sensor readings are defined as timeseries readings for each sensor in each location. \paragraph*{LoadScenario} +Used for Design calculation. A load scenario contains the following items: +\begin{itemize} + \item Riverlevel low + \item Riverlevel high + \item Dike table height + \item Required safety factor for each specified failure mechanism + \item Uplift criterium for each specified failure mechanism + \item Waternet options for each specified failure mechanism +\end{itemize} \paragraph*{IFailureMechanismOptions} +Specific options for each location for each failure mechanism. %------------------------------------------------------------------------------ \chapter{Module Description} \label{chapterModuleDescription} \section{\ProgramNamePlusSpace main modules} \label{sec:DamKernelMainModules} \subsection{Assessment Regional Dikes} +This module performs an assessment for regional dikes. \paragraph*{Regional assessment calculation} +This is the main submodule of the regional assessement. This submodule contains the main loop of the calculation. \paragraph*{Regional scenario selector} +This submodule generates all the scenarios that have to be evaluated for a specifi location. The scenarios are selected based on the local conditions. \paragraph*{Regional schematization factor calculator} +This submodule calculates the schematization factor in a location based on all results of all scenarios in a location. \subsection{Assessment Primary Dikes} +This module performs an assessment for primary dikes. \paragraph*{Primary assessment calculation} +This is the main submodule of the primary assessement. This submodule contains the main loop of the calculation. \subsection{Design Primary Dikes} +This module performs an design calculation for primary dikes. \paragraph*{Primary design calculation} +This is the main submodule of the primary design calculation. This submodule contains the main loop of the calculation. \subsection{NWO Calculation} +This module performs an NWO (Niet Waterkerende Objecten) calculation for primary dikes. \paragraph*{Primary NWO calculation} +This is the main submodule of the NWO calculation. This submodule contains the main loop of the calculation. \section{\ProgramNamePlusSpace supporting modules} \label{sec:DamKernelSupportingModules} \subsection{Failure mechanism wrappers} +These are calculation wrapper for each failure mechanism that is supported by the \ProgramName. Each wrapper should implement the IFailureMechanism interface. +\paragraph*{Macrostability inwards} +Calculation wrapper for Macrostability inward. Note that for each specific implementation of a failure mechanism, a separate wrapper has to be build (e.g.\ Slope/W and D-Geo Stability) +\paragraph*{Macrostability outwards} +Calculation wrapper for Macrostability outward. +\paragraph*{Piping} +Calculation wrapper for Piping. +\subsection{Surfaceline adapters} +A collection of surfaceline adapters to support the design calculation. Each adapter should adhere to the ISurfaceLineAdapter interface. \paragraph*{Surfaceline Adapter Height} +Adapts the surfaceline by adding extra height to the dike crest. \paragraph*{Surfaceline Adapter Slope} +Adapts the surfaceline by changing the slope of the dike on the inside. \paragraph*{Surfaceline Adapter Shoulder} +Adapts the surfaceline by adding a shoulder or enlarging the shouldeer on the inside of the dike. \paragraph*{Surfaceline Adapter NWO} -\subsection{Surfaceline adapters} +Adapts the surfaceline by adding a NWO on a specifi place in the surfaceline. \subsection{Failure mechanism Calculation Runner} +This submodule calculates a specific failure mechanism by calling the IFailureMechanism interface of the wrapper implementation. +\subsection{Design Calculation Runner} +This submodule performs a design calculation for a specific failure mechanism by calling the IFailureMechanism interface and several surfaceline adapters through their ISurfacelineAdaptert interface. +\subsection{Operation Calculation Runner} +This submodule can perform a calculation based on sensor readings (as time-series). The load on the systems (the waternet) will be based on those sensor readings. This can be used in operational systems like DamLive. \subsection{Geometry creator} +This submodule combines a surfaceline with a subsoil scenario. The output is a gemetry that can be used by the failure mechanisms to perform a calculation. \subsection{Waternet creator} +This submodule determines the waternet that will be used by the failure mechanisms. At first only the DAM implementation will be used as a waternet creator. Later on new implementations can be made. E.g.\ specific for each failure mechanism, or an implementation based on a numerical model like DgFlow. \subsection{Scripting engine} +To enable advanced users to experiment with how the \ProgramNamePlusSpace works a Python scripting engine is implemented as a submodule. The scripting engine has acces to the data model and the submodules through well defined interfaces. %------------------------------------------------------------------------------ \chapter{Literature} \label{chapterLiterature} @@ -240,10 +307,8 @@ -\cleardoublepage \pagestyle{empty} -\cleardoublepage \mbox{} %------------------------------------------------------------------------------ Index: dam kernel/trunk/doc/Dam kernel - Technical Design/pictures/DAMKernelComponents.pdf =================================================================== diff -u -r112 -r114 Binary files differ Index: dam kernel/trunk/doc/UML Diagrams/DAM kernel Data Model Main.uxf =================================================================== diff -u -r112 -r114 --- dam kernel/trunk/doc/UML Diagrams/DAM kernel Data Model Main.uxf (.../DAM kernel Data Model Main.uxf) (revision 112) +++ dam kernel/trunk/doc/UML Diagrams/DAM kernel Data Model Main.uxf (.../DAM kernel Data Model Main.uxf) (revision 114) @@ -100,7 +100,7 @@ 260 100 - Segment + SoilSegment -- + Index: dam kernel/trunk/doc/Dam kernel - Technical Design/pictures/DAMKernelDataModelLocation.pdf =================================================================== diff -u -r112 -r114 Binary files differ Index: dam kernel/trunk/doc/UML Diagrams/DAM kernel Data Model Location.uxf =================================================================== diff -u -r112 -r114 --- dam kernel/trunk/doc/UML Diagrams/DAM kernel Data Model Location.uxf (.../DAM kernel Data Model Location.uxf) (revision 112) +++ dam kernel/trunk/doc/UML Diagrams/DAM kernel Data Model Location.uxf (.../DAM kernel Data Model Location.uxf) (revision 114) @@ -1,13 +1,13 @@ - 10 + 12 UMLClass - 160 - 350 - 260 - 190 + 96 + 372 + 312 + 228 Location -- @@ -17,10 +17,10 @@ Relation - 410 - 70 - 310 - 340 + 396 + 36 + 372 + 408 lt=<- m1=* @@ -29,23 +29,23 @@ UMLClass - 700 - 40 - 260 - 100 + 744 + 0 + 312 + 120 - Segment + SoilSegment -- UMLClass - 700 - 190 - 260 - 100 + 744 + 180 + 312 + 120 SurfaceLine -- @@ -55,10 +55,10 @@ Relation - 410 - 220 - 310 - 210 + 396 + 216 + 372 + 252 lt=<- m1=1 @@ -67,10 +67,10 @@ UMLClass - 700 - 340 - 260 - 100 + 744 + 360 + 312 + 120 WaternetOptions -- @@ -80,10 +80,10 @@ UMLClass - 700 - 490 - 260 - 100 + 744 + 540 + 312 + 120 DesignOptions -- @@ -93,10 +93,10 @@ UMLClass - 700 - 630 - 260 - 100 + 744 + 708 + 312 + 120 SensorData -- @@ -106,10 +106,10 @@ Relation - 410 - 370 - 310 - 90 + 396 + 396 + 372 + 108 lt=<- m1=1 @@ -118,10 +118,10 @@ Relation - 410 - 450 - 310 - 100 + 396 + 492 + 372 + 120 lt=<- m1=1 @@ -130,10 +130,10 @@ Relation - 410 - 480 - 310 - 200 + 396 + 528 + 372 + 240 lt=<- m1=1 @@ -142,10 +142,10 @@ UMLClass - 700 - 760 - 260 - 100 + 744 + 864 + 312 + 120 LoadScenario -- @@ -155,10 +155,10 @@ Relation - 410 - 510 - 310 - 290 + 396 + 564 + 372 + 348 lt=<- m1=* @@ -167,10 +167,10 @@ UMLClass - 700 - 890 - 260 - 100 + 744 + 1020 + 312 + 120 IFailureMechanismOptions -- @@ -180,10 +180,10 @@ Relation - 380 - 530 - 340 - 420 + 360 + 588 + 408 + 504 lt=<- m1=* Index: dam kernel/trunk/doc/Dam kernel - Technical Design/pictures/DAMKernelDataModelMain.pdf =================================================================== diff -u -r112 -r114 Binary files differ