Go to the documentation of this file.
16 #ifndef SURGSIM_PHYSICS_FEM2DELEMENTTRIANGLE_H
17 #define SURGSIM_PHYSICS_FEM2DELEMENTTRIANGLE_H
29 SURGSIM_STATIC_REGISTRATION(Fem2DElementTriangle);
74 explicit Fem2DElementTriangle(std::shared_ptr<FemElementStructs::FemElementParameter> elementData);
109 Eigen::Matrix<double, 18, 18>* localStiffnessMatrix);
120 Eigen::Matrix<double, 18, 18>* localMassMatrix);
130 Eigen::Matrix<double, 18, 1>
m_x0;
191 std::array<double, 9>
batozDhxDxi(
double xi,
double eta)
const;
195 std::array<double, 9>
batozDhxDeta(
double xi,
double eta)
const;
199 std::array<double, 9>
batozDhyDxi(
double xi,
double eta)
const;
203 std::array<double, 9>
batozDhyDeta(
double xi,
double eta)
const;
214 Eigen::Matrix<double, 18, 18>* localMassMatrix);
222 Eigen::Matrix<double, 18, 18>* localMassMatrix);
247 #endif // SURGSIM_PHYSICS_FEM2DELEMENTTRIANGLE_H
Eigen::Matrix< double, 3, 6 > Matrix36Type
Definition: Fem2DElementTriangle.h:55
2D FemElement based on a triangle with a constant thickness
Definition: Fem2DElementTriangle.h:51
void computeIntegral_HxHxT()
Computes the integral terms Hy.Hy^T over the parametrized triangle area.
Definition: Fem2DElementTriangle.cpp:481
SurgSim::Math::Vector3d m_ak
Batoz variable .
Definition: Fem2DElementTriangle.h:168
SurgSim::Math::Matrix m_integralHxiHxj
Plate mass matrix: integral terms related to the dof .
Definition: Fem2DElementTriangle.h:185
void initialize(const SurgSim::Math::OdeState &state) override
Initialize the FemElement once everything has been set.
Definition: Fem2DElementTriangle.cpp:100
The state of an ode of 2nd order of the form with boundary conditions.
Definition: OdeState.h:38
SurgSim::Math::Vector3d m_ck
Batoz variable .
Definition: Fem2DElementTriangle.h:170
SurgSim::Math::Matrix m_integralHyiHyj
Plate mass matrix: integral terms related to the dof .
Definition: Fem2DElementTriangle.h:184
std::array< double, 9 > batozDhyDxi(double xi, double eta) const
Batoz derivative dHy/dxi.
Definition: Fem2DElementTriangle.cpp:862
SurgSim::Math::Vector3d m_Pk
Batoz variable .
Definition: Fem2DElementTriangle.h:176
SurgSim::Math::Vector computeNaturalCoordinate(const SurgSim::Math::OdeState &state, const SurgSim::Math::Vector &cartesianCoordinate) const override
Computes a natural coordinate given a global coordinate.
Definition: Fem2DElementTriangle.cpp:325
SurgSim::Math::Vector3d m_xij
Batoz variable .
Definition: Fem2DElementTriangle.h:165
Eigen::Matrix< double, 18, 18 > m_KLocal
Stiffness matrix (in local coordinate frame)
Definition: Fem2DElementTriangle.h:138
Eigen::Matrix< double, 9, 9 > Matrix99Type
Definition: Fem2DElementTriangle.h:59
virtual void computeLocalMass(const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 18, 18 > *localMassMatrix)
Computes the triangle's local mass matrix.
Definition: Fem2DElementTriangle.cpp:157
Eigen::Matrix< double, 6, 6 > Matrix66Type
Definition: Fem2DElementTriangle.h:56
SurgSim::Math::Vector3d m_tk
Batoz variable .
Definition: Fem2DElementTriangle.h:178
std::array< double, 9 > batozDhxDeta(double xi, double eta) const
Batoz derivative dHx/deta.
Definition: Fem2DElementTriangle.cpp:841
Eigen::Matrix< double, 3, 1 > Vector3d
A 3D vector of doubles.
Definition: Vector.h:57
SurgSim::Math::Vector computeCartesianCoordinate(const SurgSim::Math::OdeState &state, const SurgSim::Math::Vector &naturalCoordinate) const override
Computes a given natural coordinate in cartesian coordinates.
Definition: Fem2DElementTriangle.cpp:307
double getVolume(const SurgSim::Math::OdeState &state) const override
Gets the element volume based on the input state (in m-3)
Definition: Fem2DElementTriangle.cpp:82
Eigen::Matrix< double, 3, 3 > Matrix33Type
Definition: Fem2DElementTriangle.h:53
Definition: CompoundShapeToGraphics.cpp:29
double m_thickness
Thickness of the element.
Definition: Fem2DElementTriangle.h:144
Eigen::Matrix< double, 3, 9 > Matrix39Type
Definition: Fem2DElementTriangle.h:58
SurgSim::Math::Matrix33d computeRotation(const SurgSim::Math::OdeState &state)
Computes the triangle element's rotation given a state.
Definition: Fem2DElementTriangle.cpp:271
SurgSim::Math::Matrix33d m_initialRotation
Initial rotation matrix for the element.
Definition: Fem2DElementTriangle.h:133
void computeMass(const SurgSim::Math::OdeState &state, SurgSim::Math::Matrix *massMatrix)
Computes the triangle's mass matrix.
Definition: Fem2DElementTriangle.cpp:165
SurgSim::Math::Vector3d m_qk
Batoz variable .
Definition: Fem2DElementTriangle.h:177
Eigen::Matrix< double, 18, 1 > m_x0
The element's rest state.
Definition: Fem2DElementTriangle.h:130
SurgSim::Math::Vector3d m_dk
Batoz variable .
Definition: Fem2DElementTriangle.h:171
SurgSim::Math::Matrix33d m_membraneShapeFunctionsParameters
Membrane (in-plane) deformation.
Definition: Fem2DElementTriangle.h:153
void computeIntegral_dTd()
Computes the integral terms d^T.d over the parametrized triangle area.
Definition: Fem2DElementTriangle.cpp:347
Eigen::Matrix< double, 3, 3, Eigen::RowMajor > Matrix33d
A 3x3 matrix of doubles.
Definition: Matrix.h:51
void setThickness(double thickness)
Sets the triangle's thickness.
Definition: Fem2DElementTriangle.cpp:69
SurgSim::Math::Vector3d m_rk
Batoz variable .
Definition: Fem2DElementTriangle.h:179
void initializeMembers()
Initializes variables needed before Initialize() is called.
Definition: Fem2DElementTriangle.cpp:91
Fem2DElementTriangle()
Constructor.
Definition: Fem2DElementTriangle.cpp:45
SurgSim::Math::Vector3d m_yij
Batoz variable .
Definition: Fem2DElementTriangle.h:166
void doUpdateFMDK(const Math::OdeState &state, int options) override
Update the FemElement based on the given state.
Definition: Fem2DElementTriangle.cpp:333
virtual void computeLocalStiffness(const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 18, 18 > *localStiffnessMatrix)
Computes the triangle's local stiffness matrix.
Definition: Fem2DElementTriangle.cpp:183
Matrix39Type batozStrainDisplacement(double xi, double eta) const
Batoz strain displacement matrix evaluated at a given point.
Definition: Fem2DElementTriangle.cpp:902
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
A dynamic size column vector.
Definition: Vector.h:68
Eigen::Matrix< double, 18, 18 > m_MLocal
Stiffness matrix (in local coordinate frame)
Definition: Fem2DElementTriangle.h:136
void computeShapeFunctionsParameters(const SurgSim::Math::OdeState &restState)
Compute the various shape functions (membrane and plate deformations) parameters.
Definition: Fem2DElementTriangle.cpp:701
Base class for all Fem Element (1D, 2D, 3D) It handles the node ids to which it is connected and requ...
Definition: FemElement.h:45
SurgSim::Math::Vector3d m_bk
Batoz variable .
Definition: Fem2DElementTriangle.h:169
void computeIntegral_HyHyT()
Computes the integral terms Hx.Hx^T over the parametrized triangle area.
Definition: Fem2DElementTriangle.cpp:591
void computeStiffness(const SurgSim::Math::OdeState &state, SurgSim::Math::Matrix *stiffnessMatrix)
Computes the triangle's stiffness matrix.
Definition: Fem2DElementTriangle.cpp:253
double m_restArea
The triangle rest area.
Definition: Fem2DElementTriangle.h:141
SurgSim::Math::Vector3d m_ek
Batoz variable .
Definition: Fem2DElementTriangle.h:172
double getThickness() const
Gets the triangle's thickness.
Definition: Fem2DElementTriangle.cpp:77
SurgSim::Math::Vector3d m_lij_sqr
Batoz variable .
Definition: Fem2DElementTriangle.h:167
std::array< double, 9 > batozDhxDxi(double xi, double eta) const
Batoz derivative dHx/dxi.
Definition: Fem2DElementTriangle.cpp:819
SurgSim::Math::Matrix m_integral_dT_d
Plate mass matrix: integral terms related to the dof .
Definition: Fem2DElementTriangle.h:183
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > Matrix
A dynamic size matrix.
Definition: Matrix.h:65
void computeLocalPlateMass(const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 18, 18 > *localMassMatrix)
Computes the triangle's local plate part mass matrix.
Definition: Fem2DElementTriangle.cpp:139
void computeLocalMembraneMass(const SurgSim::Math::OdeState &state, Eigen::Matrix< double, 18, 18 > *localMassMatrix)
Computes the triangle's local membrane part mass matrix.
Definition: Fem2DElementTriangle.cpp:123
std::array< double, 9 > batozDhyDeta(double xi, double eta) const
Batoz derivative dHy/deta.
Definition: Fem2DElementTriangle.cpp:882
#define SURGSIM_CLASSNAME(ClassName)
Declare the class name of a class with the appropriate function header, do not use quotes.
Definition: Macros.h:21