File interpolation_xz.hxx#
Typedefs
-
template<class DerivedType>
using RegisterXZInterpolation = XZInterpolationFactory::RegisterInFactory<DerivedType>#
Functions
-
class XZInterpolation#
Subclassed by XZBilinear, XZHermiteSpline, XZLagrange4pt
Public Functions
-
virtual ~XZInterpolation() = default#
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") = 0#
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const BoutMask &mask, const std::string ®ion = "RGN_NOBNDRY") = 0#
-
virtual Field3D interpolate(const Field3D &f, const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") = 0#
-
virtual Field3D interpolate(const Field3D &f, const Field3D &delta_x, const Field3D &delta_z, const BoutMask &mask, const std::string ®ion = "RGN_NOBNDRY") = 0#
-
inline void setYOffset(int offset)#
-
inline virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYUpApproximation(int i, int j, int k)#
-
inline virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYDownApproximation(int i, int j, int k)#
-
inline virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYApproximation(int i, int j, int k, int yoffset)#
Public Members
-
int y_offset#
-
virtual ~XZInterpolation() = default#
-
class XZHermiteSpline : public XZInterpolation#
Subclassed by XZMonotonicHermiteSpline
Public Functions
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const BoutMask &mask, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual Field3D interpolate(const Field3D &f, const std::string ®ion = "RGN_NOBNDRY") const override#
-
virtual Field3D interpolate(const Field3D &f, const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual Field3D interpolate(const Field3D &f, const Field3D &delta_x, const Field3D &delta_z, const BoutMask &mask, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYApproximation(int i, int j, int k, int yoffset) override#
Return position and weight of points needed to approximate the function value at the point that the field line through (i,j,k) meets the (j+1)-plane. For the case where only the z-direction is not aligned to grid points, the approximation is: f(i,j+1,k*) = h00_z * f(i,j+1,k) + h01_z * f(i,j+1,k+1)
h10_z * dfdz(i,j+1,k) + h11_z * dfdz(i,j+1,k+1) = h00_z * f(i,j+1,k) + h01_z * f(i,j+1,k+1)
h10_z * ( f(i,j+1,k+1) - f(i,j+1,k-1) ) / 2
h11_z * ( f(i,j+1,k+2) - f(i,j+1,k) ) / 2 for k* a point between k and k+1. Therefore, this function returns position weight (i, j+1, k-1) - h10_z / 2 (i, j+1, k) h00_z - h11_z / 2 (i, j+1, k+1) h01_z + h10_z / 2 (i, j+1, k+2) h11_z / 2
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
class XZMonotonicHermiteSpline : public XZHermiteSpline#
- #include <interpolation_xz.hxx>
Monotonic Hermite spline interpolator
Similar to XZHermiteSpline, so uses most of the same code. Forces the interpolated result to be in the range of the neighbouring cell values. This prevents unphysical overshoots, but also degrades accuracy near maxima and minima. Perhaps should only impose near boundaries, since that is where problems most obviously occur.
Public Functions
-
virtual Field3D interpolate(const Field3D &f, const std::string ®ion = "RGN_NOBNDRY") const override#
Interpolate using precalculated weights. This function is called by the other interpolate functions in the base class XZHermiteSpline.
-
virtual Field3D interpolate(const Field3D &f, const std::string ®ion = "RGN_NOBNDRY") const override#
-
class XZLagrange4pt : public XZInterpolation#
Public Functions
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const BoutMask &mask, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual Field3D interpolate(const Field3D &f, const std::string ®ion = "RGN_NOBNDRY") const override#
-
virtual Field3D interpolate(const Field3D &f, const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
class XZBilinear : public XZInterpolation#
Public Functions
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const BoutMask &mask, const std::string ®ion = "RGN_NOBNDRY") override#
-
virtual Field3D interpolate(const Field3D &f, const std::string ®ion = "RGN_NOBNDRY") const override#
-
virtual void calcWeights(const Field3D &delta_x, const Field3D &delta_z, const std::string ®ion = "RGN_NOBNDRY") override#
-
class XZInterpolationFactory : public Factory<XZInterpolation, XZInterpolationFactory, Mesh*>#
Public Functions
Public Static Functions
-
static void ensureRegistered()#
-
static void ensureRegistered()#