SOFA API  9fc4753c
Open source framework for multi-physics simuation
sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType > Struct Template Reference

#include <StrainDisplacement.h>

Detailed Description

template<class DataTypes, class ElementType>
struct sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >

Represents the strain-displacement matrix (B-matrix) for a finite element.

The B-matrix relates the strain vector (in Voigt notation) to the nodal displacement vector: ε = B * u.

Template Parameters
DataTypesThe traits defining the simulation's data types (e.g., Vec3d).
Parameters
ElementTypeThe type of finite element (e.g., Tetrahedron).

Public Attributes

sofa::type::Mat< nbLines, nbColumns, sofa::Real_t< DataTypes > > B
 

Static Public Attributes

static constexpr auto spatial_dimensions = DataTypes::spatial_dimensions
 
static constexpr auto nbLines = sofa::type::NumberOfIndependentElements<spatial_dimensions>
 
static constexpr auto nbNodesInElement = ElementType::NumberOfNodes
 
static constexpr auto nbColumns = nbNodesInElement * spatial_dimensions
 

Public Member Functions

constexpr Realoperator() (sofa::Size i, sofa::Size j) noexcept
 
constexpr const Realoperator() (sofa::Size i, sofa::Size j) const noexcept
 
constexpr sofa::type::Vec< nbLines, Realoperator* (const sofa::type::Vec< nbColumns, Real > &v) const
 
template<sofa::Size C>
constexpr sofa::type::Mat< nbColumns, C, RealmultTranspose (const sofa::type::Mat< nbLines, C, Real > &v) const noexcept
 
constexpr sofa::type::Vec< nbColumns, RealmultTranspose (const sofa::type::Vec< nbLines, Real > &v) const noexcept
 

Friends

std::ostream & operator<< (std::ostream &out, const StrainDisplacement &B)
 

Attribute details

◆ B

Internal representation of the strain-displacement matrix.

◆ nbColumns

template<class DataTypes , class ElementType >
constexpr auto sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::nbColumns = nbNodesInElement * spatial_dimensions
staticconstexpr

◆ nbLines

template<class DataTypes , class ElementType >
constexpr auto sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::nbLines = sofa::type::NumberOfIndependentElements<spatial_dimensions>
staticconstexpr

◆ nbNodesInElement

template<class DataTypes , class ElementType >
constexpr auto sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::nbNodesInElement = ElementType::NumberOfNodes
staticconstexpr

◆ spatial_dimensions

template<class DataTypes , class ElementType >
constexpr auto sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::spatial_dimensions = DataTypes::spatial_dimensions
staticconstexpr

Function details

◆ multTranspose() [1/2]

template<class DataTypes , class ElementType >
template<sofa::Size C>
constexpr sofa::type::Mat<nbColumns, C, Real> sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::multTranspose ( const sofa::type::Mat< nbLines, C, Real > &  v) const
inlineconstexprnoexcept

Multiplies the transpose of the B-matrix by a matrix.

Template Parameters
CNumber of columns in the matrix v.
Parameters
vMatrix to multiply with B^T.
Returns
Resulting matrix B^T * v.

◆ multTranspose() [2/2]

template<class DataTypes , class ElementType >
constexpr sofa::type::Vec<nbColumns, Real> sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::multTranspose ( const sofa::type::Vec< nbLines, Real > &  v) const
inlineconstexprnoexcept

Multiplies the transpose of the B-matrix by a strain vector.

Parameters
vStrain (or stress) vector in Voigt notation.
Returns
Resulting nodal force vector.

◆ operator()() [1/2]

template<class DataTypes , class ElementType >
constexpr const Real& sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::operator() ( sofa::Size  i,
sofa::Size  j 
) const
inlineconstexprnoexcept

Accesses the element at (i, j) in the strain-displacement matrix (const).

◆ operator()() [2/2]

template<class DataTypes , class ElementType >
constexpr Real& sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::operator() ( sofa::Size  i,
sofa::Size  j 
)
inlineconstexprnoexcept

Accesses the element at (i, j) in the strain-displacement matrix.

◆ operator*()

template<class DataTypes , class ElementType >
constexpr sofa::type::Vec<nbLines, Real> sofa::component::solidmechanics::fem::elastic::StrainDisplacement< DataTypes, ElementType >::operator* ( const sofa::type::Vec< nbColumns, Real > &  v) const
inlineconstexpr

Multiplies the B-matrix by a displacement vector.

Parameters
vDisplacement vector.
Returns
Resulting strain vector in Voigt notation.

Related details

◆ operator<<

template<class DataTypes , class ElementType >
std::ostream& operator<< ( std::ostream &  out,
const StrainDisplacement< DataTypes, ElementType > &  B 
)
friend

Outputs the B-matrix to a stream.