Computer Assited Medical Intervention Tool Kit  version 5.0
MonitoringManager Class Referenceabstract

Manager of the benchmark tests. Do simulation loop and tests. More...

#include <MonitoringManager.h>

+ Inheritance diagram for MonitoringManager:
+ Collaboration diagram for MonitoringManager:

Public Member Functions

void addMonitor (Monitor *monitor)
 add a monitor to the list More...
 
virtual bool checkStop ()=0
 Check if simulation is finished. More...
 
void deleteMonitor (const unsigned int i)
 delete a monitor and remove it from the list using its index More...
 
virtual void doMove ()=0
 Do one step of simulation and save monitors for this step. More...
 
virtual void end ()=0
 End manager. More...
 
MonitorgetMonitor (const unsigned int i) const
 get a monitor by its index in the list More...
 
void incStep ()
 increment step by one More...
 
virtual bool init ()=0
 Initialize manager. More...
 
bool isLmlPresent ()
 check if a lml is present More...
 
bool isPmlPresent ()
 check if a scn is present instead of pmlFileName More...
 
 MonitoringManager (const char *mml)
 constructor More...
 
unsigned int numberOfMonitor () const
 get the number of monitors stored in the list More...
 
void reload (bool delPml=true)
 reload simulation with current parameters More...
 
void rewind ()
 Rewind simulation. More...
 
void saveMmlIn (const char *fileName)
 save current version of mml in More...
 
void saveMonitors ()
 Save save monitors' state for the current time. More...
 
void setCurrentTime (double time)
 mutators for simulation parameters More...
 
void setDt (double dt)
 change dt and save modification into mmlIn More...
 
void setLmlFileName (const char *file)
 change lml file name and save modification into mmlIn More...
 
void setPmlFileName (const char *file)
 change pml file name and save modification into mmlIn More...
 
void setRefresh (double refresh)
 change refresh and save modification into mmlIn More...
 
void simulate ()
 perform simulation loop, make tests and save monitors' data into output file More...
 
void storeOldPositions ()
 store old positions before next step More...
 
void updateComputingTime ()
 add step computing time to total computing time More...
 
void updateCurrentTime ()
 add dt to current time More...
 
void writeCsv (const char *fileName)
 Write all saved monitors'state into csv file. More...
 
void writeOutput (const char *fileName)
 Write all saved monitors' states into mmlOut file. More...
 
virtual ~MonitoringManager ()
 destructor More...
 
accessors for simulation parameters
double getDt ()
 
double getRefresh ()
 
double getCurrentTime ()
 
double getCurrentStep ()
 
double getStepComputingTime ()
 
double getComputingTime ()
 
PhysicalModelgetInitPml ()
 
PhysicalModelgetPml ()
 
PhysicalModeltakePml ()
 This is nearly the same as getPml(), but it also transfers ownership of the pointer. More...
 
LoadsgetLml ()
 
LoadstakeLml ()
 This is nearly the same as getLml(), but it also transfers ownership of the pointer. More...
 
std::string getPmlFileName ()
 
std::string getLmlFileName ()
 
std::string getMmlFileName ()
 
std::string getmmlFileFolder ()
 
SimulatorgetSimulator ()
 
void getOldPosition (double pos[3], unsigned int index)
 get atom position for precedent step More...
 

Protected Attributes

double computingTime
 total computing time at current moment More...
 
double currentTime
 time at current moment More...
 
double dt
 integration step More...
 
std::unique_ptr< mml::MonitoringIn > mmlIn
 Object representing manager in the file generated by xsdcxx, can be used for serialization. More...
 
std::vector< Monitor * > monitors
 Vector that contains all monitors. More...
 
double refresh
 refreshing step More...
 
Simulatorsimul
 the simulator used for simualtion More...
 
std::string simulatorName
 name of the simulator More...
 
int step
 current step More...
 
double stepComputingTime
 computing time of last step More...
 
std::vector< mml::TimeStep * > times
 Vector that contains information saved by saveMonitors method. More...
 

Private Member Functions

void buildLoads ()
 build the loads if lml file was given More...
 
void buildMonitors ()
 build monitors More...
 
void buildPmlAndSimulator (bool delPml=true)
 build physical model and simulator More...
 
void buildPmlAndSimulatorfromPml ()
 build physical model and simulator from a pml file More...
 
void buildPmlAndSimulatorfromSimulator ()
 build physical model and simulator from a specific simulator file More...
 

Private Attributes

PhysicalModelinitPml
 initial pml More...
 
Loadslml
 Loads applied to pml. More...
 
std::string lmlFileName
 name of the lml file (complete path from working directory) More...
 
