Skip to content

steel01

steel01

Uniaxial Steel01 hysteretic material wrapping OpenSees Steel01.

Attributes

__all__ module-attribute

__all__ = ['Steel01Material']

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.

Steel01Material

Steel01Material(user_name: str = 'Unnamed', *, Fy: float | None = None, E0: float | None = None, b: float | None = None, a1: float | None = None, a2: float | None = None, a3: float | None = None, a4: float | None = None, **_: Any)

Bases: Material

Bilinear steel plasticity with kinematic hardening and optional isotropic growth.

Implements the OpenSees Steel01 rule for truss, fiber, or spring elements. Yield force is set by Fy with initial elastic stiffness E0 and strain-hardening ratio b. Optional parameters a1 to a4 enable isotropic expansion of the yield surface and must be provided together or omitted entirely.

Tcl form

uniaxialMaterial Steel01 <tag> Fy E0 b [a1 a2 a3 a4]; #

Note
  • When all four isotropic parameters exist, they emit after b exactly as OpenSees expects.
  • If the isotropic hardening set is omitted, the Tcl command ends after b.
  • Stray keyword arguments are ignored to keep factory calls forward compatible.

Attributes:

Name Type Description
params

Holds Fy, E0, b, and optional a1 to a4.

Example
from femora.core.model import Model

model = Model()
mat = model.material.uniaxial.steel01(
    user_name="A992",
    Fy=345.0,
    E0=200000.0,
    b=0.01,
)
print(mat.tag)

Validate yield, stiffness, and optional isotropic hardening inputs.

Parameters:

Name Type Description Default
user_name str

Unique Femora and OpenSees material label surfaced in Tcl.

'Unnamed'
Fy float | None

Yield strength, strictly positive after coercion.

None
E0 float | None

Initial elastic modulus, strictly positive.

None
b float | None

Post-yield stiffness ratio E_ep / E0, non-negative.

None
a1 float | None

Isotropic coefficient for compression envelope widening.

None
a2 float | None

Isotropic exponent paired with a1.

None
a3 float | None

Isotropic coefficient for tension envelope widening.

None
a4 float | None

Isotropic exponent paired with a3.

None
**_ Any

Ignored keyword cushioning.

{}

Raises:

Type Description
ValueError

If Fy, E0, or b is missing.

ValueError

If a numeric parameter cannot be converted correctly.

ValueError

If a validated value falls outside the supported range.

ValueError

If only part of the isotropic hardening set is provided.

Methods:
to_tcl
to_tcl() -> str

Emit Steel01 with optional isotropic arguments.

Returns:

Name Type Description
str str

Tcl text including Fy E0 b and the four optional isotropic

str

parameters when all were supplied at construction.

Raises:

Type Description
ValueError

If the material has not been registered with a manager.