CircularLayer
CircularLayer
CircularLayer(material: Union[int, str, Material], num_fibers: int, area_per_fiber: float, y_center: float, z_center: float, radius: float, start_ang: float = 0.0, end_ang: float = None)
Bases: LayerBase
Circular layer of fibers along an arc.
This class defines a circular arc of fibers in a fiber section. The fibers are distributed evenly along the specified arc or full circle.
Tcl form
layer circ <matTag> <numFiber> <areaFiber> <yCenter> <zCenter> <radius> [<startAng> <endAng>]
Attributes:
| Name | Type | Description |
|---|---|---|
num_fibers |
Number of fibers in the layer. |
|
area_per_fiber |
Cross-sectional area of each individual fiber. |
|
y_center |
Local y-coordinate of the arc center. |
|
z_center |
Local z-coordinate of the arc center. |
|
radius |
Radius of the arc. |
|
start_ang |
Starting angle in degrees (default 0.0). |
|
end_ang |
Ending angle in degrees. |
Example
from femora.core.model import Model
import femora.components.section.fiber # noqa: F401
model = Model()
mat = model.material.uniaxial.steel01(user_name="Rebar", Fy=60.0, E0=29000.0, b=0.01)
section = model.section.fiber.section(user_name="CircLayerSection")
section.add_circular_layer(
material=mat,
num_fibers=8,
area_per_fiber=0.1,
y_center=0.0,
z_center=0.0,
radius=10.0,
)
print(section.tag)
Create a CircularLayer with validated geometry.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
material
|
Union[int, str, Material]
|
Uniaxial material reference (object, tag, or name). |
required |
num_fibers
|
int
|
Number of fibers to distribute. |
required |
area_per_fiber
|
float
|
Area of each fiber. |
required |
y_center
|
float
|
Y-coordinate of arc center. |
required |
z_center
|
float
|
Z-coordinate of arc center. |
required |
radius
|
float
|
Arc radius. |
required |
start_ang
|
float
|
Optional starting angle in degrees. |
0.0
|
end_ang
|
float
|
Optional ending angle in degrees. If None, a full circle is assumed based on num_fibers. |
None
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If parameters are not numeric, if counts/areas/radii are non-positive, or if angles are identical. |