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
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

Results

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
class geolib.models.dsettlement.internal.SoilModel(value)

An enumeration.

ISOTACHE = 2
NEN_BJERRUM = 1
NEN_KOPPEJAN = 0
class geolib.models.dsettlement.internal.ConsolidationModel(value)

An enumeration.

DARCY = 0
TERZAGHI = 1

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.

../../_images/circular.png
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

../../_images/rectangural.png
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.

../../_images/tank.png
Parameters

data (Any) –

Rintern: float
alpha: float
dWall: float
internalweight: float
wallweight: float
class geolib.models.dsettlement.loads.TrapeziformLoad(**data)

Create a trapeziform load with the given name and properties.

:param gamma – The weight of the load per m3:

../../_images/trapeziform.png
Parameters

data (Any) –

gamma: float
height: float
xl: float
xm: float
xr: float
class geolib.models.dsettlement.loads.UniformLoad(**data)

Create a uniform load with the given name and properties.

Parameters

unit_weight – The weight of the load per m3

../../_images/uniform.png
Parameters

data (Any) –

gamma: float
height: float
unit_weight: float
y_application: 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
grid: geolib.models.dsettlement.drain_types.DrainGridType
range_from: float
range_to: float
schedule: geolib.models.dsettlement.drains.ScheduleValues
thickness: Optional[float]
width: Optional[float]
class geolib.models.dsettlement.drain_types.DrainGridType(value)

An enumeration.

RECTANGULAR = 1
TRIANGULAR = 0
UNDERDETERMINED = 2
class geolib.models.dsettlement.drain_types.DrainSchedule(value)

An enumeration.

DETAILED_INPUT = 2
OFF = 0
SIMPLE_INPUT = 1
class geolib.models.dsettlement.drain_types.DrainType(value)

An enumeration.

COLUMN = 1
SANDWALL = 2
STRIP = 0

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.

../../_images/simple_geometry_example.png

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:

../../_images/geometry_example_vertical_boundary.png

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.

depths: geolib.models.dsettlement.internal.Depths
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.Depths(*args, depths: List[float])
depths: List[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]]
class geolib.models.dsettlement.internal.TimeDependentData(*args, timedependentdata: Dict[float, List[Dict[str, float]]])
timedependentdata: Dict[float, List[Dict[str, float]]]
class geolib.models.dsettlement.internal.TimeSettlementPerLoad(*args, timesettlementperload: List[List[float]])
timesettlementperload: List[List[float]]