Computer Assited Medical Intervention Tool Kit  version 5.0
PhysicalModel Class Reference

This is the main class of this project. Following a nice concept, a physical model is able to represent any kind of 3D physical model that appeared, appears or will appear on earth. This include FEM meshes, spring-mass networks, phymulob etc... More...

#include <PhysicalModel.h>

+ Collaboration diagram for PhysicalModel:

Public Member Functions

properties general manipulation
const std::string getName () const
 Return the name of the physical model. More...
 
void setName (const std::string)
 set the name of the physical model More...
 
PropertiesgetProperties ()
 get all properties (beware of what you do with them!): please consider calling setModified(). More...
 
bool isModified ()
 check if something have changed More...
 
void setModified ()
 tell the physical model something has changed (for example: a property was modified/added). More...
 
export to files
void xmlPrint (std::ostream &o, bool opt=false)
 print the physical model to an output stream in a XML format (see physicalmodel.xsd for detail about the XML format). More...
 
void exportPatran (std::string filename)
 Save the geometry (atoms/cells) of this PhysicalModel in the Patran format. More...
 
void exportAnsysMesh (std::string filename)
 Save the mesh (atoms/cells) of this PhysicalModel in the Ansys format. More...
 

constructors and destructors.

static const char * VERSION
 Current PML library version. More...
 
 PhysicalModel () noexcept
 Default constructor : this one just initialize everything. More...
 
 PhysicalModel (const char *fileName, PtrToSetProgressFunction pspf=nullptr)
 instantiate a physical model object using a XML native format file This method may throw a PMLAbortException if a problem occurs. More...
 
virtual ~PhysicalModel ()
 destructor More...
 

component manipulations

Propertiesproperties
 all physical model properties More...
 
bool isModifiedFlag
 is the current property state modified More...
 
MultiComponentexclusiveComponents
 Exclusive components are the non-overlaping components : they defined all the components of the physicalModel and the physicalModel could be defined by all this components. More...
 
MultiComponentinformativeComponents
 Informative components could be overlaping with other components : they are extra components that give information about group of cells. More...
 
StructuralComponentatoms
 List of all the atoms : this is the basic stuff for a physicall model. More...
 
std::GlobalIndexStructureMap cellMap
 the association couple list, which contains the direct map between the cell's global index and the cell ptr More...
 
std::vector< Cell * > optimizedCellList
 optimized consecutive cell vector (in here optimizedCellList[i]->getIndex() == i ) More...
 
bool cellIndexOptimized
 tell if optimizedCellList can be used More...
 
std::GlobalIndexStructureMap atomMap
 the association couple list, which contains the direct map between the atom's global index and the atom ptr More...
 
PtrToSetProgressFunction setProgressFunction
 the progress function More...
 
double * positionPtr
 the big memory space where all the atom's position are stored (it is one big block, optimizing the memory cache management). Size = 3*nrOfAtoms*sizeof(double) More...
 
unsigned int getNumberOfExclusiveComponents () const
 get the total number of exclusive components More...
 
unsigned int getNumberOfInformativeComponents () const
 get the total number of informative components More...
 
unsigned int getNumberOfAtoms () const
 get the number of atoms More...
 
unsigned int getNumberOfCells () const
 get the total nr of cell in the physical model (exclusive as well as informative) More...
 
ComponentgetExclusiveComponent (const unsigned int) const
 get an exclusive component by its index in the list More...
 
void setExclusiveComponents (MultiComponent *)
 set the exclusive multi component. Becareful: the physical model takes control of this MultiComponent More...
 
MultiComponentgetExclusiveComponents () const
 get all the exclusive components More...
 
MultiComponentgetInformativeComponents () const
 get all the informative components More...
 
StructuralComponentgetAtoms () const
 get all the atoms More...
 
ComponentgetInformativeComponent (const unsigned int) const
 get an informative component by its index in the list More...
 
void setInformativeComponents (MultiComponent *)
 set the exclusive multi component. Becareful: the physical model takes control of this MultiComponent More...
 
void setAtoms (StructuralComponent *, bool deleteOld=true)
 set the atom structural component. More...
 
bool addAtom (Atom *)
 Add a new atom to the atoms' structural component. More...
 
AtomgetAtom (const unsigned int id)
 Get the atom that has the global index given in parameters. More...
 
bool addGlobalIndexAtomPair (std::GlobalIndexStructurePair)
 add or update a pair to the atom map. More...
 
