19#ifndef CLASSIC_FIELDMAP3DH5BLOCKBASE_H
20#define CLASSIC_FIELDMAP3DH5BLOCKBASE_H
26static_assert (
sizeof(double) ==
sizeof (h5_float64_t),
27 "double and h5_float64_t are not the same type" );
28static_assert (
sizeof(
long long) ==
sizeof (h5_int64_t),
29 "long long and h5_int64_t are not the same type" );
44 double &zBegin,
double &zEnd
51 double &xIni,
double &xFinal,
52 double &yIni,
double &yFinal,
53 double &zIni,
double &zFinal
85 std::vector<std::pair<double, double> >& F);
95 const std::string& filename);
192 long double difference = (
long double)(
X(0)) - (
long double)(
xbegin_m);
194 (
unsigned int)((difference) / (
long double)(
hx_m)),
197 idx.
weight(0) = std::fmod(
198 (
long double)difference,
202 difference = (
long double)(
X(1)) - (
long double)(
ybegin_m);
204 (
unsigned int)((difference) / (
long double)(
hy_m)),
207 idx.
weight(1) = std::fmod(
208 (
long double)difference,
212 difference = (
long double)(
X(2)) - (
long double)(
zbegin_m);
214 (
unsigned int)((difference) / (
long double)(
hz_m)),
217 idx.
weight(2) = std::fmod(
218 (
long double)difference,
225 const std::vector<double>& data,
226 const IndexTriplet& idx,
227 unsigned short corner)
const;
230 const std::vector<double>&,
231 const std::vector<double>&,
232 const std::vector<double>&,
235 enum :
unsigned short {
std::shared_ptr< _FM3DH5BlockBase > FM3DH5BlockBase
std::vector< double > FieldstrengthEz_m
virtual bool isInside(const Vector_t &r) const
virtual double getFrequency() const
void setStep(const long long)
virtual bool getFieldstrength(const Vector_t &, Vector_t &, Vector_t &) const =0
Vector_t interpolateTrilinearly(const std::vector< double > &, const std::vector< double > &, const std::vector< double > &, const Vector_t &X) const
void getResonanceFrequency(void)
virtual bool getFieldDerivative(const Vector_t &, Vector_t &, Vector_t &, const DiffDirection &) const
virtual void getInfo(Inform *msg)
IndexTriplet getIndex(const Vector_t &X) const
unsigned int num_gridpx_m
virtual ~_FM3DH5BlockBase()
unsigned long getIndex(unsigned int i, unsigned int j, unsigned int k) const
virtual void setFrequency(double freq)
void getFieldInfo(const char *)
virtual void getOnaxisEz(std::vector< std::pair< double, double > > &F)
void readField(const char *name, double *x, double *y, double *z)
void openFileMPIOCollective(const std::string &filename)
double getWeightedData(const std::vector< double > &data, const IndexTriplet &idx, unsigned short corner) const
long long getNumSteps(void)
unsigned int num_gridpz_m
unsigned int num_gridpy_m
std::vector< double > FieldstrengthEy_m
std::vector< double > FieldstrengthEx_m
virtual void getFieldDimensions(double &xIni, double &xFinal, double &yIni, double &yFinal, double &zIni, double &zFinal) const
virtual void getFieldDimensions(double &zBegin, double &zEnd) const
Vektor< double, 3 > Vector_t