|
OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
|
Abstract base class for all field maps. It acts as a factory for creating specific field map types based on the file content and manages a cache of loaded field maps. More...
#include <Fieldmap.h>


Classes | |
| struct | FieldmapDescription |
| struct | TypeParseTraits |
| struct | TypeParseTraits< double > |
| struct | TypeParseTraits< int > |
| struct | TypeParseTraits< std::string > |
| struct | TypeParseTraits< unsigned int > |
Public Member Functions | |
| virtual void | applyField (std::shared_ptr< ParticleContainer_t > pc, double scale=1.0)=0 |
| Apply the FM to all the particles. | |
| virtual bool | getFieldstrength (const Vector_t< double, 3 > &R, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) const =0 |
| Get the field strength at a given point. | |
| virtual bool | getFieldDerivative (const Vector_t< double, 3 > &R, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B, const DiffDirection &dir) const =0 |
| Get the field derivative with respect to a direction. | |
| virtual void | getFieldDimensions (double &zBegin, double &zEnd) const =0 |
| Get the longitudinal dimensions of the field. | |
| virtual void | getFieldDimensions (double &xIni, double &xFinal, double &yIni, double &yFinal, double &zIni, double &zFinal) const =0 |
| Get the full 3D bounding box of the field. | |
| virtual void | swap ()=0 |
| Swap coordinates (implementation dependent). | |
| virtual void | getInfo (Inform *msg)=0 |
| Print info about the field map. | |
| virtual double | getFrequency () const =0 |
| Get the frequency. | |
| virtual void | setFrequency (double freq)=0 |
| Set the frequency. | |
| virtual void | setEdgeConstants (const double &bendAngle, const double &entranceAngle, const double &exitAngle) |
| virtual void | setFieldLength (const double &) |
| virtual void | get1DProfile1EngeCoeffs (std::vector< double > &engeCoeffsEntry, std::vector< double > &engeCoeffsExit) |
| virtual void | get1DProfile1EntranceParam (double &entranceParameter1, double &entranceParameter2, double &entranceParameter3) |
| virtual void | get1DProfile1ExitParam (double &exitParameter1, double &exitParameter2, double &exitParameter3) |
| virtual double | getFieldGap () |
| virtual void | setFieldGap (double gap) |
| MapType | getType () |
| virtual void | getOnaxisEz (std::vector< std::pair< double, double > > &onaxis) |
| virtual bool | isInside (const Vector_t< double, 3 > &) const =0 |
| Check if a point is inside the field map. | |
| virtual void | readMap ()=0 |
| Pure virtual method to read the map data. Called by the public static readMap(). | |
| virtual void | freeMap ()=0 |
| Pure virtual method to free the map data. | |
| template<class T > | |
| bool | interpretLine (std::ifstream &in, T &value, const bool &file_length_known) |
| Parses a single value of type T from a line in the stream. | |
Static Public Member Functions | |
| static Fieldmap * | getFieldmap (std::string Filename, bool fast=false) |
| Get a field map instance. Use this factory method to obtain a field map. It checks the cache (FieldmapDictionary) first. | |
| static std::vector< std::string > | getListFieldmapNames () |
| Get a list of all loaded field map names. | |
| static void | deleteFieldmap (std::string Filename) |
| Delete a specific field map from the cache and memory. | |
| static void | clearDictionary () |
| Clear the entire field map cache. | |
| static MapType | readHeader (std::string Filename) |
| Read the header of a field map file to determine its type. | |
| static void | readMap (std::string Filename) |
| Trigger the actual reading of the field map data. | |
| static void | freeMap (std::string Filename) |
| Decrease reference count or delete field map if unused. | |
| static std::string | typeset_msg (const std::string &msg, const std::string &title) |
Protected Member Functions | |
| Fieldmap ()=delete | |
| Fieldmap (const std::string &aFilename) | |
| virtual | ~Fieldmap () |
| void | getLine (std::ifstream &in, std::string &buffer) |
| template<class S > | |
| bool | interpretLine (std::ifstream &in, S &value, const bool &file_length_known=true) |
| template<class S , class T > | |
| bool | interpretLine (std::ifstream &in, S &value1, T &value2, const bool &file_length_known=true) |
| Parses two values (types S, T) from a line. | |
| template<class S , class T , class U > | |
| bool | interpretLine (std::ifstream &in, S &value1, T &value2, U &value3, const bool &file_length_known=true) |
| Parses three values (types S, T, U) from a line. | |
| template<class S , class T , class U , class V > | |
| bool | interpretLine (std::ifstream &in, S &value1, T &value2, U &value3, V &value4, const bool &file_length_known=true) |
| Parses four values (types S, T, U, V) from a line. | |
| template<class S > | |
| bool | interpretLine (std::ifstream &in, S &value1, S &value2, S &value3, S &value4, S &value5, S &value6, const bool &file_length_known=true) |
| Parses six values of the same type S from a line. | |
| bool | interpreteEOF (std::ifstream &in) |
| void | interpretWarning (const std::ios_base::iostate &state, const bool &read_all, const std::string &error_msg, const std::string &found) |
| void | missingValuesWarning () |
| void | exceedingValuesWarning () |
| void | disableFieldmapWarning () |
| void | noFieldmapWarning () |
| void | lowResolutionWarning (double squareError, double maxError) |
| 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 | checkMap (unsigned int accuracy, double length, const std::vector< double > &zSampling, const std::vector< double > &fourierCoefficients, gsl_spline *splineCoefficients, gsl_interp_accel *splineAccelerator) |
| 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) |
Static Protected Member Functions | |
| static void | getLine (std::ifstream &in, int &lines_read, std::string &buffer) |
Protected Attributes | |
| MapType | Type |
| std::string | Filename_m |
| int | lines_read_m |
| bool | normalize_m |
Static Private Attributes | |
| static char | buffer_m [256] |
| static std::string | alpha_numeric |
| static std::map< std::string, FieldmapDescription > | FieldmapDictionary |
Abstract base class for all field maps. It acts as a factory for creating specific field map types based on the file content and manages a cache of loaded field maps.
Definition at line 62 of file Fieldmap.h.
|
protecteddelete |
|
inlineprotected |
Definition at line 227 of file Fieldmap.h.
|
inlineprotectedvirtual |
Definition at line 230 of file Fieldmap.h.
|
pure virtual |
Apply the FM to all the particles.
| pc | Particle container |
| scale | Scaling factor applied to the field (default 1.0) |
Implemented in Astra1DMagnetoStatic, FM2DMagnetoStatic, Astra1DDynamic, FM2DDynamic, FakeFieldmap, and FakeTWFieldmap.
Referenced by Solenoid::apply().
|
protected |
Definition at line 346 of file Fieldmap.cpp.
References checkMap(), Util::combineFilePath(), Filename_m, OpalData::getInstance(), gsl_spline_eval(), lowResolutionWarning(), and Physics::two_pi.