bool addGlobalIndexCellPair (std::GlobalIndexStructurePair)
 add or update a pair to the cell map. More...
 
CellgetCell (const unsigned int id)
 get the cell that has the global index given in parameters. More...
 
StructuregetStructureByName (const std::string n)
 get a cell using its name More...
 
ComponentgetComponentByName (const std::string n)
 get a structural or multi component by its name. More...
 
virtual void setProgress (const float donePercentage)
 this method is called during a long process everytime a little bit of the process is finished. More...
 
virtual void setAtomPosition (Atom *atom, const double pos[3])
 Set the new position of an atom. More...
 
double * getPositionPointer () const
 get the pointer to the memory space allocated for the atom's position. More...
 
double * getPositionPointer (const unsigned int index) const
 get the pointer to the memory space allocated for atom #index's position (using global index) More...
 
double * getPositionPointer (const Atom *a) const
 get the pointer to the memory space allocated for a given atom More...
 
void xmlRead (const char *n)
 use the XML Parser/Reader to read an XML file conform to physicalmodel.dtd This method may throw a PMLAbortException if a problem occurs. More...
 
bool parseTree (std::unique_ptr< physicalModel::PhysicalModel > root, std::string defaultName)
 read the xml tree and call other parse methods to build the physicalModel. More...
 
bool parseAtoms (physicalModel::Atoms atomsRoot)
 read the atom list in the xml tree and build them. More...
 
bool parseComponents (physicalModel::MultiComponent mcFather, Component *father, bool isExclusive)
 read the exclusive components list in the xml tree and build them. More...
 
void clear ()
 Clear everything. That allows one to restart an allready instantiated object from scratch. More...
 
void optimizeIndexes ()
 optimize atom and cell indexes so that each order number is equal to the index More...
 
void optimizeIndexes (MultiComponent *, unsigned int *)
 optimize the indexes for a given multi component (new indexing will start using the parameter) More...
 
void init ()
 initialization method More...
 

Detailed Description

This is the main class of this project. Following a nice concept, a physical model is able to represent any kind of 3D physical model that appeared, appears or will appear on earth. This include FEM meshes, spring-mass networks, phymulob etc...

Constructor & Destructor Documentation

◆ PhysicalModel() [1/2]

PhysicalModel::PhysicalModel ( )
noexcept

Default constructor : this one just initialize everything.

Structures and atoms are empty.

References init().

+ Here is the call graph for this function:

◆ PhysicalModel() [2/2]

PhysicalModel::PhysicalModel ( const char *  fileName,
PtrToSetProgressFunction  pspf = nullptr 
)

instantiate a physical model object using a XML native format file This method may throw a PMLAbortException if a problem occurs.

Parameters
fileNamethe name of the xml file to use
pspfis a pointer to the method that will be called by the setProgress(...) method (default = NULL)

References init(), setProgressFunction, and xmlRead().

+ Here is the call graph for this function:

◆ ~PhysicalModel()

PhysicalModel::~PhysicalModel ( )
virtual

destructor

References clear().

+ Here is the call graph for this function:

Member Function Documentation

◆ addAtom()

bool PhysicalModel::addAtom ( Atom newA)

Add a new atom to the atoms' structural component.

It does add the atom only if it has a unique index, otherwise nothing is done. (if index is correct, then it also call the addGlobalIndexAtomPair method).

Returns
true only if the atom was added

References addGlobalIndexAtomPair(), StructuralComponent::addStructure(), atoms, and Structure::getIndex().

+ Here is the call graph for this function:

◆ addGlobalIndexAtomPair()

bool PhysicalModel::addGlobalIndexAtomPair ( std::GlobalIndexStructurePair  p)

add or update a pair to the atom map.

It does nothing if the atom already exist in the map

Returns
true only if the atom was added

References atomMap.

Referenced by addAtom(), setAtoms(), and Atom::setIndex().

+ Here is the caller graph for this function:

◆ addGlobalIndexCellPair()

bool PhysicalModel::addGlobalIndexCellPair ( std::GlobalIndexStructurePair  p)

add or update a pair to the cell map.

It does nothing if the cell already exist in the map

Returns
true only if the cell was added

References cellIndexOptimized, cellMap, and optimizedCellList.

Referenced by parseComponents(), and Cell::setIndex().

+ Here is the caller graph for this function:

◆ clear()

void PhysicalModel::clear ( )
private

