OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
FM1DDynamic Class Reference

#include <FM1DDynamic.h>

Inheritance diagram for FM1DDynamic:
Inheritance graph
[legend]
Collaboration diagram for FM1DDynamic:
Collaboration graph
[legend]

Public Member Functions

virtual bool getFieldstrength (const Vector_t &R, Vector_t &E, Vector_t &B) const
 
virtual bool getFieldDerivative (const Vector_t &R, Vector_t &E, Vector_t &B, const DiffDirection &dir) const
 
virtual void getFieldDimensions (double &zBegin, double &zEnd) const
 
virtual void getFieldDimensions (double &xIni, double &xFinal, double &yIni, double &yFinal, double &zIni, double &zFinal) const
 
virtual void swap ()
 
virtual void getInfo (Inform *)
 
virtual double getFrequency () const
 
virtual void setFrequency (double freq)
 
virtual void getOnaxisEz (std::vector< std::pair< double, double >> &eZ)
 
virtual bool isInside (const Vector_t &r) const
 
- Public Member Functions inherited from Fieldmap
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)
 
template<class T >
bool interpretLine (std::ifstream &in, T &value, const bool &file_length_known)
 

Private Member Functions

 FM1DDynamic (std::string aFilename)
 
 ~FM1DDynamic ()
 
virtual void readMap ()
 
virtual void freeMap ()
 
bool checkFileData (std::ifstream &fieldFile, bool parsingPassed)
 
void computeFieldOffAxis (const Vector_t &R, Vector_t &E, Vector_t &B, std::vector< double > fieldComponents) const
 
void computeFieldOnAxis (double z, std::vector< double > &fieldComponents) const
 
void computeFourierCoefficients (double maxEz, double fieldData[])
 
void convertHeaderData ()
 
double readFileData (std::ifstream &fieldFile, double fieldData[])
 
double readFileData (std::ifstream &fieldFile, std::vector< std::pair< double, double >> &eZ)
 
bool readFileHeader (std::ifstream &fieldFile)
 
void scaleField (double maxEz, std::vector< std::pair< double, double >> &eZ)
 
void stripFileHeader (std::ifstream &fieldFile)
 

Private Attributes

double frequency_m
 
double twoPiOverLambdaSq_m
 Field angular frequency (Hz). More...
 
double rBegin_m
 2 Pi divided by the field RF wavelength squared. More...
 
double rEnd_m
 Minimum radius of field. More...
 
double zBegin_m
 Maximum radius of field. More...
 
double zEnd_m
 Longitudinal start of field. More...
 
double length_m
 Longitudinal end of field. More...
 
int numberOfGridPoints_m
 Field length. More...
 
int accuracy_m
 Number of grid points in field input file. More...
 
std::vector< double > fourierCoefs_m
 Number of Fourier coefficients to use reconstructing field. More...
 

Friends

class Fieldmap
 Fourier coefficients derived from field map. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Fieldmap
static FieldmapgetFieldmap (std::string Filename, bool fast=false)
 
static std::vector< std::string > getListFieldmapNames ()
 
static void deleteFieldmap (std::string Filename)
 
static void clearDictionary ()
 
static MapType readHeader (std::string Filename)
 
static void readMap (std::string Filename)
 
static void freeMap (std::string Filename)
 
static std::string typeset_msg (const std::string &msg, const std::string &title)
 
- Protected Member Functions inherited from Fieldmap
 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)
 
template<class S , class T , class U >
bool interpretLine (std::ifstream &in, S &value1, T &value2, U &value3, const bool &file_length_known=true)
 
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)
 
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)
 
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 > &ef, const std::vector< Vector_t > &bf)
 
- Static Protected Member Functions inherited from Fieldmap
static void getLine (std::ifstream &in, int &lines_read, std::string &buffer)
 
- Protected Attributes inherited from Fieldmap
MapType Type
 
std::string Filename_m
 
int lines_read_m
 
bool normalize_m
 

Detailed Description

Definition at line 6 of file FM1DDynamic.h.

Constructor & Destructor Documentation

◆ FM1DDynamic()

FM1DDynamic::FM1DDynamic ( std::string  aFilename)
private

◆ ~FM1DDynamic()

FM1DDynamic::~FM1DDynamic ( )
private

Definition at line 40 of file FM1DDynamic.cpp.

References freeMap().

Here is the call graph for this function:

Member Function Documentation

◆ checkFileData()

bool FM1DDynamic::checkFileData ( std::ifstream &  fieldFile,
bool  parsingPassed 
)
private

Definition at line 143 of file FM1DDynamic.cpp.

References Fieldmap::interpreteEOF(), and numberOfGridPoints_m.

Referenced by FM1DDynamic().

Here is the call graph for this function:

