Chombo + EB + MF  3.2
Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
ARK4DenseOutput< Soln, Rhs, IMEXOp > Class Template Reference

#include <ARK4DenseOutput.H>

Public Member Functions

 ARK4DenseOutput ()
 
void define (const Soln &a_state, Real a_dt, bool a_denseOutput=false)
 
void advance (Real a_time, Soln &a_state)
 
void denseOutputCoefs (Vector< Rhs *> &a_interpCoefs)
 
void resetDt (Real a_dt)
 
void start0end1 (bool a_start0, bool a_end1)
 
IMEXOp & getImExOp ()
 
bool isDefined () const
 
bool hasDenseOutput () const
 

Static Public Attributes

static const int s_nStages = 6
 Runge-Kutta coefficients. More...
 
static const Real s_aIdiag = 0.25
 
static const Real s_c [s_nStages] = { 0.0, 0.5, 0.332, 0.62, 0.85, 1.0 }
 
static const Real s_aE [s_nStages][s_nStages]
 
static const Real s_aI [s_nStages][s_nStages]
 
static const Real s_b [s_nStages]
 
static const int s_nDenseCoefs = 3
 
static const Real s_bstar [s_nDenseCoefs][s_nStages]
 

Protected Attributes

bool m_isDefined
 
bool m_denseOutput
 
bool m_hasDenseOutput
 
Real m_dt
 
Real m_time
 
Soln m_phi [s_nStages]
 
Rhs m_rhs
 
Rhs m_denseCoefs [s_nDenseCoefs]
 
Rhs m_kE
 
Rhs m_kI
 
IMEXOp m_opImEx
 

Detailed Description

template<class Soln, class Rhs, class IMEXOp>
class ARK4DenseOutput< Soln, Rhs, IMEXOp >

This is a more flexible, reduced memory version 4th-order additive Runge-Kutta algorithm, that also includes dense output coefficients This templated class encapsulates the fourth-order additive Runge-Kutta method "ARK4(3)6L[2]SA" by Kennedy and Carpenter 2003 Appl. Numer. Math. 44: 139-181

See also section 3 of Zhang, Johansen, and Colella, SIAM J. Sci. Comput. 34, pp. B179-B201.

Constructor & Destructor Documentation

◆ ARK4DenseOutput()

template<class Soln , class Rhs , class IMEXOp >
ARK4DenseOutput< Soln, Rhs, IMEXOp >::ARK4DenseOutput ( )
inline

Member Function Documentation

◆ define()

template<class Soln , class Rhs , class IMEXOp >
void ARK4DenseOutput< Soln, Rhs, IMEXOp >::define ( const Soln &  a_state,
Real  a_dt,
bool  a_denseOutput = false 
)

◆ advance()

template<class Soln , class Rhs , class IMEXOp >
void ARK4DenseOutput< Soln, Rhs, IMEXOp >::advance ( Real  a_time,
Soln &  a_state 
)

◆ denseOutputCoefs()

template<class Soln , class Rhs , class IMEXOp >
void ARK4DenseOutput< Soln, Rhs, IMEXOp >::denseOutputCoefs ( Vector< Rhs *> &  a_interpCoefs)

◆ resetDt()

template<class Soln , class Rhs , class IMEXOp >
void ARK4DenseOutput< Soln, Rhs, IMEXOp >::resetDt ( Real  a_dt)

◆ start0end1()

template<class Soln , class Rhs , class IMEXOp >
void ARK4DenseOutput< Soln, Rhs, IMEXOp >::start0end1 ( bool  a_start0,
bool  a_end1 
)

◆ getImExOp()

template<class Soln , class Rhs , class IMEXOp >
IMEXOp & ARK4DenseOutput< Soln, Rhs, IMEXOp >::getImExOp ( )

◆ isDefined()

template<class Soln , class Rhs , class IMEXOp >
bool ARK4DenseOutput< Soln, Rhs, IMEXOp >::isDefined ( ) const
inline

◆ hasDenseOutput()

template<class Soln , class Rhs , class IMEXOp >
bool ARK4DenseOutput< Soln, Rhs, IMEXOp >::hasDenseOutput ( ) const
inline

Member Data Documentation

◆ s_nStages

template<class Soln , class Rhs , class IMEXOp >
const int ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_nStages = 6
static

◆ s_aIdiag

template<class Soln , class Rhs , class IMEXOp >
const Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_aIdiag = 0.25
static

◆ s_c

