OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
BoundaryGeometry Class Reference

#include <BoundaryGeometry.h>

Inheritance diagram for BoundaryGeometry:
Collaboration diagram for BoundaryGeometry:

Public Types

enum  DebugFlags {
  debug_isInside = 0x0001 , debug_fastIsInside = 0x0002 , debug_intersectRayBoundary = 0x0004 , debug_intersectLineSegmentBoundary = 0x0008 ,
  debug_intersectTinyLineSegmentBoundary = 0x0010 , debug_PartInside = 0x0020
}

Public Member Functions

 BoundaryGeometry ()
virtual ~BoundaryGeometry ()
virtual bool canReplaceBy (Object *object)
 Test if replacement is allowed.
virtual BoundaryGeometryclone (const std::string &name)
 Return a clone.
virtual void execute ()
 Execute the command.
virtual void update ()
 Update this object.
void updateElement (ElementBase *element)
void initialize ()
int partInside (const Vector_t &r, const Vector_t &v, const double dt, Vector_t &intecoords, int &triId)
InformprintInfo (Inform &os) const
void writeGeomToVtk (std::string fn)
std::string getFilename () const
Topology getTopology () const
double getA ()
double getB ()
double getC ()
double getS ()
double getLength ()
double getL1 ()
double getL2 ()
size_t getNumBFaces ()
Vector_t gethr ()
Vektor< int, 3 > getnr ()
Vector_t getmincoords ()
Vector_t getmaxcoords ()
bool getInsidePoint (Vector_t &pt)
bool findInsidePoint (void)
int intersectRayBoundary (const Vector_t &P, const Vector_t &v, Vector_t &I)
int fastIsInside (const Vector_t &reference_pt, const Vector_t &P)
void enableDebug (enum DebugFlags flags)
void disableDebug (enum DebugFlags flags)
virtual const std::string getCategory () const
 Return the object category as a string.
virtual bool shouldTrace () const
 Trace flag.
virtual bool shouldUpdate () const
 Update flag.
void copyAttributes (const Object &)
 Copy attributes from another object.
virtual AttributefindAttribute (const std::string &name)
 Find an attribute by name.
virtual const AttributefindAttribute (const std::string &name) const
 Find an attribute by name.
virtual ObjectmakeTemplate (const std::string &, TokenStream &, Statement &)
 Macro handler function.
virtual ObjectmakeInstance (const std::string &name, Statement &, const Parser *)
 Macro handler function.
virtual void parse (Statement &)
 Parse the object.
virtual void parseShortcut (Statement &, bool eval=true)
 Parser for single-attribute commands.
virtual void print (std::ostream &) const
 Print the object.
virtual void printValue (std::ostream &) const
virtual void printHelp (std::ostream &) const
 Print help.
virtual void replace (Object *oldObject, Object *newObject)
 Replace references.
bool isBuiltin () const
 True, if [b]this[/b] is a built-in object.
virtual bool isShared () const
 Shared flag.
virtual void setShared (bool)
 Set/reset shared flag.
void setDirty (bool)
 Set/reset the [b]modified[/b] flag.
bool isDirty () const
 True, if the [b]modified[/b] flag is set.
void setFlag (bool)
 Flag/unflag this object, e. g. to control output of objects for.
bool isFlagged () const
 True, if [b]this[/b] is flagged by setFlag(true).
const ObjectgetBaseObject () const
 Return the object's base type object.
const std::string & getOpalName () const
 Return object name.
ObjectgetParent () const
 Return parent pointer.
bool isTreeMember (const Object *subTree) const
 Test for tree membership.
void setOpalName (const std::string &name)
 Set object name.
void setParent (Object *)
 Set parent object.
void clear ()
 Clear the occurrence counter.
int increment ()
 Increment and return the occurrence counter.
int occurrenceCount ()
 Return the occurrence counter.
void registerReference (Invalidator *a)
 Register a reference to this object.
void unregisterReference (Invalidator *a)
 Unegister a reference to this object.
void registerOwnership (const AttributeHandler::OwnerType &itsClass) const
int addReference () const
 Increment reference count.
int removeReference () const
 Decrement the reference count.

Static Public Member Functions

static BoundaryGeometryfind (const std::string &name)

Public Attributes

std::vector< AttributeitsAttr
 The object attributes.

Protected Attributes

bool builtin
 Built-in flag.
bool modified
 Dirty flag.
bool flagged
 Object flag.

Private Types

enum  INTERSECTION_TESTS { SEGMENT , RAY , LINE }
enum  {
  FGEOM , LENGTH , S , L1 ,
  L2 , A , B , C ,
  TOPO , ZSHIFT , XYZSCALE , XSCALE ,
  YSCALE , ZSCALE , INSIDEPOINT , SIZE
}

Private Member Functions

bool isInside (const Vector_t &P)
int intersectTriangleVoxel (const int triangle_id, const int i, const int j, const int k)
int intersectTinyLineSegmentBoundary (const Vector_t &, const Vector_t &, Vector_t &, int &)
int intersectLineSegmentBoundary (const Vector_t &P0, const Vector_t &P1, Vector_t &intersection_pt, int &triangle_id)
 BoundaryGeometry (const BoundaryGeometry &)
void operator= (const BoundaryGeometry &)
 BoundaryGeometry (const std::string &name, BoundaryGeometry *parent)
const Vector_tgetPoint (const int triangle_id, const int vertex_id)
int intersectLineTriangle (const enum INTERSECTION_TESTS kind, const Vector_t &P0, const Vector_t &P1, const int triangle_id, Vector_t &I)
int mapVoxelIndices2ID (const int i, const int j, const int k)
Vector_t mapIndices2Voxel (const int, const int, const int)
Vector_t mapPoint2Voxel (const Vector_t &)
void computeMeshVoxelization (void)

Private Attributes