◆ computeFieldOffAxis()

void FM1DDynamic::computeFieldOffAxis ( const Vector_t R,
Vector_t E,
Vector_t B,
std::vector< double >  fieldComponents 
) const
private

Definition at line 154 of file FM1DDynamic.cpp.

References frequency_m, pow(), Attrib::Distribution::R, and twoPiOverLambdaSq_m.

Referenced by getFieldstrength().

Here is the call graph for this function:

◆ computeFieldOnAxis()

void FM1DDynamic::computeFieldOnAxis ( double  z,
std::vector< double > &  fieldComponents 
) const
private

Definition at line 179 of file FM1DDynamic.cpp.

References accuracy_m, cos(), fourierCoefs_m, length_m, Hypervolume::n, Physics::pi, pow(), sin(), and Physics::two_pi.

Referenced by getFieldstrength().

Here is the call graph for this function:

◆ computeFourierCoefficients()

void FM1DDynamic::computeFourierCoefficients ( double  maxEz,
double  fieldData[] 
)
private

Definition at line 212 of file FM1DDynamic.cpp.

References accuracy_m, fourierCoefs_m, and numberOfGridPoints_m.

Referenced by readMap().

◆ convertHeaderData()

void FM1DDynamic::convertHeaderData ( )
private

Definition at line 233 of file FM1DDynamic.cpp.

References Physics::c, frequency_m, pow(), rBegin_m, rEnd_m, Physics::two_pi, twoPiOverLambdaSq_m, zBegin_m, and zEnd_m.

Referenced by FM1DDynamic().

Here is the call graph for this function:

◆ freeMap()

void FM1DDynamic::freeMap ( )
privatevirtual

Implements Fieldmap.

Definition at line 61 of file FM1DDynamic.cpp.

References endl(), Fieldmap::Filename_m, fourierCoefs_m, INFOMSG, and Fieldmap::typeset_msg().

Referenced by ~FM1DDynamic().

Here is the call graph for this function:

◆ getFieldDerivative()

bool FM1DDynamic::getFieldDerivative ( const Vector_t R,
Vector_t E,
Vector_t B,
const DiffDirection dir 
) const
virtual

Implements Fieldmap.

Definition at line 81 of file FM1DDynamic.cpp.

References accuracy_m, cos(), fourierCoefs_m, length_m, Hypervolume::n, Physics::pi, Attrib::Distribution::R, sin(), Physics::two_pi, and zBegin_m.

Here is the call graph for this function:

◆ getFieldDimensions() [1/2]

void FM1DDynamic::getFieldDimensions ( double &  xIni,
double &  xFinal,
double &  yIni,
double &  yFinal,
double &  zIni,
double &  zFinal 
) const
virtual

Implements Fieldmap.

Definition at line 109 of file FM1DDynamic.cpp.

◆ getFieldDimensions() [2/2]

void FM1DDynamic::getFieldDimensions ( double &  zBegin,
double &  zEnd 
) const
virtual

Implements Fieldmap.

Definition at line 104 of file FM1DDynamic.cpp.

References zBegin_m, and zEnd_m.

◆ getFieldstrength()

bool FM1DDynamic::getFieldstrength ( const Vector_t R,
Vector_t E,
Vector_t B 
) const
virtual

Implements Fieldmap.

Definition at line 71 of file FM1DDynamic.cpp.

References computeFieldOffAxis(), computeFieldOnAxis(), Attrib::Distribution::R, and zBegin_m.

Here is the call graph for this function:

◆ getFrequency()

double FM1DDynamic::getFrequency ( ) const
virtual

Implements Fieldmap.

Definition at line 124 of file FM1DDynamic.cpp.

References frequency_m.

◆ getInfo()

void FM1DDynamic::getInfo ( Inform msg)
virtual

Implements Fieldmap.

Definition at line 117 of file FM1DDynamic.cpp.

References endl(), Fieldmap::Filename_m, zBegin_m, and zEnd_m.

Here is the call graph for this function:

◆ getOnaxisEz()

void FM1DDynamic::getOnaxisEz ( std::vector< std::pair< double, double >> &  eZ)
virtual

Definition at line 132 of file FM1DDynamic.cpp.

References Fieldmap::Filename_m, numberOfGridPoints_m, readFileData(), scaleField(), and stripFileHeader().

Here is the call graph for this function:

◆ isInside()

bool FM1DDynamic::isInside ( const Vector_t r) const
inlinevirtual

Reimplemented from Fieldmap.

Definition at line 60 of file FM1DDynamic.h.

References zBegin_m, and zEnd_m.

◆ readFileData() [1/2]

double FM1DDynamic::readFileData ( std::ifstream &  fieldFile,
double  fieldData[] 
)
private

Definition at line 247 of file FM1DDynamic.cpp.