std::string mmlFileFolder
 folder of mml file (complete path from working directory) More...
 
std::string mmlFileName
 name of the mml in file (complete path from working directory) More...
 
double * oldPositionPointer
 old position pointer More...
 
bool ownLml
 is the lml "own" by this is instance, which is the normal case when there are not visual representation. But ownership can also be taken by some other instance, see takeLml() More...
 
bool ownPml
 is the pml "own" by this instance, which is the normal case when there are no visual representation. But ownership can also be taken by some other instance, see takePml() More...
 
PhysicalModelpml
 pml at current moment More...
 
std::string pmlFileName
 name of the pml file (complete path from working directory) More...
 

Detailed Description

Manager of the benchmark tests. Do simulation loop and tests.

Constructor & Destructor Documentation

◆ MonitoringManager()

MonitoringManager::MonitoringManager ( const char *  mml)

constructor

Parameters
mmlmml file name
simsimulator name (Sofa, Ansys...)

References camitk::refresh(), and timeParameter2double().

+ Here is the call graph for this function:

◆ ~MonitoringManager()

MonitoringManager::~MonitoringManager ( )
virtual

destructor

Member Function Documentation

◆ addMonitor()

void MonitoringManager::addMonitor ( Monitor monitor)

add a monitor to the list

◆ buildLoads()

void MonitoringManager::buildLoads ( )
private

build the loads if lml file was given

◆ buildMonitors()

void MonitoringManager::buildMonitors ( )
private

build monitors

References MonitorFactory::createMonitor().

+ Here is the call graph for this function:

◆ buildPmlAndSimulator()

void MonitoringManager::buildPmlAndSimulator ( bool  delPml = true)
private

build physical model and simulator

Parameters
delPmltrue if pml object have to be deleted (perhaps used by others: physicalModel component...)

◆ buildPmlAndSimulatorfromPml()

void MonitoringManager::buildPmlAndSimulatorfromPml ( )
private

build physical model and simulator from a pml file

References SimulatorFactory::createSimulator(), and SimulatorFactory::getInstance().

+ Here is the call graph for this function:

◆ buildPmlAndSimulatorfromSimulator()

void MonitoringManager::buildPmlAndSimulatorfromSimulator ( )
private

build physical model and simulator from a specific simulator file

References Simulator::createPml(), SimulatorFactory::createSimulator(), and SimulatorFactory::getInstance().

+ Here is the call graph for this function:

◆ checkStop()

virtual bool MonitoringManager::checkStop ( )
pure virtual

Check if simulation is finished.

Implemented in InteractiveMonitoringManager, and NonInteractiveMonitoringManager.

Referenced by MonitoringGuiManager::doOneStep(), and MonitoringGuiManager::simulateOneStep().

+ Here is the caller graph for this function:

◆ deleteMonitor()

void MonitoringManager::deleteMonitor ( const unsigned int  i)

delete a monitor and remove it from the list using its index

◆ doMove()

virtual void MonitoringManager::doMove ( )
pure virtual

Do one step of simulation and save monitors for this step.

Implemented in InteractiveMonitoringManager, and NonInteractiveMonitoringManager.

Referenced by MonitoringGuiManager::doOneStep().

+ Here is the caller graph for this function:

◆ end()

virtual void MonitoringManager::end ( )
pure virtual

◆ getComputingTime()

double MonitoringManager::getComputingTime ( )

Referenced by MonitorComputingTime::calculate(), and MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ getCurrentStep()

double MonitoringManager::getCurrentStep ( )

Referenced by ArtisynthSimulator::getPosition(), AnsysSimulator::getPosition(), and MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ getCurrentTime()

double MonitoringManager::getCurrentTime ( )

Referenced by MonitorDistanceY::calculate(), MonitorGeometricDeviation::calculate(), MonitorRen::calculate(), MonitorPointSetDistance::calculate(), MonitorDistanceZ::calculate(), MonitorDistanceX::calculate(), Time::calculate(), MonitoringGuiManager::doOneStep(), and MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ getDt()

double MonitoringManager::getDt ( )

Referenced by SoluWriter::SoluWriter(), and MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ getInitPml()

PhysicalModel * MonitoringManager::getInitPml ( )

Referenced by MonitorNormDisplacement::calculate(), MonitorRen::calculate(), MonitorDisplacement::calculate(), and Monitor::Monitor().

+ Here is the caller graph for this function:

◆ getLml()

Loads * MonitoringManager::getLml ( )

Referenced by SofaSimulator::buildConstraints(), and PrepWriter::write().

+ Here is the caller graph for this function:

◆ getLmlFileName()

string MonitoringManager::getLmlFileName ( )

Referenced by MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ getmmlFileFolder()