std::string h5FileName_m
std::vector< Vector_tPoints_m
std::vector< std::array< unsigned int, 4 > > Triangles_m
std::vector< Vector_tTriNormals_m
std::vector< double > TriAreas_m
Vector_t minExtent_m
Vector_t maxExtent_m
struct { 
Vector_t minExtent
Vector_t maxExtent
Vector_t sizeOfVoxel
Vektor< int, 3 > nr_m
std::unordered_map< int, std::unordered_set< int > > ids
voxelMesh_m
int debugFlags_m
bool haveInsidePoint_m
Vector_t insidePoint_m
gsl_rng * randGen_m
IpplTimings::TimerRef Tinitialize_m
IpplTimings::TimerRef TisInside_m
IpplTimings::TimerRef TfastIsInside_m
IpplTimings::TimerRef TRayTrace_m
IpplTimings::TimerRef TPartInside_m
ObjectitsParent
std::string itsName
std::string itsHelp
int occurrence
double timeStamp
std::set< Invalidator * > references
bool sharedFlag
int refCount

Detailed Description

Definition at line 58 of file BoundaryGeometry.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
FGEOM 
LENGTH 
L1 
L2 
TOPO 
ZSHIFT 
XYZSCALE 
XSCALE 
YSCALE 
ZSCALE 
INSIDEPOINT 
SIZE 

Definition at line 298 of file BoundaryGeometry.h.

◆ DebugFlags

Enumerator
debug_isInside 
debug_fastIsInside 
debug_intersectRayBoundary 
debug_intersectLineSegmentBoundary 
debug_intersectTinyLineSegmentBoundary 
debug_PartInside 

Definition at line 192 of file BoundaryGeometry.h.

◆ INTERSECTION_TESTS

Enumerator
SEGMENT 
RAY 
LINE 

Definition at line 280 of file BoundaryGeometry.h.

Constructor & Destructor Documentation

◆ BoundaryGeometry() [1/3]

◆ ~BoundaryGeometry()

BoundaryGeometry::~BoundaryGeometry ( )
virtual

Definition at line 1070 of file BoundaryGeometry.cpp.

References randGen_m.

◆ BoundaryGeometry() [2/3]

BoundaryGeometry::BoundaryGeometry ( const BoundaryGeometry & )
private

References BoundaryGeometry().

Here is the call graph for this function:

◆ BoundaryGeometry() [3/3]

BoundaryGeometry::BoundaryGeometry ( const std::string & name,
BoundaryGeometry * parent )
private

Definition at line 1052 of file BoundaryGeometry.cpp.

References BoundaryGeometry(), Definition::Definition(), FGEOM, Attributes::getString(), IpplTimings::getTimer(), h5FileName_m, initialize(), Object::itsAttr, name, randGen_m, TfastIsInside_m, Tinitialize_m, TisInside_m, TPartInside_m, and TRayTrace_m.

Here is the call graph for this function:

Member Function Documentation

◆ addReference()

int RCObject::addReference ( ) const
inlineinherited

Increment reference count.

Definition at line 83 of file RCObject.h.

References refCount.

Referenced by Pointer< Object >::operator=(), Pointer< Object >::operator=(), and Pointer< Object >::unique().

◆ canReplaceBy()

bool BoundaryGeometry::canReplaceBy ( Object * object)
virtual

Test if replacement is allowed.

Reimplemented from Object.

Definition at line 1074 of file BoundaryGeometry.cpp.

References Object::Object().

Here is the call graph for this function:

◆ clear()

void Object::clear ( )
inherited

Clear the occurrence counter.

Definition at line 341 of file Object.cpp.

References occurrence.

◆ clone()

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

Return a clone.

Implements Object.

Definition at line 1079 of file BoundaryGeometry.cpp.

References BoundaryGeometry(), and name.

Referenced by BoundaryGeometry(), and TrackRun::setBoundaryGeometry().

Here is the call graph for this function:

◆ computeMeshVoxelization()

void BoundaryGeometry::computeMeshVoxelization ( void )
inlineprivate

Definition at line 1586 of file BoundaryGeometry.cpp.

References Util::combineFilePath(), Options::enableVTK, endl(), OpalData::getAuxiliaryOutputDirectory(), OpalData::getInstance(), getPoint(), gmsg, h5FileName_m, INSIDE, intersectTriangleVoxel(), level2(), mapPoint2VoxelIndices, mapVoxelIndices2ID(), IpplInfo::myNode(), Triangles_m, and voxelMesh_m.

Referenced by initialize().

Here is the call graph for this function:

◆ copyAttributes()

void Object::copyAttributes ( const Object & source)
inherited

Copy attributes from another object.

Definition at line 54 of file Object.cpp.

References itsAttr, and Object().

Referenced by LineTemplate::makeInstance(), and SequenceTemplate::makeInstance().

Here is the call graph for this function:

◆ disableDebug()

void BoundaryGeometry::disableDebug ( enum DebugFlags flags)
inline

Definition at line 205 of file BoundaryGeometry.h.

References debugFlags_m.

◆ enableDebug()

void BoundaryGeometry::enableDebug ( enum DebugFlags flags)
inline

Definition at line 201 of file BoundaryGeometry.h.

References debugFlags_m.

◆ execute()

void BoundaryGeometry::execute ( )
virtual

Execute the command.

Reimplemented from Object.

Definition at line 1088 of file BoundaryGeometry.cpp.

References IpplTimings::getTimer(), TfastIsInside_m, Tinitialize_m, TisInside_m, TPartInside_m, TRayTrace_m, and update().

Here is the call graph for this function:

◆ fastIsInside()

int BoundaryGeometry::fastIsInside ( const Vector_t & reference_pt,
const Vector_t & P )

Definition at line 1427 of file BoundaryGeometry.cpp.

References c, debug_fastIsInside, debug_intersectTinyLineSegmentBoundary, debugFlags_m, endl(), gmsg, intersectTinyLineSegmentBoundary(), maxExtent_m, minExtent_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), TfastIsInside_m, and voxelMesh_m.

Referenced by findInsidePoint(), and isInside().

Here is the call graph for this function:

◆ find()

BoundaryGeometry * BoundaryGeometry::find ( const std::string & name)
static

Definition at line 1097 of file BoundaryGeometry.cpp.

