|
| | 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.