template<typename Element>
class SofaCaribou::forcefield::FictitiousGridHyperelasticForcefield< Element >
Hyperelastic forcefield for cut hexahedral elements.
- Template Parameters
-
Element | Can be either SubdividedGaussHexahedron or SubdividedVolumeHexahedron |
|
using | Base = HyperelasticForcefield< Element > |
|
using | FictitiousGrid = SofaCaribou::topology::FictitiousGrid< sofa::defaulttype::Vec3Types > |
|
using | GaussContainer = typename Base::GaussContainer |
|
using | Index = sofa::Index |
|
template<typename ObjectType > |
using | Link = SingleLink< FictitiousGridHyperelasticForcefield< Element >, ObjectType, BaseLink::FLAG_STRONGLINK > |
|
using | Mat33 = Matrix< 3, 3 > |
|
using | DataTypes = typename SofaVecType< caribou::geometry::traits< Element >::Dimension >::Type |
|
using | Inherit = ForceField< DataTypes > |
|
using | VecCoord = typename DataTypes::VecCoord |
|
using | VecDeriv = typename DataTypes::VecDeriv |
|
using | Coord = typename DataTypes::Coord |
|
using | Deriv = typename DataTypes::Deriv |
|
using | Real = typename Coord::value_type |
|
using | LocalCoordinates = typename caribou::geometry::Element< Element >::LocalCoordinates |
|
using | WorldCoordinates = typename caribou::geometry::Element< Element >::WorldCoordinates |
|
template<int nRows, int nColumns> |
using | Matrix = typename caribou::geometry::Element< Element >::template Matrix< nRows, nColumns > |
|
template<int nRows, int nColumns, int Options = 0> |
using | MatrixI = typename caribou::geometry::Element< Element >::template MatrixI< nRows, nColumns > |
|
template<int nRows, int nColumns> |
using | Map = Eigen::Map< const Matrix< nRows, nColumns > > |
|
template<int nRows> |
using | Vector = typename caribou::geometry::Element< Element >::template Vector< nRows > |
|
template<int nRows> |
using | MapVector = Eigen::Map< const Vector< nRows > > |
|
using | Mat33 = Matrix< 3, 3 > |
|
using | Vec3 = Vector< 3 > |
|
template<typename ObjectType > |
using | Link = SingleLink< HyperelasticForcefield< Element >, ObjectType, BaseLink::FLAG_STRONGLINK > |
|
using | GaussContainer = typename GaussContainer< GaussNode, NumberOfGaussNodes >::Type |
|
|
| SOFA_CLASS (SOFA_TEMPLATE(FictitiousGridHyperelasticForcefield, Element), SOFA_TEMPLATE(HyperelasticForcefield, Element)) |
|
void | init () override |
|
auto | number_of_elements () const -> std::size_t override |
| Get the number of elements contained in this field.
|
|
auto | templateName (const FictitiousGridHyperelasticForcefield< SubdividedGaussHexahedron > *) -> std::string |
|
auto | canCreate (FictitiousGridHyperelasticForcefield< SubdividedGaussHexahedron > *, BaseContext *, BaseObjectDescription *arg) -> bool |
|
auto | templateName (const FictitiousGridHyperelasticForcefield< SubdividedVolumeHexahedron > *) -> std::string |
|
auto | canCreate (FictitiousGridHyperelasticForcefield< SubdividedVolumeHexahedron > *, BaseContext *, BaseObjectDescription *arg) -> bool |
|
auto | templateName (const FictitiousGridHyperelasticForcefield< caribou::geometry::SubdividedVolumeHexahedron > *) -> std::string |
|
auto | canCreate (FictitiousGridHyperelasticForcefield< caribou::geometry::SubdividedVolumeHexahedron > *, BaseContext *, BaseObjectDescription *arg) -> bool |
|
auto | templateName (const FictitiousGridHyperelasticForcefield< caribou::geometry::SubdividedGaussHexahedron > *) -> std::string |
|
auto | canCreate (FictitiousGridHyperelasticForcefield< caribou::geometry::SubdividedGaussHexahedron > *, BaseContext *, BaseObjectDescription *arg) -> bool |
|
| SOFA_CLASS (SOFA_TEMPLATE(HyperelasticForcefield, Element), SOFA_TEMPLATE(ForceField, typename SofaVecType< caribou::geometry::traits< Element >::Dimension >::Type)) |
|
auto | getTemplateName () const -> std::string override |
|
void | init () override |
|
void | addForce (const MechanicalParams *mparams, Data< VecDeriv > &d_f, const Data< VecCoord > &d_x, const Data< VecDeriv > &d_v) override |
|
void | addDForce (const MechanicalParams *, Data< VecDeriv > &, const Data< VecDeriv > &) override |
|
SReal | getPotentialEnergy (const MechanicalParams *, const Data< VecCoord > &) const override |
|
void | addKToMatrix (sofa::defaulttype::BaseMatrix *, SReal, unsigned int &) override |
|
void | computeBBox (const sofa::core::ExecParams *params, bool onlyVisible) override |
|
void | draw (const sofa::core::visual::VisualParams *vparams) override |
|
auto | gauss_nodes_of (std::size_t element_id) const -> const auto & |
| Get the set of Gauss integration nodes of an element.
|
|
auto | K () -> Eigen::SparseMatrix< Real > |
| Get the complete tangent stiffness matrix as a compressed sparse matrix.
|
|
auto | eigenvalues () -> const Vector< Eigen::Dynamic > & |
| Get the eigen values of the tangent stiffness matrix.
|
|
auto | cond () -> Real |
| Get the condition number of the tangent stiffness matrix.
|
|
auto | number_of_elements () const -> std::size_t |
|
auto | templateName (const HyperelasticForcefield< Triangle< _2D, Linear >> *) -> std::string |
|
auto | number_of_elements () const -> std::size_t |
|
auto | templateName (const HyperelasticForcefield< Quad< _2D, Linear >> *) -> std::string |
|
auto | number_of_elements () const -> std::size_t |
|
auto | templateName (const HyperelasticForcefield< Tetrahedron< Linear >> *) -> std::string |
|
auto | number_of_elements () const -> std::size_t |
|
auto | templateName (const HyperelasticForcefield< Hexahedron< Linear >> *) -> std::string |
|
auto | number_of_elements () const -> std::size_t |
|
auto | templateName (const HyperelasticForcefield< caribou::geometry::Tetrahedron< caribou::Linear >> *) -> std::string |
|
auto | number_of_elements () const -> std::size_t |
|
auto | templateName (const HyperelasticForcefield< caribou::geometry::Hexahedron< caribou::Linear >> *) -> std::string |
|
|
static constexpr INTEGER_TYPE | Dimension = caribou::geometry::traits<Element>::Dimension |
|
static constexpr INTEGER_TYPE | NumberOfNodes = caribou::geometry::traits<Element>::NumberOfNodesAtCompileTime |
|
static constexpr INTEGER_TYPE | NumberOfGaussNodes = caribou::geometry::traits<Element>::NumberOfGaussNodesAtCompileTime |
|
auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *topology) -> bool |
|
auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *topology) -> bool |
|
auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *topology) -> bool |
|
auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *topology) -> bool |
|
auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *topology) -> bool |
|
auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *topology) -> bool |
|
static auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *) -> bool |
| Return true if the mesh topology is compatible with the type Element. More...
|
|