32 #ifndef _KIN3DHEXA8_HPP_ 33 #define _KIN3DHEXA8_HPP_ 38 #include <Eigen/Dense> 64 kin3DHexa8(
const std::vector<unsigned int> nodes, std::unique_ptr<Material> &material,
const std::string quadrature=
"GAUSS",
const unsigned int nGauss=8);
89 void SetDomain(std::map<
unsigned int, std::shared_ptr<Node> > &nodes);
94 void SetDamping(
const std::shared_ptr<Damping> &damping);
120 Eigen::MatrixXd
GetStrainAt(
double x3,
double x2)
const;
127 Eigen::MatrixXd
GetStressAt(
double x3,
double x2)
const;
189 Eigen::VectorXd
ComputeBodyForces(
const std::shared_ptr<Load> &body,
unsigned int k=0);
229 Eigen::VectorXd
ComputeStrain(
const double ri,
const double si,
const double ti,
const Eigen::MatrixXd &Jij)
const;
237 Eigen::VectorXd
ComputeStrainRate(
const double ri,
const double si,
const double ti,
const Eigen::MatrixXd &Bij)
const;
void InitialState()
Brings the material/section state to its initial state in this element.
void ReverseState()
Reverse the material/section states to previous converged state in this element.
void SetDomain(std::map< unsigned int, std::shared_ptr< Node > > &nodes)
Sets the finite element dependance among objects.
Eigen::MatrixXd ComputeStiffnessMatrix()
Compute the stiffness matrix of the element using gauss-integration.
This file contains the "Load" class declarations, which defines a load that can act in a node or an e...
Eigen::MatrixXd ComputeShapeFunctionMatrix(const double ri, const double si, const double ti) const
Evaluates the shape function matrix at a given Gauss point.
Eigen::VectorXd ComputeInternalDynamicForces()
Compute the elastic, inertial, and viscous forces acting on the element.
Eigen::VectorXd TransformTensorToVector(const Eigen::MatrixXd &vector) const
Transform tensor components into vector.
Eigen::MatrixXd ComputeMassMatrix()
Compute the lumped/consistent mass matrix of the element.
Eigen::VectorXd ComputeDomainReductionForces(const std::shared_ptr< Load > &drm, unsigned int k)
Compute the domain reduction forces acting on the element.
Eigen::MatrixXd ComputeInitialStiffnessMatrix() const
Compute the initial stiffness matrix of the element using gauss-integration.
This file contains the abstract "Material object" declarations, which computes the strain...
Eigen::VectorXd ComputeSurfaceForces(const std::shared_ptr< Load > &surface, unsigned int face)
Compute the surface forces acting on the element.
Eigen::VectorXd ComputeBodyForces(const std::shared_ptr< Load > &body, unsigned int k=0)
Compute the body forces acting on the element.
~kin3DHexa8()
Destroys this kin3DHexa8 object.
std::vector< unsigned int > GetTotalDegreeOfFreedom() const
Gets the list of total-degree of freedom of this Element.
Eigen::MatrixXd ComputeDeformationGradientMatrix(const double ri, const double si, const double ti, const Eigen::MatrixXd &Jij) const
Computes the jacobian of the transformation.
void CommitState()
Save the material states in the element.
double ComputeEnergy()
Computes the element energy for a given deformation.
Eigen::MatrixXd GetStrain() const
Gets the material/section (generalised) strain.
Eigen::MatrixXd GetStrainRate() const
Gets the material/section (generalised) strain-rate.
std::vector< std::unique_ptr< Material > > theMaterial
The Element's material.
Definition: kin3DHexa8.hpp:218
std::shared_ptr< Damping > theDamping
The Damping model.
Definition: kin3DHexa8.hpp:212
void SetDamping(const std::shared_ptr< Damping > &damping)
Sets the damping model.
Eigen::MatrixXd ComputeNonLinearStrainDisplacementMatrix(const double ri, const double si, const double ti, const Eigen::MatrixXd &Jij) const
Evaluates the strain-displacement (geometric) matrix at a given Gauss point.
Eigen::VectorXd GetVTKResponse(std::string response) const
Gets the element internal response in VTK format for Paraview display.
Eigen::VectorXd ComputeStrain(const double ri, const double si, const double ti, const Eigen::MatrixXd &Jij) const
Update strain in the element.
Eigen::MatrixXd GetStressAt(double x3, double x2) const
Gets the material stress in section at coordinate (x3,x2).
void UpdateState()
Update the material states in the element.
Eigen::VectorXd ComputeInternalForces()
Compute the internal (elastic) forces acting on the element.
Eigen::MatrixXd ComputeJacobianMatrix(const double ri, const double si, const double ti) const
Computes the jacobian of the transformation.
Class for creating a 3D finite kinematic eight-node hexahedron element in a mesh. ...
Definition: kin3DHexa8.hpp:54
Eigen::MatrixXd GetStrainAt(double x3, double x2) const
Gets the material strain in section at coordinate (x3,x2).
Virtual class for creating an element in a mesh.
Definition: Element.hpp:51
Eigen::MatrixXd ComputeLinearizedStrainDisplacementMatrix(const double ri, const double si, const double ti, const Eigen::MatrixXd &Jij) const
Evaluates the linearized (small strain) strain-displacement matrix at a given Gauss point...
Eigen::MatrixXd TransformVectorToTensor(const Eigen::VectorXd &vector) const
Transform vector components into tensor.
Eigen::VectorXd ComputeStrainRate(const double ri, const double si, const double ti, const Eigen::MatrixXd &Bij) const
Update strain rate in the element.
Eigen::MatrixXd ComputePMLMatrix()
Compute the PML history matrix using gauss-integration.
std::unique_ptr< QuadratureRule > QuadraturePoints
Coordinate of Gauss points.
Definition: kin3DHexa8.hpp:221
This file contains the "Node object" declarations, which is stores the coordinates, state variables, degrees-of-freedom, and total-degree of freedom lists of a node in a finite element mesh.
This file contains the "Damping object" declarations to update damping matrix to account for Caughey-...
kin3DHexa8(const std::vector< unsigned int > nodes, std::unique_ptr< Material > &material, const std::string quadrature="GAUSS", const unsigned int nGauss=8)
Creates a kin3DHexa8 in a finite element Mesh.
Eigen::MatrixXd ComputeSecondPiolaKirchhoffMatrix(const Eigen::VectorXd &Stress) const
Compute the Second Piola-Kirchhoff Stress Tensor.
Eigen::MatrixXd ComputeLinearStrainDisplacementMatrix(const double ri, const double si, const double ti, const Eigen::MatrixXd &Jij) const
Evaluates the strain-displacement (material) matrix at a given Gauss point.
std::vector< std::shared_ptr< Node > > theNodes
The Element's Nodes.
Definition: kin3DHexa8.hpp:215
This file contains the abstract "Quadrature Rule" declarations to integrate quantities in the iso-par...
Eigen::MatrixXd GetStress() const
Gets the material/section (generalised) stress.
Eigen::MatrixXd ComputeDampingMatrix()
Compute the damping matrix of the element using gauss-integration.
This file contains the "Element" object declarations, which defines an element in a finite element me...