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

#include <FM3DMagnetoStaticExtended.h>

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

Classes

struct  IndexTriplet
 

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 *msg)
 
virtual double getFrequency () const
 
virtual void setFrequency (double freq)
 
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 Types

enum  {
  LX = 0 , LY = 0 , LZ = 0 , HX = 4 ,
  HY = 2 , HZ = 1
}
 

Private Member Functions

 FM3DMagnetoStaticExtended (std::string aFilename)
 
 ~FM3DMagnetoStaticExtended ()
 
virtual void readMap ()
 
virtual void freeMap ()
 
IndexTriplet getIndex (const Vector_t &X) const
 
unsigned long getIndex (unsigned int i, unsigned int j, unsigned int k) const
 
Vector_t interpolateTrilinearly (const Vector_t &X) const
 
double getWeightedData (double *data, const IndexTriplet &idx, unsigned short corner) const
 
void integrateBx (unsigned j)
 
void integrateBz (unsigned j)
 
void integrateBy (unsigned j)
 
void smoothData (double *data, unsigned j)
 
void saveField (const std::string &fname, unsigned int j) const
 

Private Attributes

double * FieldstrengthBx_m
 
double * FieldstrengthBy_m
 
double * FieldstrengthBz_m
 
double xbegin_m
 
double xend_m
 
double ybegin_m
 
double yend_m
 
double zbegin_m
 
double zend_m
 
double length_m
 
double hx_m
 
double hy_m
 
double hz_m
 
unsigned int num_gridpx_m
 
unsigned int num_gridpy_m
 
unsigned int num_gridpz_m
 

Friends

class Fieldmap
 

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 FM3DMagnetoStaticExtended.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
LX 
LY 
LZ 
HX 
HY 
HZ 

Definition at line 44 of file FM3DMagnetoStaticExtended.h.

Constructor & Destructor Documentation

◆ FM3DMagnetoStaticExtended()

FM3DMagnetoStaticExtended::FM3DMagnetoStaticExtended ( std::string  aFilename)
private

◆ ~FM3DMagnetoStaticExtended()

FM3DMagnetoStaticExtended::~FM3DMagnetoStaticExtended ( )
private

Definition at line 89 of file FM3DMagnetoStaticExtended.cpp.

References freeMap().

Here is the call graph for this function:

Member Function Documentation

◆ freeMap()

void FM3DMagnetoStaticExtended::freeMap ( )
privatevirtual

Implements Fieldmap.

Definition at line 626 of file FM3DMagnetoStaticExtended.cpp.

References endl(), FieldstrengthBx_m, FieldstrengthBy_m, FieldstrengthBz_m, Fieldmap::Filename_m, INFOMSG, level3(), and Fieldmap::typeset_msg().

Referenced by ~FM3DMagnetoStaticExtended().

Here is the call graph for this function:

◆ getFieldDerivative()

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

Implements Fieldmap.

Definition at line 697 of file FM3DMagnetoStaticExtended.cpp.

◆ getFieldDimensions() [1/2]

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

Implements Fieldmap.

Definition at line 706 of file FM3DMagnetoStaticExtended.cpp.

References xbegin_m, xend_m, yend_m, zbegin_m, and zend_m.

◆ getFieldDimensions() [2/2]

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

Implements Fieldmap.

Definition at line 701 of file FM3DMagnetoStaticExtended.cpp.

References zbegin_m, and zend_m.

◆ getFieldstrength()

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

Implements Fieldmap.

Definition at line 685 of file FM3DMagnetoStaticExtended.cpp.

References copysign(), interpolateTrilinearly(), isInside(), and Attrib::Distribution::R.

Here is the call graph for this function:

◆ getFrequency()

double FM3DMagnetoStaticExtended::getFrequency ( ) const
virtual

Implements Fieldmap.

Definition at line 722 of file FM3DMagnetoStaticExtended.cpp.

◆ getIndex() [1/2]

