OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
DumpEMFields Class Reference

#include <DumpEMFields.h>

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

Public Types

enum  CoordinateSystem { CYLINDRICAL, CARTESIAN }
 

Public Member Functions

 DumpEMFields ()
 
virtual ~DumpEMFields ()
 
virtual DumpEMFieldsclone (const std::string &name)
 
virtual void execute ()
 
- Public Member Functions inherited from Action
virtual ~Action ()
 
virtual bool canReplaceBy (Object *object)
 Test if replacement is allowed. More...
 
virtual const std::string getCategory () const
 Return the object category as a string. More...
 
virtual bool shouldTrace () const
 Trace flag. More...
 
virtual bool shouldUpdate () const
 Update flag. More...
 
- Public Member Functions inherited from Object
virtual ~Object ()
 
void copyAttributes (const Object &)
 Copy attributes from another object. More...
 
virtual AttributefindAttribute (const std::string &name)
 Find an attribute by name. More...
 
virtual const AttributefindAttribute (const std::string &name) const
 Find an attribute by name. More...
 
virtual ObjectmakeTemplate (const std::string &, TokenStream &, Statement &)
 Macro handler function. More...
 
virtual ObjectmakeInstance (const std::string &name, Statement &, const Parser *)
 Macro handler function. More...
 
virtual void parse (Statement &)
 Parse the object. More...
 
virtual void parseShortcut (Statement &)
 Parser for single-attribute commands. More...
 
virtual void print (std::ostream &) const
 Print the object. More...
 
virtual void printValue (std::ostream &) const
 
virtual void printHelp (std::ostream &) const
 Print help. More...
 
virtual void replace (Object *oldObject, Object *newObject)
 Replace references. More...
 
virtual void update ()
 Update this object. More...
 
bool isBuiltin () const
 True, if [b]this[/b] is a built-in object. More...
 
virtual bool isShared () const
 Shared flag. More...
 
virtual void setShared (bool)
 Set/reset shared flag. More...
 
void setDirty (bool)
 Set/reset the [b]modified[/b] flag. More...
 
bool isDirty () const
 True, if the [b]modified[/b] flag is set. More...
 
void setFlag (bool)
 Flag/unflag this object, e. g. to control output of objects for. More...
 
bool isFlagged () const
 True, if [b]this[/b] is flagged by setFlag(true). More...
 
const ObjectgetBaseObject () const
 Return the object's base type object. More...
 
const std::string & getOpalName () const
 Return object name. More...
 
ObjectgetParent () const
 Return parent pointer. More...
 
bool isTreeMember (const Object *subTree) const
 Test for tree membership. More...
 
void setOpalName (const std::string &name)
 Set object name. More...
 
void setParent (Object *)
 Set parent object. More...
 
void clear ()
 Clear the occurrence counter. More...
 
int increment ()
 Increment and return the occurrence counter. More...
 
int occurrenceCount ()
 Return the occurrence counter. More...
 
void registerReference (Invalidator *a)
 Register a reference to this object. More...
 
void unregisterReference (Invalidator *a)
 Unegister a reference to this object. More...
 
void registerOwnership (const AttributeHandler::OwnerType &itsClass) const
 
- Public Member Functions inherited from RCObject
int addReference () const
 Increment reference count. More...
 
int removeReference () const
 Decrement the reference count. More...
 
bool isShared () const
 Test for sharing. More...
 

Static Public Member Functions

static void writeFields (Component *field)
 

Private Member Functions

virtual void writeFieldThis (Component *field)
 
virtual void buildGrid ()
 
void parseCoordinateSystem ()
 
void writeHeader (std::ofstream &fout) const
 
void writeFieldLine (Component *field, const Vector_t &point, const double &time, std::ofstream &fout) const
 
 DumpEMFields (const DumpEMFields &dump)
 
DumpEMFieldsoperator= (const DumpEMFields &dump)
 

Static Private Member Functions

static void checkInt (double value, std::string name, double tolerance=1e-9)
 

Private Attributes