References BoundaryGeometry(), OpalData::find(), OpalData::getInstance(), and name.

Referenced by FieldSolver::initSolver(), TrackRun::setBoundaryGeometry(), OpalCavity::update(), OpalCyclotron::update(), and OpalDrift::update().

Here is the call graph for this function:

◆ findAttribute() [1/2]

Attribute * Object::findAttribute ( const std::string & name)
virtualinherited

◆ findAttribute() [2/2]

const Attribute * Object::findAttribute ( const std::string & name) const
virtualinherited

Find an attribute by name.

Definition at line 74 of file Object.cpp.

References itsAttr, and name.

◆ findInsidePoint()

bool BoundaryGeometry::findInsidePoint ( void )

Definition at line 1363 of file BoundaryGeometry.cpp.

References B, endl(), fastIsInside(), gmsg, insidePoint_m, level2(), maxExtent_m, and minExtent_m.

Referenced by initialize().

Here is the call graph for this function:

◆ getA()

double BoundaryGeometry::getA ( )
inline

Definition at line 111 of file BoundaryGeometry.h.

References A, Attributes::getReal(), and Object::itsAttr.

Referenced by EllipticDomain::EllipticDomain(), and FieldSolver::initSolver().

Here is the call graph for this function:

◆ getB()

double BoundaryGeometry::getB ( )
inline

Definition at line 115 of file BoundaryGeometry.h.

References B, Attributes::getReal(), and Object::itsAttr.

Referenced by EllipticDomain::EllipticDomain().

Here is the call graph for this function:

◆ getBaseObject()

const Object * Object::getBaseObject ( ) const
inherited

Return the object's base type object.

Definition at line 303 of file Object.cpp.

References itsParent, and Object().

Here is the call graph for this function:

◆ getC()

double BoundaryGeometry::getC ( )
inline

Definition at line 119 of file BoundaryGeometry.h.

References C, Attributes::getReal(), and Object::itsAttr.

Here is the call graph for this function:

◆ getCategory()

const std::string Definition::getCategory ( ) const
virtualinherited

Return the object category as a string.

Implements Object.

Definition at line 29 of file Definition.cpp.

◆ getFilename()

std::string BoundaryGeometry::getFilename ( ) const
inline

Definition at line 97 of file BoundaryGeometry.h.

References FGEOM, Attributes::getString(), and Object::itsAttr.

Here is the call graph for this function:

◆ gethr()

Vector_t BoundaryGeometry::gethr ( )
inline

Return the hr_m.

Definition at line 149 of file BoundaryGeometry.h.

References voxelMesh_m.

◆ getInsidePoint()

bool BoundaryGeometry::getInsidePoint ( Vector_t & pt)
inline

Definition at line 172 of file BoundaryGeometry.h.

References haveInsidePoint_m, and insidePoint_m.

Referenced by ArbitraryDomain::ArbitraryDomain().

◆ getL1()

double BoundaryGeometry::getL1 ( )
inline

Definition at line 131 of file BoundaryGeometry.h.

References Attributes::getReal(), Object::itsAttr, and L1.

Here is the call graph for this function:

◆ getL2()

double BoundaryGeometry::getL2 ( )
inline

Definition at line 135 of file BoundaryGeometry.h.

References Attributes::getReal(), Object::itsAttr, and L2.

Here is the call graph for this function:

◆ getLength()

double BoundaryGeometry::getLength ( )
inline

Definition at line 127 of file BoundaryGeometry.h.

References Attributes::getReal(), Object::itsAttr, and LENGTH.

Referenced by EllipticDomain::EllipticDomain().

Here is the call graph for this function:

◆ getmaxcoords()

Vector_t BoundaryGeometry::getmaxcoords ( )
inline

Return the maxcoords_m.

Definition at line 168 of file BoundaryGeometry.h.

References maxExtent_m.

Referenced by ArbitraryDomain::ArbitraryDomain().

◆ getmincoords()

Vector_t BoundaryGeometry::getmincoords ( )
inline

Return the mincoords_m.

Definition at line 162 of file BoundaryGeometry.h.

References minExtent_m.

Referenced by ArbitraryDomain::ArbitraryDomain().

◆ getnr()

Vektor< int, 3 > BoundaryGeometry::getnr ( )
inline

Return the nr_m.

Definition at line 155 of file BoundaryGeometry.h.

References voxelMesh_m.

◆ getNumBFaces()

size_t BoundaryGeometry::getNumBFaces ( )
inline

Return number of boundary faces.

Definition at line 142 of file BoundaryGeometry.h.

References Triangles_m.

◆ getOpalName()

const std::string & Object::getOpalName ( ) const
inherited

Return object name.

Definition at line 310 of file Object.cpp.

References itsName.

Referenced by Macro::clone(), OpalOffset::OpalLocalCartesianOffset::clone(), OpalVariableRFCavity::clone(), OpalVariableRFCavityFringeField::clone(), OpalData::create(), OpalData::define(), Sequence::findDriftLength(), ValueDefinition::getBool(), ValueDefinition::getBoolComponent(), ValueDefinition::getReal(), ValueDefinition::getRealComponent(), ValueDefinition::getString(), ValueDefinition::getStringComponent(), ParticleMatterInteraction::initParticleMatterInteractionHandler(), OpalWake::initWakefunction(), List::list(), LineTemplate::makeInstance(), makeInstance(), SequenceTemplate::makeInstance(), parse(), SequenceParser::parsePosition(), Beam::print(), BoolConstant::print(), Line::print(), print(), OpalElement::print(), OpalFilter::print(), OpalTrimCoil::print(), OpalWake::print(), ParticleMatterInteraction::print(), RealConstant::print(), RealVariable::print(), RealVector::print(), Sequence::print(), StringConstant::print(), BoundaryGeometry::printInfo(), FieldSolver::printInfo(), registerOwnership(), OpalElement::registerOwnership(), Line::replace(), Sequence::replace(), OpalScalingFFAMagnet::setupDefaultEndField(), Beam::update(), BoundaryGeometry::update(), OpalAsymmetricEnge::update(), OpalCavity::update(), OpalDrift::update(), OpalECollimator::update(), OpalEnge::update(), OpalFilter::update(), OpalFlexibleCollimator::update(), OpalOffset::OpalGlobalCartesianOffset::update(), OpalOffset::OpalGlobalCylindricalOffset::update(), OpalOffset::OpalLocalCartesianOffset::update(), OpalOffset::OpalLocalCylindricalOffset::update(), OpalPepperPot::update(), OpalPolynomialTimeDependence::update(), OpalProbe::update(), OpalRBend3D::update(), OpalRBend::update(), OpalRCollimator::update(), OpalSBend::update(), OpalSeptum::update(), OpalSinusoidalTimeDependence::update(), OpalSlit::update(), OpalSplineTimeDependence::update(), OpalTravelingWave::update(), OpalTrimCoil::update(), OpalWake::update(), ParticleMatterInteraction::update(), and Distribution::writeOutFileHeader().

