Computer Assited Medical Intervention Tool Kit  version 5.0
AtomProperties Class Reference

This class manages all the properties attached to an atom. More...

#include <AtomProperties.h>

+ Inheritance diagram for AtomProperties:
+ Collaboration diagram for AtomProperties:

Public Member Functions

 AtomProperties (PhysicalModel *myPM)
 Default constructor : set the position to the origin, and generate an unique index. More...
 
 AtomProperties (PhysicalModel *myPM, const double pos[3])
 generate an unique index. More...
 
 AtomProperties (PhysicalModel *myPM, const unsigned int ind)
 set the position to the origin More...
 
 AtomProperties (PhysicalModel *myPM, const unsigned int ind, const double pos[3])
 everything is given here More...
 
 AtomProperties (PhysicalModel *myPM, physicalModel::AtomProperties xmlAtomProp)
 constructor from xml node: try to read and get the properties from xml More...
 
void getPosition (double pos[3]) const
 get the position of the atom (array of 3 doubles) More...
 
void setPosition (const double, const double, const double)
 set the position of the atom More...
 
void setPosition (const double[3])
 set the position of the atom More...
 
void setPositionPointer (double *ptr, bool update=true)
 change the position pointer. More...
 
virtual void xmlPrint (std::ostream &)
 print to an output stream in "pseudo" XML format. More...
 
 ~AtomProperties () override
 the destructor... More...
 
- Public Member Functions inherited from StructureProperties
unsigned int getIndex () const
 return the unique index in the global structure More...
 
GeometricType getType () const
 Return the type of force. More...
 
void setIndex (const unsigned int)
 set the index (BECAREFUL: it MUST be unique !!!) More...
 
void setType (const GeometricType t)
 Set the force type. More...
 
 StructureProperties (PhysicalModel *, const GeometricType)
 the only default constructor : type must be set More...
 
void xmlPrint (std::ostream &) const
 print to an output stream in "pseaudo" XML format. More...
 
 ~StructureProperties ()=default
 
- Public Member Functions inherited from Properties
std::string getName () const
 get the name (be careful, this method DOES NOT return a copy, so you got the direct ptr to the name!!!) More...
 
PhysicalModelgetPhysicalModel () const
 get the physical model More...
 
 Properties (const std::string n="")
 A nice simple constructor, with a given name. More...
 
 Properties (PhysicalModel *, const std::string n="")
 Another nice constructor, with the PM and a name. More...
 
void setName (std::string)
 set the name (use the string = operator) More...
 
void setPhysicalModel (PhysicalModel *)
 set the physical model More...
 
virtual ~Properties ()=default
 The default destructor. More...
 
void xmlToFields (xsd::cxx::tree::attribute_set< char > attrs)
 convert the xml node parameters to data fields More...
 
unsigned int numberOfFields () const
 get the number of extra fields found in the PML More...
 
bool isAField (std::string attName) const
 check if the field exist in the XML document, return false if it does not More...
 
std::string getField (unsigned int) const
 get the name of field of given index More...
 
double getDouble (std::string attName)
 field accessor: get the field attName as a double value, if field does not exist, 0.0 is return More...
 
int getInt (std::string attName) const
 field accessor: get the field attName as an int value, if field does not exist, 0 is return More...
 
bool getBool (std::string attName) const
 field accessor: get the field attName as a bool value, if field does not exist, false is return More...
 
std::string getString (std::string attName) const
 field accessor: get the field attName as a string value, if field does not exist, empty string is return More...
 
void get (std::string attName, std::string &attVal) const
 field accessor: get the field attName as a string value in attVal, if field does not exist, empty string is return More...
 
void set (std::string attName, double val)
 field modificator: set field attName using a double value More...
 
void set (std::string attName, int val)
 field modificator: set field attName using an int value More...
 
void set (std::string attName, bool val)
 field modificator: set field attName using a bool value More...
 
void set (std::string attName, std::string val)
 field modificator: set field attName using a string value More...
 

Static Public Member Functions

