File interpolation_z.hxx¶
Typedefs
-
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 =