◆ getParent()

Object * Object::getParent ( ) const
inherited

Return parent pointer.

Definition at line 315 of file Object.cpp.

References itsParent, and Object().

Referenced by OpalData::erase(), print(), OpalElement::print(), registerOwnership(), and OpalElement::registerOwnership().

Here is the call graph for this function:

◆ getPoint()

const Vector_t & BoundaryGeometry::getPoint ( const int triangle_id,
const int vertex_id )
inlineprivate

◆ getS()

double BoundaryGeometry::getS ( )
inline

Definition at line 123 of file BoundaryGeometry.h.

References Attributes::getReal(), Object::itsAttr, and S.

Referenced by EllipticDomain::EllipticDomain().

Here is the call graph for this function:

◆ getTopology()

Topology BoundaryGeometry::getTopology ( ) const
inline

Definition at line 101 of file BoundaryGeometry.h.

References BOXCORNER, ELLIPTIC, Attributes::getString(), Object::itsAttr, RECTANGULAR, and TOPO.

Referenced by printInfo().

Here is the call graph for this function:

◆ increment()

int Object::increment ( )
inherited

Increment and return the occurrence counter.

Definition at line 346 of file Object.cpp.

References occurrence.

Referenced by Line::parse(), and Sequence::storeLine().

◆ initialize()

◆ intersectLineSegmentBoundary()

int BoundaryGeometry::intersectLineSegmentBoundary ( const Vector_t & P0,
const Vector_t & P1,
Vector_t & intersection_pt,
int & triangle_id )
private

Definition at line 2312 of file BoundaryGeometry.cpp.

References debug_intersectLineSegmentBoundary, debug_intersectTinyLineSegmentBoundary, debugFlags_m, endl(), gmsg, intersectTinyLineSegmentBoundary(), and mapPoint2VoxelIndices.

Referenced by intersectRayBoundary().

Here is the call graph for this function:

◆ intersectLineTriangle()

int BoundaryGeometry::intersectLineTriangle ( const enum INTERSECTION_TESTS kind,
const Vector_t & P0,
const Vector_t & P1,
const int triangle_id,
Vector_t & I )
private

Definition at line 1174 of file BoundaryGeometry.cpp.

References a, cross(), dot(), cmp_ulp::eq_zero(), cmp_ulp::ge_zero(), getPoint(), cmp_ulp::gt(), cmp_ulp::le(), LINE, cmp_ulp::lt(), cmp_ulp::lt_zero(), RAY, and SEGMENT.

Referenced by initialize(), and intersectTinyLineSegmentBoundary().

Here is the call graph for this function:

◆ intersectRayBoundary()

int BoundaryGeometry::intersectRayBoundary ( const Vector_t & P,
const Vector_t & v,
Vector_t & I )

Definition at line 1478 of file BoundaryGeometry.cpp.

References c, debug_intersectLineSegmentBoundary, debug_intersectRayBoundary, debugFlags_m, endl(), gmsg, intersectLineSegmentBoundary(), IpplTimings::startTimer(), IpplTimings::stopTimer(), TRayTrace_m, and voxelMesh_m.

Here is the call graph for this function:

◆ intersectTinyLineSegmentBoundary()

int BoundaryGeometry::intersectTinyLineSegmentBoundary ( const Vector_t & P,
const Vector_t & Q,
Vector_t & intersect_pt,
int & triangle_id )
private

Definition at line 2160 of file BoundaryGeometry.cpp.

References debug_intersectTinyLineSegmentBoundary, debugFlags_m, endl(), cmp_ulp::eq_zero(), getPoint(), gmsg, Voxel::intersect(), intersectLineTriangle(), LINE, mapIndices2Voxel(), mapPoint2VoxelIndices, mapVoxelIndices2ID(), PAssert, Voxel::pts, and voxelMesh_m.

Referenced by fastIsInside(), intersectLineSegmentBoundary(), and partInside().

Here is the call graph for this function:

◆ intersectTriangleVoxel()

int BoundaryGeometry::intersectTriangleVoxel ( const int triangle_id,
const int i,
const int j,
const int k )
private

Definition at line 1111 of file BoundaryGeometry.cpp.

References getPoint(), Voxel::intersect(), and voxelMesh_m.

Referenced by computeMeshVoxelization().

Here is the call graph for this function:

◆ isBuiltin()

bool Object::isBuiltin ( ) const
inherited

True, if [b]this[/b] is a built-in object.

Definition at line 268 of file Object.cpp.

References builtin.

Referenced by OpalData::define(), and OpalData::getVariableNames().

◆ isDirty()

bool Object::isDirty ( ) const
inherited

True, if the [b]modified[/b] flag is set.

Definition at line 289 of file Object.cpp.

References modified.

◆ isFlagged()

bool Object::isFlagged ( ) const
inherited

True, if [b]this[/b] is flagged by setFlag(true).

Definition at line 299 of file Object.cpp.

References flagged.

◆ isInside()

bool BoundaryGeometry::isInside ( const Vector_t & P)
private

Definition at line 1257 of file BoundaryGeometry.cpp.

