SurgSim::Physics::Fem3DElementCube Class Reference

Class for Fem Element 3D based on a cube volume discretization. More...

#include <SurgSim/Physics/Fem3DElementCube.h>

Inheritance diagram for SurgSim::Physics::Fem3DElementCube:
[legend]
Collaboration diagram for SurgSim::Physics::Fem3DElementCube:
[legend]

## Public Member Functions

Fem3DElementCube (std::array< size_t, 8 > nodeIds)
Constructor. More...

virtual void initialize (const SurgSim::Math::OdeState &state) override
Initializes the element once everything has been set. More...

virtual double getVolume (const SurgSim::Math::OdeState &state) const override
Gets the element volume based on the input state. More...

virtual void addForce (const SurgSim::Math::OdeState &state, SurgSim::Math::Vector *F, double scale=1.0) override
Adds the element force (computed for a given state) to a complete system force vector F (assembly) More...

virtual void addMass (const SurgSim::Math::OdeState &state, SurgSim::Math::Matrix *M, double scale=1.0) override
Adds the element mass matrix M (computed for a given state) to a complete system mass matrix M (assembly) More...

virtual void addDamping (const SurgSim::Math::OdeState &state, SurgSim::Math::Matrix *D, double scale=1.0) override
Adds the element damping matrix D (= -df/dv) (computed for a given state) to a complete system damping matrix D (assembly) More...

virtual void addStiffness (const SurgSim::Math::OdeState &state, SurgSim::Math::Matrix *K, double scale=1.0) override
Adds the element stiffness matrix K (= -df/dx) (computed for a given state) to a complete system stiffness matrix K (assembly) More...

virtual void addFMDK (const SurgSim::Math::OdeState &state, SurgSim::Math::Vector *F, SurgSim::Math::Matrix *M, SurgSim::Math::Matrix *D, SurgSim::Math::Matrix *K) override
Adds the element force vector, mass, stiffness and damping matrices (computed for a given state) into a complete system data structure F, M, D, K (assembly) More...

virtual void addMatVec (const SurgSim::Math::OdeState &state, double alphaM, double alphaD, double alphaK, const SurgSim::Math::Vector &x, SurgSim::Math::Vector *F) override
Adds the element matrix-vector contribution F += (alphaM.M + alphaD.D + alphaK.K).x (computed for a given state) into a complete system data structure F (assembly) More...

virtual SurgSim::Math::Vector computeCartesianCoordinate (const SurgSim::Math::OdeState &state, const SurgSim::Math::Vector &naturalCoordinate) const override
Computes a given natural coordinate in cartesian coordinates. More...

virtual SurgSim::Math::Vector computeNaturalCoordinate (const SurgSim::Math::OdeState &state, const SurgSim::Math::Vector &cartesianCoordinate) const override
Computes a natural coordinate given a global coordinate. More...

Public Member Functions inherited from SurgSim::Physics::FemElement
FemElement ()
Constructor. More...

virtual ~FemElement ()
Virtual destructor. More...

size_t getNumDofPerNode () const
Gets the number of degree of freedom per node. More...

size_t getNumNodes () const
Gets the number of nodes connected by this element. More...

size_t getNodeId (size_t elementNodeId) const
Gets the elementNodeId-th node id. More...

const std::vector< size_t > & getNodeIds () const
Gets the node ids for this element. More...

void setYoungModulus (double E)
Sets the Young modulus (in N.m-2) More...

double getYoungModulus () const
Gets the Young modulus (in N.m-2) More...

void setPoissonRatio (double nu)
Sets the Poisson ratio (unitless) More...

double getPoissonRatio () const
Gets the Poisson ratio (unitless) More...

void setMassDensity (double rho)
Sets the mass density (in Kg.m-3) More...

double getMassDensity () const
Gets the mass density (in Kg.m-3) More...

double getMass (const SurgSim::Math::OdeState &state) const
Gets the element mass based on the input state (in Kg) More...

