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

Class for integrating the equation of motion using the implicit Newmark method. More...

#include <NewmarkBeta.hpp>

Inheritance diagram for NewmarkBeta:
Collaboration diagram for NewmarkBeta:

Public Member Functions

 NewmarkBeta (std::shared_ptr< Mesh > &mesh, double TimeStep, double mtol=1E-12, double ktol=1E-12, double ftol=1E-12)
 Creates a NewmarkBeta object. More...
 
 ~NewmarkBeta ()
 Destroys this NewmarkBeta 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 NewmarkBeta integrator. More...
 
void ComputeEffectiveStiffness (std::shared_ptr< Mesh > &mesh, Eigen::SparseMatrix< double > &Keff)
 Gets the effective stiffness associated to the NewmarkBeta 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 dt
 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 > M
 Model mass matrix. More...
 
Eigen::SparseMatrix< double > C
 Model damping matrix. 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 integrating the equation of motion using the implicit Newmark method.

See also
Algorithm.hpp Integrator.hpp Analysis.hpp

Constructor & Destructor Documentation

◆ NewmarkBeta()

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

Creates a NewmarkBeta 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 NewmarkBeta.
See also
Assembler::MassTolerance, Assembler::StiffnessTolerance, Assembler::ForceTolerance.

◆ ~NewmarkBeta()

NewmarkBeta::~NewmarkBeta ( )

Destroys this NewmarkBeta object.

Member Function Documentation

◆ ComputeEffectiveForce()

void NewmarkBeta::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 NewmarkBeta 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 NewmarkBeta.
See also
Assembler::ComputeInternalForceVector(), Assembler::ComputeExternalForceVector().

Implements Integrator.

◆ ComputeEffectiveStiffness()

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

Gets the effective stiffness associated to the NewmarkBeta 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 NewmarkBeta.
See also
Assembler::ComputeMassMatrix(), Assembler::ComputeStiffnessMatrix(), Assembler::ComputeDampingMatrix().

Implements Integrator.

◆ ComputeNewStep()

bool NewmarkBeta::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 NewmarkBeta::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 NewmarkBeta::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 NewmarkBeta::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.
FeffThe effective force vector to incorporate support motion forces.
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& NewmarkBeta::GetAccelerations ( )
virtual

Gets the acceleration vector.

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

Implements Integrator.

◆ GetDisplacements()

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

Gets the displacement vector.

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

Implements Integrator.

◆ GetPMLHistoryVector()

const Eigen::VectorXd& NewmarkBeta::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& NewmarkBeta::GetVelocities ( )
virtual

Gets the velocity vector.

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

Implements Integrator.

◆ Initialize()

void NewmarkBeta::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 NewmarkBeta::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 NewmarkBeta::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 NewmarkBeta::A
protected

Total previous acceleration.

◆ C

Eigen::SparseMatrix<double> NewmarkBeta::C
protected

Model damping matrix.

◆ dt

double NewmarkBeta::dt
protected

Integration time step.

◆ Fbar

Eigen::VectorXd NewmarkBeta::Fbar
protected

The previous stage Force vector.

◆ K

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

Model stiffness matrix.

◆ M

Eigen::SparseMatrix<double> NewmarkBeta::M
protected

Model mass matrix.

◆ theAlgorithm

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

The static solver algorithm.

◆ theAssembler

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

The finite element assembler.

◆ U

Eigen::VectorXd NewmarkBeta::U
protected

Total initial/previous displacements.

◆ Ubar

Eigen::VectorXd NewmarkBeta::Ubar
protected

Total previous pml history values.

◆ V

Eigen::VectorXd NewmarkBeta::V
protected

Total initial/previous velocity.