Rheolef
7.1
an efficient C++ finite element environment
runge_kutta_semiimplicit.icc
The semi-implicit Runge-Kutta scheme – coefficients
namespace
rk
{
// see WanShuZha-2015 page 212
constexpr
size_t
pmax
= 3;
const
Float
_g2
= 1 - 1/sqrt(
Float
(2));
const
Float
_d2
= 1 - 1/(2*
_g2
);
const
Float
_g3
= 0.435866521508459;
const
Float
_b31
= -3*(
_g3
*
_g3
)/2 + 4*
_g3
- 1./4;
const
Float
_b32
= 3*(
_g3
*
_g3
)/2 - 5*
_g3
+ 5./4;
const
Float
_a31
= -0.356;
const
Float
_a32
= (1/
Float
(3) - 2*(
_g3
*
_g3
) - 2*
_b32
*
_a31
*
_g3
)/(
_g3
*(1-
_g3
));
Float
alpha
[][
pmax
+1][
pmax
+1]
= { {},
{ {0},
{0, 1} },
{ {0},
{0,
_g2
},
{0, 1-
_g2
,
_g2
} },
{ {0},
{0,
_g3
},
{0, (1-
_g3
)/2,
_g3
},
{0,
_b31
,
_b32
,
_g3
} } };
Float
tilde_alpha
[][
pmax
+1][
pmax
+1]
= { {},
{ {},
{1} },
{ {},
{
_g2
},
{
_d2
, 1-
_d2
} },
{ {},
{
_g3
},
{(1+
_g3
)/2 -
_a31
,
_a31
},
{0, 1-
_a32
,
_a32
} } };
Float
beta
[][
pmax
+1]
= { {},
{0, 1},
{0, 1-
_g2
,
_g2
},
{0,
_b31
,
_b32
,
_g3
} };
Float
tilde_beta
[][
pmax
+1]
= { {},
{1},
{
_d2
, 1-
_d2
, 0},
{0,
_b31
,
_b32
,
_g3
} };
Float
gamma
[][
pmax
+1]
= { {},
{0, 1},
{0,
_g2
, 1},
{0,
_g3
, (1+
_g3
)/2, 1} };
}
// namespace rk
rk::pmax
constexpr size_t pmax
Definition:
runge_kutta_semiimplicit.icc:27
rk::_g2
const Float _g2
Definition:
runge_kutta_semiimplicit.icc:28
rk::_a32
const Float _a32
Definition:
runge_kutta_semiimplicit.icc:34
rk::_b31
const Float _b31
Definition:
runge_kutta_semiimplicit.icc:31
rk
Definition:
runge_kutta_semiimplicit.icc:25
rk::tilde_alpha
Float tilde_alpha[][pmax+1][pmax+1]
Definition:
runge_kutta_semiimplicit.icc:48
rk::gamma
Float gamma[][pmax+1]
Definition:
runge_kutta_semiimplicit.icc:70
rk::_g3
const Float _g3
Definition:
runge_kutta_semiimplicit.icc:30
rk::_d2
const Float _d2
Definition:
runge_kutta_semiimplicit.icc:29
rk::_b32
const Float _b32
Definition:
runge_kutta_semiimplicit.icc:32
Float
see the Float page for the full documentation
rk::tilde_beta
Float tilde_beta[][pmax+1]
Definition:
runge_kutta_semiimplicit.icc:65
rk::alpha
Float alpha[][pmax+1][pmax+1]
Definition:
runge_kutta_semiimplicit.icc:36
rk::_a31
const Float _a31
Definition:
runge_kutta_semiimplicit.icc:33
rk::beta
Float beta[][pmax+1]
Definition:
runge_kutta_semiimplicit.icc:60