weac.components.weak_layer module

Mechanical properties of the weak layer (Winkler foundation).

class weac.components.weak_layer.WeakLayer(*, rho=150, h=20, f=None, collapse_height=0.0, nu=0.25, E=0.0, G=0.0, kn=0.0, kt=0.0, G_Ic=0.56, G_IIc=0.79, sigma_c=6.16, tau_c=5.09, sigma_comp=2.6, E_method='schottner_fc_dh', constitutive_model='PlaneStrain', grain_type=None, grain_size=None, hand_hardness=None)[source]

Bases: BaseModel

Weak layer that also behaves as a Winkler foundation.

Parameters:
  • rho (Annotated[float, Gt(gt=0)])

  • h (Annotated[float, Gt(gt=0)])

  • f (float | None)

  • collapse_height (Annotated[float, Ge(ge=0)])

  • nu (Annotated[float, Ge(ge=0), Lt(lt=0.5)])

  • E (Annotated[float, Ge(ge=0)])

  • G (Annotated[float, Ge(ge=0)])

  • kn (float)

  • kt (float)

  • G_Ic (Annotated[float, Gt(gt=0)])

  • G_IIc (Annotated[float, Gt(gt=0)])

  • sigma_c (Annotated[float, Gt(gt=0)])

  • tau_c (Annotated[float, Gt(gt=0)])

  • sigma_comp (Annotated[float, Gt(gt=0)])

  • E_method (Literal['schottner_fc_dh', 'bergfeld', 'scapazzo', 'gerling'])

  • constitutive_model (Literal['PlaneStrain', 'PlaneStress', 'Uniaxial'])

  • grain_type (GrainType | None)

  • grain_size (float | None)

  • hand_hardness (HandHardness | None)

rho

Density of the layer [kg m⁻³].

Type:

float

h

Height/Thickness of the layer [mm].

Type:

float

f

Resultant force of the layer [N/mm]

Type:

float

nu

Poisson’s ratio [-] Defaults to weac.constants.NU).

Type:

float

E

Young’s modulus E [MPa]. If omitted it is derived from rho.

Type:

float, optional

G

Shear modulus G [MPa]. If omitted it is derived from E and nu.

Type:

float, optional

kn

Normal (compression) spring stiffness kₙ [N mm⁻³]. If omitted is computed as E_plane / h where E_plane = E / (1 - nu²).

Type:

float, optional

kt

Shear spring stiffness kₜ [N mm⁻³]. If omitted it is G / h.

Type:

float, optional

G_Ic

Mode-I fracture toughness GIc [J/m^2]. Default 0.56 J/m^2.

Type:

float

G_IIc

Mode-II fracture toughness GIIc [J/m^2]. Default 0.79 J/m^2.

Type:

float

rho: float
h: float
f: float | None
collapse_height: float
nu: float
E: float
G: float
kn: float
kt: float
G_Ic: float
G_IIc: float
sigma_c: float
tau_c: float
sigma_comp: float
E_method: Literal['schottner_fc_dh', 'bergfeld', 'scapazzo', 'gerling']
constitutive_model: Literal['PlaneStrain', 'PlaneStress', 'Uniaxial']
grain_type: GrainType | None
grain_size: float | None
hand_hardness: HandHardness | None
model_config = {'extra': 'forbid', 'frozen': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_post_init(_ctx)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

validate_positive_E_G()[source]

Validate that E and G are positive.