References fastIsInside(), cmp_ulp::lt(), maxExtent_m, and minExtent_m.

Referenced by initialize().

Here is the call graph for this function:

◆ isShared()

bool Object::isShared ( ) const
virtualinherited

Shared flag.

Definition at line 273 of file Object.cpp.

References sharedFlag.

Referenced by Sequence::print().

◆ isTreeMember()

bool Object::isTreeMember ( const Object * subTree) const
inherited

Test for tree membership.

Definition at line 320 of file Object.cpp.

References Object().

Referenced by Selector::handleElement(), and OpalParser::parseAssign().

Here is the call graph for this function:

◆ makeInstance()

Object * Object::makeInstance ( const std::string & name,
Statement & ,
const Parser *  )
virtualinherited

Macro handler function.

Reimplemented in LineTemplate, MacroCmd, and SequenceTemplate.

Definition at line 91 of file Object.cpp.

References getOpalName(), and Object().

Referenced by OpalParser::parseDefine(), Line::parseList(), OpalParser::parseMacro(), and SequenceParser::parseMember().

Here is the call graph for this function:

◆ makeTemplate()

Object * Object::makeTemplate ( const std::string & name,
TokenStream & ,
Statement &  )
virtualinherited

Macro handler function.

Reimplemented in Line, LineTemplate, MacroCmd, Sequence, and SequenceTemplate.

Definition at line 84 of file Object.cpp.

References name, and Object().

Referenced by OpalParser::parseMacro().

Here is the call graph for this function:

◆ mapIndices2Voxel()

Vector_t BoundaryGeometry::mapIndices2Voxel ( const int i,
const int j,
const int k )
inlineprivate

Definition at line 1562 of file BoundaryGeometry.cpp.

References voxelMesh_m.

Referenced by intersectTinyLineSegmentBoundary(), and mapPoint2Voxel().

◆ mapPoint2Voxel()

Vector_t BoundaryGeometry::mapPoint2Voxel ( const Vector_t & pt)
inlineprivate

Definition at line 1574 of file BoundaryGeometry.cpp.

References mapIndices2Voxel(), and voxelMesh_m.

Here is the call graph for this function:

◆ mapVoxelIndices2ID()

int BoundaryGeometry::mapVoxelIndices2ID ( const int i,
const int j,
const int k )
inlineprivate

Definition at line 1530 of file BoundaryGeometry.cpp.

References voxelMesh_m.

Referenced by computeMeshVoxelization(), and intersectTinyLineSegmentBoundary().

◆ occurrenceCount()

int Object::occurrenceCount ( )
inherited

Return the occurrence counter.

Definition at line 351 of file Object.cpp.

References occurrence.

◆ operator=()

void BoundaryGeometry::operator= ( const BoundaryGeometry & )
private

References BoundaryGeometry(), and name.

Here is the call graph for this function:

◆ parse()

void Object::parse ( Statement & stat)
virtualinherited

Parse the object.

Reimplemented in Call, Echo, Help, Line, OpalElement, PSystem, Sequence, System, Title, and Value.

Definition at line 97 of file Object.cpp.

References Statement::delimiter(), findAttribute(), getOpalName(), name, Expressions::parseDelimiter(), Expressions::parseRealConst(), and Expressions::parseString().

Referenced by Sequence::parse(), OpalParser::parseAction(), OpalParser::parseDefine(), and SequenceTemplate::parseTemplate().

Here is the call graph for this function:

◆ parseShortcut()

void Object::parseShortcut ( Statement & stat,
bool eval = true )
virtualinherited

Parser for single-attribute commands.

Definition at line 129 of file Object.cpp.

References Statement::delimiter(), findAttribute(), Statement::mark(), name, and Statement::word().

Referenced by Call::parse(), Echo::parse(), Help::parse(), PSystem::parse(), System::parse(), Title::parse(), and Value::parse().

Here is the call graph for this function:

◆ partInside()

int BoundaryGeometry::partInside ( const Vector_t & r,
const Vector_t & v,
const double dt,
Vector_t & intersect_pt,
int & triangle_id )

Determine whether a particle with position

Parameters
r,momenta

param v , and time step

Parameters
dtwill hit the boundary.

return value: -1 no collison with boundary 0 particle will collide with boundary in next time step

Definition at line 2382 of file BoundaryGeometry.cpp.

References Physics::c, debug_intersectTinyLineSegmentBoundary, debug_PartInside, debugFlags_m, dot(), endl(), gmsg, intersectTinyLineSegmentBoundary(), IpplTimings::startTimer(), IpplTimings::stopTimer(), and TPartInside_m.

Here is the call graph for this function:

◆ print()

◆ printHelp()

void Object::printHelp ( std::ostream & ) const
virtualinherited

Print help.

Definition at line 201 of file Object.cpp.

References endl(), gmsg, itsAttr, itsHelp, and name.

Referenced by Help::execute(), and opalMain().

Here is the call graph for this function:

◆ printInfo()

Inform & BoundaryGeometry::printInfo ( Inform & os) const

Definition at line 2472 of file BoundaryGeometry.cpp.

References A, B, BOXCORNER, C, endl(), FGEOM, Object::getOpalName(), Attributes::getReal(), Attributes::getString(), getTopology(), Object::itsAttr, L1, L2, LENGTH, maxExtent_m, minExtent_m, Points_m, S, TOPO, Triangles_m, voxelMesh_m, XSCALE, XYZSCALE, YSCALE, and ZSCALE.

Referenced by operator<<().

Here is the call graph for this function:

◆ printValue()

void Object::printValue ( std::ostream & os) const
inlinevirtualinherited

Reimplemented in BoolConstant, RealConstant, RealVariable, RealVector, and StringConstant.

Definition at line 280 of file Object.h.

References print().

Here is the call graph for this function:

◆ registerOwnership()

◆ registerReference()

void Object::registerReference ( Invalidator * a)
inherited

Register a reference to this object.

Definition at line 182 of file Object.cpp.

References references.

◆ removeReference()

int RCObject::removeReference ( ) const
inlineinherited

Decrement the reference count.

