Class for creating a 2D finite kinematic four-node quadrilateral element in a mesh. More...
#include <kin2DQuad4.hpp>
Public Member Functions | |
kin2DQuad4 (const std::vector< unsigned int > nodes, std::unique_ptr< Material > &material, const double th, const std::string quadrature="GAUSS", const unsigned int nGauss=4) | |
Creates a kin2DQuad4 in a finite element Mesh. More... | |
~kin2DQuad4 () | |
Destroys this kin2DQuad4 object. More... | |
void | CommitState () |
Save the material states in the element. More... | |
void | ReverseState () |
Reverse the material/section states to previous converged state in this element. More... | |
void | InitialState () |
Brings the material/section state to its initial state in this element. More... | |
void | UpdateState () |
Update the material states in the element. More... | |
void | SetDomain (std::map< unsigned int, std::shared_ptr< Node > > &nodes) |
Sets the finite element dependance among objects. More... | |
void | SetDamping (const std::shared_ptr< Damping > &damping) |
Sets the damping model. More... | |
std::vector< unsigned int > | GetTotalDegreeOfFreedom () const |
Gets the list of total-degree of freedom of this Element. More... | |
Eigen::MatrixXd | GetStrain () const |
Gets the material/section (generalised) strain. More... | |
Eigen::MatrixXd | GetStress () const |
Gets the material/section (generalised) stress. More... | |
Eigen::MatrixXd | GetStrainRate () const |
Gets the material/section (generalised) strain-rate. More... | |
Eigen::MatrixXd | GetStrainAt (double x3, double x2) const |
Gets the material strain in section at coordinate (x3,x2). More... | |
Eigen::MatrixXd | GetStressAt (double x3, double x2) const |
Gets the material stress in section at coordinate (x3,x2). More... | |
Eigen::VectorXd | GetVTKResponse (std::string response) const |
Gets the element internal response in VTK format for Paraview display. More... | |
double | ComputeEnergy () |
Computes the element energy for a given deformation. More... | |
Eigen::MatrixXd | ComputeMassMatrix () |
Compute the lumped/consistent mass matrix of the element. More... | |
Eigen::MatrixXd | ComputeStiffnessMatrix () |
Compute the stiffness matrix of the element using gauss-integration. More... | |
Eigen::MatrixXd | ComputeDampingMatrix () |
Compute the damping matrix of the element using gauss-integration. More... | |
Eigen::MatrixXd | ComputePMLMatrix () |
Compute the PML history matrix using gauss-integration. More... | |
Eigen::VectorXd | ComputeInternalForces () |
Compute the internal (elastic) forces acting on the element. More... | |
Eigen::VectorXd | ComputeInternalDynamicForces () |
Compute the elastic, inertial, and viscous forces acting on the element. More... | |
Eigen::VectorXd | ComputeSurfaceForces (const std::shared_ptr< Load > &surface, unsigned int face) |
Compute the surface forces acting on the element. More... | |
Eigen::VectorXd | ComputeBodyForces (const std::shared_ptr< Load > &body, unsigned int k=0) |
Compute the body forces acting on the element. More... | |
Eigen::VectorXd | ComputeDomainReductionForces (const std::shared_ptr< Load > &drm, unsigned int k) |
Compute the domain reduction forces acting on the element. More... | |
Public Member Functions inherited from Element | |
Element (std::string name, const std::vector< unsigned int > nodes, unsigned int ndofs, unsigned int VTKcell, unsigned int SVLcell) | |
Creates an Element in a finite element Mesh. More... | |
virtual | ~Element ()=0 |
Destroys this Element object. More... | |
std::string | GetName () const |
Gets the Element Name. More... | |
unsigned int | GetVTKCellType () const |
Gets the Element VTK cell type. More... | |
unsigned int | GetVTKGroupType () const |
Gets the Element VTK group type. More... | |
unsigned int | GetNumberOfNodes () const |
Returns the number of nodes in element. More... | |
unsigned int | GetNumberOfDegreeOfFreedom () const |
Returns total number of degree of freedom in the element. More... | |
const std::vector< unsigned int > & | GetNodes () const |
Returns the Node Connectivity Indexes. More... | |
bool | HasFixedNode (const std::vector< std::shared_ptr< Node > > &nodes) const |
Returns if the element has fixed nodes. More... | |
Protected Member Functions | |
Eigen::VectorXd | TransformTensorToVector (const Eigen::MatrixXd &vector) const |
Transform tensor components into vector. More... | |
Eigen::MatrixXd | TransformVectorToTensor (const Eigen::VectorXd &vector) const |
Transform vector components into tensor. More... | |
Private Member Functions | |
Eigen::VectorXd | ComputeStrain (const double ri, const double si, const Eigen::MatrixXd &Jij) const |
Update strain in the element. More... | |
Eigen::VectorXd | ComputeStrainRate (const double ri, const double si, const Eigen::MatrixXd &Bij) const |
Update strain rate in the element. More... | |
Eigen::MatrixXd | ComputeJacobianMatrix (const double ri, const double si) const |
Computes the jacobian of the transformation. More... | |
Eigen::MatrixXd | ComputeDeformationGradientMatrix (const double ri, const double si, const Eigen::MatrixXd &Jij) const |
Computes the deformation gradient. More... | |
Eigen::MatrixXd | ComputeSecondPiolaKirchhoffMatrix (const Eigen::VectorXd &Stress) const |
Compute the Second Piola-Kirchhoff Stress Tensor. More... | |
Eigen::MatrixXd | ComputeShapeFunctionMatrix (const double ri, const double si) const |
Evaluates the shape function matrix at a given Gauss point. More... | |
Eigen::MatrixXd | ComputeLinearStrainDisplacementMatrix (const double ri, const double si, const Eigen::MatrixXd &Jij) const |
Evaluates the strain-displacement matrix at a given Gauss point. More... | |
Eigen::MatrixXd | ComputeNonLinearStrainDisplacementMatrix (const double ri, const double si, const Eigen::MatrixXd &Jij) const |
Evaluates the strain-displacement matrix at a given Gauss point. More... | |
Eigen::MatrixXd | ComputeLinearizedStrainDisplacementMatrix (const double ri, const double si, const Eigen::MatrixXd &Jij) const |
Evaluates the linearized (small strain) strain-displacement matrix at a given Gauss point. More... | |
Eigen::MatrixXd | ComputeInitialStiffnessMatrix () const |
Compute the initial stiffness matrix of the element using gauss-integration. More... | |
Private Attributes | |
double | t |
Element thickness. More... | |
std::shared_ptr< Damping > | theDamping |
The Damping model. More... | |
std::vector< std::shared_ptr< Node > > | theNodes |
The Element's Nodes. More... | |
std::vector< std::unique_ptr< Material > > | theMaterial |
The Element's material. More... | |
std::unique_ptr< QuadratureRule > | QuadraturePoints |
Coordinate of Gauss points. More... | |
Class for creating a 2D finite kinematic four-node quadrilateral element in a mesh.
kin2DQuad4::kin2DQuad4 | ( | const std::vector< unsigned int > | nodes, |
std::unique_ptr< Material > & | material, | ||
const double | th, | ||
const std::string | quadrature = "GAUSS" , |
||
const unsigned int | nGauss = 4 |
||
) |
Creates a kin2DQuad4 in a finite element Mesh.
nodes | The Node connectivity array of this Element. |
material | Pointer to the Material that this Element is made out of. |
th | The thickness of the lin2DQuad4 Element. |
quadrature | The integration rule to be employed. |
nGauss | Number of Gauss points for Element integration. |
kin2DQuad4::~kin2DQuad4 | ( | ) |
Destroys this kin2DQuad4 object.
|
virtual |
|
virtual |
Compute the body forces acting on the element.
body | Pointer to the Load object that contains this information. |
k | The time step at which the body load is evaluated. |
Implements Element.
|
virtual |
Compute the damping matrix of the element using gauss-integration.
Implements Element.
|
private |
Computes the deformation gradient.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
Jij | The Jacobian matrix evaluated at (ri,si). |
|
virtual |
Compute the domain reduction forces acting on the element.
drm | Pointer to the DRM Load object that contains this information. |
k | The time step at which the body load is evaluated. |
Implements Element.
|
virtual |
Computes the element energy for a given deformation.
Implements Element.
|
private |
Compute the initial stiffness matrix of the element using gauss-integration.
|
virtual |
|
virtual |
Compute the internal (elastic) forces acting on the element.
Implements Element.
|
private |
Computes the jacobian of the transformation.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
|
private |
Evaluates the linearized (small strain) strain-displacement matrix at a given Gauss point.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
Jij | The Jacobian matrix evaluated at (ri,si). |
|
private |
Evaluates the strain-displacement matrix at a given Gauss point.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
Jij | The Jacobian matrix evaluated at (ri,si). |
|
virtual |
Compute the lumped/consistent mass matrix of the element.
Implements Element.
|
private |
Evaluates the strain-displacement matrix at a given Gauss point.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
Jij | The Jacobian matrix evaluated at (ri,si). |
|
virtual |
|
private |
Compute the Second Piola-Kirchhoff Stress Tensor.
Stress | The stress vector to be mapped to current configuration. |
|
private |
Evaluates the shape function matrix at a given Gauss point.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
|
virtual |
Compute the stiffness matrix of the element using gauss-integration.
Implements Element.
|
private |
Update strain in the element.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
Jij | The Jacobian matrix evaluated at (ri,si). |
|
private |
Update strain rate in the element.
ri | The i-th Gauss coordinate in the r-axis. |
si | The i-th Gauss coordinate in the s-axis. |
Bij | The strain-displacement matrix. |
|
virtual |
Compute the surface forces acting on the element.
surface | Pointer to the Load object that contains this information. |
k | The time step at which the surface load is evaluated. |
Implements Element.
|
virtual |
Gets the material/section (generalised) strain.
Implements Element.
|
virtual |
Gets the material strain in section at coordinate (x3,x2).
x3 | Local coordinate along the x3-axis. |
x2 | Local coordinate along the x2-axis. |
Implements Element.
|
virtual |
Gets the material/section (generalised) strain-rate.
Implements Element.
|
virtual |
Gets the material/section (generalised) stress.
Implements Element.
|
virtual |
Gets the material stress in section at coordinate (x3,x2).
x3 | Local coordinate along the x3-axis. |
x2 | Local coordinate along the x2-axis. |
Implements Element.
|
virtual |
|
virtual |
|
virtual |
Brings the material/section state to its initial state in this element.
Implements Element.
|
virtual |
|
virtual |
|
virtual |
|
protected |
Transform tensor components into vector.
vector | The tensor to be transformed into a vector. |
|
protected |
Transform vector components into tensor.
vector | The vector to be transformed into a tensor. |
|
virtual |
|
private |
Coordinate of Gauss points.
|
private |
Element thickness.