Clear everything. That allows one to restart an allready instantiated object from scratch.

References atomMap, atoms, cellMap, exclusiveComponents, informativeComponents, positionPtr, properties, CellProperties::resetUniqueIndex(), and AtomProperties::resetUniqueIndex().

Referenced by xmlRead(), and ~PhysicalModel().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportAnsysMesh()

void PhysicalModel::exportAnsysMesh ( std::string  filename)

Save the mesh (atoms/cells) of this PhysicalModel in the Ansys format.

//@@ This method is useful only for a FEM (?) mesh. Maybe it's better to put it in a femPM class that inherits PhysicalModel???

References atoms, Component::getCell(), getComponentByName(), Structure::getIndex(), getNumberOfAtoms(), Component::getNumberOfCells(), StructuralComponent::getNumberOfStructures(), Atom::getPosition(), StructuralComponent::getStructure(), Structure::getType(), StructureProperties::HEXAHEDRON, StructureProperties::QUAD, StructureProperties::TETRAHEDRON, and StructureProperties::WEDGE.

Referenced by ArtisynthSimulator::runArtisynth(), and PrepWriter::write().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportPatran()

void PhysicalModel::exportPatran ( std::string  filename)

Save the geometry (atoms/cells) of this PhysicalModel in the Patran format.

%%% This method is useful only for a FEM (?) mesh. Maybe it's better to put it in a femPM class that inherits PhysicalModel???

References getAtom(), Component::getCell(), getExclusiveComponent(), Structure::getIndex(), getName(), getNumberOfAtoms(), Component::getNumberOfCells(), StructuralComponent::getNumberOfStructures(), Atom::getPosition(), StructuralComponent::getStructure(), Structure::getType(), StructureProperties::HEXAHEDRON, and StructureProperties::WEDGE.

+ Here is the call graph for this function:

◆ getAtom()

Atom * PhysicalModel::getAtom ( const unsigned int  id)
inline

Get the atom that has the global index given in parameters.

The global index of an atom is the index stored as its property. This is different from its rank in the atoms list as Physical Model do not nessecarily have consecutive indexes starting at 0.

Therefore:

  • getAtom(id) can therefore be different than getAtoms()->getStructure(id)
  • getAtom(id) is equivalent to getAtoms()->getStructureByIndex(id)
Parameters
idthe atom index in the physical model
Returns
the corresponding atom or NULL if non existant (i.e. no atoms have this index)

References atomMap, atoms, Structure::getIndex(), and StructuralComponent::getStructure().

Referenced by AtomIterator::AtomIterator(), MonitorNormDisplacement::calculate(), MonitorDisplacement::calculate(), MonitorRen::calculate(), Cell::Cell(), CreateSC::computeBoundsOfPointIds(), SofaSimulator::createPml(), exportPatran(), SurfaceExtractor::generateExternalSurface(), Facet::getCell(), parseComponents(), PMLComponentExtension::save(), GenerateModel::saveMMLFiles(), Colors::update(), Arrows::update(), and Simulator::updatePositions().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAtoms()

StructuralComponent * PhysicalModel::getAtoms ( ) const
inline

get all the atoms

References atoms.

Referenced by CreateSC::apply(), getComponentByName(), Position::Position(), SofaSimulator::SofaSimulator(), Simulator::updatePositions(), and Atom::xmlPrint().

+ Here is the caller graph for this function:

◆ getCell()

Cell * PhysicalModel::getCell ( const unsigned int  id)
inline

get the cell that has the global index given in parameters.

Parameters
idthe cell index in the physical model
Returns
the corresponding cell or NULL if non existant (i.e. no cels have this index)

References cellIndexOptimized, cellMap, and optimizedCellList.

Referenced by CreateSC::computeBoundsOfCellIds().

+ Here is the caller graph for this function:

◆ getComponentByName()

Component * PhysicalModel::getComponentByName ( const std::string  n)

get a structural or multi component by its name.

