Interpolator Classes

Model-Independent Classes

Interpolator

class ccmc::Interpolator

TODO: Brief description of Interpolator class.

TODO: Full description of Inteprolator class

Public Functions
Interpolator()

Default constructor

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2) = 0

Interpolates the variable specified at position (c0,c1,c2).

TODO: add detailed description

virtual float getConversionFactor(const std::string & variable)

Return
Parameters
  • variable -

virtual float getConversionFactor(const long & variable_id)

Return
Parameters
  • variable_id -

virtual ~Interpolator()

Destructor

KameleonInterpolator

class ccmc::KameleonInterpolator

Provides interpolation to derived variables for models accessed via the Kameleon class.

The KameleonInterpolator class inherits from the Interpolator, but computes model-dependent derived variables. Currently these are all hand-coded.

Public Functions
KameleonInterpolator(Model * modelReader)

Parameters
  • model -

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2)

OpenGGCM and BATSRUS: c0,c1,c2 corresponds to x,y,z, respectively. ENLIL and MAS: c0,c1,c2 corresponds to r,phi(latitude), theta(longitude), respectively

Return
Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

  • variable -

  • c0 -

  • c1 -

  • c2 -

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

OpenGGCM and BATSRUS: c0,c1,c2 corresponds to x,y,z, respectively. ENLIL and MAS: c0,c1,c2 corresponds to r,phi(latitude), theta(longitude), respectively

Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

  • dc0 -

  • dc1 -

  • dc2 -

  • variable -

  • c0 -

  • c1 -

  • c2 -

  • dc0 -

  • dc1 -

  • dc2 -

  • return -

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2)

OpenGGCM and BATSRUS: c0,c1,c2 corresponds to x,y,z, respectively. ENLIL and MAS: c0,c1,c2 corresponds to r,phi(latitude), theta(longitude), respectively

Return
Parameters
  • variable_id -

  • c0 -

  • c1 -

  • c2 -

    Interpolates using the base model interpolators. Does not perform derived variable calculations.

  • variable_id -

  • c0 -

  • c1 -

  • c2 -

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

A variable_id won’t work well, since derived variables can be requested, which do not exist in the data.

OpenGGCM and BATSRUS: c0,c1,c2 maps to x,y,z, respectively. ENLIL and MAS: c0,c1,c2 maps to r,theta(latitude), phi(longitude), respectively

Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

  • dc0 -

  • dc1 -

  • dc2 -

TimeInterpolator

class ccmc::TimeInterpolator

The TimeInterpolator collects multiple Kameleon objects and permits time interpolation between them.

Public Functions
TimeInterpolator()
virtual ~TimeInterpolator()
void addTimestep(const std::string & filename)
void removeTimestep(const Time & time)
std::vector< Time > getTimesteps()
Interpolator * getInterpolator(const Time & time)
Kameleon * getKameleon(const Time & time)
bool manageMemory(const Time & time, const std::vector< std::string > & variable)

Manages the memory and the opened files based on the time and variable specified.

bool manageMemory(const Time & time, const char * variable, int numVars)

Manages the memory and the opened files based on the time and variable specified.

void closeAndCleanupMemory()
float interpolate(const Time & time, const std::string & variable, const float & c0, const float & c1, const float & c2)
float interpolate(const Time & time, int variable, const float & c0, const float & c1, const float & c2)
void clearAll()
Public Static Functions
Time parseTime(const std::string & timeString)
std::string toString(const Time & time)

Point classes

Point and Point3f are two different implementations of a point class. Point uses templating and leaves the operator implementation to the Vector subclass. Point3f is for floats only, but includes the operators. Point3f is used extensively by the Fieldline class.

template <class T>
class ccmc::Point

TODO: Brief description of Point class.

TODO: Full description of Point class

Public Functions
Point()

Default constructor

Point(T & c0, T & c1, T & c2)
void setComponents(T & c1, T & c2, T & c3)
const T & c0()
const T & c1()
const T & c2()
std::string toString()
virtual ~Point()
class ccmc::Point3f
Public Type
Coordinates enum

Values:

  • SPHERICAL -
  • CARTESIAN -
Public Functions
Point3f(const float & component1, const float & component2, const float & component3)