string MonitoringManager::getmmlFileFolder ( )

◆ getMmlFileName()

string MonitoringManager::getMmlFileName ( )

Referenced by MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ getMonitor()

Monitor * MonitoringManager::getMonitor ( const unsigned int  i) const

get a monitor by its index in the list

Referenced by MMLDisplay::connectMonitor(), MMLDisplay::getDisplayedMonitor(), MonitoringDialog::updateMonitors(), and MMLDisplay::updateMonitorsTable().

+ Here is the caller graph for this function:

◆ getOldPosition()

void MonitoringManager::getOldPosition ( double  pos[3],
unsigned int  index 
)

get atom position for precedent step

References a.

Referenced by Position::calculate().

+ Here is the caller graph for this function:

◆ getPml()

◆ getPmlFileName()

std::string MonitoringManager::getPmlFileName ( )

Referenced by MMLComponent::connectPml(), MMLComponent::MMLComponent(), and MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ getRefresh()

double MonitoringManager::getRefresh ( )

References camitk::refresh().

Referenced by MonitoringGuiManager::doOneStep(), and MonitoringDialog::updateSimulation().

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

◆ getSimulator()

Simulator * MonitoringManager::getSimulator ( )

Referenced by MonitorForce::calculate(), and MonitoringDialog::updateSimulatorWidget().

+ Here is the caller graph for this function:

◆ getStepComputingTime()

double MonitoringManager::getStepComputingTime ( )

Referenced by MonitoringDialog::updateSimulation().

+ Here is the caller graph for this function:

◆ incStep()

void MonitoringManager::incStep ( )

increment step by one

Referenced by InteractiveMonitoringManager::doMove(), and NonInteractiveMonitoringManager::doMove().

+ Here is the caller graph for this function:

◆ init()

virtual bool MonitoringManager::init ( )
pure virtual

Initialize manager.

Returns
false if initialisation faild

Implemented in InteractiveMonitoringManager, and NonInteractiveMonitoringManager.

Referenced by MonitoringGuiManager::loadMmlInFile().

+ Here is the caller graph for this function:

◆ isLmlPresent()

bool MonitoringManager::isLmlPresent ( )

check if a lml is present

Referenced by MonitoringDialog::enableButtons(), SofaSimulator::init(), and PrepWriter::write().

+ Here is the caller graph for this function:

◆ isPmlPresent()

bool MonitoringManager::isPmlPresent ( )

check if a scn is present instead of pmlFileName

Referenced by MonitoringDialog::enableButtons().

+ Here is the caller graph for this function:

◆ numberOfMonitor()

unsigned int MonitoringManager::numberOfMonitor ( ) const

get the number of monitors stored in the list

Referenced by MonitoringDialog::updateMonitors().

+ Here is the caller graph for this function:

◆ reload()

void MonitoringManager::reload ( bool  delPml = true)

reload simulation with current parameters

Parameters
delPmltrue if pml object have to be deleted (perhaps used by others: physicalModel component...)

Referenced by MonitoringGuiManager::reload().

+ Here is the caller graph for this function:

◆ rewind()

void MonitoringManager::rewind ( )

Rewind simulation.

Referenced by MonitoringGuiManager::rewind().

+ Here is the caller graph for this function:

◆ saveMmlIn()

void MonitoringManager::saveMmlIn ( const char *  fileName)

save current version of mml in

Referenced by MonitoringGuiManager::saveMmlInFile().

+ Here is the caller graph for this function:

◆ saveMonitors()

void MonitoringManager::saveMonitors ( )

Save save monitors' state for the current time.

References timeParameter2double().

Referenced by InteractiveMonitoringManager::doMove(), and NonInteractiveMonitoringManager::doMove().

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

◆ setCurrentTime()

void MonitoringManager::setCurrentTime ( double  time)

mutators for simulation parameters

◆ setDt()

void MonitoringManager::setDt ( double  dt)

change dt and save modification into mmlIn

Referenced by SofaSimulator::build(), and MonitoringGuiManager::updateDt().

+ Here is the caller graph for this function:

◆ setLmlFileName()

void MonitoringManager::setLmlFileName ( const char *  file)

change lml file name and save modification into mmlIn

Referenced by MonitoringGuiManager::updateLml().

+ Here is the caller graph for this function:

◆ setPmlFileName()

void MonitoringManager::setPmlFileName ( const char *  file)

change pml file name and save modification into mmlIn

Referenced by MonitoringGuiManager::updatePml().

+ Here is the caller graph for this function:

◆ setRefresh()

void MonitoringManager::setRefresh ( double  refresh)

change refresh and save modification into mmlIn

References camitk::refresh().

