Skip to main content

conspire/domain/partition/feti/solid/
mod.rs

1use super::block::element::{DecomposableElements, ElementSystems};
2use crate::domain::{ElementModelError, Model, NodalCoordinates, ProvidesTangent};
3
4impl<B> ProvidesTangent<NodalCoordinates<3>, ElementSystems> for Model<B, 3>
5where
6    B: DecomposableElements,
7{
8    fn provide_tangent(
9        &self,
10        nodal_coordinates: &NodalCoordinates<3>,
11    ) -> Result<ElementSystems, ElementModelError> {
12        self.element_systems(nodal_coordinates)
13    }
14}
15
16#[cfg(feature = "fem")]
17use super::Feti;
18#[cfg(feature = "fem")]
19use crate::{
20    domain::{
21        SolverFor,
22        solid::{NodalForcesSolid, NodalStiffnessesSolid},
23    },
24    math::{Quantity, optimize::NewtonRaphson},
25    units::Energy,
26};
27
28#[cfg(feature = "fem")]
29impl<B> SolverFor<Model<B, 3>, Quantity<Energy>, NodalForcesSolid<3>> for NewtonRaphson<Feti>
30where
31    B: DecomposableElements,
32{
33    type Tangent = ElementSystems;
34    const SPARSE: bool = false;
35}
36
37#[cfg(feature = "fem")]
38impl<B> SolverFor<Model<B, 3>, NodalForcesSolid<3>, NodalStiffnessesSolid<3>>
39    for NewtonRaphson<Feti>
40where
41    B: DecomposableElements,
42{
43    type Tangent = ElementSystems;
44    const SPARSE: bool = false;
45}