Becareful: this method never returns a cell (only a structural component or a multiple component. To get a cell, use getStructureByName(..)

References exclusiveComponents, getAtoms(), MultiComponent::getComponentByName(), getName(), and informativeComponents.

Referenced by AtomIterator::AtomIterator(), MonitorVolume::calculate(), MonitorForce::calculate(), MonitorSurface::calculate(), exportAnsysMesh(), CreateSC::getWidget(), and SofaSimulator::SofaSimulator().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExclusiveComponent()

Component * PhysicalModel::getExclusiveComponent ( const unsigned int  i) const

get an exclusive component by its index in the list

References exclusiveComponents, and MultiComponent::getSubComponent().

Referenced by exportPatran().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExclusiveComponents()

MultiComponent * PhysicalModel::getExclusiveComponents ( ) const
inline

get all the exclusive components

References exclusiveComponents.

Referenced by ParametersWriter::write().

+ Here is the caller graph for this function:

◆ getInformativeComponent()

Component * PhysicalModel::getInformativeComponent ( const unsigned int  i) const

get an informative component by its index in the list

References MultiComponent::getSubComponent(), and informativeComponents.

+ Here is the call graph for this function:

◆ getInformativeComponents()

MultiComponent * PhysicalModel::getInformativeComponents ( ) const
inline

get all the informative components

References informativeComponents.

Referenced by CreateSC::apply(), PMLComponentExtension::save(), and GenerateModel::saveMMLFiles().

+ Here is the caller graph for this function:

◆ getName()

const std::string PhysicalModel::getName ( ) const
inline

Return the name of the physical model.

References Properties::getName(), and properties.

Referenced by exportPatran(), getComponentByName(), and xmlPrint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNumberOfAtoms()

unsigned int PhysicalModel::getNumberOfAtoms ( ) const

get the number of atoms

References atoms, and StructuralComponent::getNumberOfStructures().

Referenced by exportAnsysMesh(), exportPatran(), SofaSimulator::SofaSimulator(), Arrows::update(), and Colors::update().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNumberOfCells()

unsigned int PhysicalModel::getNumberOfCells ( ) const

get the total nr of cell in the physical model (exclusive as well as informative)

References exclusiveComponents, MultiComponent::getNumberOfCells(), and informativeComponents.

Referenced by xmlPrint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNumberOfExclusiveComponents()

unsigned int PhysicalModel::getNumberOfExclusiveComponents ( ) const

get the total number of exclusive components

References exclusiveComponents, and MultiComponent::getNumberOfSubComponents().

+ Here is the call graph for this function:

◆ getNumberOfInformativeComponents()

unsigned int PhysicalModel::getNumberOfInformativeComponents ( ) const

get the total number of informative components

References MultiComponent::getNumberOfSubComponents(), and informativeComponents.

+ Here is the call graph for this function:

◆ getPositionPointer() [1/3]

double * PhysicalModel::getPositionPointer ( ) const

get the pointer to the memory space allocated for the atom's position.

The memory is a big block of size getNumberOfAtoms()*3*sizeof(double). The atom positions are stored in the same order as in the atoms structural component

References positionPtr.

◆ getPositionPointer() [2/3]

double * PhysicalModel::getPositionPointer ( const Atom a) const

get the pointer to the memory space allocated for a given atom

References a, atoms, StructuralComponent::getStructure(), and positionPtr.

+ Here is the call graph for this function:

◆ getPositionPointer() [3/3]

double * PhysicalModel::getPositionPointer ( const unsigned int  index) const

get the pointer to the memory space allocated for atom #index's position (using global index)

References a, atoms, StructuralComponent::getStructure(), and positionPtr.

+ Here is the call graph for this function:

◆ getProperties()

Properties * PhysicalModel::getProperties ( )
inline

get all properties (beware of what you do with them!): please consider calling setModified().

When you modify/add a property (or the physical model or any component/structure), you should always call setModified() in order to specify that something has changed.

References properties.

◆ getStructureByName()

Structure * PhysicalModel::getStructureByName ( const std::string  n)
inline

get a cell using its name

References atomMap, and cellMap.

◆ init()

void PhysicalModel::init ( )
private

initialization method

References atoms, cellIndexOptimized, exclusiveComponents, informativeComponents, isModifiedFlag, positionPtr, properties, and setProgressFunction.

Referenced by PhysicalModel().

+ Here is the caller graph for this function:

◆ isModified()

bool PhysicalModel::isModified ( )
inline

check if something have changed

References isModifiedFlag.

◆ optimizeIndexes() [1/2]

void PhysicalModel::optimizeIndexes ( )
private

optimize atom and cell indexes so that each order number is equal to the index

References atoms, exclusiveComponents, StructuralComponent::getNumberOfStructures(), StructuralComponent::getStructure(), and informativeComponents.

Referenced by optimizeIndexes(), and xmlPrint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ optimizeIndexes() [2/2]

void PhysicalModel::optimizeIndexes ( MultiComponent mc,
unsigned int *  index 
)
private

optimize the indexes for a given multi component (new indexing will start using the parameter)

References StructuralComponent::getNumberOfStructures(), MultiComponent::getNumberOfSubComponents(), StructuralComponent::getStructure(), MultiComponent::getSubComponent(), Structure::isInstanceOf(), Component::isInstanceOf(), Cell::makePrintData(), optimizeIndexes(), and Cell::setIndex().

+ Here is the call graph for this function:

◆ parseAtoms()

bool PhysicalModel::parseAtoms ( physicalModel::Atoms  atomsRoot)
private

read the atom list in the xml tree and build them.

References StructuralComponent::addStructure(), atoms, StructuralComponent::plannedNumberOfStructures(), and setAtoms().

Referenced by parseTree().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseComponents()

bool PhysicalModel::parseComponents ( physicalModel::MultiComponent  mcFather,
Component father,
bool  isExclusive 
)
private

read the exclusive components list in the xml tree and build them.

References a, addGlobalIndexCellPair(), StructuralComponent::addStructure(), cellIndexOptimized, getAtom(), Structure::getIndex(), Component::setExclusive(), and Component::setName().

Referenced by parseTree().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseTree()

bool PhysicalModel::parseTree ( std::unique_ptr< physicalModel::PhysicalModel >  root,
std::string  defaultName 
)
private

read the xml tree and call other parse methods to build the physicalModel.

References a, atoms, StructuralComponent::getNumberOfStructures(), StructuralComponent::getStructure(), parseAtoms(), parseComponents(), positionPtr, properties, setExclusiveComponents(), setInformativeComponents(), and Properties::xmlToFields().

Referenced by xmlRead().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setAtomPosition()

void PhysicalModel::setAtomPosition ( Atom atom,
const double  pos[3] 
)
virtual

Set the new position of an atom.

References Atom::setPosition().

+ Here is the call graph for this function:

◆ setAtoms()

void PhysicalModel::setAtoms ( StructuralComponent sc,
bool  deleteOld = true 
)

set the atom structural component.

Becareful: the physical model takes control of this structural component

Parameters
scthe new atom structural component
deleteOldif true, then the old atoms SC is delete (thus deleting its atoms as well)

References a, addGlobalIndexAtomPair(), StructuralComponent::ATOMS, atoms, StructuralComponent::composedBy(), StructuralComponent::getNumberOfStructures(), and StructuralComponent::getStructure().

Referenced by SofaSimulator::createPml(), parseAtoms(), and PMLComponentExtension::save().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setExclusiveComponents()

void PhysicalModel::setExclusiveComponents ( MultiComponent mc)

set the exclusive multi component. Becareful: the physical model takes control of this MultiComponent

References exclusiveComponents, and MultiComponent::setPhysicalModel().

Referenced by SofaSimulator::createPml(), parseTree(), and PMLComponentExtension::save().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setInformativeComponents()

void PhysicalModel::setInformativeComponents ( MultiComponent mc)

set the exclusive multi component. Becareful: the physical model takes control of this MultiComponent

References informativeComponents, and MultiComponent::setPhysicalModel().

Referenced by CreateSC::apply(), SofaSimulator::createPml(), parseTree(), and PMLComponentExtension::save().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setModified()

void PhysicalModel::setModified ( )
inline

tell the physical model something has changed (for example: a property was modified/added).

This can be useful to check if something has changed since the PhysicalModel was created.

References isModifiedFlag.

◆ setName()

void PhysicalModel::setName ( const std::string  n)
inline

set the name of the physical model

References properties, and Properties::setName().

Referenced by SofaSimulator::createPml().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setProgress()

void PhysicalModel::setProgress ( const float  donePercentage)
virtual

this method is called during a long process everytime a little bit of the process is finished.

This method should be overloaded by the subclass to give a mean to produce a progress bar or equivalent gui/hmi stuff.

Parameters
donePercentagethe percentage (between 0 and 100) of the work already done

References setProgressFunction.

◆ xmlPrint()

void PhysicalModel::xmlPrint ( std::ostream &  o,
bool  opt = false 
)

print the physical model to an output stream in a XML format (see physicalmodel.xsd for detail about the XML format).

By default the output is not optimized (optimized = faster loading). In order to optimize, the cell and atom indexes are renumbered to be consecutive, so access to celli or atomi is done in linear time. There are many reasons why you would not want to optimize the output, e.g. if you have a specific cell numbering that you are using somewhere else, in a different software or so.

Parameters
othe ostream to write to
opta boolean indicating if yes or no you want the pm to optimize the output

References atoms, cellIndexOptimized, exclusiveComponents, Properties::getField(), getName(), getNumberOfCells(), StructuralComponent::getNumberOfStructures(), MultiComponent::getNumberOfSubComponents(), Properties::getString(), informativeComponents, isModifiedFlag, Properties::numberOfFields(), optimizeIndexes(), properties, MultiComponent::xmlPrint(), and StructuralComponent::xmlPrint().

Referenced by SofaSimulator::createPml(), PMLComponentExtension::save(), and GenerateModel::saveMMLFiles().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ xmlRead()

void PhysicalModel::xmlRead ( const char *  n)
private

use the XML Parser/Reader to read an XML file conform to physicalmodel.dtd This method may throw a PMLAbortException if a problem occurs.

Parameters
nthe name of the XML file

References clear(), camitk::Initialize(), and parseTree().

Referenced by PhysicalModel().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ atomMap

std::GlobalIndexStructureMap PhysicalModel::atomMap
private

the association couple list, which contains the direct map between the atom's global index and the atom ptr

Referenced by addGlobalIndexAtomPair(), clear(), getAtom(), and getStructureByName().

◆ atoms

StructuralComponent* PhysicalModel::atoms
private

List of all the atoms : this is the basic stuff for a physicall model.

The smallest entity here

Referenced by addAtom(), clear(), exportAnsysMesh(), getAtom(), getAtoms(), getNumberOfAtoms(), getPositionPointer(), init(), optimizeIndexes(), parseAtoms(), parseTree(), setAtoms(), and xmlPrint().

◆ cellIndexOptimized

bool PhysicalModel::cellIndexOptimized
private

tell if optimizedCellList can be used

Referenced by addGlobalIndexCellPair(), getCell(), init(), parseComponents(), and xmlPrint().

◆ cellMap

std::GlobalIndexStructureMap PhysicalModel::cellMap
private

the association couple list, which contains the direct map between the cell's global index and the cell ptr

Referenced by addGlobalIndexCellPair(), clear(), getCell(), and getStructureByName().

◆ exclusiveComponents

MultiComponent* PhysicalModel::exclusiveComponents
private

Exclusive components are the non-overlaping components : they defined all the components of the physicalModel and the physicalModel could be defined by all this components.

exclusiveComponents could only contains StructuralComponents...

Referenced by clear(), getComponentByName(), getExclusiveComponent(), getExclusiveComponents(), getNumberOfCells(), getNumberOfExclusiveComponents(), init(), optimizeIndexes(), setExclusiveComponents(), and xmlPrint().

◆ informativeComponents

MultiComponent* PhysicalModel::informativeComponents
private

Informative components could be overlaping with other components : they are extra components that give information about group of cells.

This components are not mandatory.

Referenced by clear(), getComponentByName(), getInformativeComponent(), getInformativeComponents(), getNumberOfCells(), getNumberOfInformativeComponents(), init(), optimizeIndexes(), setInformativeComponents(), and xmlPrint().

◆ isModifiedFlag

bool PhysicalModel::isModifiedFlag
private

is the current property state modified

Referenced by init(), isModified(), setModified(), and xmlPrint().

◆ optimizedCellList

std::vector<Cell*> PhysicalModel::optimizedCellList
private

optimized consecutive cell vector (in here optimizedCellList[i]->getIndex() == i )

Referenced by addGlobalIndexCellPair(), and getCell().

◆ positionPtr

double* PhysicalModel::positionPtr
private

the big memory space where all the atom's position are stored (it is one big block, optimizing the memory cache management). Size = 3*nrOfAtoms*sizeof(double)

Referenced by clear(), getPositionPointer(), init(), and parseTree().

◆ properties

Properties* PhysicalModel::properties
private

all physical model properties

Referenced by clear(), getName(), getProperties(), init(), parseTree(), setName(), and xmlPrint().

◆ setProgressFunction

PtrToSetProgressFunction PhysicalModel::setProgressFunction
private

the progress function

Referenced by init(), PhysicalModel(), and setProgress().

◆ VERSION

const char* PhysicalModel::VERSION
static

Current PML library version.


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