|
| Fem2DElementTriangle (std::array< size_t, 3 > nodeIds) |
| Constructor. More...
|
|
void | setThickness (double thickness) |
| Sets the triangle's thickness. More...
|
|
double | getThickness () const |
| Gets the triangle's thickness. More...
|
|
virtual void | initialize (const SurgSim::Math::OdeState &state) override |
| Initializes the FemElement once everything has been set. More...
|
|
virtual double | getVolume (const SurgSim::Math::OdeState &state) const override |
| Gets the element's 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's 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's 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's 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's 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's 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) |
| Adds the element's 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 |
| 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...
|
|
| 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...
|
|
|
void | computeInitialRotation (const SurgSim::Math::OdeState &state) |
| Computes the triangle element's initial rotation. More...
|
|
void | computeStiffness (const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 18, 18 > *k) |
| Computes the triangle's stiffness matrix. More...
|
|
void | computeMass (const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 18, 18 > *m) |
| Computes the triangle's mass matrix. More...
|
|
void | computeShapeFunctionsParameters (const SurgSim::Math::OdeState &restState) |
| Compute the various shape functions (membrane and plate deformations) parameters. More...
|
|
std::array< double, 9 > | batozDhxDxi (double xi, double neta) const |
| Batoz derivative dHx/dxi. More...
|
|
std::array< double, 9 > | batozDhxDneta (double xi, double neta) const |
| Batoz derivative dHx/dneta. More...
|
|
std::array< double, 9 > | batozDhyDxi (double xi, double neta) const |
| Batoz derivative dHy/dxi. More...
|
|
std::array< double, 9 > | batozDhyDneta (double xi, double neta) const |
| Batoz derivative dHy/dneta. More...
|
|
Matrix39Type | batozStrainDisplacement (double xi, double neta) const |
| Batoz strain displacement matrix evaluated at a given point. More...
|
|
void | setNumDofPerNode (size_t numDofPerNode) |
| Sets the number of degrees of freedom per node. More...
|
|
|
Eigen::Matrix< double, 18, 1 > | m_x0 |
| The element's rest state. More...
|
|
SurgSim::Math::Matrix33d | m_initialRotation |
| Initial rotation matrix for the element. More...
|
|
Eigen::Matrix< double, 18, 18 > | m_M |
| Mass matrix (in global coordinate frame) More...
|
|
Eigen::Matrix< double, 18, 18 > | m_MLocal |
| Stiffness matrix (in local coordinate frame) More...
|
|
Eigen::Matrix< double, 18, 18 > | m_K |
| Stiffness matrix (in global coordinate frame) More...
|
|
Eigen::Matrix< double, 18, 18 > | m_KLocal |
| Stiffness matrix (in local coordinate frame) More...
|
|
double | m_restArea |
| The triangle rest area. More...
|
|
double | m_thickness |
| Thickness of the element. More...
|
|
SurgSim::Math::Matrix33d | m_membraneShapeFunctionsParameters |
| Membrane (in-plane) deformation. More...
|
|
SurgSim::Math::Vector3d | m_xij |
| Thin-plate (bending/twisting) specific data structure DOF simulated: (z, thetaX, thetaY) "A Study Of Three-Node Triangular Plate Bending Elements", Jean-Louis Batoz Numerical Methods in Engineering, vol 15, 1771-1812 (1980) Indices are as follow: 0 1 2 denotes triangle's points ABC: 4 (mid-edge 12) 5 (mid-edge 20) 6 (mid-edge 01) denotes mid-edge points Data structures having only mid-edge information are 0 based (0->4 (mid-egde 12) ; 1->5 ; 2->6) More...
|
|
SurgSim::Math::Vector3d | m_yij |
|
SurgSim::Math::Vector3d | m_lij_sqr |
|
SurgSim::Math::Vector3d | m_ak |
|
SurgSim::Math::Vector3d | m_bk |
|
SurgSim::Math::Vector3d | m_ck |
|
SurgSim::Math::Vector3d | m_dk |
|
SurgSim::Math::Vector3d | m_ek |
|
SurgSim::Math::Vector3d | m_Pk |
|
SurgSim::Math::Vector3d | m_qk |
|
SurgSim::Math::Vector3d | m_tk |
|
SurgSim::Math::Vector3d | m_rk |
|
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...
|
|
2D FemElement based on a triangle with a constant thickness
The triangle is modelled as a shell (6DOF) which is decomposed into a membrane (in-plane 2DOF (X,Y)) and a plate (bending/twisting 3DOF (Z, ThetaX,ThetaY)). The thin-plate assumption does not consider the drilling dof (ThetaZ). The system includes the DOF for completeness but does not assign any mass or stiffness to it.
The membrane (in-plane) equations (mass and stiffness) are following "Theory of Matrix Structural Analysis" from J.S. Przemieniecki.
The thin-plate (bending) equations (mass and stiffness) are following "A Study Of Three-Node Triangular Plate Bending Elements", Jean-Louis Batoz Numerical Methods in Engineering, vol 15, 1771-1812 (1980)
- Note
- The plate mass matrix is not detailed in the above paper, but the analytical equations
-
have been derived from it.
-
The element is considered to have a constant thickness.