34 #ifndef _CENTRALDIFFERENCE_HPP_ 35 #define _CENTRALDIFFERENCE_HPP_ 37 #include <Eigen/Dense> 38 #include <Eigen/SparseCore> 63 CentralDifference(std::shared_ptr<Mesh> &mesh,
double TimeStep,
double mtol=1E-12,
double ktol=1E-12,
double ftol=1E-12);
79 void SetAlgorithm(std::shared_ptr<Algorithm> &algorithm);
105 bool ComputeNewStep(std::shared_ptr<Mesh> &mesh,
unsigned int k=0);
137 void ComputeEffectiveForce(std::shared_ptr<Mesh> &mesh, Eigen::VectorXd &Feff,
double factor=1.00,
unsigned int k=0);
169 Eigen::SparseMatrix<double>
M;
172 Eigen::SparseMatrix<double>
C;
175 Eigen::SparseMatrix<double>
K;
std::unique_ptr< Assembler > theAssembler
The finite element assembler.
Definition: CentralDifference.hpp:181
Eigen::VectorXd Ubar
Total previous pml history values.
Definition: CentralDifference.hpp:163
std::weak_ptr< Algorithm > theAlgorithm
The static solver algorithm.
Definition: CentralDifference.hpp:178
Eigen::VectorXd ComputeReactionForce(std::shared_ptr< Mesh > &mesh, unsigned int k=0)
Gets the reaction force ins this step.
CentralDifference(std::shared_ptr< Mesh > &mesh, double TimeStep, double mtol=1E-12, double ktol=1E-12, double ftol=1E-12)
Creates a CentralDifference object.
const Eigen::VectorXd & GetVelocities()
Gets the velocity vector.
Eigen::VectorXd U
Total current displacements.
Definition: CentralDifference.hpp:151
void ComputeEffectiveStiffness(std::shared_ptr< Mesh > &mesh, Eigen::SparseMatrix< double > &Keff)
Gets the effective stiffness associated to the CentralDifference integrator.
This file contains the "Load Combination" class declarations, which defines how the loads are going t...
~CentralDifference()
Destroys this CentralDifference object.
Class for integrating the equation of motion using an explicit central difference method...
Definition: CentralDifference.hpp:53
void SetAlgorithm(std::shared_ptr< Algorithm > &algorithm)
Sets the integrator for this algorithm.
This file contains the "Assembler object" declarations, this object computes the system mass...
Class for defining how the static/dynamic analysis between two steps is going to be performed...
Definition: Integrator.hpp:53
Eigen::VectorXd Up
Total previous displacements (t - dt).
Definition: CentralDifference.hpp:160
Eigen::SparseMatrix< double > C
Model damping matrix.
Definition: CentralDifference.hpp:172
void Initialize(std::shared_ptr< Mesh > &mesh)
Initialize model matrices.
This file contains the "Integrator object" declarations, and defines how the dynamic solution between...
void ComputeEffectiveForce(std::shared_ptr< Mesh > &mesh, Eigen::VectorXd &Feff, double factor=1.00, unsigned int k=0)
Gets the effective force associated to the CentralDifference integrator.
This file contains the "Mesh object" declarations, which stores nodes, materials, elements...
bool ComputeNewStep(std::shared_ptr< Mesh > &mesh, unsigned int k=0)
Computes a new time step.
double dt
Integration time step.
Definition: CentralDifference.hpp:148
void ComputeSupportMotionVector(std::shared_ptr< Mesh > &mesh, Eigen::VectorXd &Feff, double factor=1.00, unsigned int k=0)
Gets the incremental nodal support motion vector.
Eigen::VectorXd Fbar
The previous stage Force vector.
Definition: CentralDifference.hpp:166
void SetLoadCombination(std::shared_ptr< LoadCombo > &combo)
Set the load combination.
Eigen::SparseMatrix< double > K
Model stiffness matrix.
Definition: CentralDifference.hpp:175
const Eigen::VectorXd & GetDisplacements()
Gets the displacement vector.
Eigen::VectorXd A
Total current acceleration.
Definition: CentralDifference.hpp:157
const Eigen::VectorXd & GetPMLHistoryVector()
Gets the PML history vector.
Eigen::SparseMatrix< double > M
Model mass matrix.
Definition: CentralDifference.hpp:169
const Eigen::VectorXd & GetAccelerations()
Gets the acceleration vector.
Eigen::VectorXd ComputeProgressiveForce(std::shared_ptr< Mesh > &mesh, unsigned int k=0)
Gets the external force vector from previous analysis.
Eigen::VectorXd V
Total current velocity.
Definition: CentralDifference.hpp:154