flavio 0.5.0

flavio welcomes you
Documentation
#[cfg(test)]
mod test;

pub mod wedge;

use super::{surface::*, *};

pub trait LinearLocalizationElement<
    'a,
    C,
    const G: usize,
    const M: usize,
    const N: usize,
    const O: usize,
> where
    C: Constitutive<'a>,
    Self: LinearSurfaceElement<'a, C, G, M, N, O>,
{
    fn calculate_deformation_gradient_linear_localization_element(
        &self,
        nodal_coordinates: &NodalCoordinates<N>,
    ) -> DeformationGradient {
        nodal_coordinates
            .iter()
            .zip(self.get_gradient_vectors().iter())
            .map(|(nodal_coordinate, gradient_vector)| {
                DeformationGradient::dyad(nodal_coordinate, gradient_vector)
            })
            .sum::<DeformationGradient>()
            + DeformationGradient::dyad(
                &Self::calculate_normal(&Self::calculate_midplane(nodal_coordinates)),
                self.get_reference_normal(),
            )
    }
    fn calculate_deformation_gradient_rate_linear_localization_element(
        &self,
        nodal_coordinates: &NodalCoordinates<N>,
        nodal_velocities: &NodalVelocities<N>,
    ) -> DeformationGradientRate {
        nodal_velocities
            .iter()
            .zip(self.get_gradient_vectors().iter())
            .map(|(nodal_velocity, gradient_vector)| {
                DeformationGradientRate::dyad(nodal_velocity, gradient_vector)
            })
            .sum::<DeformationGradientRate>()
            + DeformationGradientRate::dyad(
                &Self::calculate_normal_rate(
                    &Self::calculate_midplane(nodal_coordinates),
                    &Self::calculate_midplane(nodal_velocities),
                ),
                self.get_reference_normal(),
            )
    }
    fn calculate_gradient_vectors_linear_localization_element(
        reference_nodal_coordinates_midplane: &ReferenceNodalCoordinates<O>,
        thickness: &Scalar,
    ) -> GradientVectors<N>;
    fn calculate_midplane<const I: usize>(
        nodal_coordinates: &Coordinates<I, N>,
    ) -> Coordinates<I, O>;
}