interpolation::NDGridgrid_m
 
std::string filename_m
 
CoordinateSystem coordinates_m = CARTESIAN
 

Static Private Attributes

static std::unordered_set
< DumpEMFields * > 
dumpsSet_m
 
static std::string dumpemfields_docstring
 
static constexpr double DEGREE = 180./M_PI
 

Additional Inherited Members

- Public Attributes inherited from Object
std::vector< AttributeitsAttr
 The object attributes (see Attribute.hh). More...
 
- Protected Member Functions inherited from Action
 Action (int size, const char *name, const char *help)
 Constructor for exemplars. More...
 
 Action (const std::string &name, Action *parent)
 Constructor for cloning. More...
 
- Protected Member Functions inherited from Object
 Object (int size, const char *name, const char *help)
 Constructor for exemplars. More...
 
 Object (const std::string &name, Object *parent)
 Constructor for clones. More...
 
- Protected Member Functions inherited from RCObject
 RCObject ()
 Default constructor. More...
 
 RCObject (const RCObject &)
 Copy constructor. More...
 
virtual ~RCObject ()=0
 
RCObjectoperator= (const RCObject &right)
 
- Protected Attributes inherited from Object
bool builtin
 Built-in flag. More...
 
bool modified
 Dirty flag. More...
 
bool flagged
 Object flag. More...
 

Detailed Description

DumpEMFields dumps the dynamically changing fields of a Ring in a user- defined grid.

The idea is to print out the field map across a 4D grid in space-time for debugging purposes. The problem is to manage the DumpEMFields object through three phases of program execution; initial construction, parsing and then actual field map writing (where we need to somehow let DumpFields know what the field maps are). So for each DumpFields object created, we store in a set. When the execute() method is called, DumpFields builds a grid using the parsed information.

When the ParallelCyclotronTracker is about to start tracking, it calls writeFields method which loops over the static set of DumpFields and writes each one. It is not the cleanest implementation, but I can't see a better way.

The DumpEMFields themselves operate by iterating over a NDGrid object and looking up the field/writing it out on each grid point.

Definition at line 61 of file DumpEMFields.h.

Member Enumeration Documentation

Enumerator
CYLINDRICAL 
CARTESIAN 

Definition at line 63 of file DumpEMFields.h.

Constructor & Destructor Documentation

DumpEMFields::DumpEMFields ( )

Constructor

Definition at line 46 of file DumpEMFields.cpp.

References Object::itsAttr, Attributes::makeReal(), and Attributes::makeString().

Referenced by clone().

Here is the call graph for this function:

DumpEMFields::~DumpEMFields ( )
virtual

Destructor deletes grid_m and if in the dumps set, take it out

Definition at line 92 of file DumpEMFields.cpp.

References dumpsSet_m, and grid_m.

DumpEMFields::DumpEMFields ( const DumpEMFields dump)
private

Member Function Documentation

void DumpEMFields::buildGrid ( )
privatevirtual

Definition at line 139 of file DumpEMFields.cpp.

References checkInt(), coordinates_m, CYLINDRICAL, filename_m, Attributes::getReal(), Attributes::getString(), grid_m, Object::itsAttr, nr, and parseCoordinateSystem().

Referenced by execute().

Here is the call graph for this function:

void DumpEMFields::checkInt ( double  value,
std::string  name,
double  tolerance = 1e-9 
)
staticprivate

Definition at line 198 of file DumpEMFields.cpp.

References fabs(), and floor().

Referenced by buildGrid().

Here is the call graph for this function:

DumpEMFields * DumpEMFields::clone ( const std::string &  name)
virtual

Make a clone (overloadable copy-constructor).

Parameters
namenot used If this is in the dumpsSet_m, so will the clone. Not sure how the itsAttr stuff works, so this may not get properly copied?

Implements Object.

Definition at line 97 of file DumpEMFields.cpp.

References interpolation::NDGrid::clone(), coordinates_m, DumpEMFields(), dumpsSet_m, filename_m, and grid_m.

