Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
QuasiStatic Class Reference

Class for defining an static integrator that neglects any damping and inertial forces present in the analysis. More...

#include <QuasiStatic.hpp>

Inheritance diagram for QuasiStatic:
Collaboration diagram for QuasiStatic:

Public Member Functions

 QuasiStatic (std::shared_ptr< Mesh > &mesh, double mtol=1E-12, double ktol=1E-12, double ftol=1E-12)
 Creates a QuasiStatic object. More...
 
 ~QuasiStatic ()
 Destroys this QuasiStatic object. More...
 
void Initialize (std::shared_ptr< Mesh > &mesh)
 Initialize model matrices. More...
 
void SetLoadCombination (std::shared_ptr< LoadCombo > &combo)
 Set the load combination. More...
 
void SetAlgorithm (std::shared_ptr< Algorithm > &algorithm)
 Sets the integrator for this algorithm. More...
 
const Eigen::VectorXd & GetDisplacements ()
 Gets the displacement vector. More...
 
const Eigen::VectorXd & GetVelocities ()
 Gets the velocity vector. More...
 
const Eigen::VectorXd & GetAccelerations ()
 Gets the acceleration vector. More...
 
const Eigen::VectorXd & GetPMLHistoryVector ()
 Gets the PML history vector. More...
 
bool ComputeNewStep (std::shared_ptr< Mesh > &mesh, unsigned int k=0)
 Computes a new time step. More...
 
Eigen::VectorXd ComputeReactionForce (std::shared_ptr< Mesh > &mesh, unsigned int k=0)
 Gets the reaction force ins this step. More...
 
Eigen::VectorXd ComputeProgressiveForce (std::shared_ptr< Mesh > &mesh, unsigned int k=0)
 Gets the external force vector from previous analysis. More...
 
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. More...
 
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 QuasiStatic integrator. More...
 
void ComputeEffectiveStiffness (std::shared_ptr< Mesh > &mesh, Eigen::SparseMatrix< double > &Keff)
 Gets the effective stiffness associated to the QuasiStatic integrator. More...
 
- Public Member Functions inherited from Integrator
 Integrator (const std::shared_ptr< Mesh > &mesh)
 Creates a Integrator object. More...
 
virtual ~Integrator ()=0
 Destroys this Integrator object. More...
 

Protected Attributes

double TimeStep
 Integration time step. More...
 
Eigen::VectorXd U
 Total initial/previous displacements. More...
 
Eigen::VectorXd V
 Total initial/previous velocity. More...
 
Eigen::VectorXd A
 Total previous acceleration. More...
 
Eigen::VectorXd Ubar
 Total previous pml history values. More...
 
Eigen::VectorXd Fbar
 The previous stage Force vector. More...
 
Eigen::SparseMatrix< double > K
 Model stiffness matrix. More...
 
std::weak_ptr< AlgorithmtheAlgorithm
 The static solver algorithm. More...
 
std::unique_ptr< AssemblertheAssembler
 The finite element assembler. More...
 
- Protected Attributes inherited from Integrator
Eigen::VectorXd SupportMotion
 Nodal support motion vector. More...
 
Eigen::SparseMatrix< double > Total2FreeMatrix
 Operator that enforced restrain/constraint. More...
 

Detailed Description

Class for defining an static integrator that neglects any damping and inertial forces present in the analysis.

See also
Algorithm.hpp Integrator.hpp Analysis.hpp

Constructor & Destructor Documentation

◆ QuasiStatic()

QuasiStatic::QuasiStatic ( std::shared_ptr< Mesh > &  mesh,
double  mtol = 1E-12,
double  ktol = 1E-12,
double  ftol = 1E-12 
)

Creates a QuasiStatic object.

Parameters
meshPointer to the Mesh container to extract Node and Element.
mtolThreshold for which a mass value will be neglected.
ktolThreshold for which a stiffness value will be neglected.
ftolThreshold for which a force value will be neglected.
Note
More details can be found at QuasiStatic.
See also
Assembler::MassTolerance, Assembler::StiffnessTolerance, Assembler::ForceTolerance.

◆ ~QuasiStatic()

QuasiStatic::~QuasiStatic ( )

Destroys this QuasiStatic object.

Member Function Documentation

◆ ComputeEffectiveForce()

void QuasiStatic::ComputeEffectiveForce ( std::shared_ptr< Mesh > &  mesh,
Eigen::VectorXd &  Feff,
double  factor = 1.00,
unsigned int  k = 0 
)
virtual

Gets the effective force associated to the QuasiStatic integrator.

Parameters
meshPointer to the Mesh object where Node and Element are stored.
FeffVector that stores the effective force.
factorThe incremental load factor.
kThe time step number to be solved.
Note
More details can be found at QuasiStatic.
See also
Assembler::ComputeInternalForceVector(), Assembler::ComputeExternalForceVector().

Implements Integrator.

◆ ComputeEffectiveStiffness()

void QuasiStatic::ComputeEffectiveStiffness ( std::shared_ptr< Mesh > &  mesh,
Eigen::SparseMatrix< double > &  Keff 
)
virtual

Gets the effective stiffness associated to the QuasiStatic integrator.

