b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2000::solver::NewmarkIntegrator< T > Class Template Reference

One-step (and direct) method, either implicit or explicit. Scheme parameters determine stability and convergence. Default values are: (aka trapezoidal rule, 2nd order accurate) beta == 0.25 (beta deternubes stability), gamma == 0.5 (gamma determines accuracy) More...

#include "b2newmark.H"

Inheritance diagram for b2000::solver::NewmarkIntegrator< T >:
Collaboration diagram for b2000::solver::NewmarkIntegrator< T >:

Public Member Functions

virtual void SetAttribute (const Case &case__) override
 
virtual void InitializeTimeIntegrator (const b2linalg::Matrix< T, b2linalg::Mrectangle > &initial_dof, const double dt) override
 Initialize the time integrator with the model to act on the initial condition, the initial point in time and the case definition for the current computation.
 
virtual void InitializeFieldsForThisTimeStep (b2linalg::Matrix< T, b2linalg::Mrectangle > &dof, const b2linalg::Matrix< T, b2linalg::Mrectangle > &dU) override
 Update velocities and (possibly) also accelerations after each time step. This method will also save the values from the previous time step ("current" t_n+1) as the new values for the following time step ("new" t_n). When this method is called the displacements dof[0] are already up to date, but velocities dof[1] and accelerations dof[2] are not.
 
virtual void UpdateFields (b2linalg::Matrix< T, b2linalg::Mrectangle > &dof, const b2linalg::Matrix< T, b2linalg::Mrectangle > &dU) override
 Update velocities and (possibly) also accelerations after each global iteration.
 
virtual TimeIntegrator< T >::EffectiveSymmetricSystem GetEffectiveElementSystem (const b2linalg::Matrix< T, b2linalg::Mpacked > &k, const b2linalg::Matrix< T, b2linalg::Mpacked > &d, const b2linalg::Matrix< T, b2linalg::Mpacked > &m, const b2linalg::Matrix< T, b2linalg::Mrectangle_constref > &dof, const b2linalg::Index &index) const override
 Calculates the element effective system based on the concrete time integrator.
 
virtual TimeIntegrator< T >::EffectiveUnsymmetricSystem GetEffectiveElementSystem (const b2linalg::Matrix< T, b2linalg::Mrectangle > &k, const b2linalg::Matrix< T, b2linalg::Mrectangle > &d, const b2linalg::Matrix< T, b2linalg::Mrectangle > &m, const b2linalg::Matrix< T, b2linalg::Mrectangle_constref > &dof, const b2linalg::Index &index) const override
 Calculates the element effective system based on the concrete time integrator.
 
- Public Member Functions inherited from b2000::Object
virtual const std::string & get_object_name () const
 
virtual ~Object ()
 

Additional Inherited Members

- Static Public Attributes inherited from b2000::Object
static ObjectType type
 
- Protected Attributes inherited from b2000::solver::TimeIntegrator< T >
b2linalg::Matrix< T, b2linalg::Mrectangle > V_ {}
 Displacements.
 
b2linalg::Matrix< T, b2linalg::Mrectangle > Z_ {}
 Velocities.
 
b2linalg::Matrix< T, b2linalg::Mrectangle > dot_Z_ {}
 Accelerations.
 
int current_stage_number_ {1}
 For multi-stage methods such as Runge-Kutta methods ...
 
int max_stage_number_ {1}
 ... (do not confuse this with b2000 stages)
 
double dt {1}
 Step size.
 

Detailed Description

template<typename T>
class b2000::solver::NewmarkIntegrator< T >

One-step (and direct) method, either implicit or explicit. Scheme parameters determine stability and convergence. Default values are: (aka trapezoidal rule, 2nd order accurate) beta == 0.25 (beta deternubes stability), gamma == 0.5 (gamma determines accuracy)

Template Parameters
Tscalar template type parameter determines accuracy.

Member Function Documentation

◆ GetEffectiveElementSystem() [1/2]

