conspire/domain/partition/feti/solid/
mod.rs1use 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}