virtual bool update (const SurgSim::Math::OdeState &state)
Update the element based on a given state. More...

bool isValidCoordinate (const SurgSim::Math::Vector &naturalCoordinate) const
Determines whether a given natural coordinate is valid. More...

## Protected Member Functions

void buildConstitutiveMaterialMatrix (Eigen::Matrix< double, 6, 6 > *constitutiveMatrix)
Build the constitutive material 6x6 matrix. More...

void computeStiffness (const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 6, 24 > *strain, Eigen::Matrix< double, 6, 24 > *stress, Eigen::Matrix< double, 24, 24 > *k)
Computes the cube stiffness matrix along with the strain and stress matrices. More...

void computeMass (const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 24, 24 > *m)
Computes the cube mass matrix. More...

void addForce (const SurgSim::Math::OdeState &state, const Eigen::Matrix< double, 24, 24 > &k, SurgSim::Math::Vector *F, double scale=1.0)
Adds the element force (computed for a given state) to a complete system force vector F (assembly) This method relies on a given stiffness matrix and does not evaluate it from the state. More...

void addStrainStressStiffnessAtPoint (const SurgSim::Math::OdeState &state, const SurgSim::Math::gaussQuadraturePoint &epsilon, const SurgSim::Math::gaussQuadraturePoint &eta, const SurgSim::Math::gaussQuadraturePoint &mu, Eigen::Matrix< double, 6, 24 > *strain, Eigen::Matrix< double, 6, 24 > *stress, Eigen::Matrix< double, 24, 24 > *k)
Helper method to evaluate strain-stress and stiffness integral terms with a discrete sum using a Gauss quadrature rule. More...

Helper method to evaluate mass integral terms with a discrete sum using a Gauss quadrature rule. More...

void evaluateJ (const SurgSim::Math::OdeState &state, double epsilon, double eta, double mu, SurgSim::Math::Matrix33d *J, SurgSim::Math::Matrix33d *Jinv, double *detJ) const
Helper method to evaluate matrix J = d(x,y,z)/d(epsilon,eta,mu) at a given 3D parametric location J expresses the 3D space coordinate frames variation w.r.t. More...

void evaluateStrainDisplacement (double epsilon, double eta, double mu, const SurgSim::Math::Matrix33d &Jinv, Eigen::Matrix< double, 6, 24 > *B) const
Helper method to evaluate the strain-displacement matrix at a given 3D parametric location c.f. More...

double shapeFunction (size_t i, double epsilon, double eta, double mu) const
Shape functions $$N_i(\epsilon, \eta, \mu) = (1\pm\epsilon)(1\pm\eta)(1\pm\mu)/8$$. More...

double dShapeFunctiondepsilon (size_t i, double epsilon, double eta, double mu) const
Shape functions derivative $$dN_i/d\epsilon(\epsilon, \eta, \mu) = \pm(1\pm\eta)(1\pm\mu)/8$$. More...

double dShapeFunctiondeta (size_t i, double epsilon, double eta, double mu) const
Shape functions derivative $$dN_i/d\eta(\epsilon, \eta, \mu) = \pm(1\pm\epsilon)(1\pm\mu)/8$$. More...

double dShapeFunctiondmu (size_t i, double epsilon, double eta, double mu) const
Shape functions derivative $$dN_i/d\mu(\epsilon, \eta, \mu) = \pm(1\pm\epsilon)(1\pm\eta)/8$$. More...

Protected Member Functions inherited from SurgSim::Physics::FemElement
void setNumDofPerNode (size_t numDofPerNode)
Sets the number of degrees of freedom per node. More...

## Protected Attributes

double m_restVolume
Cube rest volume. More...

Eigen::Matrix< double, 24, 1 > m_elementRestPosition
The cube rest state (nodes ordered by m_nodeIds) More...

