weac.eigensystem module

Base class for the elastic analysis of layered snow slabs.

class weac.eigensystem.Eigensystem(system='pst-', touchdown=False)[source]

Bases: object

Base class for a layered beam on an elastic foundation.

Provides geometry, material and loading attributes, and methods for the assembly of a fundamental system.

g

Gravitational constant (mm/s^2). Default is 9180.

Type:

float

lski

Effective out-of-plance length of skis (mm). Default is 1000.

Type:

float

tol

Relative Romberg integration toleranc. Default is 1e-3.

Type:

float

system

Type of boundary value problem. Default is ‘pst-‘.

Type:

str

weak

Dictionary that holds the weak layer properties Young’s modulus (MPa) and Poisson’s ratio. Defaults are 0.25 and 0.25, respectively.

Type:

dict

t

Weak-layer thickness (mm). Default is 30.

Type:

float

kn

Compressive foundation (weak-layer) stiffness (N/mm^3).

Type:

float

kt

Shear foundation (weak-layer) stiffness (N/mm^3).

Type:

float

tc

Weak-layer thickness after collapse (mm).

Type:

float

slab

Matrix that holds the elastic properties of all slab layers. Columns are density (kg/m^3), layer heigth (mm), Young’s modulus (MPa), shear modulus (MPa), and Poisson’s ratio.

Type:

ndarray

k

Shear correction factor of the slab. Default is 5/6.

Type:

float

h

Slab thickness (mm). Default is 300.

Type:

float

zs

Z-coordinate of the center of gravity of the slab (mm).

Type:

float

A11

Extensional stiffness of the slab (N/mm).

Type:

float

B11

Bending-extension coupling stiffness of the slab (N).

Type:

float

D11

Bending stiffness of the slab (Nmm).

Type:

float

kA55

Shear stiffness of the slab (N/mm).

Type:

float

K0

Characteristic stiffness value (N).

Type:

float

ewC

List of complex eigenvalues.

Type:

ndarray

ewR

List of real eigenvalues.

Type:

ndarray

evC

Matrix with eigenvectors corresponding to complex eigenvalues as columns.

Type:

ndarray

evR

Matrix with eigenvectors corresponding to real eigenvalues as columns.

Type:

ndarray

sC

X-coordinate shift (mm) of complex parts of the solution. Used for numerical stability.

Type:

float

sR

X-coordinate shift (mm) of real parts of the solution. Used for numerical stability.

Type:

float

sysmat

System matrix.

Type:

ndarray

lC

Cracklength whose maximum deflection equals the weak-layer thickness (mm).

Type:

float

lS

Cracklength when touchdown exerts maximum support on the slab (mm). Corresponds to the longest possible unbedded length.

Type:

float

ratio

Increment factor for the weak-layer stiffness from intact to collapsed state.

Type:

float

beta

Describes the stiffnesses of weak-layer and slab.

Type:

float

calc_eigensystem()[source]

Calculate eigenvalues and eigenvectors of the system matrix.

calc_foundation_stiffness()[source]

Compute foundation normal and shear stiffness.

calc_fundamental_system()[source]

Calculate the fundamental system of the problem.

calc_laminate_stiffness_matrix()[source]

Provide ABD matrix.

Return plane-strain laminate stiffness matrix (ABD matrix).

calc_system_matrix()[source]

Assemble first-order ODE system matrix K.

Using the solution vector z = [u, u’, w, w’, psi, psi’] the ODE system is written in the form Az’ + Bz = d and rearranged to z’ = -(A ^ -1)Bz + (A ^ -1)d = Kz + q

Returns:

System matrix K (6x6).

Return type:

ndarray

get_load_vector(phi)[source]

Compute sytem load vector q.

Using the solution vector z = [u, u’, w, w’, psi, psi’] the ODE system is written in the form Az’ + Bz = d and rearranged to z’ = -(A ^ -1)Bz + (A ^ -1)d = Kz + q

Parameters:

phi (float) – Inclination (degrees). Counterclockwise positive.

Returns:

System load vector q (6x1).

Return type:

ndarray

get_ply_coordinates()[source]

