GeographicLib: GeographicLib::SphericalEngine::coeff Class Reference

GeographicLib 2.7

Loading...
Searching...
No Matches
GeographicLib::SphericalEngine::coeff Class Reference

Package up coefficients for SphericalEngine. More...

`#include <GeographicLib/SphericalEngine.hpp>`

## Public Member Functions
| coeff ()
| coeff (const std::vector< real > &C, const std::vector< real > &S, int N, int nmx, int mmx)
| coeff (const std::vector< real > &C, const std::vector< real > &S, int N)
int | N () const
int | nmx () const
int | mmx () const
int | index (int n, int m) const
Math::real | Cv (int k) const
Math::real | Sv (int k) const
Math::real | Cv (int k, int n, int m, real f) const
Math::real | Sv (int k, int n, int m, real f) const

## Static Public Member Functions
static int | Csize (int N, int M)
static int | Ssize (int N, int M)
static void | readcoeffs (std::istream &stream, int &N, int &M, std::vector< real > &C, std::vector< real > &S, bool truncate=false)

## Detailed Description

Package up coefficients for SphericalEngine.

This packages up the C, S coefficients and information about how the coefficients are stored into a single structure. This allows a vector of type SphericalEngine::coeff to be passed to SphericalEngine::Value. This class also includes functions to aid indexing into C and S.

The storage layout of the coefficients is documented in SphericalHarmonic and SphericalHarmonic::SphericalHarmonic.

Definition at line 99 of file SphericalEngine.hpp.

## Constructor & Destructor Documentation

## ◆ coeff() [1/3]

GeographicLib::SphericalEngine::coeff::coeff | ( |  | ) |
| inline

A default constructor

Definition at line 108 of file SphericalEngine.hpp.

## ◆ coeff() [2/3]

GeographicLib::SphericalEngine::coeff::coeff | ( | const std::vector< real > & | C,
|  | const std::vector< real > & | S,
|  | int | N,
|  | int | nmx,
|  | int | mmx )
| inline

The general constructor.

Parameters

  [in] | C | a vector of coefficients for the cosine terms.
  [in] | S | a vector of coefficients for the sine terms.
  [in] | N | the degree giving storage layout for C and S.
  [in] | nmx | the maximum degree to be used.
  [in] | mmx | the maximum order to be used.

Exceptions

  GeographicErr | if N, nmx, and mmx do not satisfy N ≥ nmx ≥ mmx ≥ −1.
  GeographicErr | if C or S is not big enough to hold the coefficients.
  std::bad_alloc | if the memory for the square root table can't be allocated.

Definition at line 124 of file SphericalEngine.hpp.

References index(), mmx(), N(), nmx(), and GeographicLib::SphericalEngine::RootTable().

## ◆ coeff() [3/3]

GeographicLib::SphericalEngine::coeff::coeff | ( | const std::vector< real > & | C,
|  | const std::vector< real > & | S,
|  | int | N )
| inline

The constructor for full coefficient vectors.

Parameters

  [in] | C | a vector of coefficients for the cosine terms.
  [in] | S | a vector of coefficients for the sine terms.
  [in] | N | the maximum degree and order.

Exceptions

  GeographicErr | if N does not satisfy N ≥ −1.
  GeographicErr | if C or S is not big enough to hold the coefficients.
  std::bad_alloc | if the memory for the square root table can't be allocated.

Definition at line 154 of file SphericalEngine.hpp.

References index(), N(), and GeographicLib::SphericalEngine::RootTable().

## Member Function Documentation

## ◆ N()

int GeographicLib::SphericalEngine::coeff::N | ( |  | ) | const
| inline

Returns
  N the degree giving storage layout for C and S.

Definition at line 173 of file SphericalEngine.hpp.

Referenced by coeff(), coeff(), Csize(), readcoeffs(), and Ssize().

## ◆ nmx()

int GeographicLib::SphericalEngine::coeff::nmx | ( |  | ) | const
| inline

Returns
  nmx the maximum degree to be used.

Definition at line 177 of file SphericalEngine.hpp.

Referenced by GeographicLib::SphericalEngine::Circle(), coeff(), and GeographicLib::SphericalEngine::Value().

## ◆ mmx()

int GeographicLib::SphericalEngine::coeff::mmx | ( |  | ) | const
| inline

Returns
  mmx the maximum order to be used.

Definition at line 181 of file SphericalEngine.hpp.

Referenced by GeographicLib::SphericalEngine::Circle(), coeff(), and GeographicLib::SphericalEngine::Value().

## ◆ index()

int GeographicLib::SphericalEngine::coeff::index | ( | int | n,
|  | int | m ) const
| inline

The one-dimensional index into C and S.