Parameters
meshPointer to the Mesh object where Node and Element are stored.
KeffMatrix that stores the effective stiffness.
Note
More details can be found at QuasiStatic.
See also
Assembler::ComputeMassMatrix(), Assembler::ComputeStiffnessMatrix(), Assembler::ComputeDampingMatrix().

Implements Integrator.

◆ ComputeNewStep()

bool QuasiStatic::ComputeNewStep ( std::shared_ptr< Mesh > &  mesh,
unsigned int  k = 0 
)
virtual

Computes a new time step.

Parameters
meshThe finite element Mesh object.
kThe time step number to be solved.
Returns
Whether or not the Integrator was successfully applied.

Implements Integrator.

◆ ComputeProgressiveForce()

Eigen::VectorXd QuasiStatic::ComputeProgressiveForce ( std::shared_ptr< Mesh > &  mesh,
unsigned int  k = 0 
)
virtual

Gets the external force vector from previous analysis.

Parameters
meshPointer to the Mesh object where Node and Element are stored.
kThe time step number to be solved.
See also
Assembler::ComputeExternalForceVector().

Implements Integrator.

◆ ComputeReactionForce()

Eigen::VectorXd QuasiStatic::ComputeReactionForce ( std::shared_ptr< Mesh > &  mesh,
unsigned int  k = 0 
)
virtual

Gets the reaction force ins this step.

Parameters
meshPointer to the Mesh object where Node are stored.
kThe time step number to be solved.
Returns
Vector with the reaction forces and external forces.
Note
More details can be found at Reaction.
See also
Node::GetReaction(), Assembler::ComputeDynamicInternalForceVector().

Implements Integrator.

◆ ComputeSupportMotionVector()

void QuasiStatic::ComputeSupportMotionVector ( std::shared_ptr< Mesh > &  mesh,
Eigen::VectorXd &  Feff,
double  factor = 1.00,
unsigned int  k = 0 
)
virtual

Gets the incremental nodal support motion vector.

Parameters
meshPointer to the Mesh object where Node are stored.
factorThe incremental load factor.
kThe time step number to be solved.
Returns
Vector with the incremental support motion displacement.
See also
Node::GetSupportMotion(), Assembler::ComputeSupportMotionIncrement().

Implements Integrator.

◆ GetAccelerations()

const Eigen::VectorXd& QuasiStatic::GetAccelerations ( )
virtual

Gets the acceleration vector.

Returns
Vector with the acceleration states at current time step.
Note
More details can be found at QuasiStatic.

Implements Integrator.

◆ GetDisplacements()

const Eigen::VectorXd& QuasiStatic::GetDisplacements ( )
virtual

Gets the displacement vector.

Returns
Vector with the displacement states at current time step.
Note
More details can be found at QuasiStatic.

Implements Integrator.

◆ GetPMLHistoryVector()

const Eigen::VectorXd& QuasiStatic::GetPMLHistoryVector ( )
virtual

Gets the PML history vector.

Returns
Vector with the displacement states at current time step.
Note
More details can be found at ExtendedNewmarkBeta.

Implements Integrator.

◆ GetVelocities()

const Eigen::VectorXd& QuasiStatic::GetVelocities ( )
virtual

Gets the velocity vector.

Returns
Vector with the velocity states at current time step.
Note
More details can be found at QuasiStatic.

Implements Integrator.

◆ Initialize()

void QuasiStatic::Initialize ( std::shared_ptr< Mesh > &  mesh)
virtual

Initialize model matrices.

Parameters
meshPointer to the Mesh container to extract Node and Element.
Note
This function computes matrices that are constant through the analysis.

Implements Integrator.

◆ SetAlgorithm()

void QuasiStatic::SetAlgorithm ( std::shared_ptr< Algorithm > &  algorithm)
virtual

Sets the integrator for this algorithm.

Parameters
algorithmPointer to the Algorithm to obtain the effective stiffness and force.

Implements Integrator.

◆ SetLoadCombination()

void QuasiStatic::SetLoadCombination ( std::shared_ptr< LoadCombo > &  combo)
virtual

Set the load combination.

Parameters
comboPointer to the LoadCombo to be simulated.

Implements Integrator.

Member Data Documentation

◆ A

Eigen::VectorXd QuasiStatic::A
protected

Total previous acceleration.

◆ Fbar

Eigen::VectorXd QuasiStatic::Fbar
protected

The previous stage Force vector.

◆ K

Eigen::SparseMatrix<double> QuasiStatic::K
protected

Model stiffness matrix.

◆ theAlgorithm

std::weak_ptr<Algorithm> QuasiStatic::theAlgorithm
protected

The static solver algorithm.

◆ theAssembler

std::unique_ptr<Assembler> QuasiStatic::theAssembler
protected

The finite element assembler.

◆ TimeStep

double QuasiStatic::TimeStep
protected

Integration time step.

◆ U

Eigen::VectorXd QuasiStatic::U
protected

Total initial/previous displacements.

◆ Ubar

Eigen::VectorXd QuasiStatic::Ubar
protected

Total previous pml history values.

◆ V

Eigen::VectorXd QuasiStatic::V
protected

Total initial/previous velocity.