|
| Fem1DElementBeam () |
| Constructor.
|
|
| Fem1DElementBeam (std::array< size_t, 2 > nodeIds) |
| Constructor. More...
|
|
| Fem1DElementBeam (std::shared_ptr< FemElementStructs::FemElementParameter > elementData) |
| Constructor for FemElement object factory. More...
|
|
void | setRadius (double radius) |
| Sets the beam's circular cross-section radius. More...
|
|
double | getRadius () const |
| Gets the beam's circular cross-section radius. More...
|
|
void | initialize (const SurgSim::Math::OdeState &state) override |
| Initialize the FemElement once everything has been set. More...
|
|
double | getVolume (const SurgSim::Math::OdeState &state) const override |
| Gets the element volume based on the input state (in m-3) More...
|
|
bool | getShearingEnabled () const |
| Gets whether shearing is enabled for the element. More...
|
|
void | setShearingEnabled (bool enabled) |
| Enables or disables shearing for the element. More...
|
|
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...
|
|
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...
|
|
const SurgSim::Math::Matrix33d & | getInitialRotation () const |
|
| FemElement () |
| Constructor.
|
|
virtual | ~FemElement () |
| Virtual destructor.
|
|
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 void | addForce (SurgSim::Math::Vector *F, double scale) const |
| Adds the element force (computed for a given state) to a complete system force vector F (assembly) More...
|
|
virtual void | addForce (SurgSim::Math::Vector *F) const |
|
virtual void | addMass (SurgSim::Math::SparseMatrix *M, double scale) const |
| Adds the element mass matrix M (computed for a given state) to a complete system mass matrix M (assembly) More...
|
|
virtual void | addMass (SurgSim::Math::SparseMatrix *M) const |
|
virtual void | addDamping (SurgSim::Math::SparseMatrix *D, double scale) const |
| Adds the element damping matrix D (= -df/dv) (comuted for a given state) to a complete system damping matrix D (assembly) More...
|
|
virtual void | addDamping (SurgSim::Math::SparseMatrix *D) const |
|
virtual void | addStiffness (SurgSim::Math::SparseMatrix *K, double scale) const |
| Adds the element stiffness matrix K (= -df/dx) (computed for a given state) to a complete system stiffness matrix K (assembly) More...
|
|
virtual void | addStiffness (SurgSim::Math::SparseMatrix *K) const |
|
virtual void | addFMDK (SurgSim::Math::Vector *F, SurgSim::Math::SparseMatrix *M, SurgSim::Math::SparseMatrix *D, SurgSim::Math::SparseMatrix *K) const |
| 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 (double alphaM, double alphaD, double alphaK, const SurgSim::Math::Vector &x, SurgSim::Math::Vector *F, SurgSim::Math::Vector *extractedX, SurgSim::Math::Vector *acumulator) const |
| 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...
|
|
bool | isValidCoordinate (const SurgSim::Math::Vector &naturalCoordinate) const |
| Determines whether a given natural coordinate is valid. More...
|
|
template<typename T , int Opt, typename StorageIndex > |
void | assembleMatrixBlocks (const Eigen::Ref< const Math::Matrix > &subMatrix, const std::vector< size_t > &blockIds, size_t blockSize, Eigen::SparseMatrix< T, Opt, StorageIndex > *matrix) const |
| Add a sub-matrix made of squared-blocks into a matrix that could be un-initialized. More...
|
|
template<typename T , int Opt, typename StorageIndex > |
void | assembleMatrixBlocksNoInitialize (const Eigen::Ref< const Math::Matrix > &subMatrix, const std::vector< size_t > &blockIds, size_t blockSize, Eigen::SparseMatrix< T, Opt, StorageIndex > *matrix) const |
| Add a sub-matrix made of squared-blocks into a matrix that is already initialized. More...
|
|
void | updateFMDK (const Math::OdeState &state, int options) |
| Update the FemElement based on the given state. More...
|
|
1D FemElement based on a beam volume discretization with a fixed cross section
The inertia property (mass) and the stiffness matrices are derived from "Theory of Matrix Structural Analysis" from J.S. Przemieniecki. The deformation is based on linear elasticity theory and not on visco-elasticity theory; therefore, the element does not have any damping components.
- Note
- The element is considered to have a circular cross section.