Skip to content

AggregatorSection

AggregatorSection

AggregatorSection(user_name: str = 'Unnamed', *, materials: Optional[Dict[str, Union[int, str, Material]]] = None, base_section: Optional[Union[int, str, Section]] = None)

Bases: Section

Section composed of multiple materials and optionally a base section.

The Aggregator is a powerful section type that allows you to combine independent uniaxial responses into a single section, or to add missing response degrees of freedom to an existing section.

Tcl form

section Aggregator <tag> <matTag1> <code1> ... [-section <secTag>]

Note
  • Each material provided is mapped to a specific section degree of freedom (e.g., 'Mz', 'T').
  • If base_section is provided, the materials in the aggregator are added to the response of that section. This is frequently used to add linear torsional stiffness ('T') to a fiber section that only handles flexure and axial force.
  • The aggregator assumes the responses are uncoupled.
Tip
  • Use the add_material method to build an aggregator incrementally if the materials are not all known at initialization.
Example
from femora.core.model import Model
import femora.components.section.composite  # noqa: F401
import femora.components.section.fiber  # noqa: F401

model = Model()
fiber_sec = model.section.fiber.section(user_name="BendingOnly", GJ=1000.0)
torsion_mat = model.material.uniaxial.elastic(user_name="TorMat", E=11200.0)
full_sec = model.section.composite.aggregator(
    user_name="FullSection",
    materials={"T": torsion_mat},
    base_section=fiber_sec,
)
print(full_sec.tag)

Create an AggregatorSection with validated materials and response codes.

Parameters:

Name Type Description Default
user_name str

User-specified name for the section.

'Unnamed'
materials Optional[Dict[str, Union[int, str, Material]]]

Optional dictionary mapping section response codes (e.g., 'P', 'Mz') to uniaxial materials (object, tag, or name).

None
base_section Optional[Union[int, str, Section]]

Optional base section to be augmented (object, tag, or name).

None

Raises:

Type Description
ValueError

If response codes are invalid or materials/sections cannot be resolved.

Methods:

add_material

add_material(material_input: Union[int, str, Material], response_code: str) -> None

Add a uniaxial material response to the aggregator.

Parameters:

Name Type Description Default
material_input Union[int, str, Material]

Uniaxial material reference (object, tag, or name).

required
response_code str

Section response code. Must be one of: 'P', 'Mz', 'My', 'Vy', 'Vz', 'T'.

required

Raises:

Type Description
ValueError

If the response code is invalid or the material cannot be resolved.