21 explicit SRA2Integrator(std::shared_ptr<typename base_type::sde_problem_type> problem,
22 std::shared_ptr<typename base_type::wiener_process_type> wiener =
nullptr)
23 :
base_type(problem, wiener, create_sra2_tableau()) {}
25 std::string name()
const override {
26 return "SRA2 (Strong Order 1.5 for Additive Noise)";
33 tableau.order =
static_cast<typename base_type::value_type
>(1.5);
36 tableau.A0 = {{0, 0, 0}, {
static_cast<typename base_type::value_type
>(0.5), 0, 0},
37 {0,
static_cast<typename base_type::value_type
>(0.75), 0}};
38 tableau.c0 = {0,
static_cast<typename base_type::value_type
>(0.5),
39 static_cast<typename base_type::value_type
>(0.75)};
40 tableau.alpha = {
static_cast<typename base_type::value_type
>(2.0/9.0),
41 static_cast<typename base_type::value_type
>(1.0/3.0),
42 static_cast<typename base_type::value_type
>(4.0/9.0)};
45 tableau.B0 = {{0, 0, 0}, {
static_cast<typename base_type::value_type
>(0.5), 0, 0},
46 {0,
static_cast<typename base_type::value_type
>(0.75), 0}};
47 tableau.c1 = {0,
static_cast<typename base_type::value_type
>(0.5),
48 static_cast<typename base_type::value_type
>(0.75)};
49 tableau.beta1 = {
static_cast<typename base_type::value_type
>(2.0/9.0),
50 static_cast<typename base_type::value_type
>(1.0/3.0),
51 static_cast<typename base_type::value_type
>(4.0/9.0)};
52 tableau.beta2 = {0,
static_cast<typename base_type::value_type
>(0.5),
53 static_cast<typename base_type::value_type
>(0.5)};