Skip to content

ElasticSection

ElasticSection

ElasticSection(user_name: str = 'Unnamed', *, E: float, A: float, Iz: float, Iy: Optional[float] = None, G: Optional[float] = None, J: Optional[float] = None)

Bases: Section

Linear-elastic section defined by explicit geometric and material constants.

This section represents a linear beam-column cross-section. Unlike most other Femora sections, it does not reference a Material object; instead, it takes material moduli (E, G) and geometric properties (A, I, J) directly as constructor arguments.

Tcl form
  • 2D: section Elastic <tag> <E> <A> <Iz>
  • 3D: section Elastic <tag> <E> <A> <Iz> <Iy> <G> <J>
Note
  • This section is strictly linear. For nonlinear behavior, use FiberSection or UniaxialSection.
  • When using this section in a 3D model, you must provide all six parameters (E, A, Iz, Iy, G, J). OpenSees usually expects either 3 or 6 values for the Elastic section command.
Tip
  • Use this section for preliminary modeling or when physical section dimensions are unknown but aggregate properties (like equivalent stiffness) are available.
Example
from femora.core.model import Model
import femora.components.section.beam  # noqa: F401

model = Model()
sec_2d = model.section.beam.elastic(
    user_name="Beam2D",
    E=29000.0,
    A=10.0,
    Iz=150.0,
)
sec_3d = model.section.beam.elastic(
    user_name="Column3D",
    E=29000.0,
    A=26.5,
    Iz=999.0,
    Iy=150.0,
    G=11200.0,
    J=2.5,
)
print(sec_3d.tag)

Create an ElasticSection with validated geometric properties.

Parameters:

Name Type Description Default
user_name str

User-specified name for the section.

'Unnamed'
E float

Young's modulus.

required
A float

Cross-sectional area.

required
Iz float

Second moment of area about the local z-axis.

required
Iy Optional[float]

Optional second moment of area about the local y-axis (for 3D).

None
G Optional[float]

Optional shear modulus (for 3D).

None
J Optional[float]

Optional torsional constant (for 3D).

None

Raises:

Type Description
ValueError

If parameters are not numeric or if essential values (E, A, Iz) are non-positive.

Methods:

get_area

get_area() -> float

Return the cross-sectional area.

Returns:

Type Description
float

Area value.

get_Iy

get_Iy() -> float

Return the second moment of area about the local y-axis.

Returns:

Type Description
float

Iy value, or 0.0 if not defined.

get_Iz

get_Iz() -> float

Return the second moment of area about the local z-axis.

Returns:

Type Description
float

Iz value.

get_J

get_J() -> float

Return the torsional constant.

Returns:

Type Description
float

J value, or 0.0 if not defined.