WSF
WsfPrinceDormand45OrbitalIntegrator.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2020 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFPRINCEDORMAND45ORBITALINTEGRATOR_HPP
13#define WSFPRINCEDORMAND45ORBITALINTEGRATOR_HPP
14
16
17/*
18
19This integrator implements the RK5(4)7S scheme described in
20
21A family of embedded Runge-Kutta formulae, J.R. Dormand and P.J. Prince, Journal of Computational
22and Applied Mathematics, Vol. 6, no 1, 1980.
23
24*/
25
26class WsfPrinceDormand45OrbitalIntegrator : public WsfRungeKuttaOrbitalIntegrator<5, 7, WsfPrinceDormand45OrbitalIntegrator>
27{
28public:
32
34 {
36 }
37
38 const char* GetScriptClassName() const override { return "WsfPrinceDormand45Integrator"; }
39
40 std::string GetIntegratorType() const override { return cTYPE; }
41
42 static constexpr const char* cTYPE = "prince_dormand_45";
43
44 static constexpr double cCVALUES[cSTEPCOUNT] = {0.0, 2.0 / 9.0, 1.0 / 3.0, 5.0 / 9.0, 2.0 / 3.0, 1.0, 1.0};
45
46 static constexpr double cBVALUES[cSTEPCOUNT] = {19.0 / 200.0, 0.0, 3.0 / 5.0, -243.0 / 400.0, 33.0 / 40.0, 7.0 / 80.0, 0.0};
47
48 static constexpr double cERRORVALUES[cSTEPCOUNT] = {cBVALUES[0] - 431.0 / 5000.0,
49 cBVALUES[1] - 0.0,
50 cBVALUES[2] - 333.0 / 500.0,
51 cBVALUES[3] + 7857.0 / 10000.0,
52 cBVALUES[4] - 957.0 / 1000.0,
53 cBVALUES[5] - 193.0 / 2000.0,
54 cBVALUES[6] + 1.0 / 50.0};
55
56 static constexpr double cAVALUES[cSTEPCOUNT][cSTEPCOUNT - 1] = {
57 {0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
58 {2.0 / 9.0, 0.0, 0.0, 0.0, 0.0, 0.0},
59 {1.0 / 12.0, 1.0 / 4.0, 0.0, 0.0, 0.0, 0.0},
60 {55.0 / 324.0, -25.0 / 108.0, 50.0 / 81.0, 0.0, 0.0, 0.0},
61 {83.0 / 330.0, -13.0 / 22.0, 61.0 / 66.0, 9.0 / 110.0, 0.0, 0.0},
62 {-19.0 / 28.0, 9.0 / 4.0, 1.0 / 7.0, -27.0 / 7.0, 22.0 / 7.0, 0.0},
63 {19.0 / 200.0, 0.0, 3.0 / 5.0, -243.0 / 400.0, 33.0 / 40.0, 7.0 / 80.0}};
64};
65
66#endif // WSFPRINCEDORMAND45ORBITALINTEGRATOR_HPP
WsfPrinceDormand45OrbitalIntegrator(const WsfPrinceDormand45OrbitalIntegrator &aOther)=default
static constexpr double cAVALUES[cSTEPCOUNT][cSTEPCOUNT - 1]
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:56
WsfPrinceDormand45OrbitalIntegrator * Clone() const override
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:33
static constexpr double cBVALUES[cSTEPCOUNT]
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:46
~WsfPrinceDormand45OrbitalIntegrator() override=default
static constexpr const char * cTYPE
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:42
std::string GetIntegratorType() const override
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:40
static constexpr double cERRORVALUES[cSTEPCOUNT]
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:48
const char * GetScriptClassName() const override
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:38
static constexpr double cCVALUES[cSTEPCOUNT]
Definition WsfPrinceDormand45OrbitalIntegrator.hpp:44
static constexpr unsigned int cSTEPCOUNT
Definition WsfRungeKuttaOrbitalIntegrator.hpp:38
Copyrights Multiple, All Rights Reserved