diff --git a/AMDiS/src/CreatorMap.cc b/AMDiS/src/CreatorMap.cc index 1a0b10e503ae883f5a81439dac2651570d952840..8a8541fe71bc2a36eb51ec59a6ee813cd01c21be 100644 --- a/AMDiS/src/CreatorMap.cc +++ b/AMDiS/src/CreatorMap.cc @@ -146,6 +146,7 @@ namespace AMDiS { addCreator("rowda3", new Rowda3::Creator); addCreator("ros3p", new Ros3p::Creator); addCreator("rodasp", new Rodasp::Creator); + addCreator("rosi2pw", new ROSI2PW::Creator); } diff --git a/AMDiS/src/time/RosenbrockMethod.cc b/AMDiS/src/time/RosenbrockMethod.cc index 45f9345c4f43159e2a2623fa4d8050c626536182..a46cb914103901c1d9c638215c408175a28ebecd 100644 --- a/AMDiS/src/time/RosenbrockMethod.cc +++ b/AMDiS/src/time/RosenbrockMethod.cc @@ -174,4 +174,38 @@ namespace AMDiS { m2[3] = -1.062004044111401e+00; m2[4] = 1.0; } + + + ROSI2PW::ROSI2PW() + { + order = 3; + stages = 4; + gamma = 4.3586652150845e-01; + + createData(); + + a[1][0] = 8.7173304301691801e-01; + a[2][0] = -7.9937335839852708e-01; + a[2][1] = -7.9937335839852708e-01; + a[3][0] = 7.0849664917601007e-01; + a[3][1] = 3.1746327955312481e-01; + a[3][2] = -2.5959928729134892e-02; + + c[1][0] = -8.7173304301691801e-01; + c[2][0] = 3.0647867418622479; + c[2][1] = 3.0647867418622479; + c[3][0] = -1.0424832458800504e-01; + c[3][1] = -3.1746327955312481e-01; + c[3][2] = -1.4154917367328144e-02; + + m1[0] = 6.0424832458800504e-01; + m1[1] = -3.6210810811598324e-32; + m1[2] = -4.0114846096464034e-02; + m1[3] = 4.3586652150845900e-01; + + m2[0] = 4.4315753191688778e-01; + m2[1] = 4.4315753191688778e-01; + m2[2] = 0.0; + m2[3] = 1.1368493616622447e-01; + } } diff --git a/AMDiS/src/time/RosenbrockMethod.h b/AMDiS/src/time/RosenbrockMethod.h index e719ab7726649e67698e2ed746611cb7d889d550..1fb68f01a2ade56508fe954590fdf7f0ff846bf9 100644 --- a/AMDiS/src/time/RosenbrockMethod.h +++ b/AMDiS/src/time/RosenbrockMethod.h @@ -184,6 +184,28 @@ namespace AMDiS { ~Rodasp() {} }; + + class ROSI2PW : public RosenbrockMethod + { + public: + class Creator : public RosenbrockMethodCreator + { + public: + Creator() : RosenbrockMethodCreator() {} + + ~Creator() {} + + RosenbrockMethod* create() + { + return new Rodasp(); + } + }; + + ROSI2PW(); + + ~ROSI2PW() {} + }; + } #endif // AMDIS_ROSENBROCKMETHOD_H