Referenced by execute().

Here is the call graph for this function:

void DumpEMFields::execute ( )
virtual

Builds the grid but does not write the field map

Builds a grid of points in x-y-z space using the NDGrid algorithm. Checks that X_STEPS, Y_STEPS, Z_STEPS are integers or throws OpalException.

Reimplemented from Object.

Definition at line 130 of file DumpEMFields.cpp.

References buildGrid(), clone(), and dumpsSet_m.

Here is the call graph for this function:

DumpEMFields& DumpEMFields::operator= ( const DumpEMFields dump)
private
void DumpEMFields::parseCoordinateSystem ( )
private

Definition at line 110 of file DumpEMFields.cpp.

References CARTESIAN, coordinates_m, CYLINDRICAL, Attributes::getString(), and Object::itsAttr.

Referenced by buildGrid().

Here is the call graph for this function:

void DumpEMFields::writeFieldLine ( Component field,
const Vector_t point,
const double &  time,
std::ofstream &  fout 
) const
private

Definition at line 240 of file DumpEMFields.cpp.

References Component::apply(), coordinates_m, cos(), CYLINDRICAL, DEGREE, and sin().

Referenced by writeFieldThis().

Here is the call graph for this function:

void DumpEMFields::writeFields ( Component field)
static

Write the fields for all defined DumpEMFields objects

Parameters
fieldborrowed reference to the Component object that holds the field map; caller owns the memory. Iterates over the DumpEMFields in the dumpsSet_m and calls writeFieldThis on each DumpEMFields. This writes each field map in turn. Format is: <number of="" rows>=""> <column 1> <units> <column 2> <units> <column 3> <units> <column 4> <units> <column 5> <units> <column 6> <units> 0 <field map="" data>="">

Definition at line 191 of file DumpEMFields.cpp.

References dumpsSet_m.

Referenced by ParallelCyclotronTracker::execute().

void DumpEMFields::writeFieldThis ( Component field)
privatevirtual

Definition at line 272 of file DumpEMFields.cpp.

References interpolation::NDGrid::begin(), interpolation::NDGrid::end(), filename_m, grid_m, writeFieldLine(), and writeHeader().

Here is the call graph for this function:

void DumpEMFields::writeHeader ( std::ofstream &  fout) const
private

Definition at line 211 of file DumpEMFields.cpp.

References coordinates_m, CYLINDRICAL, interpolation::NDGrid::end(), endl(), grid_m, and interpolation::Mesh::Iterator::toInteger().

Referenced by writeFieldThis().

Here is the call graph for this function:

Member Data Documentation

CoordinateSystem DumpEMFields::coordinates_m = CARTESIAN
private

Definition at line 116 of file DumpEMFields.h.

Referenced by buildGrid(), clone(), parseCoordinateSystem(), writeFieldLine(), and writeHeader().

constexpr double DumpEMFields::DEGREE = 180./M_PI
staticprivate

Definition at line 121 of file DumpEMFields.h.

Referenced by writeFieldLine().

std::string DumpEMFields::dumpemfields_docstring
staticprivate
Initial value:
=
std::string("The \"DUMPEMFIELDS\" statement dumps a field map to a user-defined")+
std::string(" field file, for checking that fields are generated correctly.")+
std::string(" The fields are written out on a grid in space and time.")

Definition at line 119 of file DumpEMFields.h.

std::unordered_set< DumpEMFields * > DumpEMFields::dumpsSet_m
staticprivate

Definition at line 118 of file DumpEMFields.h.

Referenced by clone(), execute(), writeFields(), and ~DumpEMFields().

std::string DumpEMFields::filename_m
private

Definition at line 115 of file DumpEMFields.h.

Referenced by buildGrid(), clone(), and writeFieldThis().

interpolation::NDGrid* DumpEMFields::grid_m
private

Definition at line 114 of file DumpEMFields.h.

Referenced by buildGrid(), clone(), writeFieldThis(), writeHeader(), and ~DumpEMFields().


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