Referenced by MonitoringGuiManager::updateRefresh().

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

◆ simulate()

void MonitoringManager::simulate ( )

perform simulation loop, make tests and save monitors' data into output file

◆ storeOldPositions()

void MonitoringManager::storeOldPositions ( )

store old positions before next step

Referenced by Simulator::updatePositions().

+ Here is the caller graph for this function:

◆ takeLml()

Loads * MonitoringManager::takeLml ( )

This is nearly the same as getLml(), but it also transfers ownership of the pointer.

After this method is called, this instance of MonitoringManager will not delete the pml. It is then the responsability of the caller (the instance which is taking ownership of the Loads). This is useful when transmitting to PMManagerDC's Loads manager for example.

◆ takePml()

PhysicalModel * MonitoringManager::takePml ( )

This is nearly the same as getPml(), but it also transfers ownership of the pointer.

After this method is called, this instance of MonitoringManager will not delete the pml. It is then the responsability of the caller (the instance which is taking ownership of the PhysicalModel). This is useful when transmitting to PMManagerDC Component for example.

Referenced by MMLComponent::connectPml(), and MMLComponent::MMLComponent().

+ Here is the caller graph for this function:

◆ updateComputingTime()

void MonitoringManager::updateComputingTime ( )

add step computing time to total computing time

Referenced by InteractiveMonitoringManager::doMove().

+ Here is the caller graph for this function:

◆ updateCurrentTime()

void MonitoringManager::updateCurrentTime ( )

add dt to current time

Referenced by InteractiveMonitoringManager::doMove().

+ Here is the caller graph for this function:

◆ writeCsv()

void MonitoringManager::writeCsv ( const char *  fileName)

Write all saved monitors'state into csv file.

Referenced by MonitoringGuiManager::saveCsvFile().

+ Here is the caller graph for this function:

◆ writeOutput()

void MonitoringManager::writeOutput ( const char *  fileName)

Write all saved monitors' states into mmlOut file.

Referenced by MonitoringGuiManager::saveMmlOutFile().

+ Here is the caller graph for this function:

Member Data Documentation

◆ computingTime

double MonitoringManager::computingTime
protected

total computing time at current moment

◆ currentTime

double MonitoringManager::currentTime
protected

time at current moment

Referenced by NonInteractiveMonitoringManager::doMove().

◆ dt

double MonitoringManager::dt
protected

integration step

Referenced by InteractiveMonitoringManager::doMove().

◆ initPml

PhysicalModel* MonitoringManager::initPml
private

initial pml

◆ lml

Loads* MonitoringManager::lml
private

Loads applied to pml.

◆ lmlFileName

std::string MonitoringManager::lmlFileName
private

name of the lml file (complete path from working directory)

◆ mmlFileFolder

std::string MonitoringManager::mmlFileFolder
private

folder of mml file (complete path from working directory)

◆ mmlFileName

std::string MonitoringManager::mmlFileName
private

name of the mml in file (complete path from working directory)

◆ mmlIn

std::unique_ptr<mml::MonitoringIn> MonitoringManager::mmlIn
protected

Object representing manager in the file generated by xsdcxx, can be used for serialization.

Referenced by InteractiveMonitoringManager::InteractiveMonitoringManager().

◆ monitors

std::vector<Monitor*> MonitoringManager::monitors
protected

Vector that contains all monitors.

◆ oldPositionPointer

double* MonitoringManager::oldPositionPointer
private

old position pointer

◆ ownLml

bool MonitoringManager::ownLml
private

is the lml "own" by this is instance, which is the normal case when there are not visual representation. But ownership can also be taken by some other instance, see takeLml()

◆ ownPml

bool MonitoringManager::ownPml
private

is the pml "own" by this instance, which is the normal case when there are no visual representation. But ownership can also be taken by some other instance, see takePml()

◆ pml

PhysicalModel* MonitoringManager::pml
private

pml at current moment

◆ pmlFileName

std::string MonitoringManager::pmlFileName
private

name of the pml file (complete path from working directory)

◆ refresh

double MonitoringManager::refresh
protected

refreshing step

◆ simul

Simulator* MonitoringManager::simul
protected

the simulator used for simualtion

Referenced by InteractiveMonitoringManager::init(), and NonInteractiveMonitoringManager::init().

◆ simulatorName

std::string MonitoringManager::simulatorName
protected

name of the simulator

◆ step

int MonitoringManager::step
protected

◆ stepComputingTime

double MonitoringManager::stepComputingTime
protected

computing time of last step

Referenced by InteractiveMonitoringManager::doMove().

◆ times

std::vector<mml::TimeStep*> MonitoringManager::times
protected

Vector that contains information saved by saveMonitors method.


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