Definition at line 88 of file RCObject.h.

References refCount.

◆ replace()

void Object::replace ( Object * oldObject,
Object * newObject )
virtualinherited

Replace references.

Reimplemented in Line, and Sequence.

Definition at line 258 of file Object.cpp.

References Object().

Here is the call graph for this function:

◆ setDirty()

void Object::setDirty ( bool dirty)
inherited

Set/reset the [b]modified[/b] flag.

Definition at line 283 of file Object.cpp.

References modified.

Referenced by OpalData::define(), OpalData::makeDirty(), and RealVariable::RealVariable().

◆ setFlag()

void Object::setFlag ( bool flag)
inherited

Flag/unflag this object, e. g. to control output of objects for.

Definition at line 294 of file Object.cpp.

References flagged.

◆ setOpalName()

void Object::setOpalName ( const std::string & name)
inherited

◆ setParent()

void Object::setParent ( Object * parent)
inherited

Set parent object.

Definition at line 336 of file Object.cpp.

References itsParent, and Object().

Referenced by OpalData::erase().

Here is the call graph for this function:

◆ setShared()

void Object::setShared ( bool flag)
virtualinherited

Set/reset shared flag.

Reimplemented in Element.

Definition at line 278 of file Object.cpp.

References sharedFlag.

Referenced by OpalParser::parseDefine(), and Element::setShared().

◆ shouldTrace()

bool Definition::shouldTrace ( ) const
virtualinherited

Trace flag.

Implements Object.

Definition at line 34 of file Definition.cpp.

◆ shouldUpdate()

bool Definition::shouldUpdate ( ) const
virtualinherited

Update flag.

Implements Object.

Definition at line 39 of file Definition.cpp.

◆ unregisterReference()

void Object::unregisterReference ( Invalidator * a)
inherited

Unegister a reference to this object.

Definition at line 187 of file Object.cpp.

References references.

◆ update()

void BoundaryGeometry::update ( )
virtual

Update this object.

Reimplemented from Object.

Definition at line 1083 of file BoundaryGeometry.cpp.

References Object::getOpalName(), and Object::setOpalName().

Referenced by BoundaryGeometry(), and execute().

Here is the call graph for this function:

◆ updateElement()

void BoundaryGeometry::updateElement ( ElementBase * element)

Definition at line 1107 of file BoundaryGeometry.cpp.

◆ writeGeomToVtk()

void BoundaryGeometry::writeGeomToVtk ( std::string fn)

Definition at line 2436 of file BoundaryGeometry.cpp.

References PAssert, PointID, Points_m, and Triangles_m.

Referenced by DataSink::writeGeomToVtk().

Member Data Documentation

◆ builtin

◆ debugFlags_m

◆ flagged

bool Object::flagged
protectedinherited

Object flag.

Definition at line 242 of file Object.h.

Referenced by isFlagged(), Object(), Object(), and setFlag().

◆ h5FileName_m

std::string BoundaryGeometry::h5FileName_m
private

◆ haveInsidePoint_m

bool BoundaryGeometry::haveInsidePoint_m
private

Definition at line 258 of file BoundaryGeometry.h.

Referenced by getInsidePoint(), and initialize().

◆ insidePoint_m

Vector_t BoundaryGeometry::insidePoint_m
private

Definition at line 259 of file BoundaryGeometry.h.

Referenced by findInsidePoint(), getInsidePoint(), and initialize().

◆ itsAttr

std::vector<Attribute> Object::itsAttr
inherited

The object attributes.

Definition at line 216 of file Object.h.