static void resetUniqueIndex ()
 Reinitialize the unique index to zero (usually that what you want to do when you start to load a new PhysicalModel. More...
 
- Static Public Member Functions inherited from StructureProperties
static std::string toString (const GeometricType)
 return the string equivalent to this geometric type More...
 
static GeometricType toType (const std::string)
 return the enum corresponding to this string More...
 

Private Member Functions

void allocate ()
 allocate the memory needed for the position (double[3]). More...
 

Private Attributes

bool allocated
 true only if the memory used for the position was allocated in the constructor and not changed afterwards More...
 
double * X
 Pointer to the memory triplet that stores the atom's position. More...
 

Static Private Attributes

static unsigned int maxUniqueIndex = 0
 unique number (used to generate unique index for atoms if not given at the instantiation) More...
 

Additional Inherited Members

- Public Types inherited from StructureProperties
enum  GeometricType {
  INVALID, ATOM, LINE, TRIANGLE,
  QUAD, TETRAHEDRON, WEDGE, PYRAMID,
  HEXAHEDRON, POLY_LINE, POLY_VERTEX
}
 Geometric type gives information about which kind of geometric representation is the structure. More...
 
- Protected Attributes inherited from StructureProperties
unsigned int index
 unique index in the global structure More...
 
- Protected Attributes inherited from Properties
std::map< std::string, std::string > fields
 map containing all the different fields (name, value stored as string ) More...
 

Detailed Description

This class manages all the properties attached to an atom.

Constructor & Destructor Documentation

◆ AtomProperties() [1/5]

AtomProperties::AtomProperties ( PhysicalModel myPM)

Default constructor : set the position to the origin, and generate an unique index.

Parameters
myPMthe physical model the atom belongs to

References allocate(), StructureProperties::index, maxUniqueIndex, and setPosition().

+ Here is the call graph for this function:

◆ AtomProperties() [2/5]

AtomProperties::AtomProperties ( PhysicalModel myPM,
physicalModel::AtomProperties  xmlAtomProp 
)

constructor from xml node: try to read and get the properties from xml

Parameters
myPMthe physical model the atom belongs to
propthe xsd node of properties for this atom.

References allocate(), StructureProperties::setIndex(), Properties::setName(), setPosition(), and Properties::xmlToFields().

+ Here is the call graph for this function:

◆ AtomProperties() [3/5]

AtomProperties::AtomProperties ( PhysicalModel myPM,
const unsigned int  ind 
)

set the position to the origin

Parameters
myPMthe physical model the atom belongs to
indan unique index

References allocate(), StructureProperties::index, maxUniqueIndex, and setPosition().

+ Here is the call graph for this function:

◆ AtomProperties() [4/5]

AtomProperties::AtomProperties ( PhysicalModel myPM,
const double  pos[3] 
)

generate an unique index.

Parameters
myPMthe physical model the atom belongs to
posthe initial position

References allocate(), StructureProperties::index, maxUniqueIndex, and setPosition().

+ Here is the call graph for this function:

◆ AtomProperties() [5/5]

AtomProperties::AtomProperties ( PhysicalModel myPM,
const unsigned int  ind,
const double  pos[3] 
)

everything is given here

Parameters
myPMthe physical model the atom belongs to
posthe initial position
indan unique index

References allocate(), StructureProperties::index, maxUniqueIndex, and setPosition().

+ Here is the call graph for this function:

◆ ~AtomProperties()

AtomProperties::~AtomProperties ( )
override

the destructor...

References allocated, and X.

Member Function Documentation

◆ allocate()

void AtomProperties::allocate ( )
private

allocate the memory needed for the position (double[3]).

This place in memory is a default, it can be changed using setPositionPointer(..). This method is called in all the constructors, and only there.

References allocated, and X.

Referenced by AtomProperties().

+ Here is the caller graph for this function:

◆ getPosition()

void AtomProperties::getPosition ( double  pos[3]) const
inline

get the position of the atom (array of 3 doubles)

References X.

Referenced by Atom::getPosition(), and setPositionPointer().

+ Here is the caller graph for this function:

◆ resetUniqueIndex()

void AtomProperties::resetUniqueIndex ( )
static

Reinitialize the unique index to zero (usually that what you want to do when you start to load a new PhysicalModel.

References maxUniqueIndex.

Referenced by PhysicalModel::clear().

+ Here is the caller graph for this function:

◆ setPosition() [1/2]

void AtomProperties::setPosition ( const double  x,
const double  y,
const double  z 
)
inline

set the position of the atom

References X.

◆ setPosition() [2/2]

void AtomProperties::setPosition ( const double  pos[3])
inline

set the position of the atom

References X.

Referenced by AtomProperties(), Atom::setPosition(), and setPositionPointer().

+ Here is the caller graph for this function:

◆ setPositionPointer()

void AtomProperties::setPositionPointer ( double *  ptr,
bool  update = true 
)

change the position pointer.

This is useful to allocate a big bunch of memory with all the position in order to improve memory cache usage.

Note
this memory is not deleted/cleaned in ~AtomProperties (the destructor)
Parameters
ptrthe pointer to the memory (should have enough space for storing double[3]
updateupdate the new memory space using the previously stored position

References allocated, getPosition(), setPosition(), and X.

+ Here is the call graph for this function:

◆ xmlPrint()

void AtomProperties::xmlPrint ( std::ostream &  o)
virtual

print to an output stream in "pseudo" XML format.

References Properties::fields, Properties::getName(), StructureProperties::index, and X.

+ Here is the call graph for this function:

Member Data Documentation

◆ allocated

bool AtomProperties::allocated
private

true only if the memory used for the position was allocated in the constructor and not changed afterwards

Referenced by allocate(), setPositionPointer(), and ~AtomProperties().

◆ maxUniqueIndex

unsigned int AtomProperties::maxUniqueIndex = 0
staticprivate

unique number (used to generate unique index for atoms if not given at the instantiation)

Referenced by AtomProperties(), and resetUniqueIndex().

◆ X

double* AtomProperties::X
private

Pointer to the memory triplet that stores the atom's position.

Referenced by allocate(), getPosition(), setPosition(), setPositionPointer(), xmlPrint(), and ~AtomProperties().


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