References abs(), Fieldmap::normalize_m, and numberOfGridPoints_m.

Referenced by getOnaxisEz(), and readMap().

Here is the call graph for this function:

◆ readFileData() [2/2]

double FM1DDynamic::readFileData ( std::ifstream &  fieldFile,
std::vector< std::pair< double, double >> &  eZ 
)
private

Definition at line 271 of file FM1DDynamic.cpp.

References abs(), Fieldmap::normalize_m, numberOfGridPoints_m, zBegin_m, and zEnd_m.

Here is the call graph for this function:

◆ readFileHeader()

bool FM1DDynamic::readFileHeader ( std::ifstream &  fieldFile)
private

Definition at line 289 of file FM1DDynamic.cpp.

References accuracy_m, Physics::e, frequency_m, Fieldmap::normalize_m, numberOfGridPoints_m, rBegin_m, rEnd_m, Util::toUpper(), zBegin_m, and zEnd_m.

Referenced by FM1DDynamic().

Here is the call graph for this function:

◆ readMap()

void FM1DDynamic::readMap ( )
privatevirtual

Implements Fieldmap.

Definition at line 44 of file FM1DDynamic.cpp.

References computeFourierCoefficients(), endl(), Fieldmap::Filename_m, fourierCoefs_m, INFOMSG, numberOfGridPoints_m, readFileData(), stripFileHeader(), and Fieldmap::typeset_msg().

Here is the call graph for this function:

◆ scaleField()

void FM1DDynamic::scaleField ( double  maxEz,
std::vector< std::pair< double, double >> &  eZ 
)
private

Definition at line 336 of file FM1DDynamic.cpp.

References numberOfGridPoints_m.

Referenced by getOnaxisEz().

◆ setFrequency()

void FM1DDynamic::setFrequency ( double  freq)
virtual

Implements Fieldmap.

Definition at line 128 of file FM1DDynamic.cpp.

References frequency_m.

◆ stripFileHeader()

void FM1DDynamic::stripFileHeader ( std::ifstream &  fieldFile)
private

Definition at line 341 of file FM1DDynamic.cpp.

References Fieldmap::getLine().

Referenced by getOnaxisEz(), and readMap().

Here is the call graph for this function:

◆ swap()

void FM1DDynamic::swap ( )
virtual

Implements Fieldmap.

Definition at line 114 of file FM1DDynamic.cpp.

Friends And Related Function Documentation

◆ Fieldmap

friend class Fieldmap
friend

Fourier coefficients derived from field map.

Definition at line 57 of file FM1DDynamic.h.

Member Data Documentation

◆ accuracy_m

int FM1DDynamic::accuracy_m
private

Number of grid points in field input file.

Definition at line 54 of file FM1DDynamic.h.

Referenced by computeFieldOnAxis(), computeFourierCoefficients(), getFieldDerivative(), and readFileHeader().

◆ fourierCoefs_m

std::vector<double> FM1DDynamic::fourierCoefs_m
private

Number of Fourier coefficients to use reconstructing field.

Definition at line 55 of file FM1DDynamic.h.

Referenced by computeFieldOnAxis(), computeFourierCoefficients(), freeMap(), getFieldDerivative(), and readMap().

◆ frequency_m

double FM1DDynamic::frequency_m
private

◆ length_m

double FM1DDynamic::length_m
private

Longitudinal end of field.

Definition at line 51 of file FM1DDynamic.h.

Referenced by computeFieldOnAxis(), FM1DDynamic(), and getFieldDerivative().

◆ numberOfGridPoints_m

int FM1DDynamic::numberOfGridPoints_m
private

◆ rBegin_m

double FM1DDynamic::rBegin_m
private

2 Pi divided by the field RF wavelength squared.

Definition at line 47 of file FM1DDynamic.h.

Referenced by convertHeaderData(), and readFileHeader().

◆ rEnd_m

double FM1DDynamic::rEnd_m
private

Minimum radius of field.

Definition at line 48 of file FM1DDynamic.h.

Referenced by convertHeaderData(), and readFileHeader().

◆ twoPiOverLambdaSq_m

double FM1DDynamic::twoPiOverLambdaSq_m
private

Field angular frequency (Hz).

Definition at line 45 of file FM1DDynamic.h.

Referenced by computeFieldOffAxis(), and convertHeaderData().

◆ zBegin_m

double FM1DDynamic::zBegin_m
private

◆ zEnd_m

double FM1DDynamic::zEnd_m
private

Longitudinal start of field.

Definition at line 50 of file FM1DDynamic.h.

Referenced by convertHeaderData(), FM1DDynamic(), getFieldDimensions(), getInfo(), isInside(), readFileData(), and readFileHeader().


The documentation for this class was generated from the following files: