1#ifndef CLASSIC_FIELDMAP_HH
2#define CLASSIC_FIELDMAP_HH
4#define READ_BUFFER_LENGTH 256
12#include "gsl/gsl_interp.h"
13#include "gsl/gsl_spline.h"
64 static void readMap(std::string Filename);
65 static void freeMap(std::string Filename);
67 static std::string
typeset_msg(
const std::string& msg,
const std::string& title);
77 double& xIni,
double& xFinal,
double& yIni,
double& yFinal,
double& zIni,
78 double& zFinal)
const = 0;
84 const double& bendAngle,
const double& entranceAngle,
const double& exitAngle);
88 std::vector<double>& engeCoeffsEntry, std::vector<double>& engeCoeffsExit);
90 double& entranceParameter1,
double& entranceParameter2,
double& entranceParameter3);
92 double& exitParameter1,
double& exitParameter2,
double& exitParameter3);
100 virtual void getOnaxisEz(std::vector<std::pair<double, double>>& onaxis);
124 void getLine(std::ifstream& in, std::string& buffer) {
128 static void getLine(std::ifstream& in,
int& lines_read, std::string& buffer);
131 bool interpretLine(std::ifstream& in, S& value,
const bool& file_length_known =
true);
132 template <
class S,
class T>
134 std::ifstream& in, S& value1,
T& value2,
const bool& file_length_known =
true);
135 template <
class S,
class T,
class U>
137 std::ifstream& in, S& value1,
T& value2, U& value3,
const bool& file_length_known =
true);
138 template <
class S,
class T,
class U,
class V>
140 std::ifstream& in, S& value1,
T& value2, U& value3, V& value4,
141 const bool& file_length_known =
true);
144 std::ifstream& in, S& value1, S& value2, S& value3, S& value4, S& value5, S& value6,
145 const bool& file_length_known =
true);
150 const std::ios_base::iostate& state,
const bool& read_all,
const std::string& error_msg,
151 const std::string& found);
161 unsigned int accuracy, std::pair<double, double> fieldDimensions,
double deltaZ,
162 const std::vector<double>& fourierCoefficients, gsl_spline* splineCoefficients,
163 gsl_interp_accel* splineAccelerator);
166 unsigned int accuracy,
double length,
const std::vector<double>& zSampling,
167 const std::vector<double>& fourierCoefficients, gsl_spline* splineCoefficients,
168 gsl_interp_accel* splineAccelerator);
171 unsigned int nx,
unsigned int ny,
unsigned int nz,
const std::pair<double, double>& xrange,
172 const std::pair<double, double>& yrange,
const std::pair<double, double>& zrange,
176 template <
typename T>
ippl::Vector< T, Dim > Vector_t
#define READ_BUFFER_LENGTH
@ T2DElectroStatic_cspline
@ T2DMagnetoStatic_cspline
@ T3DMagnetoStatic_Extended
@ T3DMagnetoStaticH5Block
virtual bool getFieldstrength(const Vector_t< double, 3 > &R, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) const =0
virtual void getInfo(Inform *msg)=0
virtual void getFieldDimensions(double &zBegin, double &zEnd) const =0
static Fieldmap * getFieldmap(std::string Filename, bool fast=false)
virtual bool getFieldDerivative(const Vector_t< double, 3 > &R, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B, const DiffDirection &dir) const =0
static void deleteFieldmap(std::string Filename)
static std::string alpha_numeric
static std::map< std::string, FieldmapDescription > FieldmapDictionary
static MapType readHeader(std::string Filename)
virtual void setFrequency(double freq)=0
bool interpreteEOF(std::ifstream &in)
virtual void setFieldLength(const double &)
void missingValuesWarning()
virtual void getOnaxisEz(std::vector< std::pair< double, double > > &onaxis)
virtual void get1DProfile1EntranceParam(double &entranceParameter1, double &entranceParameter2, double &entranceParameter3)
void checkMap(unsigned int accuracy, std::pair< double, double > fieldDimensions, double deltaZ, const std::vector< double > &fourierCoefficients, gsl_spline *splineCoefficients, gsl_interp_accel *splineAccelerator)
void lowResolutionWarning(double squareError, double maxError)
void interpretWarning(const std::ios_base::iostate &state, const bool &read_all, const std::string &error_msg, const std::string &found)
virtual void getFieldDimensions(double &xIni, double &xFinal, double &yIni, double &yFinal, double &zIni, double &zFinal) const =0
Fieldmap(const std::string &aFilename)
void disableFieldmapWarning()
virtual double getFrequency() const =0
static char buffer_m[256]
static std::vector< std::string > getListFieldmapNames()
static std::string typeset_msg(const std::string &msg, const std::string &title)
static void clearDictionary()
virtual double getFieldGap()
virtual void setEdgeConstants(const double &bendAngle, const double &entranceAngle, const double &exitAngle)
virtual void setFieldGap(double gap)
bool interpretLine(std::ifstream &in, S &value, const bool &file_length_known=true)
void exceedingValuesWarning()
virtual void get1DProfile1EngeCoeffs(std::vector< double > &engeCoeffsEntry, std::vector< double > &engeCoeffsExit)
virtual bool isInside(const Vector_t< double, 3 > &) const
void getLine(std::ifstream &in, std::string &buffer)
virtual void get1DProfile1ExitParam(double &exitParameter1, double &exitParameter2, double &exitParameter3)
void write3DField(unsigned int nx, unsigned int ny, unsigned int nz, const std::pair< double, double > &xrange, const std::pair< double, double > &yrange, const std::pair< double, double > &zrange, const std::vector< Vector_t< double, 3 > > &ef, const std::vector< Vector_t< double, 3 > > &bf)
FieldmapDescription(MapType aType, Fieldmap *aMap)