Referenced by Distribution::adjustPhaseSpace(), Beam::Beam(), BoolConstant::BoolConstant(), BoundaryGeometry::BoundaryGeometry(), BoundaryGeometry::BoundaryGeometry(), DumpEMFields::buildGrid(), DumpFields::buildGrid(), Distribution::calcPartPerDist(), Call::Call(), Distribution::checkEmissionParameters(), Distribution::checkIfEmitted(), Distribution::chooseInputMomentumUnits(), Constraint::Constraint(), copyAttributes(), Distribution::create(), Distribution::createDistributionFromFile(), Distribution::createDistributionMultiGauss(), Distribution::createMatchedGaussDistribution(), Distribution::createOpalT(), DumpEMFields::DumpEMFields(), DumpFields::DumpFields(), DVar::DVar(), Echo::Echo(), Beam::execute(), Call::execute(), Echo::execute(), Help::execute(), List::execute(), OptimizeCmd::execute(), Option::execute(), PSystem::execute(), SampleCmd::execute(), Select::execute(), System::execute(), Title::execute(), TrackCmd::execute(), TrackRun::execute(), Value::execute(), FieldSolver::FieldSolver(), findAttribute(), findAttribute(), Distribution::generateAstraFlattopT(), Distribution::generateBinomial(), Distribution::generateFlattopLaserProfile(), Distribution::generateFlattopT(), Distribution::generateFlattopZ(), Distribution::generateGaussZ(), Distribution::generateLongFlattopT(), Distribution::generateMatchedGauss(), Distribution::generateTransverseGauss(), BoundaryGeometry::getA(), OpalElement::getApert(), BoundaryGeometry::getB(), BoolConstant::getBool(), BoundaryGeometry::getC(), Beam::getCharge(), Beam::getCurrent(), TrackCmd::getDT(), TrackCmd::getDTAU(), TrackCmd::getDTSCINIT(), Distribution::getEmissionTimeShift(), Constraint::getExpression(), Objective::getExpression(), BoundaryGeometry::getFilename(), Beam::getFrequency(), ParticleMatterInteraction::getInteractionType(), BoundaryGeometry::getL1(), BoundaryGeometry::getL2(), BoundaryGeometry::getLength(), Line::getLength(), OpalElement::getLength(), Sequence::getLength(), DVar::getLowerBound(), Beam::getMass(), TrackCmd::getMaxSteps(), FieldSolver::getMT(), FieldSolver::getMX(), FieldSolver::getMY(), OpalWake::getNumberOfBins(), Beam::getNumberOfParticles(), Distribution::getNumberOfParticlesInFile(), Beam::getParticleName(), RealConstant::getReal(), RealVariable::getReal(), RealVector::getRealComponent(), Sequence::getReference(), BoundaryGeometry::getS(), TrackCmd::getStepsPerTurn(), StringConstant::getString(), TrackCmd::getT0(), FieldSolver::getTagging_m(), Distribution::getTEmission(), TrackCmd::getTimeIntegrator(), BoundaryGeometry::getTopology(), OpalTrimCoil::getTrimCoilType(), FieldSolver::getType(), DVar::getUpperBound(), DVar::getVariable(), OpalSample::getVariable(), Distribution::getWeight(), TrackCmd::getZStart(), TrackCmd::getZStop(), FieldSolver::hasPeriodicZ(), Help::Help(), FieldSolver::initAmrObject_m(), FieldSolver::initAmrSolver_m(), FieldSolver::initCartesianFields(), BoundaryGeometry::initialize(), OpalSample::initialize(), OpalFilter::initOpalFilter(), OpalTrimCoil::initOpalTrimCoil(), ParticleMatterInteraction::initParticleMatterInteractionHandler(), FieldSolver::initSolver(), OpalWake::initWakefunction(), Distribution::injectBeam(), Line::Line(), List::List(), List::list(), Object(), Object(), Objective::Objective(), OpalAsymmetricEnge::OpalAsymmetricEnge(), OpalBend::OpalBend(), OpalCavity::OpalCavity(), OpalCCollimator::OpalCCollimator(), OpalCyclotron::OpalCyclotron(), OpalDegrader::OpalDegrader(), OpalDrift::OpalDrift(), OpalECollimator::OpalECollimator(), OpalElement::OpalElement(), OpalEnge::OpalEnge(), OpalFilter::OpalFilter(), OpalFlexibleCollimator::OpalFlexibleCollimator(), OpalOffset::OpalGlobalCartesianOffset::OpalGlobalCartesianOffset(), OpalOffset::OpalGlobalCylindricalOffset::OpalGlobalCylindricalOffset(), OpalHKicker::OpalHKicker(), OpalKicker::OpalKicker(), OpalOffset::OpalLocalCartesianOffset::OpalLocalCartesianOffset(), OpalOffset::OpalLocalCylindricalOffset::OpalLocalCylindricalOffset(), OpalMultipole::OpalMultipole(), OpalMultipoleT::OpalMultipoleT(), OpalOctupole::OpalOctupole(), OpalOutputPlane::OpalOutputPlane(), OpalPepperPot::OpalPepperPot(), OpalPolynomialTimeDependence::OpalPolynomialTimeDependence(), OpalProbe::OpalProbe(), OpalQuadrupole::OpalQuadrupole(), OpalRBend3D::OpalRBend3D(), OpalRCollimator::OpalRCollimator(), OpalRingDefinition::OpalRingDefinition(), OpalSample::OpalSample(), OpalSBend3D::OpalSBend3D(), OpalScalingFFAMagnet::OpalScalingFFAMagnet(), OpalSeptum::OpalSeptum(), OpalSextupole::OpalSextupole(), OpalSinusoidalTimeDependence::OpalSinusoidalTimeDependence(), OpalSlit::OpalSlit(), OpalSolenoid::OpalSolenoid(), OpalSource::OpalSource(), OpalSplineTimeDependence::OpalSplineTimeDependence(), OpalStripper::OpalStripper(), OpalTravelingWave::OpalTravelingWave(), OpalTrimCoil::OpalTrimCoil(), OpalUndulator::OpalUndulator(), OpalVacuum::OpalVacuum(), OpalVariableRFCavity::OpalVariableRFCavity(), OpalVariableRFCavityFringeField::OpalVariableRFCavityFringeField(), OpalVerticalFFAMagnet::OpalVerticalFFAMagnet(), OpalVKicker::OpalVKicker(), OpalWake::OpalWake(), OptimizeCmd::OptimizeCmd(), Option::Option(), Option::Option(), Line::parse(), Sequence::parse(), DumpEMFields::parseCoordinateSystem(), ParticleMatterInteraction::ParticleMatterInteraction(), Beam::print(), BoolConstant::print(), DumpEMFields::print(), DumpFields::print(), print(), OpalFilter::print(), OpalTrimCoil::print(), OpalWake::print(), ParticleMatterInteraction::print(), RealConstant::print(), RealVariable::print(), RealVector::print(), Sequence::print(), StringConstant::print(), TrackRun::print(), Distribution::printDistFlattop(), Distribution::printDistFromFile(), Distribution::printDistGauss(), Distribution::printEmissionModelAstra(), Distribution::printEmissionModelNone(), printHelp(), BoundaryGeometry::printInfo(), Distribution::printInfo(), FieldSolver::printInfo(), BoolConstant::printValue(), RealConstant::printValue(), RealVariable::printValue(), RealVector::printValue(), StringConstant::printValue(), PSystem::PSystem(), RealConstant::RealConstant(), RealConstant::RealConstant(), RealVariable::RealVariable(), RealVariable::RealVariable(), RealVector::RealVector(), registerOwnership(), OpalElement::registerOwnership(), OptimizeCmd::run(), SampleCmd::SampleCmd(), Distribution::scaleDistCoordinates(), Select::Select(), Select::select(), Sequence::Sequence(), Distribution::setAttributes(), TrackRun::setBoundaryGeometry(), Distribution::setDistParametersBinomial(), Distribution::setDistParametersFlattop(), Distribution::setDistParametersGauss(), Distribution::setDistParametersMultiGauss(), TrackRun::setDistributionParallelT(), Distribution::setDistType(), FieldSolver::setMT(), FieldSolver::setMX(), FieldSolver::setMY(), TrackRun::setRunMethod(), Distribution::setSigmaP_m(), Distribution::setSigmaR_m(), TrackRun::setupCyclotronTracker(), OpalScalingFFAMagnet::setupDefaultEndField(), Distribution::setupEmissionModel(), Distribution::setupEmissionModelAstra(), Distribution::setupEmissionModelNone(), Distribution::setupEmissionModelNonEquil(), TrackRun::setupFieldsolver(), OpalScalingFFAMagnet::setupNamedEndField(), Distribution::setupParticleBins(), TrackRun::setupThickTracker(), TrackRun::setupTTracker(), Distribution::shiftDistCoordinates(), StringConstant::StringConstant(), StringConstant::StringConstant(), System::System(), Title::Title(), TrackCmd::TrackCmd(), TrackRun::TrackRun(), Beam::update(), OpalAsymmetricEnge::update(), OpalCavity::update(), OpalCCollimator::update(), OpalCyclotron::update(), OpalDegrader::update(), OpalDrift::update(), OpalECollimator::update(), OpalElement::update(), OpalEnge::update(), OpalFlexibleCollimator::update(), OpalHKicker::update(), OpalKicker::update(), OpalMonitor::update(), OpalMultipole::update(), OpalMultipoleT::update(), OpalOctupole::update(), OpalOffset::OpalGlobalCartesianOffset::update(), OpalOffset::OpalGlobalCylindricalOffset::update(), OpalOffset::OpalLocalCartesianOffset::update(), OpalOffset::OpalLocalCylindricalOffset::update(), OpalOutputPlane::update(), OpalPepperPot::update(), OpalPolynomialTimeDependence::update(), OpalProbe::update(), OpalQuadrupole::update(), OpalRBend3D::update(), OpalRBend::update(), OpalRCollimator::update(), OpalRingDefinition::update(), OpalSBend3D::update(), OpalSBend::update(), OpalScalingFFAMagnet::update(), OpalSeptum::update(), OpalSextupole::update(), OpalSinusoidalTimeDependence::update(), OpalSlit::update(), OpalSolenoid::update(), OpalSource::update(), OpalSplineTimeDependence::update(), OpalStripper::update(), OpalTravelingWave::update(), OpalUndulator::update(), OpalVacuum::update(), OpalVariableRFCavity::update(), OpalVariableRFCavityFringeField::update(), OpalVerticalFFAMagnet::update(), OpalVKicker::update(), Option::update(), OpalElement::updateUnknown(), Value::Value(), ValueDefinition::value(), ValueDefinition::value(), Distribution::writeOutFileEmission(), Distribution::writeOutFileHeader(), and Distribution::writeOutFileInjection().

