2
3
4
5
6
7
8
9
10
11
12
13
14
15
17
18
28#ifndef UTILS_SPHERICALHARMONICSUTILS_H
29#define UTILS_SPHERICALHARMONICSUTILS_H
33#include "core/CartesianVector.hpp"
34#include "core/macros.h"
38 const int NMAX_SPHERICAL_HARMONICS = 18;
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
66 double cbar[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1],
67 double sbar[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1],
68 long int &n,
long int &m);
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
93 double sbar[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1],
94 double c[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1],
95 double s[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1]);
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
119 double theta,
double Re,
double K,
120 double C[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1],
121 double S[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1],
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 int legendre(
long N,
long M,
double x,
142 double P[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1],
143 double sd_p[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1]);
146
147
148
149
150
151
152
153
154
155
159
160
161
162
163
164
165
166
167
168
#define CartesianVector3D
Definition macros.h:54
Class to propagate CR3BP dynamics in characteristic units.
Definition ConfigurationWriter.cpp:18
int sphericalHarmonics(long N, long M, double r, double phi, double theta, double Re, double K, double C[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], double S[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], clockwerk::CartesianVector< double, 3 > &grad_v)
Computes the gradient of the gravitational potential using spherical harmonics.
Definition sphericalharmonicsutils.cpp:76
double fact(long n)
Computes the factorial of a non-negative integer.
Definition sphericalharmonicsutils.cpp:183
double oddfact(long n)
Computes the double factorial of an odd integer.
Definition sphericalharmonicsutils.cpp:192
void neumannNormalization(double cbar[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], double sbar[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], double c[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], double s[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1])
Applies Neumann normalization to spherical harmonic coefficients.
Definition sphericalharmonicsutils.cpp:58
int readGravityCoefficientsFile(const std::string &filename, double cbar[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], double sbar[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], long int &n, long int &m)
Reads gravitational coefficients from a file and stores them in provided matrices.
Definition sphericalharmonicsutils.cpp:37
int legendre(long N, long M, double x, double P[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1], double sd_p[NMAX_SPHERICAL_HARMONICS+1][NMAX_SPHERICAL_HARMONICS+1])
Calculates the associated Legendre functions and their derivatives.
Definition sphericalharmonicsutils.cpp:139