Eigen::Matrix< double, 6, 24 > m_strain
Strain matrix (usually noted $$\epsilon$$) More...

Eigen::Matrix< double, 6, 24 > m_stress
Stress matrix (usually noted $$\sigma$$) More...

Eigen::Matrix< double, 6, 6 > m_constitutiveMaterial
Constitutive material matrix (Hooke's law in this case) defines the relationship between stress and strain. More...

Eigen::Matrix< double, 24, 24 > m_mass
Mass matrix (usually noted $$M$$) More...

Eigen::Matrix< double, 24, 24 > m_stiffness
Stiffness matrix (usually noted $$K$$) More...

std::array< double, 8 > m_shapeFunctionsEpsilonSign

std::array< double, 8 > m_shapeFunctionsEtaSign

std::array< double, 8 > m_shapeFunctionsMuSign

Protected Attributes inherited from SurgSim::Physics::FemElement
size_t m_numDofPerNode
Number of degree of freedom per node for this element. More...

std::vector< size_t > m_nodeIds
Node ids connected by this element. More...

double m_rho
Mass density (in Kg.m-3) More...

double m_E
Young modulus (in N.m-2) More...

double m_nu
Poisson ratio (unitless) More...

## Detailed Description

Class for Fem Element 3D based on a cube volume discretization.

Note
The stiffness property of the cube is derived from
The mass property of the cube is derived from the kinetic energy computed on the cube's volume
(c.f. internal documentation on cube mass matrix computation for details).
Integral terms over the volume are evaluated using the Gauss-Legendre 2-points quadrature.
Note that this technique is accurate for any polynomial evaluation up to degree 3.
In our case, the shape functions $$N_i$$ are linear (of degree 1). So for exmaple,
in the mass matrix we have integral terms like $$\int_V N_i.N_j dV$$, which are of degree 2.

## Constructor & Destructor Documentation

 SurgSim::Physics::Fem3DElementCube::Fem3DElementCube ( std::array< size_t, 8 > nodeIds )
explicit

Constructor.

Parameters
 nodeIds An array of 8 node ids defining this cube element in an overall mesh
Note
It is required that getVolume() is positive, to do so, it needs (looking at the cube from
the exterior, face normal 'n' pointing outward):
the 1st 4 nodeIds (ABCD) should define any face CW i.e. (AB^AC or AB^AD or AC^AD).n < 0
the last 4 nodeIds (EFGH) should define the opposite face CCW i.e. (EF^EG or EF^EH or EG^EH).n > 0
A warning will be logged when the initialize function is called if this condition is not met, but the
simulation will keep running. Behavior will be undefined because of possible negative volume terms.

## Member Function Documentation

 void SurgSim::Physics::Fem3DElementCube::addDamping ( const SurgSim::Math::OdeState & state, SurgSim::Math::Matrix * D, double scale = 1.0 )
overridevirtual

Adds the element damping matrix D (= -df/dv) (computed for a given state) to a complete system damping matrix D (assembly)

Parameters
 state The state to compute the damping matrix with [in,out] D The complete system damping matrix to add the element damping matrix into scale A factor to scale the added damping matrix with
Note
The element damping matrix is square of size getNumDofPerNode() x getNumNodes()
This method supposes that the incoming state contains information with the same number of
dof per node as getNumDofPerNode()
Fem3DElementCube uses linear elasticity (not visco-elasticity), so it does not give any damping.

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::addFMDK ( const SurgSim::Math::OdeState & state, SurgSim::Math::Vector * F, SurgSim::Math::Matrix * M, SurgSim::Math::Matrix * D, SurgSim::Math::Matrix * K )
overridevirtual

Adds the element force vector, mass, stiffness and damping matrices (computed for a given state) into a complete system data structure F, M, D, K (assembly)

Parameters
 state The state to compute everything with [in,out] F The complete system force vector to add the element force into [in,out] M The complete system mass matrix to add the element mass matrix into [in,out] D The complete system damping matrix to add the element damping matrix into [in,out] K The complete system stiffness matrix to add the element stiffness matrix into
Note
This method supposes that the incoming state contains information with the same number of dof
per node as getNumDofPerNode()

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::addForce ( const SurgSim::Math::OdeState & state, SurgSim::Math::Vector * F, double scale = 1.0 )
overridevirtual

Adds the element force (computed for a given state) to a complete system force vector F (assembly)

Parameters
 state The state to compute the force with [in,out] F The complete system force vector to add the element force into scale A factor to scale the added force with
Note
The element force is of size (getNumDofPerNode() x getNumNodes())
This method supposes that the incoming state contains information with the same number of dof
per node as getNumDofPerNode()

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::addForce ( const SurgSim::Math::OdeState & state, const Eigen::Matrix< double, 24, 24 > & k, SurgSim::Math::Vector * F, double scale = 1.0 )
protected

Adds the element force (computed for a given state) to a complete system force vector F (assembly) This method relies on a given stiffness matrix and does not evaluate it from the state.

Parameters
 state The state to compute the force with k The given element stiffness matrix [in,out] F The complete system force vector to add the element force into scale A factor to scale the added force with
Note
The element force is of size (getNumDofPerNode() x getNumNodes())
This method supposes that the incoming state contains information with the same number of dof
per node as getNumDofPerNode()
 void SurgSim::Physics::Fem3DElementCube::addMass ( const SurgSim::Math::OdeState & state, SurgSim::Math::Matrix * M, double scale = 1.0 )
overridevirtual

Adds the element mass matrix M (computed for a given state) to a complete system mass matrix M (assembly)

Parameters
 state The state to compute the mass matrix with [in,out] M The complete system mass matrix to add the element mass-matrix into scale A factor to scale the added mass matrix with
Note
The element mass matrix is square of size getNumDofPerNode() x getNumNodes()
This method supposes that the incoming state contains information with the same number of
dof per node as getNumDofPerNode()

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::addMassMatrixAtPoint ( const SurgSim::Math::OdeState & state, const SurgSim::Math::gaussQuadraturePoint & epsilon, const SurgSim::Math::gaussQuadraturePoint & eta, const SurgSim::Math::gaussQuadraturePoint & mu, Eigen::Matrix< double, 24, 24 > * m )
protected

Helper method to evaluate mass integral terms with a discrete sum using a Gauss quadrature rule.

Parameters
 state The state to compute the evaluation with epsilon,eta,mu The Gauss quadrature points to evaluate the data at [out] m The matrix in which to add the evaluations
 void SurgSim::Physics::Fem3DElementCube::addMatVec ( const SurgSim::Math::OdeState & state, double alphaM, double alphaD, double alphaK, const SurgSim::Math::Vector & x, SurgSim::Math::Vector * F )
overridevirtual

Adds the element matrix-vector contribution F += (alphaM.M + alphaD.D + alphaK.K).x (computed for a given state) into a complete system data structure F (assembly)

Parameters
 state The state to compute everything with alphaM The scaling factor for the mass contribution alphaD The scaling factor for the damping contribution alphaK The scaling factor for the stiffness contribution x A complete system vector to use as the vector in the matrix-vector multiplication [in,out] F The complete system force vector to add the element matrix-vector contribution into
Note
This method supposes that the incoming state contains information with the same number of dof
per node as getNumDofPerNode()

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::addStiffness ( const SurgSim::Math::OdeState & state, SurgSim::Math::Matrix * K, double scale = 1.0 )
overridevirtual

Adds the element stiffness matrix K (= -df/dx) (computed for a given state) to a complete system stiffness matrix K (assembly)

Parameters
 state The state to compute the stiffness matrix with [in,out] K The complete system stiffness matrix to add the element stiffness matrix into scale A factor to scale the added stiffness matrix with
Note
The element stiffness matrix is square of size getNumDofPerNode() x getNumNodes()
This method supposes that the incoming state contains information with the same number of
dof per node as getNumDofPerNode()

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::addStrainStressStiffnessAtPoint ( const SurgSim::Math::OdeState & state, const SurgSim::Math::gaussQuadraturePoint & epsilon, const SurgSim::Math::gaussQuadraturePoint & eta, const SurgSim::Math::gaussQuadraturePoint & mu, Eigen::Matrix< double, 6, 24 > * strain, Eigen::Matrix< double, 6, 24 > * stress, Eigen::Matrix< double, 24, 24 > * k )
protected

Helper method to evaluate strain-stress and stiffness integral terms with a discrete sum using a Gauss quadrature rule.

Parameters
 state The state to compute the evaluation with epsilon,eta,mu The Gauss quadrature points to evaluate the data at [out] strain,stress,k The matrices in which to add the evaluations
 void SurgSim::Physics::Fem3DElementCube::buildConstitutiveMaterialMatrix ( Eigen::Matrix< double, 6, 6 > * constitutiveMatrix )
protected

Build the constitutive material 6x6 matrix.

Parameters
 [out] constitutiveMatrix The 6x6 constitutive material matrix
 SurgSim::Math::Vector SurgSim::Physics::Fem3DElementCube::computeCartesianCoordinate ( const SurgSim::Math::OdeState & state, const SurgSim::Math::Vector & naturalCoordinate ) const
overridevirtual

Computes a given natural coordinate in cartesian coordinates.

Parameters
 state The state at which to transform coordinates naturalCoordinate The coordinates to transform
Returns
The resultant cartesian coordinates

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::computeMass ( const SurgSim::Math::OdeState & state, Eigen::Matrix< double, 24, 24 > * m )
protected

Computes the cube mass matrix.

Parameters
 state The state to compute the mass matrix from [out] m The mass matrix to store the result into
 SurgSim::Math::Vector SurgSim::Physics::Fem3DElementCube::computeNaturalCoordinate ( const SurgSim::Math::OdeState & state, const SurgSim::Math::Vector & cartesianCoordinate ) const
overridevirtual

Computes a natural coordinate given a global coordinate.

Parameters
 state The state at which to transform coordinates cartesianCoordinate The coordinates to transform
Returns
The resultant natural coordinates

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::computeStiffness ( const SurgSim::Math::OdeState & state, Eigen::Matrix< double, 6, 24 > * strain, Eigen::Matrix< double, 6, 24 > * stress, Eigen::Matrix< double, 24, 24 > * k )
protected

Computes the cube stiffness matrix along with the strain and stress matrices.

Parameters
 state The state to compute the stiffness matrix from [out] strain,stress,k The strain, stress and stiffness matrices to store the result into
 double SurgSim::Physics::Fem3DElementCube::dShapeFunctiondepsilon ( size_t i, double epsilon, double eta, double mu ) const
protected

Shape functions derivative $$dN_i/d\epsilon(\epsilon, \eta, \mu) = \pm(1\pm\eta)(1\pm\mu)/8$$.

Parameters
 i The node id (w.r.t. local element) to evaluate at epsilon,eta,mu The 3D parametric coordinates each within $$[-1 +1]$$
Returns
dNi/depsilon(epsilon, eta, mu)
Note
A check is performed on the nodeId i but not on the 3D parametric coordinates range
N
m_shapeFunctionsEpsilonSign, m_shapeFunctionsEtaSign, m_shapeFunctionsMuSign
 double SurgSim::Physics::Fem3DElementCube::dShapeFunctiondeta ( size_t i, double epsilon, double eta, double mu ) const
protected

Shape functions derivative $$dN_i/d\eta(\epsilon, \eta, \mu) = \pm(1\pm\epsilon)(1\pm\mu)/8$$.

Parameters
 i The node id (w.r.t. local element) to evaluate at epsilon,eta,mu The 3D parametric coordinates each within $$[-1 +1]$$
Returns
dNi/depsilon(epsilon, eta, mu)
Note
A check is performed on the nodeId i but not on the 3D parametric coordinates range
N
m_shapeFunctionsEpsilonSign, m_shapeFunctionsEtaSign, m_shapeFunctionsMuSign
 double SurgSim::Physics::Fem3DElementCube::dShapeFunctiondmu ( size_t i, double epsilon, double eta, double mu ) const
protected

Shape functions derivative $$dN_i/d\mu(\epsilon, \eta, \mu) = \pm(1\pm\epsilon)(1\pm\eta)/8$$.

Parameters
 i The node id (w.r.t. local element) to evaluate at epsilon,eta,mu The 3D parametric coordinates each within $$[-1 +1]$$
Returns
dNi/depsilon(epsilon, eta, mu)
Note
A check is performed on the nodeId i but not on the 3D parametric coordinates range
N
m_shapeFunctionsEpsilonSign, m_shapeFunctionsEtaSign, m_shapeFunctionsMuSign
 void SurgSim::Physics::Fem3DElementCube::evaluateJ ( const SurgSim::Math::OdeState & state, double epsilon, double eta, double mu, SurgSim::Math::Matrix33d * J, SurgSim::Math::Matrix33d * Jinv, double * detJ ) const
protected

Helper method to evaluate matrix J = d(x,y,z)/d(epsilon,eta,mu) at a given 3D parametric location J expresses the 3D space coordinate frames variation w.r.t.

parametric coordinates

Parameters
 state The state to compute the evaluation with epsilon,eta,mu The 3D parametric coordinates to evaluate the data at (within $$[-1 +1]$$) [out] J,Jinv,detJ The J matrix with its inverse and determinant evaluated at (epsilon, eta, mu)
 void SurgSim::Physics::Fem3DElementCube::evaluateStrainDisplacement ( double epsilon, double eta, double mu, const SurgSim::Math::Matrix33d & Jinv, Eigen::Matrix< double, 6, 24 > * B ) const
protected

Helper method to evaluate the strain-displacement matrix at a given 3D parametric location c.f.

Parameters
 epsilon,eta,mu The 3D parametric coordinates to evaluate the data at (within $$[-1 +1]$$) Jinv The inverse of matrix J (3D global coords to 3D parametric coords) [out] B The strain-displacement matrix
 double SurgSim::Physics::Fem3DElementCube::getVolume ( const SurgSim::Math::OdeState & state ) const
overridevirtual

Gets the element volume based on the input state.

Parameters
 state The state to compute the volume with

Implements SurgSim::Physics::FemElement.

 void SurgSim::Physics::Fem3DElementCube::initialize ( const SurgSim::Math::OdeState & state )
overridevirtual

Initializes the element once everything has been set.

Parameters
 state The state to initialize the FemElement with
Note
We use the theory of linear elasticity, so this method precomputes the stiffness and mass matrices
The 8 node ids must be valid in the given state, if they aren't an ASSERT will be raised
The 8 node ids must define a cube with positive volume, if they don't an ASSERT will be raised
In order to do so (looking at the cube from the exterior, face normal 'n' pointing outward),
the 1st 4 nodeIds (ABCD) should define any face CW i.e. (AB^AC or AB^AD or AC^AD).n < 0
the last 4 nodeIds (EFGH) should define the opposite face CCW i.e. (EF^EG or EF^EH or EG^EH).n > 0
A warning will be logged in if this condition is not met, but the simulation will keep running.
Behavior will be undefined because of possible negative volume terms.

Reimplemented from SurgSim::Physics::FemElement.

 double SurgSim::Physics::Fem3DElementCube::shapeFunction ( size_t i, double epsilon, double eta, double mu ) const
protected

Shape functions $$N_i(\epsilon, \eta, \mu) = (1\pm\epsilon)(1\pm\eta)(1\pm\mu)/8$$.

$$\begin{array}{r | r r r} i & sign(\epsilon) & sign(\eta) & sign(\mu) \\ \hline 0 & -1 & -1 & -1 \\ 1 & +1 & -1 & -1 \\ 2 & +1 & +1 & -1 \\ 3 & -1 & +1 & -1 \\ 4 & -1 & -1 & +1 \\ 5 & +1 & -1 & +1 \\ 6 & +1 & +1 & +1 \\ 7 & -1 & +1 & +1 \end{array}$$

Parameters
 i The node id (w.r.t. local element) to evaluate at epsilon,eta,mu The 3D parametric coordinates each within $$[-1 +1]$$
Returns
Ni(epsilon, eta, mu)
Note
A check is performed on the nodeId i but not on the 3D parametric coordinates range
m_shapeFunctionsEpsilonSign, m_shapeFunctionsEtaSign, m_shapeFunctionsMuSign
dNdepsilon, dNdeta, dNdmu

## Member Data Documentation

 Eigen::Matrix SurgSim::Physics::Fem3DElementCube::m_constitutiveMaterial
protected

Constitutive material matrix (Hooke's law in this case) defines the relationship between stress and strain.

 Eigen::Matrix SurgSim::Physics::Fem3DElementCube::m_elementRestPosition
protected

The cube rest state (nodes ordered by m_nodeIds)

 Eigen::Matrix SurgSim::Physics::Fem3DElementCube::m_mass
protected

Mass matrix (usually noted $$M$$)

 double SurgSim::Physics::Fem3DElementCube::m_restVolume
protected

Cube rest volume.

 std::array SurgSim::Physics::Fem3DElementCube::m_shapeFunctionsEpsilonSign
protected

Shape functions parameters $$N_i(\epsilon, \eta, \mu) = (1\pm\epsilon)(1\pm\eta)(1\pm\mu)/8 = (1+\epsilon.sign(\epsilon_i))(1+\eta.sign(\eta_i))(1+\mu.sign(\mu_i))/8 \textbf{ with } (\epsilon, \eta, \mu) \in [-1 +1]^3$$

We choose to only store the sign of epsilon, eta and mu for each shape functions.

N
 std::array SurgSim::Physics::Fem3DElementCube::m_shapeFunctionsEtaSign
protected

Shape functions parameters $$N_i(\epsilon, \eta, \mu) = (1\pm\epsilon)(1\pm\eta)(1\pm\mu)/8 = (1+\epsilon.sign(\epsilon_i))(1+\eta.sign(\eta_i))(1+\mu.sign(\mu_i))/8 \textbf{ with } (\epsilon, \eta, \mu) \in [-1 +1]^3$$

We choose to only store the sign of epsilon, eta and mu for each shape functions.

N
 std::array SurgSim::Physics::Fem3DElementCube::m_shapeFunctionsMuSign
protected

Shape functions parameters $$N_i(\epsilon, \eta, \mu) = (1\pm\epsilon)(1\pm\eta)(1\pm\mu)/8 = (1+\epsilon.sign(\epsilon_i))(1+\eta.sign(\eta_i))(1+\mu.sign(\mu_i))/8 \textbf{ with } (\epsilon, \eta, \mu) \in [-1 +1]^3$$

We choose to only store the sign of epsilon, eta and mu for each shape functions.

N
 Eigen::Matrix SurgSim::Physics::Fem3DElementCube::m_stiffness
protected

Stiffness matrix (usually noted $$K$$)

 Eigen::Matrix SurgSim::Physics::Fem3DElementCube::m_strain
protected

Strain matrix (usually noted $$\epsilon$$)

 Eigen::Matrix SurgSim::Physics::Fem3DElementCube::m_stress
protected

Stress matrix (usually noted $$\sigma$$)

The documentation for this class was generated from the following files: