10 #if !defined(GEOGRAPHICLIB_SPHERICALHARMONIC2_HPP)
11 #define GEOGRAPHICLIB_SPHERICALHARMONIC2_HPP 1
18 namespace GeographicLib {
103 const std::vector<real>& S,
105 const std::vector<real>& C1,
106 const std::vector<real>& S1,
108 const std::vector<real>& C2,
109 const std::vector<real>& S2,
111 real a,
unsigned norm =
FULL)
114 if (!(N1 <= N && N2 <= N))
160 const std::vector<real>& S,
161 int N,
int nmx,
int mmx,
162 const std::vector<real>& C1,
163 const std::vector<real>& S1,
164 int N1,
int nmx1,
int mmx1,
165 const std::vector<real>& C2,
166 const std::vector<real>& S2,
167 int N2,
int nmx2,
int mmx2,
168 real a,
unsigned norm =
FULL)
171 if (!(nmx1 <= nmx && nmx2 <= nmx))
172 throw GeographicErr(
"nmx1 and nmx2 cannot be larger that nmx");
173 if (!(mmx1 <= mmx && mmx2 <= mmx))
174 throw GeographicErr(
"mmx1 and mmx2 cannot be larger that mmx");
202 real f[] = {1, tau1, tau2};
207 v = SphericalEngine::Value<false, SphericalEngine::FULL, 3>
208 (_c, f, x, y, z, _a, dummy, dummy, dummy);
211 v = SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 3>
212 (_c, f, x, y, z, _a, dummy, dummy, dummy);
238 real& gradx, real& grady, real& gradz)
const {
239 real f[] = {1, tau1, tau2};
243 v = SphericalEngine::Value<true, SphericalEngine::FULL, 3>
244 (_c, f, x, y, z, _a, gradx, grady, gradz);
247 v = SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 3>
248 (_c, f, x, y, z, _a, gradx, grady, gradz);
280 real f[] = {1, tau1, tau2};
284 SphericalEngine::Circle<true, SphericalEngine::FULL, 3>
286 SphericalEngine::Circle<false, SphericalEngine::FULL, 3>
292 SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 3>
294 SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 3>
319 #endif // GEOGRAPHICLIB_SPHERICALHARMONIC2_HPP