FM3DMagnetoStaticExtended::IndexTriplet FM3DMagnetoStaticExtended::getIndex ( const Vector_t X) const
inlineprivate

◆ getIndex() [2/2]

unsigned long FM3DMagnetoStaticExtended::getIndex ( unsigned int  i,
unsigned int  j,
unsigned int  k 
) const
inlineprivate

Definition at line 87 of file FM3DMagnetoStaticExtended.h.

References num_gridpx_m, num_gridpy_m, num_gridpz_m, and PAssert_LT.

◆ getInfo()

void FM3DMagnetoStaticExtended::getInfo ( Inform msg)
virtual

Implements Fieldmap.

Definition at line 718 of file FM3DMagnetoStaticExtended.cpp.

References endl(), Fieldmap::Filename_m, zbegin_m, and zend_m.

Here is the call graph for this function:

◆ getWeightedData()

double FM3DMagnetoStaticExtended::getWeightedData ( double *  data,
const IndexTriplet idx,
unsigned short  corner 
) const
private

◆ integrateBx()

void FM3DMagnetoStaticExtended::integrateBx ( unsigned  j)
private

Definition at line 157 of file FM3DMagnetoStaticExtended.cpp.

References FieldstrengthBx_m, FieldstrengthBy_m, getIndex(), hx_m, hy_m, num_gridpx_m, and num_gridpz_m.

Referenced by readMap().

Here is the call graph for this function:

◆ integrateBy()

void FM3DMagnetoStaticExtended::integrateBy ( unsigned  j)
private

Definition at line 282 of file FM3DMagnetoStaticExtended.cpp.

References FieldstrengthBx_m, FieldstrengthBy_m, FieldstrengthBz_m, getIndex(), hx_m, hy_m, hz_m, num_gridpx_m, and num_gridpz_m.

Referenced by readMap().

Here is the call graph for this function:

◆ integrateBz()

void FM3DMagnetoStaticExtended::integrateBz ( unsigned  j)
private

Definition at line 224 of file FM3DMagnetoStaticExtended.cpp.

References FieldstrengthBy_m, FieldstrengthBz_m, getIndex(), hy_m, hz_m, num_gridpx_m, and num_gridpz_m.

Referenced by readMap().

Here is the call graph for this function:

◆ interpolateTrilinearly()

Vector_t FM3DMagnetoStaticExtended::interpolateTrilinearly ( const Vector_t X) const
private

Definition at line 640 of file FM3DMagnetoStaticExtended.cpp.

References FieldstrengthBx_m, FieldstrengthBy_m, FieldstrengthBz_m, getIndex(), getWeightedData(), HX, HY, HZ, LX, LY, LZ, and X.

Referenced by getFieldstrength().

Here is the call graph for this function:

◆ isInside()

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

Reimplemented from Fieldmap.

Definition at line 81 of file FM3DMagnetoStaticExtended.h.

References abs(), length_m, xbegin_m, xend_m, and yend_m.

Referenced by getFieldstrength().

Here is the call graph for this function:

◆ readMap()

void FM3DMagnetoStaticExtended::readMap ( )
privatevirtual

◆ saveField()

void FM3DMagnetoStaticExtended::saveField ( const std::string &  fname,
unsigned int  j 
) const
private

Definition at line 604 of file FM3DMagnetoStaticExtended.cpp.

References FieldstrengthBx_m, FieldstrengthBy_m, FieldstrengthBz_m, getIndex(), hx_m, hy_m, hz_m, num_gridpx_m, num_gridpz_m, xbegin_m, and zbegin_m.

Here is the call graph for this function:

◆ setFrequency()

void FM3DMagnetoStaticExtended::setFrequency ( double  freq)
virtual

Implements Fieldmap.

Definition at line 726 of file FM3DMagnetoStaticExtended.cpp.

◆ smoothData()

void FM3DMagnetoStaticExtended::smoothData ( double *  data,
unsigned  j 
)
private

Definition at line 499 of file FM3DMagnetoStaticExtended.cpp.

