2
3
4
5
6
7
8
9
10
11
12
13
14
15
17
18
19
20
21
22#ifndef CR3BPUTILS_CR3BP_DYNAMICS_HPP
23#define CR3BPUTILS_CR3BP_DYNAMICS_HPP
25#include "utils/Rates.hpp"
26#include "core/CartesianVector.hpp"
27#include "core/Matrix.hpp"
30
31
32
33
34
35
37 const unsigned int NUM_CR3BP_STATES = 6;
41 CR3BPDynamics() :
Rates() {}
48 const std::array<
double, NUM_CR3BP_STATES> &state,
49 std::array<
double, NUM_CR3BP_STATES> &out_rates) {
51 double one_minus_mu_star = 1.0 -
mu_star;
52 double x_plus_mu_star = state[0] +
mu_star;
53 double x_plus_one_minus_mu_star = state[0] - 1.0 +
mu_star;
54 double y_squared = state[1]*state[1];
55 double z_squared = state[2]*state[2];
56 double r1 = std::sqrt(x_plus_mu_star*x_plus_mu_star + y_squared + z_squared);
57 double r2 = std::sqrt(x_plus_one_minus_mu_star*x_plus_one_minus_mu_star + y_squared + z_squared);
58 double one_over_r1_cubed = 1.0/(r1*r1*r1);
59 double one_over_r2_cubed = 1.0/(r2*r2*r2);
62 out_rates[0] = state[3];
63 out_rates[1] = state[4];
64 out_rates[2] = state[5];
65 out_rates[3] = -one_minus_mu_star*x_plus_mu_star*one_over_r1_cubed -
mu_star*(state[0] - one_minus_mu_star)*one_over_r2_cubed + 2*state[4] + state[0];
66 out_rates[4] = -one_minus_mu_star*state[1]*one_over_r1_cubed -
mu_star*state[1]*one_over_r2_cubed - 2.0*state[3] + state[1];
67 out_rates[5] = -one_minus_mu_star*state[2]*one_over_r1_cubed -
mu_star*state[2]*one_over_r2_cubed;
Definition CR3BPDynamics.hpp:39
int calculateRates(double time, const std::array< double, NUM_CR3BP_STATES > &state, std::array< double, NUM_CR3BP_STATES > &out_rates)
Function to calculate frame rates of change for a frame.
Definition CR3BPDynamics.hpp:47
double mu_star
This is the ratio of second body mass to total system mass.
Definition CR3BPDynamics.hpp:73
#define NO_ERROR
Definition clockwerkerrors.h:31
Class to propagate CR3BP dynamics in characteristic units.
Definition ConfigurationWriter.cpp:18