Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType > Class Template Reference

3rd order interpolate class specialization for nodes More...

#include <interpolate_3rd_order.h>

Public Member Functions

 Interpolate_3rdOrder (SourceMeshType const &source_mesh, TargetMeshType const &target_mesh, SourceStateType const &source_state, NumericTolerances_t num_tols)
 
Interpolate_3rdOrderoperator= (const Interpolate_3rdOrder &)=delete
 Copy constructor (disabled) More...
 
 ~Interpolate_3rdOrder ()=default
 Destructor. More...
 
void set_interpolation_variable (std::string const &interp_var_name, Limiter_type limiter_type=NOLIMITER, Boundary_Limiter_type boundary_limiter_type=BND_NOLIMITER, Portage::vector< Vector< D >> *gradients=nullptr)
 Set the name of the interpolation variable and the limiter type. More...
 
double operator() (const int targetNodeID, std::vector< Weights_t > const &sources_and_weights) const
 Functor to do the 3rd order interpolation of node values. More...
 

Static Public Attributes

static constexpr int order = 3
 

Detailed Description

template<int D, typename SourceMeshType, typename TargetMeshType, typename SourceStateType, typename TargetStateType>
class Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType >

3rd order interpolate class specialization for nodes

Parameters
[in]dualcells_and_weightsPair containing vector of contributing source nodes (dual cells) and vector of contribution weights

Constructor & Destructor Documentation

◆ Interpolate_3rdOrder()

template<int D, typename SourceMeshType , typename TargetMeshType , typename SourceStateType , typename TargetStateType >
Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType >::Interpolate_3rdOrder ( SourceMeshType const &  source_mesh,
TargetMeshType const &  target_mesh,
SourceStateType const &  source_state,
NumericTolerances_t  num_tols 
)
inline

◆ ~Interpolate_3rdOrder()

template<int D, typename SourceMeshType , typename TargetMeshType , typename SourceStateType , typename TargetStateType >
Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType >::~Interpolate_3rdOrder ( )
default

Destructor.

Member Function Documentation

◆ operator()()

template<int D, typename SourceMeshType , typename TargetMeshType , typename SourceStateType , typename TargetStateType >
double Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType >::operator() ( const int  targetNodeID,
std::vector< Weights_t > const &  sources_and_weights 
) const
inline

Functor to do the 3rd order interpolation of node values.

Parameters
[in]sources_and_weightsA pair of two vectors

sources_and_weights.first() is the vector of source entity indices in the source mesh that will contribute to the current target mesh entity.

sources_and_weights.second() is the

Parameters
[in]targetCellIDThe index of the target cell.
[in]sources_and_weightsVector of source mesh entities and corresponding weight vectors. Each element of the weights vector is a moment of the source data over the target entity; for first order interpolation, only the first element (or zero'th moment) of the weights vector (i.e. the volume of intersection) is used. Source entities may be repeated in the list if the intersection of a target entity and a source entity consists of two or more disjoint pieces
Todo:
must remove assumption that field is scalar

implementation of the () operator for 3rd order interpolate on nodes Method: Uses an SVD decomposition to compute a quadratic multinomial fit to a given field, and approximates the field using the quadratic multinomial at points around the central NODE.

Todo:
Should use zip_iterator here but I am not sure I know how to

◆ operator=()

template<int D, typename SourceMeshType , typename TargetMeshType , typename SourceStateType , typename TargetStateType >
Interpolate_3rdOrder& Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType >::operator= ( const Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType > &  )
delete

Copy constructor (disabled)

Assignment operator (disabled)

◆ set_interpolation_variable()

template<int D, typename SourceMeshType , typename TargetMeshType , typename SourceStateType , typename TargetStateType >
void Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType >::set_interpolation_variable ( std::string const &  interp_var_name,
Limiter_type  limiter_type = NOLIMITER,
Boundary_Limiter_type  boundary_limiter_type = BND_NOLIMITER,
Portage::vector< Vector< D >> *  gradients = nullptr 
)
inline

Set the name of the interpolation variable and the limiter type.

Member Data Documentation

◆ order

template<int D, typename SourceMeshType , typename TargetMeshType , typename SourceStateType , typename TargetStateType >
constexpr int Portage::Interpolate_3rdOrder< D, Entity_kind::NODE, SourceMeshType, TargetMeshType, SourceStateType, TargetStateType >::order = 3
static

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