PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > Class Template Reference

#include <PseudoEcgCalculator.hpp>

Inheritance diagram for PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >:

Inheritance graph
[legend]
Collaboration diagram for PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 PseudoEcgCalculator (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &rMesh, const ChastePoint< SPACE_DIM > &rProbeElectrode, std::string directory, std::string hdf5File, std::string variableName="V", bool makeAbsolute=true)
 ~PseudoEcgCalculator ()
void SetDiffusionCoefficient (double diffusionCoefficient)
void WritePseudoEcg ()

Private Member Functions

double GetIntegrand (ChastePoint< SPACE_DIM > &rX, c_vector< double, PROBLEM_DIM > &rU, c_matrix< double, PROBLEM_DIM, SPACE_DIM > &rGradU)
double ComputePseudoEcgAtOneTimeStep (unsigned timeStep)

Private Attributes

Hdf5DataReadermpDataReader
unsigned mNumberOfNodes
unsigned mNumTimeSteps
AbstractTetrahedralMesh
< ELEMENT_DIM, SPACE_DIM > & 
mrMesh
ChastePoint< SPACE_DIM > mProbeElectrode
double mDiffusionCoefficient
std::string mVariableName

Friends

class TestPseudoEcgCalculator


Detailed Description

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
class PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >

This class implements a pseudo-ECG calculator. It is a concrete class of AbstractFunctionalCalculator. The pseudo-ECG is defined as the integral over the mesh of the following integrand:

where D is a diffusion coefficient and r is the distance between a recording electrode and a given point in the mesh.

References for the formula that defines the pseudo-ECG:

Gima K, Rudy Y Circ Res (2002) 90:889-896 (equation 1) Baher et al. Am J Physiol (2007) 292:H180-H189 (equation 5)

Definition at line 54 of file PseudoEcgCalculator.hpp.


Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::PseudoEcgCalculator ( AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &  rMesh,
const ChastePoint< SPACE_DIM > &  rProbeElectrode,
std::string  directory,
std::string  hdf5File,
std::string  variableName = "V",
bool  makeAbsolute = true 
) [inline]

Constructor

Parameters:
rMesh A reference to the mesh
rProbeElectrode The location of the recording electrode
directory The directory where the simulation results are stored
hdf5File The file name where the simulation results are stored
variableName The name of the voltage variable (hardcoded to V - see todo)
makeAbsolute whether to make the path of directory absolute (using the OutputFileHandler)

Definition at line 54 of file PseudoEcgCalculator.cpp.

References Hdf5DataReader::GetNumberOfRows(), Hdf5DataReader::GetVariableOverTime(), PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mDiffusionCoefficient, PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mNumberOfNodes, PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mNumTimeSteps, PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpDataReader, PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mrMesh, and PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mVariableName.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::~PseudoEcgCalculator (  )  [inline]


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
double PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetIntegrand ( ChastePoint< SPACE_DIM > &  rX,
c_vector< double, PROBLEM_DIM > &  rU,
c_matrix< double, PROBLEM_DIM, SPACE_DIM > &  rGradU 
) [inline, private, virtual]

Get the integrand. The pseudo-ECG is defined as the integral over the mesh of the following integrand:

  • D * grad (solution) dot grad (1/r)

Parameters:
rX The point in space
rU The unknown as a vector, u(i) = u_i
rGradU The gradient of the unknown as a matrix, rGradU(i,j) = d(u_i)/d(X_j)

Implements AbstractFunctionalCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >.

Definition at line 36 of file PseudoEcgCalculator.cpp.

References EXCEPTION, PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mDiffusionCoefficient, PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mProbeElectrode, and ChastePoint< DIM >::rGetLocation().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
double PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ComputePseudoEcgAtOneTimeStep ( unsigned  timeStep  )  [inline, private]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
void PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::SetDiffusionCoefficient ( double  diffusionCoefficient  )  [inline]

Sets the value of the diffusion coefficient (D)

Parameters:
diffusionCoefficient The desired value of the diffusion coefficient

Definition at line 81 of file PseudoEcgCalculator.cpp.

References PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mDiffusionCoefficient.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
void PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::WritePseudoEcg (  )  [inline]

Calculates and writes the pseudo-ECG to file. the file will be named PseudoEcg.dat. It will contain one column of numbers, each being the pseudoECG at each time step. It will be created by the master processor into /output relaitive to where the output directory is set (by the HeartConfig or by default)

Definition at line 108 of file PseudoEcgCalculator.cpp.

References PetscTools::AmMaster(), PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ComputePseudoEcgAtOneTimeStep(), ChasteBuildInfo::GetProvenanceString(), HeartConfig::Instance(), PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mNumTimeSteps, and OutputFileHandler::OpenOutputFile().


Member Data Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
Hdf5DataReader* PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpDataReader [private]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
unsigned PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mNumberOfNodes [private]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
unsigned PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mNumTimeSteps [private]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>& PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mrMesh [private]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
ChastePoint<SPACE_DIM> PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mProbeElectrode [private]

The point from where we want to calculate the pseudoECG

Definition at line 64 of file PseudoEcgCalculator.hpp.

Referenced by PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetIntegrand().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
double PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mDiffusionCoefficient [private]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
std::string PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mVariableName [private]


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

Generated on Mon Nov 1 12:37:15 2010 for Chaste by  doxygen 1.5.5