◆ itsHelp

std::string Object::itsHelp
privateinherited

Definition at line 258 of file Object.h.

Referenced by Object(), Object(), and printHelp().

◆ itsName

std::string Object::itsName
privateinherited

Definition at line 255 of file Object.h.

Referenced by getOpalName(), Object(), Object(), and setOpalName().

◆ itsParent

Object* Object::itsParent
privateinherited

Definition at line 252 of file Object.h.

Referenced by getBaseObject(), getParent(), Object(), Object(), and setParent().

◆ maxExtent_m

Vector_t BoundaryGeometry::maxExtent_m
private

◆ minExtent_m

Vector_t BoundaryGeometry::minExtent_m
private

◆ modified

bool Object::modified
protectedinherited

Dirty flag.

Definition at line 238 of file Object.h.

Referenced by isDirty(), Object(), Object(), and setDirty().

◆ occurrence

int Object::occurrence
privateinherited

Definition at line 261 of file Object.h.

Referenced by clear(), increment(), Object(), Object(), and occurrenceCount().

◆ Points_m

std::vector<Vector_t> BoundaryGeometry::Points_m
private

Definition at line 236 of file BoundaryGeometry.h.

Referenced by getPoint(), initialize(), printInfo(), and writeGeomToVtk().

◆ randGen_m

gsl_rng* BoundaryGeometry::randGen_m
private

◆ refCount

int RCObject::refCount
mutableprivateinherited

Definition at line 76 of file RCObject.h.

Referenced by addReference(), isShared(), RCObject(), RCObject(), and removeReference().

◆ references

std::set<Invalidator *> Object::references
privateinherited

Definition at line 268 of file Object.h.

Referenced by registerReference(), unregisterReference(), and ~Object().

◆ sharedFlag

bool Object::sharedFlag
privateinherited

Definition at line 271 of file Object.h.

Referenced by isShared(), Object(), Object(), and setShared().

◆ TfastIsInside_m

IpplTimings::TimerRef BoundaryGeometry::TfastIsInside_m
private

Definition at line 265 of file BoundaryGeometry.h.

Referenced by BoundaryGeometry(), BoundaryGeometry(), execute(), and fastIsInside().

◆ timeStamp

double Object::timeStamp
privateinherited

Definition at line 264 of file Object.h.

◆ Tinitialize_m

IpplTimings::TimerRef BoundaryGeometry::Tinitialize_m
private

Definition at line 263 of file BoundaryGeometry.h.

Referenced by BoundaryGeometry(), BoundaryGeometry(), execute(), and initialize().

◆ TisInside_m

IpplTimings::TimerRef BoundaryGeometry::TisInside_m
private

Definition at line 264 of file BoundaryGeometry.h.

Referenced by BoundaryGeometry(), BoundaryGeometry(), execute(), and initialize().

◆ TPartInside_m

IpplTimings::TimerRef BoundaryGeometry::TPartInside_m
private

Definition at line 267 of file BoundaryGeometry.h.

Referenced by BoundaryGeometry(), BoundaryGeometry(), execute(), and partInside().

◆ TRayTrace_m

IpplTimings::TimerRef BoundaryGeometry::TRayTrace_m
private

◆ Triangles_m

std::vector<std::array<unsigned int,4> > BoundaryGeometry::Triangles_m
private

◆ TriAreas_m

std::vector<double> BoundaryGeometry::TriAreas_m
private

Definition at line 241 of file BoundaryGeometry.h.

Referenced by initialize().

◆ TriNormals_m

std::vector<Vector_t> BoundaryGeometry::TriNormals_m
private

Definition at line 240 of file BoundaryGeometry.h.

Referenced by initialize().

◆ [struct]


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