TODO: finish documentation

Parameters
  • component1 -

  • component2 -

  • component3 -

Point3f(const float & component1, const float & component2, const float & component3, Coordinates c)

TODO: finish documentation

Parameters
  • component1 -

  • component2 -

  • component3 -

Point3f(const Point3f & p)
Point3f()

TODO: finish documentation

Point3f(Coordinates c)

TODO: finish documentation

void normalize()

TODO: finish documentation

std::string toString() const

TODO: finish documentation

float magnitude()

Computes the magnitude of the cartesian vector

float distance(const Point3f & p) const

compute the distance between this point, and Point p TODO: finish documentation

Point3f operator+(const Point3f & p) const

TODO: finish documentation

Point3f operator-(const Point3f & p) const

Minus operator where sender is on the right TODO: test this

Point3f operator*(float value) const

TODO: finish documentation

Point3f operator*(double value) const

TODO: finish documentation

void setCoordinates(Coordinates c)

TODO: finish documentation

Coordinates getCoordinates()

TODO: finish documentation

Point3f getCartesian()
virtual ~Point3f()

TODO: finish documentation

Public Members
float component1
float component2
float component3

Vector

template <class T>
class ccmc::Vector

Inherits from Point class

Public Functions
Vector()
Vector(T c0, T c1, T c2)
T length()
Vector< T > operator+(const Vector< T > & v) const
Vector< T > operator-(const Vector< T > & v) const
Vector< T > operator*(const T & value) const
Vector< T > operator/(const T & value) const
void operator+=(const Vector< T > & v)
void operator-=(const Vector< T > & v)
void operator*=(const T & value)
void operator/=(const T & value)
void norm()
virtual ~Vector()
Public Static Functions
T dot(Vector< T > & a, Vector< T > & b)
T dot(Vector< T > * a, Vector< T > * b)
Vector< T > cross(Vector< T > & a, Vector< T > & b)
Vector< T > cross(Vector< T > * a, Vector< T > * b)
void cross(Vector< T > & c, Vector< T > & a, Vector< T > & b)
T triple(Vector< T > & a, Vector< T > & b, Vector< T > & c)
Vector< T > norm(Vector< T > & a)
Vector< T > norm(Vector< T > * a)
T angle(Vector< T > & a, Vector< T > & b)
void angle(T & angle, Vector< T > & a, Vector< T > & b)
Public Static Attributes
Vector< T > dummy

Polyhedron

This class implements Spherical Barycentric Coordinates for interpolation. In the limit that a query point approaches one of the faces, the scheme converges to Mean Value Coordinates.

template <class T>
class ccmc::Polyhedron

Class to perform interpolations on arbitrary convex polyedra with planar faces.

Polyhedron is a class that can represent any arbitary polyhedron where the faces are planar. Each face can have any number of vertices. This class also implements Spherical Barycentric Coordinates, which may be used for linear interpolation for points inside or on the polyhedron’s boundary. Points outside the polyhedron are given zero weight.

Public Functions
Polyhedron()

Constructor initializes interpolation variables.

void setPositions(std::vector< Vector< T > > const & pos)

Sets positions as a set of vectors.

void setLoopsFaces(std::vector< int > const & loop, std::vector< int > const & face)

initializes loops and faces of polyhedron

void setNeighbors(std::vector< int > const & neighbor)

initializes neighbors cell indexes. If a face has no neighbor, set its neighbor value to currentPolyhedron;

Vector< T > centroid()

Calculate this polyhedron’s centroid (average of positions).

Vector< T > faceCentroid(int face)

Calculates face centroid as average of face vertices

Return
face’s centroid.
Parameters
  • face -

    which face to average

void setBarycentricCoordinates(Vector< T > const & point)

Given a starting point, calculates Spherical Barycentric Coordinates, such that every position is given a weight in [0,1]. The weights are stored in lambda.

If the point is outside the polyhedron, the weights will be set to zero. The weights will be linearly precise: The sum of each weight times the corresponding position yields the original point. point = SUM_i(lambda_i x position[i])

See Langer et. al, Spherical Barycentric Coordinates, 2006 Eurographics Symposium on Geometry

Parameters
  • point -

    3D position for which to calculate barycentric weights.