Parameters

  [in] | n | the degree.
  [in] | m | the order.

Returns
  the one-dimensional index.

Definition at line 189 of file SphericalEngine.hpp.

Referenced by coeff(), and coeff().

## ◆ Cv() [1/2]

Math::real GeographicLib::SphericalEngine::coeff::Cv | ( | int | k | ) | const
| inline

An element of C.

Parameters

  [in] | k | the one-dimensional index.

Returns
  the value of the C coefficient.

Definition at line 197 of file SphericalEngine.hpp.

Referenced by GeographicLib::SphericalEngine::Circle(), and GeographicLib::SphericalEngine::Value().

## ◆ Sv() [1/2]

Math::real GeographicLib::SphericalEngine::coeff::Sv | ( | int | k | ) | const
| inline

An element of S.

Parameters

  [in] | k | the one-dimensional index.

Returns
  the value of the S coefficient.

Definition at line 204 of file SphericalEngine.hpp.

Referenced by GeographicLib::SphericalEngine::Circle(), and GeographicLib::SphericalEngine::Value().

## ◆ Cv() [2/2]

Math::real GeographicLib::SphericalEngine::coeff::Cv | ( | int | k,
|  | int | n,
|  | int | m,
|  | real | f ) const
| inline

An element of C with checking.

Parameters

  [in] | k | the one-dimensional index.
  [in] | n | the requested degree.
  [in] | m | the requested order.
  [in] | f | a multiplier.

Returns
  the value of the C coefficient multiplied by f in n and m are in range else 0.

Definition at line 215 of file SphericalEngine.hpp.

## ◆ Sv() [2/2]

Math::real GeographicLib::SphericalEngine::coeff::Sv | ( | int | k,
|  | int | n,
|  | int | m,
|  | real | f ) const
| inline

An element of S with checking.

Parameters

  [in] | k | the one-dimensional index.
  [in] | n | the requested degree.
  [in] | m | the requested order.
  [in] | f | a multiplier.

Returns
  the value of the S coefficient multiplied by f in n and m are in range else 0.

Definition at line 227 of file SphericalEngine.hpp.

## ◆ Csize()

int GeographicLib::SphericalEngine::coeff::Csize | ( | int | N,
|  | int | M )
| inlinestatic

The size of the coefficient vector for the cosine terms.

Parameters

  [in] | N | the maximum degree.
  [in] | M | the maximum order.

Returns
  the size of the vector of cosine terms as stored in column major order.

Definition at line 238 of file SphericalEngine.hpp.

References N().

Referenced by readcoeffs(), and Ssize().

## ◆ Ssize()

int GeographicLib::SphericalEngine::coeff::Ssize | ( | int | N,
|  | int | M )
| inlinestatic

The size of the coefficient vector for the sine terms.

Parameters

  [in] | N | the maximum degree.
  [in] | M | the maximum order.

Returns
  the size of the vector of cosine terms as stored in column major order.

Definition at line 249 of file SphericalEngine.hpp.

References Csize(), and N().

Referenced by readcoeffs().

## ◆ readcoeffs()

void GeographicLib::SphericalEngine::coeff::readcoeffs | ( | std::istream & | stream,
|  | int & | N,
|  | int & | M,
|  | std::vector< real > & | C,
|  | std::vector< real > & | S,
|  | bool | truncate = false )
| static

Load coefficients from a binary stream.

Parameters

  [in] | stream | the input stream.
  [in,out] | N | The maximum degree of the coefficients.
  [in,out] | M | The maximum order of the coefficients.
  [out] | C | The vector of cosine coefficients.
  [out] | S | The vector of sine coefficients.
  [in] | truncate | if false (the default) then N and M are determined by the values in the binary stream; otherwise, the input values of N and M are used to truncate the coefficients read from the stream at the given degree and order.

Exceptions

  GeographicErr | if N and M do not satisfy N ≥ M ≥ −1.
  GeographicErr | if there's an error reading the data.
  std::bad_alloc | if the memory for C or S can't be allocated.

N and M are read as 4-byte ints. C and S are resized to accommodate all the coefficients (with the m = 0 coefficients for S excluded) and the data for these coefficients read as 8-byte doubles. The coefficients are stored in column major order. The bytes in the stream should use little-endian ordering. IEEE floating point is assumed for the coefficients.

Definition at line 384 of file SphericalEngine.cpp.

References Csize(), N(), GeographicLib::Utility::readarray(), Ssize(), and GeographicLib::Utility::str().

Referenced by GeographicLib::GravityModel::GravityModel(), and GeographicLib::MagneticModel::MagneticModel().

The documentation for this class was generated from the following files:

- SphericalEngine.hpp
- SphericalEngine.cpp