 libgenua Basic Geometry, Numerical Algorithms and Interfaces
SdirkBase< N > Class Template Reference

Detailed Description

template<int N> class SdirkBase< N >

Base class for SDIRK integrators.

Implementations of various singly-diagonal implicit Runge-Kutta (SDIRK) schemes inherit from this class which implements the implicit Runge-Kutta stepping for 2nd order dynamic systems.

Favorable properties of SDIRK integrators are:

• the size of the integrated system is n, not 2*n as in state-space methods;
• only a linear solve per stage is needed, no factorization;
• all methods implemented here are L-stable;
• high frequencies are damped more than using Newmark-alpha.

Note: Do not use this class directly; only the child classes initialize the integration coefficients.

SecondOrderSystem, OwrenSimonsen22, OwrenSimonsen23, OwrenSimonsen34

#include <sdirk.h>

Collaboration diagram for SdirkBase< N >:
[legend]

Public Member Functions

Real step (SecondOrderSystem &sys, Real tn, Real h, const Vector &un, const Vector &vn, Vector &us, Vector &vs)
perform a single step from tn to tn + h, return error estimate if possible

Real richardson (SecondOrderSystem &sys, Real tn, Real h, const Vector &un, const Vector &vn, Vector &us, Vector &vs)
perform Richardson extrapolation, return error estimate

Protected Member Functions

void initCoefficients ()
compute the derived coefficients

void initOwrenSimonsen ()
compute the b, c for stiffly accurate rules

void allocate (size_t n)
allocate workspace

Real nextStep (Real h, Real errorEst) const
determine new stepsize from error estimate and tolerance

Protected Attributes

SMatrix< N, N > m_a
coefficients multiplying y'

SVector< N > m_b
result coefficients

SVector< N > m_bhat
coefficients for error estimator (m_estage > 0)

SVector< N > m_c
timestep coefficient

Vector m_k [N]
workspace

Real m_gamma
diagonal coefficient gamma

Real m_hReduction = 0.25
stepsize reduction limit

Real m_hExpansion = 4.00
stepsize expansion limit

Real m_order = 2.0