Skip to content

dmt.py

subsurfaceio.functions.dmt

DMT functions.

Classes:

Name Description
ReferenceFigureRegistry

Pre-instantiated reference figures

Functions:

Name Description
get_coefficient_of_earth_pressure_at_rest__marchetti1981flat

Calculation function.

get_constrained_modulus__marchetti1981flat

Calculation function.

get_corrected_pressure_p0

Calculation function.

get_corrected_pressure_p1

Calculation function.

get_corrected_pressure_p2

Calculation function.

get_dilatometer_modulus

Calculation function.

get_elasticity_modulus__marchetti1981flat

Calculation function.

get_friction_angle__marchetti1997flat

Calculation function.

get_horizontal_stress_index

Calculation function.

get_is_fine_soil_dmt

Calculation function.

get_is_potentially_liquefiable_dmt

Calculation function.

get_material_description

Calculation function.

get_material_index

Calculation function.

get_overconsolidation_ratio__marchetti1981flat

Calculation function.

get_pore_pressure_index

Calculation function.

get_relative_density__reyna1991dilatometer

Calculation function.

get_shear_modulus__amoroso2013prediction

Calculation function.

get_undrained_shear_strength__marchetti1981flat

Calculation function.

get_unit_weight__marchetti1981flat

Calculation function.

ReferenceFigureRegistry

Pre-instantiated reference figures

get_coefficient_of_earth_pressure_at_rest__marchetti1981flat

