#include <HexahedronFEMForceField.h>
Compute Finite Element forces based on hexahedral elements.
Corotational hexahedron from @Article{NMPCPF05, author = "Nesme, Matthieu and Marchal, Maud and Promayon, Emmanuel and Chabanas, Matthieu and Payan, Yohan and Faure, Fran\c{c}ois", title = "Physically Realistic Interactive Simulation for Biological Soft Tissues", journal = "Recent Research Developments in Biomechanics", volume = "2", year = "2005", keywords = "surgical simulation physical animation truth cube", url = "http://www-evasion.imag.fr/Publications/2005/NMPCPF05" }
WARNING: indices ordering is different than in topology node
Y 7---------6 ^ / /| |/ Z / | 3----^----2 | | / | | | 4------|--5 | / | / |/ |/ 0---------1-->X
Public Attributes | |
int | method |
Data< std::string > | f_method |
the computation method of the displacements More... | |
Data< Real > | f_poissonRatio |
Data< Real > | f_youngModulus |
Data< bool > | f_updateStiffnessMatrix |
Data< sofa::helper::OptionsGroup > | _gatherPt |
use in GPU version More... | |
Data< sofa::helper::OptionsGroup > | _gatherBsize |
use in GPU version More... | |
Data< bool > | f_drawing |
draw the forcefield if true More... | |
Data< Real > | f_drawPercentageOffset |
size of the hexa More... | |
bool | needUpdateTopology |
SingleLink< HexahedronFEMForceField< DataTypes >, sofa::core::topology::BaseMeshTopology, BaseLink::FLAG_STOREPATH|BaseLink::FLAG_STRONGLINK > | l_topology |
Link to be set to the topology container in the component graph. More... | |
Protected Attributes | |
VecMaterialStiffness | _materialsStiffnesses |
the material stiffness matrices vector More... | |
Data< VecElementStiffness > | _elementStiffnesses |
Stiffness matrices per element (K_i) More... | |
CompressedMatrix | _stiffnesses |
SReal | m_potentialEnergy |
sofa::core::topology::BaseMeshTopology * | m_topology |
Pointer to the topology container. Will be set by link. More... | |
topology::container::grid::SparseGridTopology * | _sparseGrid |
Data< VecCoord > | _initialPoints |
the intial positions of the points More... | |
type::Mat< 8, 3, int > | _coef |
coef of each vertices to compute the strain stress matrix More... | |
HexahedronFEMForceFieldInternalData< DataTypes > * | data |
type::vector< type::fixed_array< Coord, 8 > > | _rotatedInitialElements |
The initials positions in its frame. More... | |
type::vector< Transformation > | _rotations |
type::vector< Transformation > | _initialrotations |
bool | _alreadyInit |
Protected Member Functions | |
HexahedronFEMForceField () | |
const VecElement * | getIndexedElements () |
virtual void | computeElementStiffness (ElementStiffness &K, const MaterialStiffness &M, const type::fixed_array< Coord, 8 > &nodes, const sofa::Index elementIndice, double stiffnessFactor=1.0) const |
void | computeMaterialStiffness (sofa::Index i) |
void | initLarge (sofa::Index i, const Element &elem) |
virtual void | accumulateForceLarge (WDataRefVecDeriv &f, RDataRefVecCoord &p, sofa::Index i, const Element &elem) |
void | initPolar (sofa::Index i, const Element &elem) |
void | computeRotationPolar (Transformation &r, type::Vec< 8, Coord > &nodes) |
virtual void | accumulateForcePolar (WDataRefVecDeriv &f, RDataRefVecCoord &p, sofa::Index i, const Element &elem) |
void | initSmall (sofa::Index i, const Element &elem) |
virtual void | accumulateForceSmall (WDataRefVecDeriv &f, RDataRefVecCoord &p, sofa::Index i, const Element &elem) |
Static Protected Member Functions | |
static Mat33 | integrateStiffness (int signx0, int signy0, int signz0, int signx1, int signy1, int signz1, const Real u, const Real v, const Real w, const Mat33 &J_1) |
static void | computeForce (Displacement &F, const Displacement &Depl, const ElementStiffness &K) |
static void | computeRotationLarge (Transformation &r, Coord &edgex, Coord &edgey) |
Friends | |
class | HexahedronFEMForceFieldInternalData< DataTypes > |
|
protected |
|
protected |
coef of each vertices to compute the strain stress matrix
|
protected |
Stiffness matrices per element (K_i)
Data< sofa::helper::OptionsGroup > sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::_gatherBsize |
use in GPU version
Data< sofa::helper::OptionsGroup > sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::_gatherPt |
use in GPU version
|
protected |
the intial positions of the points
|
protected |
|
protected |
the material stiffness matrices vector
|
protected |
The initials positions in its frame.
|
protected |
|
protected |
|
protected |
|
protected |
Data<bool> sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::f_drawing |
draw the forcefield if true
Data<Real> sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::f_drawPercentageOffset |
size of the hexa
Data<std::string> sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::f_method |
the computation method of the displacements
Data<Real> sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::f_poissonRatio |
Data<bool> sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::f_updateStiffnessMatrix |
Data<Real> sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::f_youngModulus |
Link to be set to the topology container in the component graph.
|
protected |
|
protected |
Pointer to the topology container. Will be set by link.
int sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::method |
bool sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::needUpdateTopology |
|
protected |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
override |
|
override |
|
override |
|
inlineoverride |
|
override |
|
override |
|
protectedvirtual |
|
staticprotected |
|
protected |
|
staticprotected |
|
protected |
|
override |
const HexahedronFEMForceField< DataTypes >::Transformation & sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::getElementRotation | ( | const sofa::Index | elemidx | ) |
|
inlineprotected |
void sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::getNodeRotation | ( | Transformation & | R, |
sofa::Index | nodeIdx | ||
) |
|
inlineoverride |
|
override |
|
override |
|
inlineoverride |
|
override |
|
protected |
|
protected |
|
protected |
|
staticprotected |
|
override |
|
inline |
|
inline |
|
inline |
|
inline |
sofa::component::solidmechanics::fem::elastic::HexahedronFEMForceField< DataTypes >::SOFA_CLASS | ( | SOFA_TEMPLATE(HexahedronFEMForceField< DataTypes >, DataTypes) | , |
SOFA_TEMPLATE(core::behavior::ForceField, DataTypes) | |||
) |
anonymous enum |
|
friend |