pub struct Node3Id(/* private fields */);Expand description
Generational index for a future spatial Domain3 node store. It is
distinct from NodeId, so planar elements cannot connect to spatial
nodes at compile time.
Trait Implementations§
impl Copy for Node3Id
Source§impl ElementOps<SPATIAL_NDIM, SPATIAL_NDF, Node3Id> for Element3
impl ElementOps<SPATIAL_NDIM, SPATIAL_NDF, Node3Id> for Element3
Source§type Load = ElementLoad3
type Load = ElementLoad3
An element-load kind this catalog supports.
Add so several loads on
one element in one pattern accumulate.Source§type Id = Element3Id
type Id = Element3Id
This catalog’s own
Domain element-store key. An associated type
rather than a further generic parameter of Domain, so it is always
determined by E and never an independently unconstrained type
variable (which broke inference at every Domain::new()).Source§fn dof_mask(&self) -> DofMask
fn dof_mask(&self) -> DofMask
The node DOF slots this element stiffens (the same for each node).
Must cover every slot on which
assemble_tangent can produce a
nonzero stiffness or resistance: a slot outside the mask that no
other element, constraint or boundary condition uses is not an
equation at all, so such a contribution would be silently dropped
(debug builds assert against it).Source§fn validate(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
) -> Result<(), &'static str>
fn validate( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, ) -> Result<(), &'static str>
Rejects an element whose geometry or parameters make it unusable
(coincident nodes, inverted orientation, …); called by
Domain::validate. The default accepts everything.Source§fn accepts_load(&self, load: &ElementLoad3) -> bool
fn accepts_load(&self, load: &ElementLoad3) -> bool
Whether this element can carry every kind of load present in
load.
Checked by Domain::validate on each pattern’s load, before anything is
accumulated; the default accepts everything.Source§fn prepare(&mut self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>)
fn prepare(&mut self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>)
Caches geometry-only quantities (shape-function derivatives, areas)
once the model is final; called by
Domain::validate after validate
succeeds. Must be idempotent, and every method must give the same
answer whether or not it has been called (the default does nothing).Source§fn gauss_point_count(&self) -> usize
fn gauss_point_count(&self) -> usize
How many Gauss points
gauss_responses reports (zero for elements that
are not continuum elements); the bound a Gauss-point recorder’s point
is checked against.Source§fn gauss_component_count(&self) -> usize
fn gauss_component_count(&self) -> usize
Components per Gauss-point strain or stress vector (3 for plane elements, 8 for shells);
the bound a Gauss-point recorder’s
component is checked against.Source§fn shell_responses(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
) -> Option<Vec<ShellResponse>>
fn shell_responses( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, ) -> Option<Vec<ShellResponse>>
Every Gauss point’s committed generalized strain and resultants;
None for every
element that is not a shell.Source§fn assemble_tangent<S: TangentSink<Node3Id>>(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
load: Option<&ElementLoad3>,
sink: &mut S,
)
fn assemble_tangent<S: TangentSink<Node3Id>>( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, load: Option<&ElementLoad3>, sink: &mut S, )
Tangent and internal resisting force at the current nodal state.
load is the effective element load at the pseudo-time being
assembled (every pattern’s load on this element, scaled by its
factor). Only elements whose internal state depends on the load
itself (ForceBeamColumn) read it; for every other element loads
enter only through assemble_load.Source§fn assemble_load<S: VectorSink<Node3Id>>(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
load: Option<&ElementLoad3>,
sink: &mut S,
)
fn assemble_load<S: VectorSink<Node3Id>>( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, load: Option<&ElementLoad3>, sink: &mut S, )
The equivalent nodal load vector of
load (zero if load is
None or of a kind this element does not carry).Source§fn assemble_mass<S: VectorSink<Node3Id>>(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
sink: &mut S,
)
fn assemble_mass<S: VectorSink<Node3Id>>( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, sink: &mut S, )
Lumped (diagonal) mass, per element DOF.
Source§fn commit(
&mut self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
load: Option<&ElementLoad3>,
)
fn commit( &mut self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, load: Option<&ElementLoad3>, )
Commit this element’s state at the converged nodal state.
load is
the effective element load at the committed pseudo-time.Source§fn local_force_width(&self) -> usize
fn local_force_width(&self) -> usize
Length of
local_force/local_load_force; the bound a recorder’s
component index is checked against.Source§fn local_force(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
) -> ElementForce
fn local_force( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, ) -> ElementForce
This element’s local nodal force at its current committed state,
in the element’s own axis frame (the original fixed orientation for
Linear/PDelta, the current chord for Corotational). Never
mutates state.Source§fn local_load_force(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
load: Option<&ElementLoad3>,
) -> ElementForce
fn local_load_force( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, load: Option<&ElementLoad3>, ) -> ElementForce
assemble_load’s equivalent nodal load in the same local frame as
local_force; what Domain::element_end_force subtracts so a
loaded member’s end forces include the load’s fixed-end effect.Source§fn fiber_responses(
&self,
nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>,
) -> Option<Vec<Vec<(f64, f64)>>>
fn fiber_responses( &self, nodes: &NodeView<'_, SPATIAL_NDIM, SPATIAL_NDF, Node3Id>, ) -> Option<Vec<Vec<(f64, f64)>>>
Every integration point’s per-fiber
(strain, stress); None for
every element that is not fiber-discretized.Source§fn gauss_responses(
&self,
_nodes: &NodeView<'_, NDIM, NDOF, NId>,
) -> Option<Vec<GaussResponse>>
fn gauss_responses( &self, _nodes: &NodeView<'_, NDIM, NDOF, NId>, ) -> Option<Vec<GaussResponse>>
Every Gauss point’s committed strain and stress;
None for every
element that is not a continuum element.impl Eq for Node3Id
Source§impl Key for Node3Id
impl Key for Node3Id
Source§fn null() -> Self
fn null() -> Self
Creates a new key that is always invalid and distinct from any non-null
key. A null key can only be created through this method (or default
initialization of keys made with
new_key_type!, which calls this
method). Read moreSource§impl Ord for Node3Id
impl Ord for Node3Id
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialOrd for Node3Id
impl PartialOrd for Node3Id
impl StructuralPartialEq for Node3Id
Auto Trait Implementations§
impl Freeze for Node3Id
impl RefUnwindSafe for Node3Id
impl Send for Node3Id
impl Sync for Node3Id
impl Unpin for Node3Id
impl UnsafeUnpin for Node3Id
impl UnwindSafe for Node3Id
Blanket Implementations§
impl<T> Boilerplate for T
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T, U> Imply<T> for U
impl<T> Scalar for T
§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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.