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_sectionis 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_materialmethod 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 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. |