Skip to content

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.

Methods:

get_arc_length

get_arc_length() -> float

Calculate the length of the arc defined by this layer.

Returns:

Type Description
float

Arc length.

is_full_circle

is_full_circle() -> bool

Check if the arc represents a full circle.

Returns:

Type Description
bool

True if it spans 360 degrees.