Calculate ply (layer) z-coordinates.

Returns:

Ply (layer) z-coordinates (top to bottom) in coordinate system with downward pointing z-axis (z-list will be negative to positive).

Return type:

ndarray

get_skier_load(m, phi)[source]

Calculate skier point load.

Parameters:
  • m (float) – Skier weight (kg).

  • phi (float) – Inclination (degrees). Counterclockwise positive.

Returns:

  • Fn (float) – Skier load (N) in normal direction.

  • Ft (float) – Skier load (N) in tangential direction.

get_surface_load(phi)[source]

Calculate surface line loads.

Parameters:

phi (float) – Inclination (degrees). Counterclockwise positive.

Returns:

  • pn (float) – Surface line load (N/mm) in normal direction.

  • pt (float) – Surface line load (N/mm) in tangential direction.

get_weight_load(phi)[source]

Calculate line loads from slab mass.

Parameters:

phi (float) – Inclination (degrees). Counterclockwise positive.

Returns:

  • qn (float) – Line load (N/mm) at center of gravity in normal direction.

  • qt (float) – Line load (N/mm) at center of gravity in tangential direction.

set_beam_properties(layers, C0=6.5, C1=4.4, nu=0.25, update=False)[source]

Set material and properties geometry of beam (slab).

Parameters:
  • layers (list or str) – 2D list of top-to-bottom layer densities and thicknesses. Columns are density (kg/m^3) and thickness (mm). One row corresponds to one layer. If entered as str, last split must be available in database.

  • C0 (float, optional) – Multiplicative constant of Young modulus parametrization according to Bergfeld et al. (2023). Default is 6.5.

  • C1 (float, optional) – Exponent of Young modulus parameterization according to Bergfeld et al. (2023). Default is 4.6.

  • nu (float, optional) – Possion’s ratio. Default is 0.25

  • update (bool, optional) – If true, recalculate the fundamental system after foundation properties have changed.

set_foundation_properties(t: float = 30.0, E: float = 0.25, nu: float = 0.25, update: bool = False)[source]

Set material properties and geometry of foundation (weak layer).

Parameters:
  • t (float, optional) – Weak-layer thickness (mm). Default is 30.

  • cf (float) – Fraction by which the weak-layer thickness is reduced due to collapse. Default is 0.5.

  • E (float, optional) – Weak-layer Young modulus (MPa). Default is 0.25.

  • nu (float, optional) – Weak-layer Poisson ratio. Default is 0.25.

  • update (bool, optional) – If true, recalculate the fundamental system after foundation properties have changed.

set_surface_load(p)[source]

Set surface line load.

Define a distributed surface load (N/mm) that acts in vertical (gravity) direction on the top surface of the slab.

Parameters:

p (float) – Surface line load (N/mm) that acts in vertical (gravity) direction onm the top surface of the slab.

z(x, C, l, phi, bed=True)[source]

Assemble solution vector at positions x.

Parameters:
  • x (float or squence) – Horizontal coordinate (mm). Can be sequence of length N.

  • C (ndarray) – Vector of constants (6xN) at positions x.

  • l (float) – Segment length (mm).

  • phi (float) – Inclination (degrees).

  • bed (bool) – Indicates whether segment has foundation (True) or not (False). Default is True.

Returns:

z – Solution vector (6xN) at position x.

Return type:

ndarray

zh(x, l=0, bed=True)[source]

Compute bedded or free complementary solution at position x.

Parameters:
  • x (float) – Horizontal coordinate (mm).

  • l (float, optional) – Segment length (mm). Default is 0.

  • bed (bool) – Indicates whether segment has foundation or not. Default is True.

Returns:

zh – Complementary solution matrix (6x6) at position x.

Return type:

ndarray

zp(x, phi, bed=True)[source]

Compute bedded or free particular integrals at position x.

Parameters:
  • x (float) – Horizontal coordinate (mm).

  • phi (float) – Inclination (degrees).

  • bed (bool) – Indicates whether segment has foundation (True) or not (False). Default is True.

Returns:

zp – Particular integral vector (6x1) at position x.

Return type:

ndarray