|
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(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 |
|
virtual auto | number_of_elements () const -> std::size_t |
| Get the number of elements contained in this field.
|
|
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 |
|
template<typename Element >
Return true if the mesh topology is compatible with the type Element.
This internal function is used when the scene graph is created and no template is specified to this component. When a MeshTopology is found in the context node, this function will return true if the MeshTopology is a good hint of the element type that should be used. For example, if a TetrahedronSetTopologyContainer passed as parameter, than HyperelasticForcefield<Tetrahedron>::mesh_is_compatible(topology) will return true.