void setFloaterCoordinates(int face, Vector< T > const & point)

If the point lies on the boundary, spherical barycentric coordinates approach Floater coordinates (citation needed), which are implemented here.

void setLinearInterpolants(int v1, int v2, Vector< T > const & point)

If the point lies on an edge, spherical barycentric coordinates and Floater coordinates approach linear interpolation between the vertices that define the edge.

void saveAsDXObject(string filename)

Save as a human-readable Open-DX data object

Vector< T > getFaceVectorError()

Check that face vectors sum to zero according to Stoke’s theorem

void setCurrentPolyhedron(int a)

Sets currentPolyhedron

virtual Polyhedron< T > * getNextPolyhedron()

Points to the next polyhedron. This prototype just returns a pointer to itself.

Vector< T > maxDistanceToCentroid()

Calculates maximum distance from vertices to centroid

Vector< T > minDistanceToCentroid()

Calculates minimum distance from vertices to centroid

int getClosestFace(Vector< T > const & point)

Find closest face by comparing distances to face centroids

Vector< T > testLinearity(Vector< T > const & point)

Test the property that the sum of the vertices times their weights recovers the interpolation point.

bool isPointInside(Vector< T > const & point)

Checks if a new point is inside this polyhedron. Stores the result in isInside.

virtual int getType()

Returns the type of Polyhedron this is. This prototype just returns 0.

void merge(Polyhedron< T > const *const p)

Merges this polyhedron with another. Use this to create a group of polyhedra to render as a single object using saveAsDXObject.

Public Members
std::vector< T > lambda

barycentric weights associated with each vertex, determined by setBarycentricCoordinates. Each weight is in [0,1]

std::vector< Vector< T > > positions

3D positions of polyhedron’s vertices

std::vector< int > globalVertex

global index of polyhedron’s vertices

int closestFace

index of face closest to the last interpolation query point

int currentPolyhedron

global index of this polyhedron

std::vector< int > loops

each loop defines a face of polyhedron. loops must index into positions, with face normals determined by right-hand-rule.

std::vector< int > faces

faces must index into the start of each loop in loops, except the last face element will be the index of the last loop element

bool isInside

true if the last interpolation was inside the polyhedron

std::vector< int > neighbors

global index of neighboring polyhedra, matching faces.

Public Static Attributes
T piOver2

used for zeroing vectors

Nanoflann Classes

The Nanoflann header-only library is used for aiding in search queries.

template <typename T>
struct PointCloud
Public Functions
size_t kdtree_get_point_count() const
T kdtree_distance(const T * p1, const size_t idx_p2, size_t size) const
T kdtree_get_pt(const size_t idx, int dim) const
template <class BBOX>
bool kdtree_get_bbox(BBOX & bb) const
Public Members
std::vector< Point > pts
struct Point
Public Members
T x
T y
T z
template <typename DistanceType, typename IndexType = size_t, typename CountType = size_t>
class nanoflann::KNNResultSet

The KNNResultSet is a container for storing the results of a KD-tree query.

Public Functions
KNNResultSet(CountType capacity_)
void init(IndexType * indices_, DistanceType * dists_)
CountType size() const
bool full() const
void addPoint(DistanceType dist, IndexType index)
DistanceType worstDist() const
template <class num_t>
class NanoKdTree
Public Type
typedef KDTreeSingleIndexAdaptor< L2_Simple_Adaptor< num_t, PointCloud< num_t > >,PointCloud< num_t >, 3 > my_kd_tree
Public Functions
void build()
void nearest(const num_t * query_point, KNNResultSet< num_t > & resultSet)
~NanoKdTree()
Public Members
PointCloud< num_t > cloud
my_kd_tree * tree

Fieldline

class ccmc::Fieldline
Public Functions
Fieldline()

TODO: finish documentation

Fieldline(int initialSize)

Parameters
  • initialSize -

~Fieldline()

TODO: finish documentation

void insertPointData(const Point3f & p, const float & d)

TODO: finish documentation

Parameters
  • p -

  • d -

void insertVectorData(const Point3f & vector)
void removePoint(int index)

TODO: finish documentation

Parameters
  • index -

Fieldline reverseOrder()