|
protected |
Definition at line 330 of file Fieldmap.cpp.
References checkMap().
Referenced by checkMap(), and checkMap().

|
static |
Clear the entire field map cache.
Definition at line 160 of file Fieldmap.cpp.
References clearDictionary(), and FieldmapDictionary.
Referenced by clearDictionary().

|
static |
Delete a specific field map from the cache and memory.
| Filename | The filename of the map to delete. |
Definition at line 158 of file Fieldmap.cpp.
References deleteFieldmap(), and freeMap().
Referenced by deleteFieldmap().

|
protected |
Definition at line 489 of file Fieldmap.cpp.
References disableFieldmapWarning(), and Filename_m.
Referenced by Astra1DDynamic::Astra1DDynamic(), Astra1DMagnetoStatic::Astra1DMagnetoStatic(), disableFieldmapWarning(), FM2DDynamic::FM2DDynamic(), and FM2DMagnetoStatic::FM2DMagnetoStatic().

|
protected |
Definition at line 479 of file Fieldmap.cpp.
References exceedingValuesWarning(), Filename_m, and lines_read_m.
Referenced by exceedingValuesWarning(), and interpreteEOF().

|
pure virtual |
Pure virtual method to free the map data.
Implemented in Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, FM2DMagnetoStatic, FakeFieldmap, and FakeTWFieldmap.
Referenced by deleteFieldmap().
|
static |
Decrease reference count or delete field map if unused.
| Filename | The file to free. |
Definition at line 311 of file Fieldmap.cpp.
References FieldmapDictionary, and freeMap().
Referenced by freeMap(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().

|
virtual |
Definition at line 590 of file Fieldmap.cpp.
References get1DProfile1EngeCoeffs().
Referenced by get1DProfile1EngeCoeffs().

|
virtual |
Definition at line 593 of file Fieldmap.cpp.
References get1DProfile1EntranceParam().
Referenced by get1DProfile1EntranceParam().

|
virtual |
Definition at line 597 of file Fieldmap.cpp.
References get1DProfile1ExitParam().
Referenced by get1DProfile1ExitParam().

|
pure virtual |
Get the field derivative with respect to a direction.
| R | Position [m]. |
| E | Output derivative of Electric field. |
| B | Output derivative of Magnetic field. |
| dir | Direction of derivative (DX, DY, DZ). |
Implemented in FakeFieldmap, FakeTWFieldmap, Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, and FM2DMagnetoStatic.
|
pure virtual |
Get the full 3D bounding box of the field.
| xIni | Output minimum x [m]. |
| xFinal | Output maximum x [m]. |
| yIni | Output minimum y [m]. |
| yFinal | Output maximum y [m]. |
| zIni | Output minimum z [m]. |
| zFinal | Output maximum z [m]. |
Implemented in Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, FM2DMagnetoStatic, FakeTWFieldmap, and FakeFieldmap.
|
pure virtual |
Get the longitudinal dimensions of the field.
| zBegin | Output start of field [m]. |
| zEnd | Output end of field [m]. |
Implemented in Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, FM2DMagnetoStatic, FakeFieldmap, and FakeTWFieldmap.
Referenced by Solenoid::getSupportEnvelope(), RFCavity::initialise(), Solenoid::initialise(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().
|
virtual |
Definition at line 600 of file Fieldmap.cpp.
References getFieldGap().
Referenced by getFieldGap().

|
static |
Get a field map instance. Use this factory method to obtain a field map. It checks the cache (FieldmapDictionary) first.
Factory method to obtain a Fieldmap instance.
| Filename | The path to the field map file. |
| fast | If true, load a "fast" version if available (implementation dependent). |
Checks the FieldmapDictionary cache to see if the file is already loaded. If not, it calls readHeader() to determine the map type, instantiates the corresponding subclass, and adds it to the dictionary.
| Filename | Absolute path to the fieldmap file. |
| fast | Not implemented. Previously attempted to load a "fast" version. |
Found matching entry?
Return fieldmap pointer
Determine fieldmap type
Based on type:
Definition at line 72 of file Fieldmap.cpp.
References FieldmapDictionary, getFieldmap(), readHeader(), T2DDynamic, T2DMagnetoStatic, TAstraDynamic, and TAstraMagnetoStatic.
Referenced by getFieldmap().

|
pure virtual |
Get the field strength at a given point.
| R | Position [m] relative to the field map origin. |
| E | Output Electric field [MV/m]. |
| B | Output Magnetic field [T]. |
Implemented in FakeFieldmap, FakeTWFieldmap, Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, and FM2DMagnetoStatic.
Referenced by RFCavity::apply(), Solenoid::apply(), TravelingWave::apply(), RFCavity::applyToReferenceParticle(), Solenoid::applyToReferenceParticle(), TravelingWave::applyToReferenceParticle(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().
|
pure virtual |
Get the frequency.
Implemented in Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, FM2DMagnetoStatic, FakeFieldmap, and FakeTWFieldmap.
Referenced by RFCavity::initialise(), TEST_F(), and TEST_F().
|
pure virtual |
Print info about the field map.
Implemented in FakeFieldmap, FakeTWFieldmap, Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, and FM2DMagnetoStatic.
Referenced by RFCavity::initialise(), Solenoid::initialise(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().
|
staticprotected |
Definition at line 414 of file Fieldmap.cpp.
References alpha_numeric, buffer_m, getLine(), and READ_BUFFER_LENGTH.

|
inlineprotected |
Definition at line 237 of file Fieldmap.h.
References getLine(), and lines_read_m.
Referenced by getLine(), getLine(), interpretLine(), interpretLine(), interpretLine(), interpretLine(), interpretLine(), readHeader(), Astra1DDynamic::readMap(), Astra1DMagnetoStatic::readMap(), FM2DDynamic::readMap(), and FM2DMagnetoStatic::readMap().

|
static |
Get a list of all loaded field map names.
Definition at line 149 of file Fieldmap.cpp.
References FieldmapDictionary, and getListFieldmapNames().
Referenced by getListFieldmapNames().

|
virtual |
Reimplemented in Astra1DDynamic, FM2DDynamic, and FakeTWFieldmap.
Definition at line 588 of file Fieldmap.cpp.
References getOnaxisEz().
Referenced by RFCavity::getAutoPhaseEstimate(), TravelingWave::getAutoPhaseEstimate(), and getOnaxisEz().

|
inline |
|
protected |
Definition at line 436 of file Fieldmap.cpp.
References alpha_numeric, buffer_m, exceedingValuesWarning(), interpreteEOF(), lines_read_m, and READ_BUFFER_LENGTH.
Referenced by FM2DDynamic::FM2DDynamic(), FM2DMagnetoStatic::FM2DMagnetoStatic(), and interpreteEOF().

|
protected |
Referenced by interpretLine(), interpretLine(), interpretLine(), interpretLine(), and interpretLine().
|
protected |
Parses six values of the same type S from a line.
Definition at line 176 of file Fieldmap.hpp.
References getLine(), interpretLine(), interpretWarning(), and missingValuesWarning().

|
protected |
Parses two values (types S, T) from a line.
Definition at line 55 of file Fieldmap.hpp.
References getLine(), interpretLine(), interpretWarning(), and missingValuesWarning().

|
protected |
Parses three values (types S, T, U) from a line.
Definition at line 92 of file Fieldmap.hpp.
References getLine(), interpretLine(), interpretWarning(), and missingValuesWarning().

|
protected |
Parses four values (types S, T, U, V) from a line.
Definition at line 132 of file Fieldmap.hpp.
References getLine(), interpretLine(), interpretWarning(), and missingValuesWarning().

| bool Fieldmap::interpretLine | ( | std::ifstream & | in, |
| T & | value, | ||
| const bool & | file_length_known | ||
| ) |
Parses a single value of type T from a line in the stream.
Reads a line using getLine(), then attempts to extract one value. Validates that the extraction matches the type and that no unexpected data remains on the line.
| in | Input file stream. |
| value | Output variable reference. |
| file_length_known | If false, EOF is acceptable. |
Definition at line 23 of file Fieldmap.hpp.
References getLine(), interpretLine(), interpretWarning(), and missingValuesWarning().

|
protected |
Definition at line 452 of file Fieldmap.cpp.
References Filename_m, interpretWarning(), and lines_read_m.
Referenced by interpretLine(), interpretLine(), interpretLine(), interpretLine(), interpretLine(), and interpretWarning().

|
pure virtual |
Check if a point is inside the field map.
Implemented in FakeFieldmap, FakeTWFieldmap, Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, and FM2DMagnetoStatic.
Referenced by TravelingWave::apply(), TravelingWave::applyToReferenceParticle(), RFCavity::isInside(), and Solenoid::isInside().
|
protected |
Definition at line 503 of file Fieldmap.cpp.
References Filename_m, OpalData::getAuxiliaryOutputDirectory(), OpalData::getInstance(), lowResolutionWarning(), and typeset_msg().
Referenced by checkMap(), and lowResolutionWarning().

|
protected |
Definition at line 470 of file Fieldmap.cpp.
References Filename_m, lines_read_m, and missingValuesWarning().
Referenced by interpretLine(), interpretLine(), interpretLine(), interpretLine(), interpretLine(), and missingValuesWarning().

|
protected |
Definition at line 496 of file Fieldmap.cpp.
References Filename_m, and noFieldmapWarning().
Referenced by Astra1DDynamic::Astra1DDynamic(), Astra1DMagnetoStatic::Astra1DMagnetoStatic(), FM2DDynamic::FM2DDynamic(), FM2DMagnetoStatic::FM2DMagnetoStatic(), and noFieldmapWarning().

|
static |
Read the header of a field map file to determine its type.
Determines the fieldmap type.
| Filename | The file to check. |
Definition at line 174 of file Fieldmap.cpp.
References getLine(), lines_read_m, readHeader(), T1DDynamic, T1DElectroStatic, T1DMagnetoStatic, T1DProfile1, T2DDynamic, T2DElectroStatic, T2DMagnetoStatic, T3DDynamic, T3DDynamicH5Block, T3DElectroStatic, T3DMagnetoStatic, T3DMagnetoStatic_Extended, T3DMagnetoStaticH5Block, TAstraDynamic, TAstraElectroStatic, TAstraMagnetoStatic, and UNKNOWN.
Referenced by getFieldmap(), and readHeader().

|
pure virtual |
Pure virtual method to read the map data. Called by the public static readMap().
Implemented in Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, FM2DMagnetoStatic, FakeFieldmap, and FakeTWFieldmap.
|
static |
Trigger the actual reading of the field map data.
| Filename | The file to read. |
Definition at line 301 of file Fieldmap.cpp.
References FieldmapDictionary, and readMap().
Referenced by readMap(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().

|
virtual |
Definition at line 408 of file Fieldmap.cpp.
References setEdgeConstants().
Referenced by setEdgeConstants().

|
virtual |
Definition at line 602 of file Fieldmap.cpp.
References setFieldGap().
Referenced by setFieldGap().

|
virtual |
Definition at line 412 of file Fieldmap.cpp.
References setFieldLength().
Referenced by setFieldLength().

|
pure virtual |
Set the frequency.
| freq | Frequency [MHz]. |
Implemented in Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, FM2DMagnetoStatic, FakeFieldmap, and FakeTWFieldmap.
|
pure virtual |
Swap coordinates (implementation dependent).
Implemented in Astra1DDynamic, Astra1DMagnetoStatic, FM2DDynamic, FM2DMagnetoStatic, FakeFieldmap, and FakeTWFieldmap.
|
static |
Definition at line 527 of file Fieldmap.cpp.
References typeset_msg().
Referenced by FM2DMagnetoStatic::freeMap(), lowResolutionWarning(), FM2DMagnetoStatic::readMap(), and typeset_msg().

|
protected |
Definition at line 604 of file Fieldmap.cpp.
References Util::combineFilePath(), Filename_m, OpalData::getAuxiliaryOutputDirectory(), OpalData::getInstance(), and write3DField().
Referenced by write3DField().

|
staticprivate |
Definition at line 302 of file Fieldmap.h.
Referenced by getLine(), and interpreteEOF().
|
staticprivate |
Definition at line 301 of file Fieldmap.h.
Referenced by getLine(), and interpreteEOF().
|
staticprivate |
Definition at line 313 of file Fieldmap.h.
Referenced by clearDictionary(), freeMap(), getFieldmap(), getListFieldmapNames(), and readMap().
|
protected |
Definition at line 233 of file Fieldmap.h.
Referenced by Astra1DDynamic::Astra1DDynamic(), Astra1DMagnetoStatic::Astra1DMagnetoStatic(), checkMap(), disableFieldmapWarning(), exceedingValuesWarning(), FM2DDynamic::FM2DDynamic(), FM2DMagnetoStatic::FM2DMagnetoStatic(), Astra1DDynamic::freeMap(), Astra1DMagnetoStatic::freeMap(), FM2DDynamic::freeMap(), FM2DMagnetoStatic::freeMap(), Astra1DDynamic::getInfo(), Astra1DMagnetoStatic::getInfo(), FM2DDynamic::getInfo(), FM2DMagnetoStatic::getInfo(), Astra1DDynamic::getOnaxisEz(), interpretWarning(), lowResolutionWarning(), missingValuesWarning(), noFieldmapWarning(), Astra1DDynamic::readMap(), Astra1DMagnetoStatic::readMap(), FM2DDynamic::readMap(), FM2DMagnetoStatic::readMap(), and write3DField().
|
protected |
Definition at line 234 of file Fieldmap.h.
Referenced by Astra1DDynamic::Astra1DDynamic(), Astra1DMagnetoStatic::Astra1DMagnetoStatic(), exceedingValuesWarning(), FM2DDynamic::FM2DDynamic(), FM2DMagnetoStatic::FM2DMagnetoStatic(), getLine(), interpreteEOF(), interpretWarning(), missingValuesWarning(), and readHeader().
|
protected |
Definition at line 236 of file Fieldmap.h.
Referenced by Astra1DDynamic::Astra1DDynamic(), Astra1DMagnetoStatic::Astra1DMagnetoStatic(), FM2DDynamic::FM2DDynamic(), FM2DMagnetoStatic::FM2DMagnetoStatic(), Astra1DDynamic::readMap(), Astra1DMagnetoStatic::readMap(), FM2DDynamic::readMap(), and FM2DMagnetoStatic::readMap().
|
protected |
Definition at line 231 of file Fieldmap.h.
Referenced by Astra1DDynamic::Astra1DDynamic(), Astra1DMagnetoStatic::Astra1DMagnetoStatic(), FM2DDynamic::FM2DDynamic(), FM2DMagnetoStatic::FM2DMagnetoStatic(), and getType().