pub struct FiberSection3 { /* private fields */ }Expand description
Biaxial fiber-discretized cross-section: given axial strain eps0,
curvature about local z kappa_z (bending that displaces local y, the
plane FiberSection/ElasticBeamColumn3’s Iz governs), and curvature
about local y kappa_y (displaces local z, Iy’s plane), each fiber’s
strain is eps0 - y*kappa_z + z*kappa_y — the natural biaxial extension
of FiberSection’s eps0 - y*kappa, verified against Xara’s
FiberSection3d::addFiber/getStressResultant (matData/sData
layout: strain = e0 - y*e1 + z*e2, N = sum(stress*A),
Mz = sum(-y*stress*A), My = sum(z*stress*A)) rather than re-derived
from scratch.
Work-conjugate to [eps0, kappa_z, kappa_y] is [N, Mz, My], and the
tangent’s off-diagonal terms follow directly from differentiating those
three sums (see FiberSection3::trial’s body) — independently
reproducing Xara’s kData layout (kData[1]=-y*EA summed → -EQz,
kData[2]=z*EA summed → EQy, kData[6]=-y*z*EA summed → -EIyz)
gives useful cross-confirmation that the sign convention here matches
the reference exactly, not just plausibly.
Implementations§
Source§impl FiberSection3
impl FiberSection3
pub fn new(fibers: Vec<Fiber3>) -> Self
Sourcepub fn trial(
&self,
eps0: f64,
kappa_z: f64,
kappa_y: f64,
) -> (f64, f64, f64, [[f64; 3]; 3])
pub fn trial( &self, eps0: f64, kappa_z: f64, kappa_y: f64, ) -> (f64, f64, f64, [[f64; 3]; 3])
Trial evaluation at (eps0, kappa_z, kappa_y) — read-only, safe
every Newton iteration (see FiberSection::trial’s doc comment for
why).
Sourcepub fn commit(&mut self, eps0: f64, kappa_z: f64, kappa_y: f64)
pub fn commit(&mut self, eps0: f64, kappa_z: f64, kappa_y: f64)
Commit every fiber’s material at (eps0, kappa_z, kappa_y) — called
once per converged step.
pub fn total_area(&self) -> f64
Trait Implementations§
Source§impl Clone for FiberSection3
impl Clone for FiberSection3
Source§fn clone(&self) -> FiberSection3
fn clone(&self) -> FiberSection3
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for FiberSection3
impl RefUnwindSafe for FiberSection3
impl Send for FiberSection3
impl Sync for FiberSection3
impl Unpin for FiberSection3
impl UnsafeUnpin for FiberSection3
impl UnwindSafe for FiberSection3
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T, U> Imply<T> for U
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.