OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
Public Types | Public Member Functions | Static Public Member Functions | Private Types | 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  {
  FILE_NAME , COORDINATE_SYSTEM , X_START , DX ,
  X_STEPS , Y_START , DY , Y_STEPS ,
  Z_START , DZ , Z_STEPS , T_START ,
  DT , T_STEPS , R_START , DR ,
  R_STEPS , PHI_START , DPHI , PHI_STEPS ,
  SIZE
}
 The common attributes of DumpEMFields. More...
 

Public Member Functions

 DumpEMFields ()
 
 DumpEMFields (const std::string &name, DumpEMFields *parent)
 
virtual ~DumpEMFields ()
 
virtual DumpEMFieldsclone (const std::string &name)
 
virtual void execute ()
 
void print (std::ostream &os) const
 
- 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 &, bool eval=true)
 Parser for single-attribute commands. 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 Types

enum class  CoordinateSystem { CARTESIAN , CYLINDRICAL }
 

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 = CoordinateSystem::CARTESIAN
 

Static Private Attributes

static std::unordered_set< DumpEMFields * > dumpsSet_m
 

Additional Inherited Members

- Public Attributes inherited from Object
std::vector< AttributeitsAttr
 The object attributes. 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 DumpEMFields object created, we store in a set. When the execute() method is called, DumpEMFields 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 DumpEMFields 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 54 of file DumpEMFields.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

The common attributes of DumpEMFields.

Enumerator
FILE_NAME 
COORDINATE_SYSTEM 
X_START 
DX 
X_STEPS 
Y_START 
DY 
Y_STEPS 
Z_START 
DZ 
Z_STEPS 
T_START 
DT 
T_STEPS 
R_START 
DR 
R_STEPS 
PHI_START 
DPHI 
PHI_STEPS 
SIZE 

Definition at line 58 of file DumpEMFields.h.

◆ CoordinateSystem

enum DumpEMFields::CoordinateSystem
strongprivate
Enumerator
CARTESIAN 
CYLINDRICAL 

Definition at line 128 of file DumpEMFields.h.

Constructor & Destructor Documentation

◆ DumpEMFields() [1/3]

DumpEMFields::DumpEMFields ( )

◆ DumpEMFields() [2/3]

DumpEMFields::DumpEMFields ( const std::string &  name,
DumpEMFields parent 
)

Constructor

Definition at line 110 of file DumpEMFields.cpp.

◆ ~DumpEMFields()

DumpEMFields::~DumpEMFields ( )
virtual

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

Definition at line 114 of file DumpEMFields.cpp.

References dumpsSet_m, and grid_m.

◆ DumpEMFields() [3/3]

DumpEMFields::DumpEMFields ( const DumpEMFields dump)
private

Member Function Documentation

◆ buildGrid()

void DumpEMFields::buildGrid ( )
privatevirtual

◆ checkInt()

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

Definition at line 210 of file DumpEMFields.cpp.

References abs(), floor(), name, and real().

Referenced by buildGrid().

Here is the call graph for this function:

◆ clone()

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 119 of file DumpEMFields.cpp.

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

Referenced by execute().

Here is the call graph for this function:

◆ execute()

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 142 of file DumpEMFields.cpp.

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

Here is the call graph for this function:

◆ operator=()

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

◆ parseCoordinateSystem()

void DumpEMFields::parseCoordinateSystem ( )
private

Definition at line 132 of file DumpEMFields.cpp.

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

Referenced by buildGrid().

Here is the call graph for this function:

◆ print()

void DumpEMFields::print ( std::ostream &  os) const
virtual

Print the attributes of DumpEMFields to standard out

Reimplemented from Object.

Definition at line 338 of file DumpEMFields.cpp.

References CARTESIAN, coordinates_m, CYLINDRICAL, DPHI, DR, DT, DX, DY, DZ, endl(), filename_m, Attributes::getReal(), Object::itsAttr, PHI_START, PHI_STEPS, R_START, R_STEPS, T_START, T_STEPS, X_START, X_STEPS, Y_START, Y_STEPS, Z_START, and Z_STEPS.

Referenced by operator<<().

Here is the call graph for this function:

◆ writeFieldLine()

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

Definition at line 252 of file DumpEMFields.cpp.

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

Referenced by writeFieldThis().

Here is the call graph for this function:

◆ writeFields()

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 203 of file DumpEMFields.cpp.

References dumpsSet_m.

Referenced by ParallelCyclotronTracker::execute().

◆ writeFieldThis()

void DumpEMFields::writeFieldThis ( Component field)
privatevirtual

◆ writeHeader()

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

Definition at line 223 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

◆ coordinates_m

CoordinateSystem DumpEMFields::coordinates_m = CoordinateSystem::CARTESIAN
private

◆ dumpsSet_m

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

Definition at line 147 of file DumpEMFields.h.

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

◆ filename_m

std::string DumpEMFields::filename_m
private

Definition at line 144 of file DumpEMFields.h.

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

◆ grid_m

interpolation::NDGrid* DumpEMFields::grid_m
private

Definition at line 143 of file DumpEMFields.h.

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


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