Namespaces | |
| detail | |
Typedefs | |
| template<class Real > | |
| using | Vec3Real = sofa::defaulttype::StdVectorTypes< sofa::type::Vec< 3, Real >, sofa::type::Vec< 3, Real >, Real > |
| template<class real > | |
| using | YoungModulus = sofa::type::StrongType< real, struct YoungModulusTag, sofa::type::functionality::Arithmetic > |
| template<class real > | |
| using | PoissonRatio = sofa::type::StrongType< real, struct PoissonRatioTag, sofa::type::functionality::Arithmetic > |
| template<class real > | |
| using | LameLambda = sofa::type::StrongType< real, struct LameLambdaTag, sofa::type::functionality::Arithmetic > |
| template<class real > | |
| using | LameMu = sofa::type::StrongType< real, struct LameMuTag, sofa::type::functionality::Arithmetic > |
Enumerations | |
| enum class | MatrixVectorProductType { Factorization , Dense } |
Functions | |
| void | registerBeamFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerElementCorotationalFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerElementLinearSmallStrainFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerFastTetrahedralCorotationalForceField (sofa::core::ObjectFactory *factory) |
| void | registerHexahedralFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerHexahedralFEMForceFieldAndMass (sofa::core::ObjectFactory *factory) |
| void | registerHexahedronFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerHexahedronFEMForceFieldAndMass (sofa::core::ObjectFactory *factory) |
| MAKE_SELECTABLE_ITEMS (ComputeStrategy, sofa::helper::Item{parallelComputeStrategy, "The algorithm is executed in parallel"}, sofa::helper::Item{sequencedComputeStrategy, "The algorithm is executed sequentially"},) | |
| template<class DataTypes , class ElementType , MatrixVectorProductType matrixVectorProductType = MatrixVectorProductType::Dense> | |
| FactorizedElementStiffness< DataTypes, ElementType, matrixVectorProductType > | integrate (const std::array< sofa::Coord_t< DataTypes >, ElementType::NumberOfNodes > &nodesCoordinates, const sofa::type::FullySymmetric4Tensor< DataTypes::spatial_dimensions, sofa::Real_t< DataTypes >> &elasticityTensor) |
| template<std::size_t spatial_dimensions, class real > | |
| void | toLameParameters (YoungModulus< real > youngModulus, PoissonRatio< real > poissonRatio, LameLambda< real > &lambda, LameMu< real > &mu) |
| Converts Young's modulus and Poisson's ratio to Lamé parameters. More... | |
| template<sofa::Size D, class real > | |
| auto | makeIsotropicElasticityTensor (LameMu< real > mu, LameLambda< real > lambda) |
| Creates an isotropic elasticity tensor for given material properties. More... | |
| template<sofa::Size N, class real > | |
| constexpr sofa::type::Vec< N, real > | orthotropicElasticityTensorProduct (const sofa::type::Mat< N, N, real > &tensor, const sofa::type::Vec< N, real > &v) |
| template<class real > | |
| constexpr sofa::type::Vec< 6, real > | orthotropicElasticityTensorProduct (const sofa::type::Mat< 6, 6, real > &tensor, const sofa::type::Vec< 6, real > &v) |
| template<class StrainDisplacement > | |
| sofa::type::Vec< StrainDisplacement::nbLines, typename StrainDisplacement::Real > | strainDisplacementVectorProduct (const StrainDisplacement &B, const sofa::type::Vec< StrainDisplacement::nbColumns, typename StrainDisplacement::Real > &v) |
| template<class StrainDisplacement > | |
| sofa::type::Vec< StrainDisplacement::nbColumns, typename StrainDisplacement::Real > | strainDisplacementTransposedVectorProduct (const StrainDisplacement &B, const sofa::type::Vec< StrainDisplacement::nbLines, typename StrainDisplacement::Real > &v) |
| template<sofa::Size L, sofa::Size C, class real , class DataTypes , class ElementType > | |
| sofa::type::Mat< L, StrainDisplacement< DataTypes, ElementType >::nbColumns, real > | operator* (const sofa::type::Mat< L, C, real > &A, const StrainDisplacement< DataTypes, ElementType > &B) |
| template<class DataTypes , class ElementType > | |
| StrainDisplacement< DataTypes, ElementType > | makeStrainDisplacement (const sofa::type::Mat< ElementType::NumberOfNodes, DataTypes::spatial_dimensions, sofa::Real_t< DataTypes > > &gradientShapeFunctions) |
| template<class ElementType , class VecCoord > | |
| auto | extractRefNodesVectorFromGlobalVector (const sofa::topology::Element< ElementType > &element, const VecCoord &vector) |
| template<class ElementType , class VecCoord > | |
| std::array< typename VecCoord::value_type, ElementType::NumberOfNodes > | extractNodesVectorFromGlobalVector (const sofa::topology::Element< ElementType > &element, const VecCoord &vector) |
| void | registerQuadBendingFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerTetrahedralCorotationalFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerTetrahedronFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerTriangleFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerTriangularAnisotropicFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerTriangularFEMForceField (sofa::core::ObjectFactory *factory) |
| void | registerTriangularFEMForceFieldOptim (sofa::core::ObjectFactory *factory) |
| SOFA_EXPORT_DYNAMIC_LIBRARY void | initExternalModule () |
| SOFA_EXPORT_DYNAMIC_LIBRARY const char * | getModuleName () |
| SOFA_EXPORT_DYNAMIC_LIBRARY const char * | getModuleVersion () |
| SOFA_EXPORT_DYNAMIC_LIBRARY void | registerObjects (sofa::core::ObjectFactory *factory) |
| void | init () |
Variables | |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | FastTetrahedralCorotationalForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | HexahedralFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | HexahedralFEMForceFieldAndMass< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | HexahedronFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | HexahedronFEMForceFieldAndMass< Vec3Types > |
| constexpr std::string_view | parallelComputeStrategy = "parallel" |
| constexpr std::string_view | sequencedComputeStrategy = "sequenced" |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | QuadBendingFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | TetrahedralCorotationalFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | TetrahedronFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | TriangleFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | TriangularAnisotropicFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | TriangularFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API | TriangularFEMForceFieldOptim< Vec3Types > |
| using sofa::component::solidmechanics::fem::elastic::LameLambda = typedef sofa::type::StrongType<real, struct LameLambdaTag, sofa::type::functionality::Arithmetic> |
| using sofa::component::solidmechanics::fem::elastic::LameMu = typedef sofa::type::StrongType<real, struct LameMuTag, sofa::type::functionality::Arithmetic> |
| using sofa::component::solidmechanics::fem::elastic::PoissonRatio = typedef sofa::type::StrongType<real, struct PoissonRatioTag, sofa::type::functionality::Arithmetic> |
| using sofa::component::solidmechanics::fem::elastic::Vec3Real = typedef sofa::defaulttype::StdVectorTypes<sofa::type::Vec<3, Real>, sofa::type::Vec<3, Real>, Real> |
| using sofa::component::solidmechanics::fem::elastic::YoungModulus = typedef sofa::type::StrongType<real, struct YoungModulusTag, sofa::type::functionality::Arithmetic> |
| std::array<typename VecCoord::value_type, ElementType::NumberOfNodes> sofa::component::solidmechanics::fem::elastic::extractNodesVectorFromGlobalVector | ( | const sofa::topology::Element< ElementType > & | element, |
| const VecCoord & | vector | ||
| ) |
| auto sofa::component::solidmechanics::fem::elastic::extractRefNodesVectorFromGlobalVector | ( | const sofa::topology::Element< ElementType > & | element, |
| const VecCoord & | vector | ||
| ) |
| const char * sofa::component::solidmechanics::fem::elastic::getModuleName | ( | ) |
| const char * sofa::component::solidmechanics::fem::elastic::getModuleVersion | ( | ) |
| SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API void sofa::component::solidmechanics::fem::elastic::init | ( | ) |
| void sofa::component::solidmechanics::fem::elastic::initExternalModule | ( | ) |
| FactorizedElementStiffness<DataTypes, ElementType, matrixVectorProductType> sofa::component::solidmechanics::fem::elastic::integrate | ( | const std::array< sofa::Coord_t< DataTypes >, ElementType::NumberOfNodes > & | nodesCoordinates, |
| const sofa::type::FullySymmetric4Tensor< DataTypes::spatial_dimensions, sofa::Real_t< DataTypes >> & | elasticityTensor | ||
| ) |
| sofa::component::solidmechanics::fem::elastic::MAKE_SELECTABLE_ITEMS | ( | ComputeStrategy | , |
| sofa::helper::Item{parallelComputeStrategy, "The algorithm is executed in parallel"} | , | ||
| sofa::helper::Item{sequencedComputeStrategy, "The algorithm is executed sequentially"} | |||
| ) |
| auto sofa::component::solidmechanics::fem::elastic::makeIsotropicElasticityTensor | ( | LameMu< real > | mu, |
| LameLambda< real > | lambda | ||
| ) |
Creates an isotropic elasticity tensor for given material properties.
This function constructs and returns an elasticity tensor for an isotropic material characterized by its Young's modulus and Poisson's ratio. It computes the tensor using the Lamé parameters, which are derived from the given material properties.
| mu | Lamé's first parameter |
| lambda | Lamé's second parameter |
| StrainDisplacement<DataTypes, ElementType> sofa::component::solidmechanics::fem::elastic::makeStrainDisplacement | ( | const sofa::type::Mat< ElementType::NumberOfNodes, DataTypes::spatial_dimensions, sofa::Real_t< DataTypes > > & | gradientShapeFunctions | ) |
Creates a strain-displacement matrix (B-matrix) for finite element calculations.
This function constructs a strain-displacement matrix based on the provided gradient of shape functions. The matrix is filled according to spatial dimensions and the number of nodes in the element.
| gradientShapeFunctions | A matrix containing the gradient of the shape functions. |
| sofa::type::Mat<L, StrainDisplacement<DataTypes, ElementType>::nbColumns, real> sofa::component::solidmechanics::fem::elastic::operator* | ( | const sofa::type::Mat< L, C, real > & | A, |
| const StrainDisplacement< DataTypes, ElementType > & | B | ||
| ) |
Multiplies a matrix by a strain-displacement matrix.
| L | Number of lines in matrix A. |
| C | Number of columns in matrix A (must match nbLines of B). |
| A | Matrix to multiply with B. |
| B | Strain-displacement matrix. |
|
constexpr |
Specialization for 3D where the operations containing known zeros in the elasticity tensor are omitted.
WARNING: this specialization is only valid for a give Voigt index mapping. If this mapping happens to change, this specialization will need to be updated accordingly.
|
constexpr |
| void sofa::component::solidmechanics::fem::elastic::registerBeamFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerElementCorotationalFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerElementLinearSmallStrainFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerFastTetrahedralCorotationalForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerHexahedralFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerHexahedralFEMForceFieldAndMass | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerHexahedronFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerHexahedronFEMForceFieldAndMass | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerObjects | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerQuadBendingFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerTetrahedralCorotationalFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerTetrahedronFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerTriangleFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerTriangularAnisotropicFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerTriangularFEMForceField | ( | sofa::core::ObjectFactory * | factory | ) |
| void sofa::component::solidmechanics::fem::elastic::registerTriangularFEMForceFieldOptim | ( | sofa::core::ObjectFactory * | factory | ) |
| sofa::type::Vec<StrainDisplacement::nbColumns, typename StrainDisplacement::Real> sofa::component::solidmechanics::fem::elastic::strainDisplacementTransposedVectorProduct | ( | const StrainDisplacement & | B, |
| const sofa::type::Vec< StrainDisplacement::nbLines, typename StrainDisplacement::Real > & | v | ||
| ) |
Computes the product between the transpose of a strain-displacement matrix B and a strain vector v.
This function calculates the nodal force vector f = B^T * v where v is a strain (or stress) vector in Voigt notation.
| StrainDisplacement | The type of the strain-displacement matrix. |
| B | The strain-displacement matrix. |
| v | The vector to be multiplied by the transpose of B. |
| sofa::type::Vec<StrainDisplacement::nbLines, typename StrainDisplacement::Real> sofa::component::solidmechanics::fem::elastic::strainDisplacementVectorProduct | ( | const StrainDisplacement & | B, |
| const sofa::type::Vec< StrainDisplacement::nbColumns, typename StrainDisplacement::Real > & | v | ||
| ) |
Computes the product between a strain-displacement matrix B and a displacement vector v.
This function calculates the strain vector ε = B * v where B is represented in Voigt notation. For diagonal terms (normal strains), it performs a simple dot product. For off-diagonal terms (shear strains), it sums the contributions from both partial derivatives.
| StrainDisplacement | The type of the strain-displacement matrix. |
| B | The strain-displacement matrix. |
| v | The displacement vector. |
| void sofa::component::solidmechanics::fem::elastic::toLameParameters | ( | YoungModulus< real > | youngModulus, |
| PoissonRatio< real > | poissonRatio, | ||
| LameLambda< real > & | lambda, | ||
| LameMu< real > & | mu | ||
| ) |
Converts Young's modulus and Poisson's ratio to Lamé parameters.
This function calculates and returns the two Lamé parameters, μ (shear modulus) and λ, derived from the given Young’s modulus and Poisson’s ratio of a material. These parameters are fundamental in describing isotropic elastic behavior.
| youngModulus | The Young's modulus of the material, representing its stiffness. |
| poissonRatio | The Poisson's ratio of the material, describing its deformation behavior. |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::FastTetrahedralCorotationalForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::HexahedralFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::HexahedralFEMForceFieldAndMass< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceFieldAndMass< Vec3Types > |
|
constexpr |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::QuadBendingFEMForceField< Vec3Types > |
|
constexpr |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::TetrahedralCorotationalFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::TetrahedronFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::TriangleFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::TriangularAnisotropicFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::TriangularFEMForceField< Vec3Types > |
| template class SOFA_COMPONENT_SOLIDMECHANICS_FEM_ELASTIC_API sofa::component::solidmechanics::fem::elastic::TriangularFEMForceFieldOptim< Vec3Types > |