File interpolation_z.hxx#
Typedefs
-
template<class DerivedType>
using RegisterZInterpolation = ZInterpolationFactory::RegisterInFactory<DerivedType>#
-
class ZInterpolation#
Subclassed by ZHermiteSpline
Public Functions
-
virtual ~ZInterpolation() = default#
-
virtual Field3D interpolate(const Field3D &f, const Field3D &delta_z, const std::string ®ion_str = "DEFAULT") = 0#
-
inline virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYUpApproximation(int i, int j, int k) const#
-
inline virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYDownApproximation(int i, int j, int k) const#
-
inline virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYApproximation(int i, int j, int k, int yoffset) const#
Public Members
-
const int y_offset#
-
virtual ~ZInterpolation() = default#
-
class ZInterpolationFactory : public Factory<ZInterpolation, ZInterpolationFactory, int, Mesh*, Region<Ind3D>>#
Public Functions
-
inline ReturnType create(Options *options, int y_offset = 0, Mesh *mesh = nullptr, Region<Ind3D> region_in = {}) const#
Public Static Functions
-
static void ensureRegistered()#
-
inline ReturnType create(Options *options, int y_offset = 0, Mesh *mesh = nullptr, Region<Ind3D> region_in = {}) const#
-
class ZHermiteSpline : public ZInterpolation#
Public Functions
-
virtual Field3D interpolate(const Field3D &f, const std::string ®ion_str = "DEFAULT") const override#
-
virtual Field3D interpolate(const Field3D &f, const Field3D &delta_z, const std::string ®ion_str = "DEFAULT") override#
-
virtual std::vector<ParallelTransform::PositionsAndWeights> getWeightsForYApproximation(int i, int j, int k, int yoffset) const 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 * f(i,j+1,k) + h01 * f(i,j+1,k+1)
h10 * dfdz(i,j+1,k) + h11 * dfdz(i,j+1,k+1) = h00 * f(i,j+1,k) + h01 * f(i,j+1,k+1)
h10 * ( f(i,j+1,k+1) - f(i,j+1,k-1) ) / 2
h11 * ( 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 / 2 (i, j+1, k) h00 - h11 / 2 (i, j+1, k+1) h01 + h10 / 2 (i, j+1, k+2) h11 / 2
-
virtual Field3D interpolate(const Field3D &f, const std::string ®ion_str = "DEFAULT") const override#