Classes | |
struct | GaussNode |
Public Types | |
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 |
Public Member Functions | |
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 |
Static Public Member Functions | |
static auto | templateName (const HyperelasticForcefield< Element > *=nullptr) -> std::string |
static auto | canCreate (HyperelasticForcefield< Element > *o, BaseContext *context, BaseObjectDescription *arg) -> bool |
Static Public Attributes | |
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 |
Static Protected Member Functions | |
static auto | mesh_is_compatible (const sofa::core::topology::BaseMeshTopology *) -> bool |
Return true if the mesh topology is compatible with the type Element. More... | |
struct SofaCaribou::forcefield::HyperelasticForcefield::GaussNode |
|
inlinestaticprotected |
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.