TODO: finish documentation

Return

void reverseOrderInPlace()

TODO: finish documentation

Return

const std::vector< Point3f > & getPositions()

TODO: finish documentation

Return

const std::vector< float > & getData()

TODO: finish documentation

Return

int size()

TODO: finish documentation

Return

const Point3f & getPosition(int i)

TODO: finish documentation

Return
Parameters
  • i -

float getData(int i)

TODO: finish documentation

Return
Parameters
  • i -

Point3f getStartPoint()

TODO: finish documentation

int getStartIndex()
void reserve(int size)

Parameters
  • size -

void setStartPoint(Point3f p)

TODO: finish documentation

Parameters
  • startPoint -

void setStartIndex(int index)
void setVariable(std::string variable)
const std::string & getVariable()
const std::vector< float > & getDs()

Calculate the forward difference elements for a field line with ordered positions. Output has length fieldline.size()-1 TODO: Add backward and higher-order differencing

const std::vector< Point3f > & getElements()
const Point3f & getElement(int i)
const std::vector< float > & integrate()

Calculate the integral of ds*values over the length of the field line

const std::vector< float > & integrateVector()

Calculate the integral of (vector) dot dl over the length of the field line

const std::vector< float > & derivative()

Calculate the derivative of d values/ ds over the length of the field line

const std::vector< float > & measure()

Measure the length of the field line up to point i

float getLength(int i)

Get the length up to position i

float getIntegral(int i)

Get the integral up to position i

Fieldline interpolate(int option, int Npoints)
const std::vector< int > & getNearest()
const std::vector< float > & getTlocal()
void minmax()
Public Members
int mincount
int maxcount
std::vector< int > minima
std::vector< int > maxima
int GlobMinIndex
int GlobMaxIndex

Model-specific Interpolators

All Kameleon Interpolators inherit from the Interpolator class

Adapt3D

class ccmc::Adapt3DInterpolator

TODO: brief description of Adapt3DInterpolator class.

TODO: full description of Adapt3DInterpolator class

Public Functions
Adapt3DInterpolator(Model * modelReader)

Parameters

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable -

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Interpolation method. Note that using the variable ID is significantly faster than using the variable string.

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable -

    The input variable.

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable_id -

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Interpolation method. Note that using the variable ID is significantly faster than using the variable string.

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable_id -

    A long representing the variable ID.

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual ~Adapt3DInterpolator()

Destructor

BATSRUS

class ccmc::BATSRUSInterpolator

TODO: brief description of BATSRUSInterpolator class.

TODO: full description of BATSRUSInterpolator class

Public Functions
BATSRUSInterpolator(Model * modelReader)

Parameters

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable -

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Interpolation method. Note that using the variable ID is significantly faster than using the variable string.

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable -

    The input variable.

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable_id -

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Interpolation method. Note that using the variable ID is significantly faster than using the variable string.

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable_id -

    A long representing the variable ID.

  • c0 -

    X component of the position

  • c1 -

    Y component of the position

  • c2 -

    Z component of the position

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual ~BATSRUSInterpolator()

Destructor

LFM

class ccmc::LFMInterpolator

LFM interpolator class, combining kd-tree with spherical barycentric coordinates.

The LFMInterpolator makes use of the nanoflann library’s kd-tree implementation NanoKdTree for fast lookup of LFM positions. Once the nearest cell center is found, interpolation is performed using spherical barycentric coordinates via the Polyhedron class.

TODO: Move kd-tree initialization to LFM object instantiation.

Public Functions
LFMInterpolator(Model * modelReader)

Constructor

Parameters
  • modelReader -

    pointer to LFM model object

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable_id -

  • c0 -

  • c1 -

  • c2 -

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable_id -

  • c0 -

  • c1 -

  • c2 -

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual float getConversionFactor(const std::string & variable)

Return
Parameters
  • variable -

virtual float getConversionFactor(const long & variable_id)

Return
Parameters
  • variable_id -

virtual ~LFMInterpolator()

Destructor

void setPolyhedralCells()

