D-Settlement¶
D-Settlement model¶
- class geolib.models.dsettlement.dsettlement_model.DSettlementModel(**data)¶
D-Settlement is a dedicated tool for predicting soil settlements by external loading.
This model can read, modify and create *.sli files, read *.sld and *.err files.
- Parameters
data (
Any) –
- property accuracy¶
- add_boundary(points, use_probabilistic_defaults=True, stdv=0, distribution_boundaries=DistributionType.Undefined)¶
Add boundary to model.
- Parameters
points (
List[Point]) –- Return type
int
- add_head_line(points, is_phreatic=False)¶
Add head line to model.
- Parameters
points (
List[Point]) –- Return type
int
- add_layer(boundary_top, boundary_bottom, material_name, head_line_top, head_line_bottom, overwrite=False)¶
Create layer based on boundary ids.
Todo
Determine how a 1D geometry would fit in here.
- Parameters
boundary_top (
int) –boundary_bottom (
int) –material_name (
str) –head_line_top (
int) –head_line_bottom (
int) –overwrite (
bool) –
- Return type
int
- add_non_uniform_load(name, points, time_start, gamma_dry, gamma_wet, time_end=None)¶
Create non uniform load.
Sequence of loading is based on time_start.
- Parameters
name (
ConstrainedStrValue) –points (
List[Point]) –time_start (
timedelta) –gamma_dry (
float) –gamma_wet (
float) –time_end (
Optional[timedelta]) –
- add_other_load(name, time, point, other_load)¶
- Parameters
name (
ConstrainedStrValue) –time (
timedelta) –point (
Point) –other_load (
Union[TrapeziformLoad,RectangularLoad,CircularLoad,TankLoad,UniformLoad]) –
- Return type
None
- add_soil(soil_input)¶
Soil is converted in the internal structure and added in soil_collection.
- Parameters
soil_input (
Soil) –- Return type
None
- add_water_load(name, time, phreatic_line_id)¶
Create water load for a time in days, based on a phreatic line.
Edit the head lines for each layer with create layer.
- Parameters
name (
str) –time (
timedelta) –phreatic_line_id (
int) –
- property boundaries¶
- property console_flags: List[str]¶
- Return type
List[str]
- property console_path: pathlib.Path¶
- Return type
Path
- property curves¶
- datastructure: Union[geolib.models.dsettlement.internal.DSettlementStructure, geolib.models.dsettlement.internal.DSettlementOutputStructure]¶
- property distribution_boundaries¶
- property headlines¶
- property layers¶
- property non_uniform_loads¶
Enables easy access to the non-uniform loads in the internal dict-like datastructure.
- property other_loads¶
Enables easy access to the other loads in the internal dict-like datastructure.
- property output: geolib.models.dsettlement.internal.Results¶
Access internal dict-like datastructure of the output.
Requires a successful execute.
- Return type
- property parser_provider_type: Type[geolib.models.dsettlement.dsettlement_parserprovider.DSettlementParserProvider]¶
Returns the parser provider type of the current concrete class.
- Raises
NotImplementedError – If not implemented in the concrete class.
- Return type
Type[DSettlementParserProvider]- Returns
Type[BaseParserProvider] – Concrete parser provider.
- property points¶
Enables easy access to the points in the internal dict-like datastructure. Also enables edit/delete for individual points.
- serialize(filename)¶
Serialize and pre-process :type filename:
FilePath:param filename:
- set_any_calculation_options(**kwargs)¶
Sets calculation options and initializes or removes data when necessary
- Parameters
precon_pressure_within_layer (PreconPressureWithinLayer) – type of preconsolidation pressure within the layer
is_imaginary_surface (bool) – true if imaginary surface
imaginary_surface_layer (PositivInt) – index of layer
is_submerging (bool) – true if submerging
use_end_time_for_fit (bool) – true if end time should be used for fit
is_maintain_profile (bool) – true if profile should be maintained
maintain_profile_material_name (str) – name of the profile
maintain_profile_time (conint(ge=0, le=100000)) – time for maintain profile [days]
maintain_profile_gamma_dry (confloat(ge=-100, le=100)) – unit weight above phreatic line for maintain profile [kN/m3]
maintain_profile_gamma_wet (confloat(ge=-100, le=100)) – unit weight below phreatic line for maintain profile [kN/m3]
dispersion_conditions_layer_boundaries_top (DispersionConditionLayerBoundary) – dispersion condition at the top of the layer
dispersion_conditions_layer_boundaries_top – dispersion condition at the bottom of the layer
stress_distribution_soil (StressDistributionSoil) – type of stress distribution of the soil
stress_distribution_loads (StressDistributionLoads) – type of stress distribution loads
iteration_stop_criteria_submerging (confloat(ge=0.0, le=1.0)) – submerging iteration stop criteria
iteration_stop_criteria_submerging_layer_height (confloat(ge=0, le=99.999)) – minimum settlement for submerging iteration stop criteria [m]
maximum_iteration_steps_for_submerging (conint(ge=1, le=100)) – maximum iteraion steps for submerging
iteration_stop_criteria_desired_profile (confloat(ge=0, le=1)) – iteration stop criteria for desired profile
load_column_width_imaginary_surface (confloat(ge=0.05, le=10000)) – load column width of the imaginary surface [m]
load_column_width_non_uniform_loads (confloat(ge=0.05, le=10000)) – load column width of non-uniform loads [m]
load_column_width_trapeziform_loads (confloat(ge=0.05, le=10000)) – load column width of trapeziform loads [m]
end_of_consolidation (conint(ge=1, le=100000)) – end of settlement calculation [days]
number_of_subtime_steps (conint(ge=1, le=100)) – number of subtime steps [-]
reference_time (confloat(ge=0.001, le=1000000)) – reference time [day]
dissipation (bool) – true if dissipation calculation should be added
x_coord_dissipation (float) – x-coordinate of the dissipation vertical [m]
use_fit_factors (bool) – true if fit parameters should be used
x_coord_fit (float) – x-coordinate of the fit [m]
is_predict_settlements_omitting_additional_load_steps (bool) – true if output of settlements by partial loading
- Returns
calculation options
- set_calculation_times(time_steps)¶
(Re)set calculation time(s).
Sets a list of calculation times, sorted from low to high with a minimum of 0.
- Parameters
time_steps (
List[timedelta]) – List of time steps, type: float >= 0
Returns:
- set_model(constitutive_model, consolidation_model, is_two_dimensional, strain_type, is_vertical_drain, is_fit_for_settlement_plate, is_probabilistic, is_horizontal_displacements, is_secondary_swelling, is_waspan)¶
Sets the D-settlement Model. Initializes CalculationOptions and Model if the type is str
- Parameters
constitutive_model (SoilModel) – enum
consolidation_model (ConsolidationModel) – enum
is_two_dimensional (bool) – true if geometry is 2 dimensional
strain_type (StrainType) – enum
is_vertical_drain (bool) – true if vertical drain is present
is_fit_for_settlement_plate (bool) – true if fit for settlement plate
is_probabilistic (bool) – true if probabilistic calculation should be made
is_horizontal_displacements (bool) – true if horizontal displacements should be calculated
is_secondary_swelling (bool) – true if secondary swelling is present
is_waspan (bool) – true if waspan
- Returns
Model
- set_probabilistic_data(point_of_vertical, residual_settlement, maximum_number_of_samples, maximum_iterations, reliability_type, is_reliability_calculation)¶
Set calculation options for probabilistic calculation.
- Parameters
point_of_vertical (
Point) – Select point that correspond to a defined vertical for the reliability analysis.residual_settlement (
float) – For FORM and Monte Carlo methods, the allowed residual settlement can be set.maximum_number_of_samples (
int) – The number of samples that the Monte Carlo method will use.maximum_iterations (
int) – The maximum number of iterations for the FORM method.reliability_type (
ProbabilisticCalculationType) –Select one of the following methods
SettlementsDeterministic: a regular deterministic settlement analysis along all verticals, based on fixed mean values of the parameters.
- BandWidthOfSettlementsFOSM: Quick and approximate determination of the bandwidth and the influencing factors (parameter
sensitivity) for the total settlements along one vertical. The determination is executed at user defined time points and at the time points of measurements. Calculation time will increase with an increasing number of stochastic parameters.
- ProbabilityOfFailureFORM: Iterative determination of the reliability index, bandwidth and influencing factors for the residual
settlement along one vertical. A separate FORM analysis is performed for each residual settlement that starts from each different user defined time point. Calculation time will increase with an increasing number of stochastic parameters, user defined time points and iterations. Furthermore, the FORM method is only conditionally stable.
- BandWidthAndProbabilityOfFailureMonteCarlo: Determination of the bandwidth for the total settlements along one vertical, and also of the reliability index
and bandwidth for the residual settlements, by repetitive execution of settlement analyses (sampling). Each sample is executed with random parameter values, derived from the stochastic distributions. Calculation time will increase with the number of samples. Accurate Monte Carlo analysis requires a large number of samples, if many stochastic parameters are involved.
is_reliability_calculation (
bool) – set to True if a probabilistic calculation should be performed.
- set_vertical_drain(verticaldrain)¶
- Parameters
verticaldrain (
VerticalDrain) –
- set_verticals(locations)¶
Set calculation verticals in geometry. X and Y coordinates should be defined for each vertical.
Todo
Add check that checks that the verticals are not outside of the geometry boundaries. [GEOLIB-12]
- Parameters
locations (
List[Point]) –- Return type
None
- property stdv_boundaries¶
- property use_probabilistic_defaults_boundaries¶
Loads¶
- class geolib.models.dsettlement.loads.CircularLoad(**data)¶
Create a circular load with the given name and properties.
- Parameters
weight – The mangitude of the load.
alpha – The shape factor alpha is used to specify the shape of the contact pressure.
- Parameters
data (
Any) –
- R: float¶
- alpha: float¶
- weight: float¶
- class geolib.models.dsettlement.loads.OtherLoad(**data)¶
Other Load Class to inherit from.
- Parameters
data (
Any) –
- load_type: Optional[geolib.models.dsettlement.internal.TypeOtherLoads]¶
- class geolib.models.dsettlement.loads.RectangularLoad(**data)¶
Create a rectangular load with the given name and properties
- Parameters
weight – The mangitude of the load.
alpha – The shape factor alpha is used to specify the shape of the contact pressure
- Parameters
data (
Any) –
- alpha: float¶
- weight: float¶
- xwidth: float¶
- zwidth: float¶
- class geolib.models.dsettlement.loads.TankLoad(**data)¶
Create a tank load with the given name and properties.
- Parameters
wallweight – The magnitude of the load induced by the weight of the material in which the tank is made.
alpha – The shape factor alpha is used to specify the shape of the contact pressure.
internalweight – The magnitude of the load induced by the weight of the material stored in the tank.
- Parameters
data (
Any) –
- Rintern: float¶
- alpha: float¶
- dWall: float¶
- internalweight: float¶
- wallweight: float¶
Drains¶
- class geolib.models.dsettlement.drains.ScheduleValues(**data)¶
ScheduleValues to inherit from
- Parameters
data (
Any) –
- schedule: Optional[geolib.models.dsettlement.drain_types.DrainSchedule]¶
- class geolib.models.dsettlement.drains.ScheduleValuesDetailedInput(**data)¶
Drainage Schedule with strips or columns: Detailed Input
- Parameters
active. (Time -- The time at which dewatering is) –
underpressure. (Underpressure -- This value is zero for vertical drains without enforced) –
dewatering. (Water head -- The vertical level where the negative pore pressure equals the enforced underpressure during) –
data (
Any) –
- time: List[datetime.timedelta]¶
- underpressure: List[float]¶
- water_level: List[float]¶
- class geolib.models.dsettlement.drains.ScheduleValuesOff(**data)¶
Drainage Schedule with strips or columns is Off
- Parameters
assumes (Start of drainage -- The time t at which the drain becomes active. D-SETTLEMENT) – that the water head in the drain equals the phreatic level.
drainage. (Phreatic level in drain -- The water head in the drain during) –
data (
Any) –
- phreatic_level_in_drain: float¶
- start_of_drainage: datetime.timedelta¶
- class geolib.models.dsettlement.drains.ScheduleValuesSimpleInput(**data)¶
Drainage Schedule with strips or columns: Simple Input
- Parameters
assumes (Start of drainage -- The time t at which the drain becomes active. D-SETTLEMENT) – that the water head in the drain equals the phreatic level.
dewatering (Begin time -- The time at which) –
stops. (End time -- The time at which dewatering) –
dewatering. (Water head during dewatering -- The vertical level where the negative pore pressure equals the enforced underpressure during) –
dewatering. –
drainage. (Phreatic level in drain -- The water head in the drain during) –
data (
Any) –
- begin_time: float¶
- end_time: float¶
- phreatic_level_in_drain: float¶
- start_of_drainage: datetime.timedelta¶
- tube_pressure_during_dewatering: Optional[float]¶
- underpressure: float¶
- water_head_during_dewatering: Optional[float]¶
- class geolib.models.dsettlement.drains.VerticalDrain(**data)¶
Vertical Drain Class to inherit from. This class refers to the input window “Vertical Drains” of the D-Settlement program.
- Parameters
area (range_to -- right limit to the drained) –
area –
The (bottom_position --) –
drains. (center_to_center -- The actual spacing between the) –
drain. (thickness -- The actual thickness of the Strip) –
drain. –
grid. (grid -- The geometry of the) –
data (
Any) –
- bottom_position: float¶
- center_to_center: float¶
- diameter: Optional[float]¶
- drain_type: geolib.models.dsettlement.drain_types.DrainType¶
- range_from: float¶
- range_to: float¶
- thickness: Optional[float]¶
- width: Optional[float]¶
- class geolib.models.dsettlement.drain_types.DrainGridType(value)¶
An enumeration.
- RECTANGULAR = 1¶
- TRIANGULAR = 0¶
- UNDERDETERMINED = 2¶
Geometry¶
Add layer¶
In order to add a layer in d-settlement it is required to first set the head lines and the boundaries.
Add boundary¶
The only required input for adding a boundary is a list of points. The boundary needs to fullfill a number of requirements:
The list of points is required to range from the left side to the right side of the geometry.
None of the boundaries in the geometry may cross each other (touching is allowed).
Each boundary in the geometry besides the surface level and the bottom, is required to be used twice. Once as the top boundary of one layer, and another time as the bottom boundary of another layer.
When you desire to set up a boundary with vertical parts, it is required to arrange the points of the boundary from left to right and from bottom to top.
It is important that you pay attention to the above requirements, as d-settlement does not return an error when the above requirements are not fulfilled. Instead an unwanted geometry is generated. Below, a visual example is given of how a geometry should be created.
In the above figure, two layers and six points are shown.
- layer 1:
bottom boundary points: 1, 2
top boundary points: 3, 5, 4
- layer 2:
bottom boundary points: 3, 5, 4
top boundary points: 6, 5, 4
Note that the top boundary of layer 1 is reused as the bottom boundary of layer 2. An easily made mistake is to first create layer 1 by adding: bottom boundary points: (1, 2) and top boundary points (3, 4). And then layer 2 by adding: bottom boundary points: (3, 5, 4) and top boundary points (6, 5, 4). When this mistake is made, it is possible that layers start overlapping each other, this is easily overseen.
Below another example is given with a vertical boundary part:
In the above figure, three layers and eight points are shown.
- layer 1:
bottom boundary points: 7, 8
top boundary points: 1, 2, 3
- layer 2:
bottom boundary points: 1, 2, 3
top boundary points: 1, 2, 5, 4
- layer 3:
bottom boundary points: 1, 2, 5, 4
top boundary points: 4, 5, 6
In the above example, an easily made mistake is to let boundaries cross. For example by adding bottom boundary points for both layer layer 2 and layer 3: (1, 2, 3). And top boundary points for layer 2: (1, 2, 5, 6); and for layer 3: (4, 5, 2, 3). In this mistake, the boundaries cross at point 2 and 5.
Since the above example has a vertical part in the boundary (between point 2 and 5), it is important to think about the order in which the points are added to the boundary. Points should be ordered from left to right and from bottom to top. I.e. the order and point numbers of the points in the example is the only allowed possibility.
Below example code is is shown on how to add boundaries in the geolib code to create the above geometry.
from geolib.geometry.one import Point
from geolib.models.dsettlement.dsettlement_model import DSettlementModel
points = [
Point(x=-50, z=-10), #0
Point(x=50, z=-10), #1
Point(x=-50, z=0.0), #2
Point(x=0, z=0.0), #3
Point(x=0.0, z=-10.0), #4
Point(x=-50, z=-20), #5
Point(x=50, z=-20), #6
Point(x=50, z=0.0), #7
]
dm = DSettlementModel()
b1 = dm.add_boundary(points=[points[0], points[4], points[1]]) # points (1, 2, 3)
b2 = dm.add_boundary(points=[points[2], points[3], points[7]]) # points (4, 5, 6)
b3 = dm.add_boundary(points=[points[0], points[4], points[3], points[7]]) # points (1, 2, 5, 6)
b4 = dm.add_boundary(points=[points[5], points[6]]) # points (7, 8)
Output¶
- class geolib.models.dsettlement.internal.Results(*args, verticals_count: int, vertical: List[geolib.models.dsettlement.internal.Vertical], residual_settlements: List[geolib.models.dsettlement.internal.ResidualSettlements], amounts_of_loads: str = None, dissipation_in_layers: str = None, reliability_calculation_results: str = None)¶
Representation of [results] group in sld file.
- amounts_of_loads: Optional[str]¶
- dissipation_in_layers: Optional[str]¶
- reliability_calculation_results: Optional[str]¶
- residual_settlements: List[geolib.models.dsettlement.internal.ResidualSettlements]¶
- vertical: List[geolib.models.dsettlement.internal.Vertical]¶
- verticals_count: int¶
- class geolib.models.dsettlement.internal.ResidualSettlements(*args, residualsettlements: List[Dict[str, float]])¶
- residualsettlements: List[Dict[str, float]]¶
- class geolib.models.dsettlement.internal.Vertical(*args, id: int, x: float, z: float, time__settlement_per_load: geolib.models.dsettlement.internal.TimeSettlementPerLoad = None, depths: geolib.models.dsettlement.internal.Depths, leakages: geolib.models.dsettlement.internal.Leakages = None, drained_layers: geolib.models.dsettlement.internal.DrainedLayers = None, stresses: geolib.models.dsettlement.internal.Stresses = None, koppejan_settlement: geolib.models.dsettlement.internal.KoppejanSettlements = None, time__dependent_data: List[geolib.models.dsettlement.internal.TimeDependentData], elasticity: float = None, horizontal_displacements: geolib.models.dsettlement.internal.HorizontalDisplacements = None)¶
Representation of [Vertical] group in sld file.
- drained_layers: Optional[geolib.models.dsettlement.internal.DrainedLayers]¶
- elasticity: Optional[float]¶
- horizontal_displacements: Optional[geolib.models.dsettlement.internal.HorizontalDisplacements]¶
- id: int¶
- koppejan_settlement: Optional[geolib.models.dsettlement.internal.KoppejanSettlements]¶
- leakages: Optional[geolib.models.dsettlement.internal.Leakages]¶
- stresses: Optional[geolib.models.dsettlement.internal.Stresses]¶
- time__dependent_data: List[geolib.models.dsettlement.internal.TimeDependentData]¶
- time__settlement_per_load: Optional[geolib.models.dsettlement.internal.TimeSettlementPerLoad]¶
- x: float¶
- z: float¶
- class geolib.models.dsettlement.internal.DrainedLayers(*args, drainedlayers: List[int])¶
- drainedlayers: List[int]¶
- class geolib.models.dsettlement.internal.HorizontalDisplacements(*args, horizontaldisplacements: List[List[float]])¶
- horizontaldisplacements: List[List[float]]¶
- class geolib.models.dsettlement.internal.KoppejanSettlements(*args, koppejansettlements: List[Dict[str, float]])¶
- koppejansettlements: List[Dict[str, float]]¶
- class geolib.models.dsettlement.internal.Leakages(*args, leakages: List[float])¶
- leakages: List[float]¶
- class geolib.models.dsettlement.internal.Stresses(*args, stresses: List[Dict[str, float]])¶
- stresses: List[Dict[str, float]]¶

