Index: DamEngine/trunk/doc/Dam Engine - Functional Design/FO.tex =================================================================== diff -u -r6137 -r6524 --- DamEngine/trunk/doc/Dam Engine - Functional Design/FO.tex (.../FO.tex) (revision 6137) +++ DamEngine/trunk/doc/Dam Engine - Functional Design/FO.tex (.../FO.tex) (revision 6524) @@ -82,8 +82,10 @@ Locations are defined by a unique name and RD coordinates. \subsubsection{Geometry}\label{sec:REQDataFormatGeometry} -The geometry is defined by a surfaceline and characteristicpoints on this surfaceline. The surfaceline is limited by a surfaceleveloutside at the left side and surfaceline inside at the right sight. -The left side of the geomtry is the riverside and the side of the variable waterlevel outside. The right side is the polderside (inside). +The geometry is defined by a sub profile in combination with a surface line and characteristic points on this line. +The surface line defines the right, left and top limit of the geometry. +The bottom limit is defined by the sub profile. +The left side of the geometry is the riverside and the side of the variable waterlevel outside. The right side is the polderside (inside). \subsubsection{Subsoil}\label{sec:REQDataFormatSubsoil} The subsoil is defined by line shaped segments. Each segment is defined by one or more soilprofiles with a probability (sums up to 100\%). And a soilprofile describes the boundaries of the layers and their material. @@ -95,13 +97,12 @@ \subsection{REQ Data.Content}\label{sec:REQDataContent} The \ProgramName has a defined content for the data input, so DAM Clients know how to arrange the input data. The required data is described in xsd-files in https://repos.deltares.nl/ repos/ dam/ DamEngine/ trunk/ xsd. -An overview of the required data for the engine in relation to DAM UI data is described in https://repos.deltares.nl/ repos/ dam/ DamOverall/ trunk/ doc/ DAM General/ OverviewDataUIAndEngine.xlsx. In this Functional design is refered to parameters mentioned in this overview by giving the \textcolor[rgb]{0.65,0.16,0}{\textsl{name}}. +An overview of the required data for the engine in relation to DAM UI data is described in https://repos.deltares.nl/ repos/ dam/ DamOverall/ trunk/ doc/ DAM General/ OverviewDataUIAndEngine.xlsx. In this Functional design is referred to parameters mentioned in this overview by giving the \textcolor[rgb]{0.65,0.16,0}{\textsl{name}}. \section{Calculation}\label{sec:Calculation} \subsection{Creating calculation profiles}\label{sec:CreateCalculationProfiles} -In order to be able to perform any calculation, the \ProgramName needs to create the proper calculation profile. -For all kernels, first a full 2D profile has to be created by combining a given surface line with a given sub profile. +In order to be able to perform any calculation, the \ProgramName needs to create the proper calculation profile by combining a given surface line with a given sub profile. This sub profile can be a 1D-profile as well as a 2D-profile. The combination of surface line and sub profile will always results in a 2D calculation profile. Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs =================================================================== diff -u -r6404 -r6524 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 6404) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 6524) @@ -76,10 +76,15 @@ return null; } - if (surfaceLine == null || surfaceLine.Points.Count == 0) + if (surfaceLine == null || surfaceLine.Points.Count < 2) { return null; } + + if (defaultSoil == null) + { + return null; + } SoilProfile2D clonedProfile = soilProfile2D.Clone(); GeometryPointString clonedSurfaceLine = surfaceLine.Clone(); @@ -183,7 +188,8 @@ resultGeometry.NewlyEffectedPoints.AddRange(resultGeometry.Points); resultGeometry.NewlyEffectedCurves.AddRange(resultGeometry.Curves); - resultGeometry.Surfaces.Clear(); + resultGeometry.Surfaces.Clear(); + resultGeometry.Loops.Clear(); resultGeometry.Curves.Clear(); resultGeometry.Points.Clear(); resultGeometry.RegenerateGeometry(); Index: DamEngine/trunk/doc/Dam Engine - Technical Design/DAM Engine - Technical Design.tex =================================================================== diff -u -r6163 -r6524 --- DamEngine/trunk/doc/Dam Engine - Technical Design/DAM Engine - Technical Design.tex (.../DAM Engine - Technical Design.tex) (revision 6163) +++ DamEngine/trunk/doc/Dam Engine - Technical Design/DAM Engine - Technical Design.tex (.../DAM Engine - Technical Design.tex) (revision 6524) @@ -641,10 +641,11 @@ This submodule performs a probabilistic calculation for a specific location and failure mechanism. The outcome is a failure probability for that location and failure mechanism. \subsection{General submodules} -\subsubsection*{Geometry creator} +\subsubsection{Geometry creator} This submodule combines a surfaceline with a subsoil scenario. The output is a geometry that can be used by the failure mechanisms to perform a calculation. -\subsubsection*{Waternet creator} +The way the combination is to be performed is described in \autoref{sec:CreatingCalculationProfiles}. +\subsubsection{Waternet creator} A waternet describes the waterpressures in the dike embankment. The waterpressures are a result of the load on the system (outer waterlevel and polderlevel). This submodule determines the waternet that will be used by the failure mechanism kernels. @@ -1138,6 +1139,8 @@ \appendix %---------------------------------------- +\chapter*{Appendix} \addcontentsline{toc}{chapter}{Appendix} +\include{CreatingCalculationProfiles} \chapter{DamInput} \label{app:DamInput} These are the XSD's that apply to the input XML of the \ProgramName. Index: DamEngine/trunk/doc/Dam Engine - Functional Design/DAM Engine - Functional Design.tex =================================================================== diff -u -r5424 -r6524 --- DamEngine/trunk/doc/Dam Engine - Functional Design/DAM Engine - Functional Design.tex (.../DAM Engine - Functional Design.tex) (revision 5424) +++ DamEngine/trunk/doc/Dam Engine - Functional Design/DAM Engine - Functional Design.tex (.../DAM Engine - Functional Design.tex) (revision 6524) @@ -69,7 +69,6 @@ \include{CreatingCalculationProfiles} \include{UseStabKernel} \include{UpliftCalculations} -\include{FODAMPipingKernel} \include{UseWBIPipingKernel} \include{DesignGeometryAdaption} \include{REQDataGenerationWater} Index: DamEngine/trunk/doc/Dam Engine - Functional Design/CreatingCalculationProfiles.tex =================================================================== diff -u -r6479 -r6524 --- DamEngine/trunk/doc/Dam Engine - Functional Design/CreatingCalculationProfiles.tex (.../CreatingCalculationProfiles.tex) (revision 6479) +++ DamEngine/trunk/doc/Dam Engine - Functional Design/CreatingCalculationProfiles.tex (.../CreatingCalculationProfiles.tex) (revision 6524) @@ -1,135 +1,11 @@ \chapter{Creating calculation profiles} \label{sec:CreatingCalculationProfiles} -The starting point for combining a surface line with a subsoil profile is that both contain only valid data. -The goal of the combination is to create the final 2D-profile (= 2D-geometry + layer information) to be used in the calculation. +The starting point for combining a surface line with a subsoil profile is that both contain only valid data. + +Next to the surface line and a subsoil profile, a filling material needs to be given. +This material will be assigned to all surfaces of the new calculation profile for which a matching surface could not be found within the given subsoil profile. +When a matching surface could be found within the given subsoil profile, the material of that surface will be assigned to the new one. +The goal of the combination is to create the final 2D-profile (= 2D-geometry + layer information) that is to be used in the calculation. + For stability calculations, this profile is used as is. For piping calculations, this profile forms the base from which the 1D piping calculation profiles are obtained. - -Next to the surface line and a subsoil profile, the name of a filling material needs to be given. -This name will be assigned to all surfaces of the new calculation profile for which a matching surface could not be found within the given subsoil profile. - -To explain the combination, a number of important definitions will follow first. - -\section{Surface line geometry definition} -The geometry of a surface line consists of a series of points. -Within the given local X-Z coordinate system, the X-coordinates must strictly increase (i.e., from left to right). -Therefore, decreasing X-coordinates as well as equal X-coordinates are not allowed. - -Note that a surface line holds not only the geometry but also definitions for point characteristics. -For the purpose of creating calculation profiles, only the geometry plays a role. - -\section{1D subsoil profile definition} -A 1D subsoil profile consists of a series of values for layer levels (in m to reference level) that decrease with depth. -A 1D subsoil profile is hence defined from top to bottom. - -The first value is the top of the top 1D-layer, the second value is the top of the second 1-D layer and thus the bottom of the top 1D-layer, and so on. -In principle, only one value (for the top of the top layer) is sufficient because DAM automatically adds a layer 20 meters below the lowest specified level. - -For each layer, the name of the layer material must be specified. -This name must match one material with properties as recorded elsewhere. - -\section{2D subsoil profile definition} -The important definitions regarding the geometry of the 2D subsoil profile are: -\begin{itemize} - \item \textit{point}: is a point with two coordinates, an X and a Z coordinate. - \item \textit{curve}: is a line segment consisting of two points. - \item \textit{loop}: is a closed ring of at least 3 curves. - \item \textit{surface}: is a plane with 1 outer loop (an enclosing loop) and 0 or more inner loops (a loop entirely within an outer loop). -\end{itemize} - -Each point, curve, loop, and surface is unique. -Each point can occur in multiple curves (and thus loops and surfaces). -Each curve can occur in multiple loops (and thus surfaces). -Each loop (and thus also surface) may only occur once. -Each inner loop must fall entirely within the outer loop and may not cross or even touch it anywhere. -An inner loop can only share points with other possible inner loops in the same plane. -An inner loop can only share line segments with other possible inner loops in the same plane. - -A valid geometry contains: -\begin{itemize} - \item at least 1 surface with at least 1 valid outer loop. - \item only the loops that are actually in use as an outer loop or one of the inner loops of a surface. - \item only curves that are actually in use in an outer loop or inner loop. - \item only points that are actually in use in a used curve (and by extension in a loop and surface). -\end{itemize} - -A point is only valid if both coordinates are known and it does not coincide with another point. -A curve is only valid if it contains two different existing points and does not coincide with another curve. -Note that the order of the two curve points does not matter (comparing curve A headpoint, endpoint with curve B headpoint, endpoint is the same as comparing curve A headpoint, endpoints with curve B endpoint, head point and as curve A endpoint, head point with curve B headpoint, endpoints and even curve A endpoint, headpoint with curve B endpoint, headpoint). - -A loop is only valid if: -\begin{itemize} - \item there are at least 3 non-coinciding existing curves (there is an enclosed area). - \item it is not intersected by other curves and/or loops. - \item it does not contain coinciding curves and/or points. -\end{itemize} - -Next to the geometry, a 2D subsoil profile also contains a separate list of 2D-layers. -Each 2D-layer holds a surface (as reference to a geometry surface) and a material name. -This name must match one material with properties as recorded elsewhere. - -\section{Combining a 1D subsoil profile with a surface line geometry} -To create a calculation profile, one option is by combining a 1D subsoil profile with a surface line geometry. - -If the surface line geometry lies entirely below the 1D subsoil profile, no combination can be made. -A calculation cannot be made for this situation, and an error message will follow. -This error message will not interrupt the entire DAM process; the message will be recorded in the log file. - -For merging a surface line geometry with a 1D subsoil profile, the surface line geometry is leading. -This determines the left boundary (X-coordinate of the first point in the surface line geometry) of the 2D calculation profile to be created. -It also determines its right boundary (X-coordinate of the last point in the surface line geometry). - -The process consists of: -\begin{itemize} - \item Make a complete copy (clone) of both the 1D subsoil profile and the surface line geometry to prevent the original data from being changed. - \item Then perform all subsequent steps on the copies. - \item Add a very thick layer of the specified filling material above the original top layer of the 1D subsoil profile. - \item If necessary, add a 20 m thick layer of the material of the layer above to the bottom of the 1D subsoil schematization. - \item Determine all intersection points of the surface line geometry with the 1D subsoil profile. - \item Put all intersection points together with all points of the surface line geometry into one list of points, sorted by X-coordinate. - \item Using that list and the 1D subsoil profile, create a list of new 2D layers - (4-point layers for all layers below the surface line geometry, multi-point layers for the 1D layers intersected by the surface line geometry; - everything above the surface line geometry is ignored). - Each 2D layer contains, in addition to the points, line segments, loop, and surface, the other layer information (IsAquifer, material, WaterpressureInterpolationModel). - \item Create an empty 2D geometry. - \item Set the left and right boundaries of this 2D geometry bases on the surface line geometry. - \item Set the bottom boundary of this 2D geometry based on the 1D subsoil profile. - \item Add the list of sorted intersection points and cross-sectional geometry points to the 2D geometry as NewlyEffectedPoints, NewlyEffectedCurves. - \item Add the list of 2D layers to the 2D geometry (avoid duplicate points and line segments!) as NewlyEffectedPoints, NewlyEffectedCurves. - \item Generate the 2D geometry based on the boundaries and “new” points and line segments. - \item Add all layer properties to the generated surfaces of the new 2D geometry based on the 2D layers list. - \item Create a new 2D (calculation) profile. - \item Add the 2D geometry to the 2D profile. - \item Finally, add all 2D layers (surfaces with info) to the 2D profile. -\end{itemize} - -The resulting 2D profile can never contain inner loops and has at least one valid surface with associated layer information. - -\section{Combining a 2D subsoil profile with a surface line geometry} -To create a calculation profile, another option is by combining a 2D subsoil profile with a surface line geometry. - -If the surface line geometry lies entirely to the left or to the right of the 2D subsoil profile, a combination cannot be made. -If the surface line geometry lies even partially below the 2D subsoil profile, no combination can be made. -In both cases, a calculation cannot be made for this situation, and an error message will follow. -This error message will not interrupt the entire DAM process; the message will be recorded in the log file. - -For merging a surface line geometry with a 2D subsoil profile, the surface line geometry is leading. -This determines the left boundary (X-coordinate of the first point in the surface line geometry) of the 2D calculation profile to be created. -It also determines its right boundary (X-coordinate of the last point in the surface line geometry). - -When the 2D subsoil profile lies entirely to the left or to the right of the surface line geometry, -a combination cannot be made and an error message will follow. Again this error message will not interrupt the entire DAM process; the message will be recorded in the log file. - -The process consists of: -\begin{itemize} - \item Check that the 2D subsoil profile is not null - \item Check that the filling material and the surface line geometry are defined properly. - \item Check that the surface line geometry lies completely above the bottom of the 2D subsoil geometry. - \item Check that the surface line geometry does not ly completely to the left or to the right of the 2D subsoil geometry. - \item Make a complete copy (clone) of both the 2D subsoil profile and the surface line geometry to prevent the original data from being changed. - \item Then perform all subsequent steps on the copies. - \item Round all coordinates from both the 2D subsoil profile as well as from the surface line geometry. - \item Create a new 2D profile as place holder for the resulting calculation profile. - \item Add the 2D geometry to the 2D profile. - \item Finally, add all 2D layers (surfaces with info) to the 2D profile. -\end{itemize} Index: DamEngine/trunk/doc/Dam Engine - Technical Design/CreatingCalculationProfiles.tex =================================================================== diff -u --- DamEngine/trunk/doc/Dam Engine - Technical Design/CreatingCalculationProfiles.tex (revision 0) +++ DamEngine/trunk/doc/Dam Engine - Technical Design/CreatingCalculationProfiles.tex (revision 6524) @@ -0,0 +1,172 @@ +\chapter{Creating calculation profiles} \label{sec:CreatingCalculationProfiles} +The starting point for combining a surface line with a subsoil profile is that both contain only valid data. +The goal of the combination is to create the final 2D-profile (= 2D-geometry + layer information) to be used in the calculation. + +For stability calculations, this profile is used as is. +For piping calculations, this profile forms the base from which the 1D piping calculation profiles are obtained. + +Next to the surface line and a subsoil profile, a filling material needs to be given. +This material will be assigned to all surfaces of the new calculation profile for which a matching surface could not be found within the given subsoil profile. +When a matching surface could be found within the given subsoil profile, the material of that surface will be assigned to the new surface. + +To explain the combination, a number of important definitions will follow first. + +\section{Surface line geometry definition} +The geometry of a surface line consists of a series of points. +Within the given local X-Z coordinate system, the X-coordinates must strictly increase (i.e., from left to right). +Therefore, decreasing X-coordinates as well as equal X-coordinates are not allowed. + +Note that a surface line holds not only the geometry but also definitions for point characteristics. +For the purpose of creating calculation profiles, only the geometry plays a role. + +\section{1D subsoil profile definition} +A 1D subsoil profile consists of a series of values for layer levels (in m to reference level) that decrease with depth. +A 1D subsoil profile is hence defined from top to bottom. + +The first value is the top of the top 1D-layer, the second value is the top of the second 1-D layer and thus the bottom of the top 1D-layer, and so on. +In principle, only one value (for the top of the top layer) is sufficient because DAM automatically adds a layer 20 meters below the lowest specified level. + +For each layer, the name of the layer material must be specified. +This name must match one material with properties as recorded elsewhere. + +Note that a layer has other properties as well (e.g. IsAquifer) but these do not play a part in th combining process. + +\section{2D subsoil profile definition} +The important definitions regarding the geometry of the 2D subsoil profile are: +\begin{itemize} + \item \textit{point}: is a point with two coordinates, an X and a Z coordinate. + \item \textit{curve}: is a line segment consisting of two points. + \item \textit{loop}: is a closed ring of at least 3 curves. + \item \textit{surface}: is a plane with 1 outer loop (an enclosing loop) and 0 or more inner loops (a loop entirely within an outer loop). +\end{itemize} + +Each point, curve, loop, and surface must be unique. +Each point can occur in multiple curves (and thus in loops and surfaces). +Each curve can occur in multiple loops (and thus in surfaces). +Each inner loop must fall entirely within the outer loop and may not cross or even touch it anywhere. +An inner loop can only share points with other possible inner loops in the same plane. +An inner loop can only share line segments with other possible inner loops in the same plane. + +A valid geometry contains: +\begin{itemize} + \item at least 1 surface with at least 1 valid outer loop. + \item only the loops that are actually in use as an outer loop or one of the inner loops of a surface. + \item only curves that are actually in use in an outer loop or inner loop. + \item only points that are actually in use in a used curve (and by extension in a loop and surface). +\end{itemize} + +A point is only valid if both coordinates are known and it does not coincide with another point. +A curve is only valid if it contains two different existing points and does not coincide with another curve. +Note that the order of the two curve points does not matter (comparing curve A head-point, endpoint with +curve B head-point, endpoint is the same as comparing curve A head-point, endpoints with +curve B endpoint, head-point and as curve A endpoint, head-point with curve B head-point, endpoints and +even curve A endpoint, head-point with curve B endpoint, head-point). + +A loop is only valid if: +\begin{itemize} + \item there are at least 3 non-coinciding existing curves (there is an enclosed area). + \item it is not intersected by other curves and/or loops. + \item it does not contain coinciding curves and/or points. + \item all curves are connected in such a way they form an enclosed area +\end{itemize} + +Next to the geometry, a 2D subsoil profile also contains a separate list of 2D-layers. +Each 2D-layer holds a surface (as reference to a geometry surface) and a material name. +This name must match one material with properties as recorded elsewhere. + +\section{Combining a 1D subsoil profile with a surface line geometry} +To create a calculation profile, one option is by combining a 1D subsoil profile with a surface line geometry. + +If the surface line geometry lies entirely below the 1D subsoil profile, no combination can be made. +A calculation cannot be made for this situation, and an error message will follow. +This error message will not interrupt the entire DAM process; the message will be recorded in the log file. + +For merging a surface line geometry with a 1D subsoil profile, the surface line geometry is leading. +This determines the left boundary (X-coordinate of the first point in the surface line geometry) of the 2D calculation profile to be created. +It also determines its right boundary (X-coordinate of the last point in the surface line geometry). + +The process consists of: +\begin{itemize} + \item Make a complete copy (clone) of both the 1D subsoil profile and the surface line geometry to prevent the original data from being changed. + \item Then perform all subsequent steps on the copies. + \item Add a very thick layer of the specified filling material above the original top layer of the 1D subsoil profile. + \item If necessary, add a 20 m thick layer of the material of the layer above to the bottom of the 1D subsoil schematization. + \item Determine all intersection points of the surface line geometry with the 1D subsoil profile. + \item Put all intersection points together with all points of the surface line geometry into one list of points, sorted by X-coordinate. + \item Using that list and the 1D subsoil profile, create a list of new 2D layers + (4-point layers for all layers below the surface line geometry, multi-point layers for the 1D layers intersected by the surface line geometry; + everything above the surface line geometry is ignored). + Each 2D layer contains, in addition to the points, line segments, loop, and surface, the other layer information (IsAquifer, material, WaterpressureInterpolationModel). + \item Create an empty 2D geometry. + \item Set the left and right boundaries of this 2D geometry bases on the surface line geometry. + \item Set the bottom boundary of this 2D geometry based on the 1D subsoil profile. + \item Add the list of sorted intersection points and cross-sectional geometry points to the 2D geometry as NewlyEffectedPoints, NewlyEffectedCurves. + \item Add the list of 2D layers to the 2D geometry (avoid duplicate points and line segments!) as NewlyEffectedPoints, NewlyEffectedCurves. + \item Generate the 2D geometry based on the boundaries and “new” points and line segments. + \item Add all layer properties to the generated surfaces of the new 2D geometry based on the 2D layers list. + \item Create a new 2D (calculation) profile. + \item Add the 2D geometry to the 2D profile. + \item Finally, add all 2D layers (surfaces with info) to the 2D profile. +\end{itemize} + +The resulting 2D profile can never contain inner loops and has at least one valid surface with associated layer information. + +\section{Combining a 2D subsoil profile with a surface line geometry} +To create a calculation profile, another option is by combining a 2D subsoil profile with a surface line geometry. + +If the surface line geometry lies entirely to the left or to the right of the 2D subsoil profile, a combination cannot be made. +If the surface line geometry lies even partially below the 2D subsoil profile, no combination can be made. +In both cases, a calculation cannot be made for this situation, and an error message will follow. +This error message will not interrupt the entire DAM process; the message will be recorded in the log file. + +For merging a surface line geometry with a 2D subsoil profile, the surface line geometry is leading. +This determines the left boundary (X-coordinate of the first point in the surface line geometry) of the 2D calculation profile to be created. +It also determines its right boundary (X-coordinate of the last point in the surface line geometry). + +When the 2D subsoil profile lies entirely to the left or to the right of the surface line geometry, +a combination cannot be made and an error message will follow. Again this error message will not interrupt the entire DAM process; the message will be recorded in the log file. + +The process consists of: +\begin{itemize} + \item Check that the 2D subsoil profile is not null and has at least 1 valid surface. + \item Check that the surface line geometry is not null and contains at least 2 points. + \item Check that the filling material and the surface line geometry are defined properly. + \item Check that the surface line geometry lies completely above the bottom of the 2D subsoil geometry. + \item Check that the surface line geometry does not ly completely to the left or to the right of the 2D subsoil geometry. + \item Make a complete copy (clone) of both the 2D subsoil profile and the surface line geometry to prevent the original data from being changed. + \item Then perform all subsequent steps on the copies. + \item Round all coordinates from both the 2D subsoil profile as well as from the surface line geometry. + \item Create a new 2D profile as place holder for the resulting calculation profile. + \item Create a new 2D geometry by combining the surface line geometry with the subsoil profile (see below) + \item Add the generated 2D geometry to the 2D profile. + \item Remove all geometry data (points, curves, loops, surface) from the genrated geometry that ly above the surface line geometry. + \item Reconstruct the surfaces, i.e. find which new surfaces are equal to the "old" surfaces as these were part of the subsoil profile. + Copy the soil, IsAquifer and WaterpressureInterpolationModel properties from the "old" surfaces when found else set default values for them + (IsAquifer = false, WaterpressureInterpolationModel = Automat5ic, soil = filling material). + \item Copy the pre-consolidation stresses from the original 2D subsoil profile to the new 2D profile. + \item Rebox the geometry of the new 2D profile to set the proper limit values for theat geometry + \item Update the surfaceline property of the geometry of the new 2D profile. + \item Finally, Round all coordinates from both the geometry of the new 2D profile. +\end{itemize} + +Creating the new 2D geometry involves: +\begin{itemize} + \item Clone the given original geometry. + \ item perform all further actions on the cloned geometry + \item Check that the geometry contains at least 3 points and 3 curves. + \item Rebox the geometry to ensure proper limits + \item Make sure that there is not already some sort of generation going on by checking that there are no newly effected points and/or curves. + \item Adapt the geometry to the limits as defined by the surface line geometry Do this by either cutting exiting surfaces and/or extending + the geometry with new surfaces where needed. + \item Add the surface line geometry (i.e. points and curves) to the geometry. Note that when needed extra curves can be added when the startpoint and/or endpoint of the surface line are above the geometry. + \item Add all the points and curves from the geometry as Newly Effected point/curves to the geometry. + \item Remove all surfaces, loops, curves and points form the geometry. + \item Regenerate the geometry (see below) + \item Delete all loose points and curves +\end{itemize} + +Regenerating the geometry involves: +\begin{itemize} + \item Clone the given original geometry. +\end{itemize} +