This function creates and stores the polyhedra used for interpolation. Each polyhedron has vertices set by LFM cell centers. In total, there are (ni-1)*(nj-1)*nk hexahedra (6 faces), 2*(ni-1) axis cells having nk+2 faces, 1 inner boundary cell having (nj-1)*nk + 2 faces. This function also calculates polyhedral cell centers, which are put in a point cloud and used for kd-tree searches

Polyhedron< float > * getCell(Vector< float > point)

Return a pointer to the cell containing the query point.

Polyhedron< float > getInterpolationPolys()

Constructs a single polyhedron out of all the polys used in interpolation

Public Members
PointCloud< float > cell_centers

size ni,nj,nk - nonstatic: only used once for polyhedra

PointCloud< float > helper_nodes

size ni-1,nj-1,nk (+axis later) - nonstatic: copied to lfmtree.cloud

ENLIL

class ccmc::ENLIL

TODO: Brief description of ENLIL class.

TODO: Full description of ENLIL class

Public Functions
virtual long open(const std::string & filename)

virtual Interpolator * createNewInterpolator()

virtual const std::vector< std::string > getLoadedVariables()

Returns the list of variables that have been loaded into memory, using the loadVariable or loadVectorVariable methods.

MAS

class ccmc::MASInterpolator

TODO: Brief description of MASInterpolator class.

TODO: Full description of MASInteprolator class

Public Functions
MASInterpolator(Model * model)

Parameters
  • model -

virtual float interpolate(const std::string & variable, const float & r, const float & lat, const float & lon)

Return
Parameters
  • variable -

  • r -

  • lat -

  • lon -

virtual float interpolate(const std::string & variable, const float & r, const float & lat, const float & lon, float & dr, float & dlat, float & dlon)

Return
Parameters
  • variable -

  • r -

  • lat -

  • lon -

  • dr -

  • dlat -

  • dlon -

virtual float interpolate(const long & variable_id, const float & r, const float & lat, const float & lon)

Return
Parameters
  • variableID -

  • r -

  • lat -

  • lon -

virtual float interpolate(const long & variable_id, const float & r, const float & lat, const float & lon, float & dr, float & dlat, float & dlon)

Return
Parameters
  • variableID -

  • r -

  • lat -

  • lon -

  • dr -

  • dlat -

  • dlon -

OpenGGCM

class ccmc::OpenGGCMInterpolator

TODO: Brief description of OpenGGCMInterpolator class.

TODO: Full description of OpenGGCMInterpolator class

Public Functions
OpenGGCMInterpolator(Model * modelReader)

Constructor

Parameters
  • modelReader -

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2)

Return
Parameters
  • variable_id -

  • c0 -

  • c1 -

  • c2 -

virtual float interpolate(const long & variable_id, const float & c0, const float & c1, const float & c2, float & dc0, float & dc1, float & dc2)

Return
The interpolated value at position (c0,c1,c2) with deltas (dc0,dc1,dc2)
Parameters
  • variable_id -

  • c0 -

  • c1 -

  • c2 -

  • dc0 -

    Reference to a variable to store the delta for component 0

  • dc1 -

    Reference to a variable to store the delta for component 1

  • dc2 -

    Reference to a variable to store the delta for component 2

virtual float getConversionFactor(const std::string & variable)

Creates the cell with the necessary values to interpolate the correct value at position (c0,c1,c2).

6_____7
/|    /|
4_|___5 |
| |   | |
| 2 - - 3
|/    |/
0 - - 1
Return
The cell values necessary for inteprolating the value at position (c0,c1,c2).
Return
Parameters
  • variable -

  • c0 -

  • c1 -

  • c2 -

Parameters
  • variable -

virtual float getConversionFactor(const long & variable_id)

Return
Parameters
  • variable_id -

virtual ~OpenGGCMInterpolator()

Destructor

SWMF Ionosphere

class ccmc::SWMFIonoInterpolator
Public Functions
virtual float interpolate(const std::string & variable, const float & c0, const float & c1, const float & c2)

Interpolates the variable specified at position (c0,c1,c2).

TODO: add detailed description

virtual float interpolate(const long & variable_id, const float & r, const float & lat, const float & lon)

Parameters
  • r -

    This parameter is unused, since the grid is 2D.

  • lat -

    The latitude component of the position.

  • lon -

    The longitude component of the position.