References abs(), getIndex(), num_gridpx_m, num_gridpy_m, num_gridpz_m, pow(), and sum().

Referenced by readMap().

Here is the call graph for this function:

◆ swap()

void FM3DMagnetoStaticExtended::swap ( )
virtual

Implements Fieldmap.

Definition at line 715 of file FM3DMagnetoStaticExtended.cpp.

Friends And Related Function Documentation

◆ Fieldmap

friend class Fieldmap
friend

Definition at line 77 of file FM3DMagnetoStaticExtended.h.

Member Data Documentation

◆ FieldstrengthBx_m

double* FM3DMagnetoStaticExtended::FieldstrengthBx_m
private

3D array with Bx, read in first along z0 - r0 to rN then z1 - r0 to rN until zN - r0 to rN

Definition at line 59 of file FM3DMagnetoStaticExtended.h.

Referenced by freeMap(), integrateBx(), integrateBy(), interpolateTrilinearly(), readMap(), and saveField().

◆ FieldstrengthBy_m

double* FM3DMagnetoStaticExtended::FieldstrengthBy_m
private

3D array with By, read in like Bx

Definition at line 60 of file FM3DMagnetoStaticExtended.h.

Referenced by freeMap(), integrateBx(), integrateBy(), integrateBz(), interpolateTrilinearly(), readMap(), and saveField().

◆ FieldstrengthBz_m

double* FM3DMagnetoStaticExtended::FieldstrengthBz_m
private

3D array with Bz, read in like Bx

Definition at line 61 of file FM3DMagnetoStaticExtended.h.

Referenced by freeMap(), integrateBy(), integrateBz(), interpolateTrilinearly(), readMap(), and saveField().

◆ hx_m

double FM3DMagnetoStaticExtended::hx_m
private

length between points in grid, x-direction, m

Definition at line 70 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended(), getIndex(), integrateBx(), integrateBy(), readMap(), and saveField().

◆ hy_m

double FM3DMagnetoStaticExtended::hy_m
private

length between points in grid, y-direction, m

Definition at line 71 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended(), getIndex(), integrateBx(), integrateBy(), integrateBz(), and saveField().

◆ hz_m

double FM3DMagnetoStaticExtended::hz_m
private

length between points in grid, z-direction, m

Definition at line 72 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended(), getIndex(), integrateBy(), integrateBz(), and saveField().

◆ length_m

double FM3DMagnetoStaticExtended::length_m
private

Definition at line 69 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended(), and isInside().

◆ num_gridpx_m

unsigned int FM3DMagnetoStaticExtended::num_gridpx_m
private

Read in number of points after 0(not counted here) in grid, x-direction

Definition at line 73 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended(), getIndex(), integrateBx(), integrateBy(), integrateBz(), readMap(), saveField(), and smoothData().

◆ num_gridpy_m

unsigned int FM3DMagnetoStaticExtended::num_gridpy_m
private

Read in number of points after 0(not counted here) in grid, y-direction

Definition at line 74 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended(), getIndex(), readMap(), and smoothData().

◆ num_gridpz_m

unsigned int FM3DMagnetoStaticExtended::num_gridpz_m
private

Read in number of points after 0(not counted here) in grid, z-direction

Definition at line 75 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended(), getIndex(), integrateBx(), integrateBy(), integrateBz(), readMap(), saveField(), and smoothData().

◆ xbegin_m

double FM3DMagnetoStaticExtended::xbegin_m
private

◆ xend_m

double FM3DMagnetoStaticExtended::xend_m
private

◆ ybegin_m

double FM3DMagnetoStaticExtended::ybegin_m
private

Definition at line 65 of file FM3DMagnetoStaticExtended.h.

Referenced by FM3DMagnetoStaticExtended().

◆ yend_m

double FM3DMagnetoStaticExtended::yend_m
private

◆ zbegin_m

double FM3DMagnetoStaticExtended::zbegin_m
private

◆ zend_m

double FM3DMagnetoStaticExtended::zend_m
private

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