template<class Soln , class Rhs , class IMEXOp >
const Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_c = { 0.0, 0.5, 0.332, 0.62, 0.85, 1.0 }
static

◆ s_aE

template<class Soln , class Rhs , class IMEXOp >
const Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_aE
static
Initial value:
= {
{0., 0., 0., 0., 0., 0.},
{0.5, 0., 0., 0., 0., 0.},
{0.221776, 0.110224, 0., 0., 0., 0.},
{-0.04884659515311857, -0.17772065232640102, 0.8465672474795197, 0., 0., 0.},
{-0.15541685842491548, -0.3567050098221991, 1.0587258798684427, 0.30339598837867193, 0., 0.},
{ 0.2014243506726763, 0.008742057842904185, 0.15993995707168115, 0.4038290605220775, 0.22606457389066084, 0.}
}

Referenced by ARK4DenseOutput< Soln, Rhs, IMEXOp >::advance(), and ARK4DenseOutput< Soln, Rhs, IMEXOp >::denseOutputCoefs().

◆ s_aI

template<class Soln , class Rhs , class IMEXOp >
const Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_aI
static
Initial value:
= {
{0., 0., 0., 0., 0., 0.},
{0.25, 0.25, 0., 0., 0., 0.},
{0.137776, -0.055776, 0.25, 0., 0., 0.},
{0.14463686602698217, -0.22393190761334475, 0.4492950415863626, 0.25, 0., 0.},
{0.09825878328356477, -0.5915442428196704, 0.8101210538282996, 0.283164405707806, 0.25, 0.},
{0.15791629516167136, 0., 0.18675894052400077, 0.6805652953093346, -0.27524053099500667, 0.25}
}

Referenced by ARK4DenseOutput< Soln, Rhs, IMEXOp >::advance(), and ARK4DenseOutput< Soln, Rhs, IMEXOp >::denseOutputCoefs().

◆ s_b

template<class Soln , class Rhs , class IMEXOp >
const Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_b
static
Initial value:
=
{0.15791629516167136, 0., 0.18675894052400077, 0.6805652953093346, -0.27524053099500667, 0.25}

Referenced by ARK4DenseOutput< Soln, Rhs, IMEXOp >::advance(), and ARK4DenseOutput< Soln, Rhs, IMEXOp >::denseOutputCoefs().

◆ s_nDenseCoefs

template<class Soln , class Rhs , class IMEXOp >
const int ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_nDenseCoefs = 3
static

◆ s_bstar

template<class Soln , class Rhs , class IMEXOp >
const Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::s_bstar
static
Initial value:
= {
{0.961753400252887, 0., 0.787405595186356, -2.74544192086633, 3.70351728061223, -1.70723435518514},
{-1.76418754019038, 0., -0.774504669155511, 9.64023584441292, -12.544886411271, 5.44334277620397},
{0.960350435099165, 0., 0.173858014493155, -6.21422862823726, 8.56612859966376, -3.48610842101883}
}

Referenced by ARK4DenseOutput< Soln, Rhs, IMEXOp >::advance(), and ARK4DenseOutput< Soln, Rhs, IMEXOp >::denseOutputCoefs().

◆ m_isDefined

template<class Soln , class Rhs , class IMEXOp >
bool ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_isDefined
protected

◆ m_denseOutput

template<class Soln , class Rhs , class IMEXOp >
bool ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_denseOutput
protected

◆ m_hasDenseOutput

template<class Soln , class Rhs , class IMEXOp >
bool ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_hasDenseOutput
protected

◆ m_dt

template<class Soln , class Rhs , class IMEXOp >
Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_dt
protected

◆ m_time

template<class Soln , class Rhs , class IMEXOp >
Real ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_time
protected

◆ m_phi

template<class Soln , class Rhs , class IMEXOp >
Soln ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_phi[s_nStages]
protected

◆ m_rhs

template<class Soln , class Rhs , class IMEXOp >
Rhs ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_rhs
protected

◆ m_denseCoefs

template<class Soln , class Rhs , class IMEXOp >
Rhs ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_denseCoefs[s_nDenseCoefs]
protected

◆ m_kE

template<class Soln , class Rhs , class IMEXOp >
Rhs ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_kE
protected

◆ m_kI

template<class Soln , class Rhs , class IMEXOp >
Rhs ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_kI
protected

◆ m_opImEx

template<class Soln , class Rhs , class IMEXOp >
IMEXOp ARK4DenseOutput< Soln, Rhs, IMEXOp >::m_opImEx
protected

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