template<typename T >
TimeIntegrator< T >::EffectiveSymmetricSystem b2000::solver::NewmarkIntegrator< T >::GetEffectiveElementSystem ( const b2linalg::Matrix< T, b2linalg::Mpacked > &  k,
const b2linalg::Matrix< T, b2linalg::Mpacked > &  d,
const b2linalg::Matrix< T, b2linalg::Mpacked > &  m,
const b2linalg::Matrix< T, b2linalg::Mrectangle_constref > &  dof,
const b2linalg::Index &  index 
) const
inlineoverridevirtual

Calculates the element effective system based on the concrete time integrator.

Parameters
[in]kThe symmetric element stiffness matrix.
[in]dThe symmetric element damping matrix.
[in]mThe symmetric element mass matrix.
[in]dofCurrent global displacements, velocities and accelerations.
[in]indexLocal to global node mapping.
Returns
The effective element system with the symmetric matrix.

Implements b2000::solver::TimeIntegrator< T >.

◆ GetEffectiveElementSystem() [2/2]

template<typename T >
TimeIntegrator< T >::EffectiveUnsymmetricSystem b2000::solver::NewmarkIntegrator< T >::GetEffectiveElementSystem ( const b2linalg::Matrix< T, b2linalg::Mrectangle > &  k,
const b2linalg::Matrix< T, b2linalg::Mrectangle > &  d,
const b2linalg::Matrix< T, b2linalg::Mrectangle > &  m,
const b2linalg::Matrix< T, b2linalg::Mrectangle_constref > &  dof,
const b2linalg::Index &  index 
) const
inlineoverridevirtual

Calculates the element effective system based on the concrete time integrator.

Parameters
[in]kThe unsymmetric element stiffness matrix.
[in]dThe unsymmetric element damping matrix.
[in]mThe unsymmetric element mass matrix.
[in]dofCurrent global displacements, velocities and accelerations.
[in]indexLocal to global node mapping.
Returns
The effective element system with the unsymmetric matrix.

Implements b2000::solver::TimeIntegrator< T >.

◆ InitializeFieldsForThisTimeStep()

template<typename T >
void b2000::solver::NewmarkIntegrator< T >::InitializeFieldsForThisTimeStep ( b2linalg::Matrix< T, b2linalg::Mrectangle > &  dof,
const b2linalg::Matrix< T, b2linalg::Mrectangle > &  dU 
)
inlineoverridevirtual

Update velocities and (possibly) also accelerations after each time step. This method will also save the values from the previous time step ("current" t_n+1) as the new values for the following time step ("new" t_n). When this method is called the displacements dof[0] are already up to date, but velocities dof[1] and accelerations dof[2] are not.

Parameters
[in,out]dofFields containing displacements, velocities and accelerations.
[in]dUWorking array containing increments of current iteration.

Implements b2000::solver::TimeIntegrator< T >.

◆ InitializeTimeIntegrator()

template<typename T >
void b2000::solver::NewmarkIntegrator< T >::InitializeTimeIntegrator ( const b2linalg::Matrix< T, b2linalg::Mrectangle > &  initial_dof,
const double  dt 
)
inlineoverridevirtual

Initialize the time integrator with the model to act on the initial condition, the initial point in time and the case definition for the current computation.

Parameters
[in,out]initial_dofThe initial values of the DOF's.
[in]dtThe initial step size for the first time step.

Implements b2000::solver::TimeIntegrator< T >.

◆ SetAttribute()

template<typename T >
virtual void b2000::solver::NewmarkIntegrator< T >::SetAttribute ( const Case b2case)
inlineoverridevirtual

Set the attributes of the time stepping methods according to the parameters set in the given case definition.

Parameters
[in]b2caseThe current case.

Implements b2000::solver::TimeIntegrator< T >.

◆ UpdateFields()

template<typename T >
void b2000::solver::NewmarkIntegrator< T >::UpdateFields ( b2linalg::Matrix< T, b2linalg::Mrectangle > &  dof,
const b2linalg::Matrix< T, b2linalg::Mrectangle > &  dU 
)
inlineoverridevirtual

Update velocities and (possibly) also accelerations after each global iteration.

Parameters
[in,out]dofFields containing displacements, velocities and accelerations.
[in]dUWorking array containing increments of current iteration.

Implements b2000::solver::TimeIntegrator< T >.


The documentation for this class was generated from the following file: