Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
GeographicLib::SphericalEngine::coeff Class Reference

Package up coefficients for SphericalEngine. More...

#include <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)
 
Math::real Cv (int k) const
 
Math::real Cv (int k, int n, int m, real f) const
 
int index (int n, int m) const
 
int mmx () const
 
int N () const
 
int nmx () const
 
Math::real Sv (int k) 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 void readcoeffs (std::istream &stream, int &N, int &M, std::vector< real > &C, std::vector< real > &S)
 
static int Ssize (int N, int M)
 

Private Attributes

std::vector< real >::const_iterator _Cnm
 
int _mmx
 
int _nmx
 
int _Nx
 
std::vector< real >::const_iterator _Snm
 

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]Ca vector of coefficients for the cosine terms.
[in]Sa vector of coefficients for the sine terms.
[in]Nthe degree giving storage layout for C and S.
[in]nmxthe maximum degree to be used.
[in]mmxthe maximum order to be used.
Exceptions
GeographicErrif N, nmx, and mmx do not satisfy Nnmxmmx ≥ −1.
GeographicErrif C or S is not big enough to hold the coefficients.
std::bad_allocif the memory for the square root table can't be allocated.

Definition at line 124 of file SphericalEngine.hpp.

◆ 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]Ca vector of coefficients for the cosine terms.
[in]Sa vector of coefficients for the sine terms.
[in]Nthe maximum degree and order.
Exceptions
GeographicErrif N does not satisfy N ≥ −1.
GeographicErrif C or S is not big enough to hold the coefficients.
std::bad_allocif the memory for the square root table can't be allocated.

Definition at line 152 of file SphericalEngine.hpp.

Member Function Documentation

◆ Csize()

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

The size of the coefficient vector for the cosine terms.

Parameters
[in]Nthe maximum degree.
[in]Mthe maximum order.
Returns
the size of the vector of cosine terms as stored in column major order.

Definition at line 236 of file SphericalEngine.hpp.

◆ Cv() [1/2]

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

An element of C.

Parameters
[in]kthe one-dimensional index.
Returns
the value of the C coefficient.

Definition at line 195 of file SphericalEngine.hpp.

◆ 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]kthe one-dimensional index.
[in]nthe requested degree.
[in]mthe requested order.
[in]fa multiplier.
Returns
the value of the C coefficient multiplied by f in n and m are in range else 0.

Definition at line 213 of file SphericalEngine.hpp.

◆ index()

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

The one-dimensional index into C and S.

Parameters
[in]nthe degree.
[in]mthe order.
Returns
the one-dimensional index.

Definition at line 187 of file SphericalEngine.hpp.

◆ mmx()

int GeographicLib::SphericalEngine::coeff::mmx ( ) const
inline
Returns
mmx the maximum order to be used.

Definition at line 179 of file SphericalEngine.hpp.

◆ N()

int GeographicLib::SphericalEngine::coeff::N ( ) const
inline
Returns
N the degree giving storage layout for C and S.

Definition at line 171 of file SphericalEngine.hpp.

◆ nmx()

int GeographicLib::SphericalEngine::coeff::nmx ( ) const
inline
Returns
nmx the maximum degree to be used.

Definition at line 175 of file SphericalEngine.hpp.

◆ readcoeffs()

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

Load coefficients from a binary stream.

Parameters
[in]streamthe input stream.
[out]NThe maximum degree of the coefficients.
[out]MThe maximum order of the coefficients.
[out]CThe vector of cosine coefficients.
[out]SThe vector of sine coefficients.
Exceptions
GeographicErrif N and M do not satisfy NM ≥ −1.
GeographicErrif there's an error reading the data.
std::bad_allocif 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 387 of file SphericalEngine.cpp.

◆ Ssize()

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

The size of the coefficient vector for the sine terms.

Parameters
[in]Nthe maximum degree.
[in]Mthe maximum order.
Returns
the size of the vector of cosine terms as stored in column major order.

Definition at line 247 of file SphericalEngine.hpp.

◆ Sv() [1/2]

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

An element of S.

Parameters
[in]kthe one-dimensional index.
Returns
the value of the S coefficient.

Definition at line 202 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]kthe one-dimensional index.
[in]nthe requested degree.
[in]mthe requested order.
[in]fa multiplier.
Returns
the value of the S coefficient multiplied by f in n and m are in range else 0.

Definition at line 225 of file SphericalEngine.hpp.

Member Data Documentation

◆ _Cnm

std::vector<real>::const_iterator GeographicLib::SphericalEngine::coeff::_Cnm
private

Definition at line 102 of file SphericalEngine.hpp.

◆ _mmx

int GeographicLib::SphericalEngine::coeff::_mmx
private

Definition at line 101 of file SphericalEngine.hpp.

◆ _nmx

int GeographicLib::SphericalEngine::coeff::_nmx
private

Definition at line 101 of file SphericalEngine.hpp.

◆ _Nx

int GeographicLib::SphericalEngine::coeff::_Nx
private

Definition at line 101 of file SphericalEngine.hpp.

◆ _Snm

std::vector<real>::const_iterator GeographicLib::SphericalEngine::coeff::_Snm
private

Definition at line 103 of file SphericalEngine.hpp.


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


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:46:12