Skip to content

pressure_depend_multi_yield

pressure_depend_multi_yield

Pressure-dependent multi-yield soil plasticity (OpenSees PressureDependMultiYield).

Attributes

__all__ module-attribute

__all__ = ['PressureDependMultiYieldMaterial']

Classes

Material

Material(material_type: str, material_name: str, user_name: str)

Bases: ABC

Abstract base class for manager-owned OpenSees material objects.

Material instances do not self-register and do not assign their own tags. A :class:~femora.core.material_manager.MaterialManager owns lifecycle operations, tag assignment, removal, and retagging for a local model context.

Parameters:

Name Type Description Default
material_type str

OpenSees material category (e.g. 'nDMaterial').

required
material_name str

Concrete OpenSees material name (e.g. 'ElasticIsotropic').

required
user_name str

User-specified label for this material instance.

required

Attributes:

Name Type Description
tag Optional[int]

Manager-assigned OpenSees material tag. Remains None until this object is added to a :class:~femora.core.material_manager.MaterialManager.

_owner object | None

Reference to the owning manager, or None when unmanaged.

Methods:
to_tcl abstractmethod
to_tcl() -> str

Render the OpenSees material definition command as a Tcl string.

updateMaterialStage
updateMaterialStage(state: str) -> str

Return an updateMaterialStage Tcl command, or empty string.

set_parameter
set_parameter(parameter_name: str, new_value: Union[float, int, str, None] = None, element_tags: Optional[List[int]] = None) -> str

Return a setParameter Tcl command, or empty string.

get_param
get_param(key: str) -> Any

Return the value of a stored parameter by key.

PressureDependMultiYieldMaterial

PressureDependMultiYieldMaterial(user_name: str = 'Unnamed', **kwargs: Any)

Bases: Material

Layered-yield soil plasticity with evolving strength versus confining stress.

This model targets saturated soil elements that require confining-stress dependent stiffness together with nested yield surfaces or a user-defined backbone to capture nonlinear soil response. Parameter names follow the OpenSees command vocabulary directly.

Tcl form

nDMaterial PressureDependMultiYield <tag> nd rho Gr Br ... liquefac3 noYieldSurf [gamma Gs ...] e cs1 cs2 cs3 pa c; #

Note
  • nd must be 2 for plane strain or 3 for three-dimensional use.
  • Positive noYieldSurf requests auto-generated nested yield surfaces.
  • Negative noYieldSurf switches to user-defined backbone input with abs(noYieldSurf) (gamma, Gs) pairs.
  • Supplied pairs may be a flat list [g1, Gs1, ...] or a list of (gamma, Gs) tuples.
  • Unrecognized keyword arguments are ignored for compatibility.
Example
from femora.core.model import Model

model = Model()
mat = model.material.nd.pressure_depend_multi_yield(
    user_name="profiled_soil",
    nd=3,
    rho=2.0,
    refShearModul=1.0e5,
    refBulkModul=3.0e5,
    frictionAng=37.0,
    peakShearStra=0.1,
    refPress=80.0,
    pressDependCoe=0.5,
    PTAng=27.0,
    contrac=0.05,
    dilat1=0.6,
    dilat2=3.0,
    liquefac1=5.0,
    liquefac2=0.003,
    liquefac3=1.0,
    noYieldSurf=20,
)
print(mat.tag)

Construct the material from keyword arguments matching OpenSees naming.

Parameters:

Name Type Description Default
user_name str

Label placed in the trailing Tcl comment once managed.

'Unnamed'
nd

Spatial dimension flag, either 2 or 3.

required
rho

Saturated mass density, strictly positive in model units.

required
refShearModul

Reference low-strain shear modulus at refPress.

required
refBulkModul

Reference bulk modulus at refPress.

required
frictionAng

Peak friction angle in degrees.

required
peakShearStra

Octahedral shear strain at peak strength, strictly positive.

required
refPress

Reference mean effective stress, strictly positive.

required
pressDependCoe

Non-negative confinement dependence coefficient.

required
PTAng

Phase-transformation angle in degrees.

required
contrac

Contractive plasticity parameter.

required
dilat1

First dilatancy parameter.

required
dilat2

Second dilatancy parameter.

required
liquefac1

Liquefaction parameter 1.

required
liquefac2

Liquefaction parameter 2.

required
liquefac3

Liquefaction parameter 3.

required
noYieldSurf

Surface count or negative custom-backbone selector.

required
pairs

Custom backbone data required when noYieldSurf < 0.

required
e

Optional void ratio, default 0.6.

required
cs1

Optional critical-state coefficient, default 0.9.

required
cs2

Optional critical-state coefficient, default 0.02.

required
cs3

Optional critical-state coefficient, default 0.7.

required
pa

Optional atmospheric or reference pressure, default 101.0.

required
c

Optional cohesion-like intercept, default 0.3.

required

Raises:

Type Description
ValueError

If a required Tcl argument is missing.

ValueError

If a numeric Tcl argument cannot be converted correctly.

ValueError

If any validated value falls outside the supported range.

Methods:
to_tcl
to_tcl() -> str

Flatten parameters into the long OpenSees PressureDependMultiYield line.

Returns:

Name Type Description
str str

Tcl text beginning with nDMaterial PressureDependMultiYield

str

followed by the primary soil parameters, noYieldSurf, optional

str

backbone scalars, and the trailing e cs1 cs2 cs3 pa c block.

Raises:

Type Description
ValueError

If the material is not yet tagged by a manager.

updateMaterialStage
updateMaterialStage(state: str) -> str

Return Tcl that toggles elastic staging for staged analysis workflows.

Parameters:

Name Type Description Default
state str

"elastic" maps to stage 0 and "plastic" maps to stage 1. Other strings yield an empty return.

required

Returns:

Name Type Description
str str

An updateMaterialStage command or an empty string.

Raises:

Type Description
ValueError

If the material tag is still None.