get_coefficient_of_earth_pressure_at_rest__marchetti1981flat(
    horizontal_stress_index, is_fine_soil
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_coefficient\_of\_earth\_pressure\_at\_rest\_\_marchetti1981flat}(K_d, \mathrm{is\_fine\_soil}) \\ \hspace{1em} K_o \gets \mathopen{}\left( \frac{K_d}{1.5} \mathclose{}\right)^{0.47} - 0.6 \\ \hspace{1em} K_o \gets \mathrm{np}.\mathrm{asarray} \mathopen{}\left( K_o \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( K_o, \mathord{\sim} \mathrm{is\_fine\_soil}, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} K_o \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( K_o, 0.3, \mathrm{None} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ K_o \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
horizontal_stress_index float

Horizontal stress index from DMT

required
is_fine_soil bool

Indicates if soil is fine-grained

required

Returns:

Name Type Description
coefficient_of_earth_pressure_at_rest float

Coefficient of lateral earth pressure at rest

get_constrained_modulus__marchetti1981flat

get_constrained_modulus__marchetti1981flat(
    material_index,
    horizontal_stress_index,
    dilatometer_modulus,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_constrained\_modulus\_\_marchetti1981flat}(I_D, K_d, E_d) \\ \hspace{1em} \mathrm{rm0} \gets 0.14 + \frac{0.36 \mathopen{}\left( I_D - 0.6 \mathclose{}\right)}{2.4} \\ \hspace{1em} \mathrm{condition\_1} \gets I_D \le 0.6 \\ \hspace{1em} \mathrm{choice\_1} \gets 0.14 + 2.36 \log_{10} K_d \\ \hspace{1em} \mathrm{condition\_2} \gets I_D < 3 \\ \hspace{1em} \mathrm{choice\_2} \gets \mathrm{rm0} + \mathopen{}\left( 2.5 - \mathrm{rm0} \mathclose{}\right) \log_{10} K_d \\ \hspace{1em} \mathrm{condition\_3} \gets I_D \ge 3 \\ \hspace{1em} \mathrm{choice\_3} \gets 0.5 + 2 \log_{10} K_d \\ \hspace{1em} R_M \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} R_M \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( R_M, 0.85, \mathrm{None} \mathclose{}\right) \\ \hspace{1em} M \gets R_M \cdot E_d \\ \hspace{1em} \mathbf{return} \ M \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
material_index float

Dilatometer material index

required
horizontal_stress_index float

Horizontal stress index from DMT

required
dilatometer_modulus float

Dilatometer modulus from DMT

required

Returns:

Name Type Description
constrained_modulus float

Constrained modulus of soil

get_corrected_pressure_p0

get_corrected_pressure_p0(
    raw_a_reading,
    raw_b_reading,
    vented_control_unit_reading_a,
    free_air_correction_a_reading,
    free_air_correction_b_reading,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_corrected\_pressure\_p0}(A, B, Z_{M\ A}, ΔA, ΔB) \\ \hspace{1em} P_0 \gets 1.05 \mathopen{}\left( A - Z_{M\ A} + ΔA \mathclose{}\right) - 0.05 \mathopen{}\left( B - Z_{M\ A} - ΔB \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ P_0 \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
raw_a_reading float

First dilatometer reading

required
raw_b_reading float

Second dilatometer reading

required
vented_control_unit_reading_a float

Control unit reading when system is vented for A

required
free_air_correction_a_reading float

Free air correction for dilatometer A reading

required
free_air_correction_b_reading float

Free air correction for dilatometer B reading

required

Returns:

Name Type Description
corrected_pressure_p0 float

Corrected first dilatometer reading

get_corrected_pressure_p1

get_corrected_pressure_p1(
    raw_b_reading,
    vented_control_unit_reading_b,
    free_air_correction_b_reading,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_corrected\_pressure\_p1}(B, Z_{M\ B}, ΔB) \\ \hspace{1em} P_1 \gets B - Z_{M\ B} - ΔB \\ \hspace{1em} \mathbf{return} \ P_1 \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
raw_b_reading float

Second dilatometer reading

required
vented_control_unit_reading_b float

Control unit reading when system is vented for B

required
free_air_correction_b_reading float

Free air correction for dilatometer B reading

required

Returns:

Name Type Description
corrected_pressure_p1 float

Corrected second dilatometer reading

get_corrected_pressure_p2

get_corrected_pressure_p2(
    raw_c_reading, free_air_correction_a_reading
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_corrected\_pressure\_p2}(C, ΔA) \\ \hspace{1em} P_2 \gets C + ΔA \\ \hspace{1em} \mathbf{return} \ P_2 \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
raw_c_reading float

Third dilatometer reading

required
free_air_correction_a_reading float

Free air correction for dilatometer A reading

required

Returns:

Name Type Description
corrected_pressure_p2 float

Corrected third dilatometer reading

get_dilatometer_modulus

get_dilatometer_modulus(
    corrected_pressure_p0, corrected_pressure_p1
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dilatometer\_modulus}(P_0, P_1) \\ \hspace{1em} E_d \gets 34.7 \mathopen{}\left( P_1 - P_0 \mathclose{}\right) \\ \hspace{1em} E_d \gets \mathrm{np}.\mathrm{where} \mathopen{}\left( E_d \le 0, \mathrm{np}.\mathrm{nan}, E_d \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ \frac{1}{1000} \cdot E_d \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
corrected_pressure_p0 float

Corrected first dilatometer reading

required
corrected_pressure_p1 float

Corrected second dilatometer reading

required

Returns:

Name Type Description
dilatometer_modulus float

Dilatometer modulus from DMT

get_elasticity_modulus__marchetti1981flat

get_elasticity_modulus__marchetti1981flat(
    constrained_modulus,
    elasticity_to_constrained_modulus_ratio,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_elasticity\_modulus\_\_marchetti1981flat}(M, E_s\ /\ M) \\ \hspace{1em} E_s \gets E_s\ /\ M \cdot M \\ \hspace{1em} \mathbf{return} \ E_s \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
constrained_modulus float

Constrained modulus of soil

required
elasticity_to_constrained_modulus_ratio float

Ratio of elasticity modulus to constrained modulus

required

Returns:

Name Type Description
elasticity_modulus float

Modulus of elasticity of soil

get_friction_angle__marchetti1997flat

get_friction_angle__marchetti1997flat(
    horizontal_stress_index, material_index
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_friction\_angle\_\_marchetti1997flat}(K_d, I_D) \\ \hspace{1em} ϕ \gets 28 + 14.6 \log_{10} K_d - 2.1 \mathopen{}\left( \log_{10} K_d \mathclose{}\right)^{2} \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ϕ, I_D \le 1.8, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ ϕ \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
horizontal_stress_index float

Horizontal stress index from DMT

required
material_index float

Dilatometer material index

required

Returns:

Name Type Description
friction_angle float

Friction angle of soil

get_horizontal_stress_index

get_horizontal_stress_index(
    corrected_pressure_p0,
    pore_water_pressure,
    effective_stress,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_horizontal\_stress\_index}(P_0, u_0, σ_v') \\ \hspace{1em} K_d \gets \frac{P_0 - u_0}{σ_v'} \\ \hspace{1em} \mathbf{return} \ K_d \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
corrected_pressure_p0 float

Corrected first dilatometer reading

required
pore_water_pressure float

Pore water pressure in soil

required
effective_stress float

Effective vertical stress in soil

required

Returns:

Name Type Description
horizontal_stress_index float

Horizontal stress index from DMT

get_is_fine_soil_dmt

get_is_fine_soil_dmt(material_index)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_is\_fine\_soil\_dmt}(I_D) \\ \hspace{1em} \mathrm{is\_fine\_soil} \gets I_D < 1.2 \\ \hspace{1em} \mathbf{return} \ \mathrm{is\_fine\_soil} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
material_index float

Dilatometer material index

required

Returns:

Name Type Description
is_fine_soil bool

Indicates if soil is fine-grained

get_is_potentially_liquefiable_dmt

get_is_potentially_liquefiable_dmt(
    below_water_table,
    depth,
    liquefaction_max_depth,
    is_fine_soil,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_is\_potentially\_liquefiable\_dmt}(\mathrm{below\_water\_table}, z, LIQ_{max\ z}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathrm{is\_potentially\_liquefiable} \gets \mathrm{get\_is\_potentially\_liquefiable} \mathopen{}\left( \mathrm{below\_water\_table}, z, LIQ_{max\ z} \mathclose{}\right) \\ \hspace{1em} \mathrm{is\_potentially\_liquefiable} \gets \mathrm{np}.\mathrm{asarray} \mathopen{}\left( \mathrm{is\_potentially\_liquefiable} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( \mathrm{is\_potentially\_liquefiable}, \mathrm{is\_fine\_soil}, \mathrm{False} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ \mathrm{is\_potentially\_liquefiable} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
below_water_table bool

Indicates if soil layer is below water table

required
depth float

Depth below ground surface to bottom of layer

required
liquefaction_max_depth float

Maximum depth for liquefaction analysis

required
is_fine_soil bool

Indicates if soil is fine-grained

required

Returns:

Name Type Description
is_potentially_liquefiable bool

Indicates if soil is potentially liquefiable

get_material_description

get_material_description(
    material_index, dilatometer_modulus
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_material\_description}(I_D, E_d) \\ \hspace{1em} I_D \gets \mathrm{np}.\mathrm{copy} \mathopen{}\left( I_D \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( I_D, E_d < 1.2, \mathrm{np}.\mathrm{where} \mathopen{}\left( I_D < 0.1, -1.5, -0.5 \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{material\_description} \gets \mathrm{parameter\_registry}.\mathrm{bin\_data} \mathopen{}\left( \textrm{"material\_index"}, I_D, \textrm{"material\_description"} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ \mathrm{material\_description} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
material_index float

Dilatometer material index

required
dilatometer_modulus float

Dilatometer modulus from DMT

required

Returns:

Name Type Description
material_description str

Dilatometer material description

get_material_index

get_material_index(
    corrected_pressure_p0,
    corrected_pressure_p1,
    pore_water_pressure,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_material\_index}(P_0, P_1, u_0) \\ \hspace{1em} I_D \gets \frac{P_1 - P_0}{P_0 - u_0} \\ \hspace{1em} I_D \gets \mathrm{np}.\mathrm{where} \mathopen{}\left( I_D \le 0, \mathrm{np}.\mathrm{nan}, I_D \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ I_D \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
corrected_pressure_p0 float

Corrected first dilatometer reading

required
corrected_pressure_p1 float

Corrected second dilatometer reading

required
pore_water_pressure float

Pore water pressure in soil

required

Returns:

Name Type Description
material_index float

Dilatometer material index

get_overconsolidation_ratio__marchetti1981flat

get_overconsolidation_ratio__marchetti1981flat(
    horizontal_stress_index, is_fine_soil
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_overconsolidation\_ratio\_\_marchetti1981flat}(K_d, \mathrm{is\_fine\_soil}) \\ \hspace{1em} OCR \gets \mathopen{}\left( 0.5 K_d \mathclose{}\right)^{1.56} \\ \hspace{1em} OCR \gets \mathrm{np}.\mathrm{asarray} \mathopen{}\left( OCR \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( OCR, \mathord{\sim} \mathrm{is\_fine\_soil}, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} OCR \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( OCR, 0.8, 99.9 \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ OCR \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
horizontal_stress_index float

Horizontal stress index from DMT

required
is_fine_soil bool

Indicates if soil is fine-grained

required

Returns:

Name Type Description
overconsolidation_ratio float

Overconsolidation ratio of soil

get_pore_pressure_index

get_pore_pressure_index(
    corrected_pressure_p0,
    corrected_pressure_p2,
    pore_water_pressure,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pore\_pressure\_index}(P_0, P_2, u_0) \\ \hspace{1em} U_D \gets \frac{P_2 - u_0}{P_0 - u_0} \\ \hspace{1em} \mathbf{return} \ U_D \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
corrected_pressure_p0 float

Corrected first dilatometer reading

required
corrected_pressure_p2 float

Corrected third dilatometer reading

required
pore_water_pressure float

Pore water pressure in soil

required

Returns:

Name Type Description
pore_pressure_index float

Pore pressure index from DMT

get_relative_density__reyna1991dilatometer

get_relative_density__reyna1991dilatometer(
    horizontal_stress_index, material_index
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_relative\_density\_\_reyna1991dilatometer}(K_d, I_D) \\ \hspace{1em} D_r \gets \mathrm{ReferenceFigureRegistry}.\mathrm{RelativeDensityReyna1991}.\mathrm{interpolate\_at\_x} \mathopen{}\left( K_d \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( D_r, I_D \le 1.8, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ D_r \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
horizontal_stress_index float

Horizontal stress index from DMT

required
material_index float

Dilatometer material index

required

Returns:

Name Type Description
relative_density float

Relative density of soil

get_shear_modulus__amoroso2013prediction

get_shear_modulus__amoroso2013prediction(
    material_index,
    horizontal_stress_index,
    constrained_modulus,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_shear\_modulus\_\_amoroso2013prediction}(I_D, K_d, M) \\ \hspace{1em} \mathrm{condition\_1} \gets I_D \le 0.6 \\ \hspace{1em} \mathrm{choice\_1} \gets M \cdot 26.177 K_d^{-1.0066} \\ \hspace{1em} \mathrm{condition\_2} \gets \mathopen{}\left( I_D \ge 0.6 \mathclose{}\right) \mathbin{\&} \mathopen{}\left( I_D < 1.8 \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_2} \gets M \cdot 15.686 K_d^{-0.921} \\ \hspace{1em} \mathrm{condition\_3} \gets I_D \ge 1.8 \\ \hspace{1em} \mathrm{choice\_3} \gets M \cdot 4.5613 K_d^{-0.7967} \\ \hspace{1em} G_o \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ G_o \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
material_index float

Dilatometer material index

required
horizontal_stress_index float

Horizontal stress index from DMT

required
constrained_modulus float

Constrained modulus of soil

required

Returns:

Name Type Description
small_strain_shear_modulus float

Small strain shear modulus of soil

get_undrained_shear_strength__marchetti1981flat

get_undrained_shear_strength__marchetti1981flat(
    horizontal_stress_index, effective_stress, is_fine_soil
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_undrained\_shear\_strength\_\_marchetti1981flat}(K_d, σ_v', \mathrm{is\_fine\_soil}) \\ \hspace{1em} S_u \gets 0.22 σ_v' \cdot \mathopen{}\left( 0.5 K_d \mathclose{}\right)^{1.25} \\ \hspace{1em} S_u \gets \mathrm{np}.\mathrm{asarray} \mathopen{}\left( S_u \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( S_u, \mathord{\sim} \mathrm{is\_fine\_soil}, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ S_u \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
horizontal_stress_index float

Horizontal stress index from DMT

required
effective_stress float

Effective vertical stress in soil

required
is_fine_soil bool

Indicates if soil is fine-grained

required

Returns:

Name Type Description
undrained_shear_strength float

Undrained shear strength of soil

get_unit_weight__marchetti1981flat

get_unit_weight__marchetti1981flat(
    material_index, dilatometer_modulus
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_unit\_weight\_\_marchetti1981flat}(I_D, E_d) \\ \hspace{1em} n \gets \begin{bmatrix} 1.737 \\ 2.013 \\ 2.289 \\ 2.564 \end{bmatrix} \\ \hspace{1em} m \gets \begin{bmatrix} 0.585 \\ 0.621 \\ 0.657 \\ 0.694 \end{bmatrix} \\ \hspace{1em} \mathrm{gamma\_table} \gets \begin{bmatrix} 1.6 & 1.6 & 1.7 \\ 1.7 & 1.7 & 1.8 \\ 1.8 & 1.8 & 1.9 \\ 1.9 & 1.95 & 2.0 \\ 2.05 & 2.1 & 2.15 \end{bmatrix} \\ \hspace{1em} \mathrm{condition\_1} \gets \mathopen{}\left( E_d < 1.2 \mathclose{}\right) \mathbin{\&} \mathopen{}\left( I_D < 0.1 \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_1} \gets 1.4 \\ \hspace{1em} \mathrm{condition\_2} \gets \mathopen{}\left( E_d < 1.2 \mathclose{}\right) \mathbin{\&} \mathopen{}\left( I_D \ge 0.1 \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_2} \gets 1.5 \\ \hspace{1em} γ \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathrm{flag} \gets E_d \ge 1.2 \\ \hspace{1em} \mathbf{if} \ \mathrm{np}.\mathrm{any} \mathopen{}\left( \mathrm{flag} \mathclose{}\right) \\ \hspace{2em} \mathrm{thresholds} \gets n + m \cdot \log_{10} I_D + \log_{10} 0.1 \\ \hspace{2em} \mathrm{table\_i} \gets \sum \mathopen{}\left( \log_{10} E_d \ge \mathrm{thresholds} \mathclose{}\right) \\ \hspace{2em} \mathrm{condition\_1} \gets I_D > 1.8 \\ \hspace{2em} \mathrm{choice\_1} \gets 2 \\ \hspace{2em} \mathrm{condition\_2} \gets I_D > 0.6 \\ \hspace{2em} \mathrm{choice\_2} \gets 1 \\ \hspace{2em} \mathrm{condition\_3} \gets I_D > 0.0 \\ \hspace{2em} \mathrm{choice\_3} \gets 0 \\ \hspace{2em} \mathrm{table\_j} \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3} \mathclose{}\right] \mathclose{}\right) \\ \hspace{2em} \mathrm{mask} \gets \mathrm{flag} \mathbin{\&} \mathopen{}\left( \mathrm{table\_j} \ge 0 \mathclose{}\right) \\ \hspace{2em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( γ, \mathrm{mask}, \mathrm{gamma\_table}_{\mathopen{}\left( \mathrm{table\_i}, \mathrm{table\_j} \mathclose{}\right), \mathrm{mask}} \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ γ \cdot 9.81 \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
material_index float

Dilatometer material index

required
dilatometer_modulus float

Dilatometer modulus from DMT

required

Returns:

Name Type Description
unit_weight float

Unit weight of soil