Chaste Release::3.1
PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > Class Template Reference

#include <PseudoEcgCalculator.hpp>

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

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)
bool ShouldSkipThisElement (Element< ELEMENT_DIM, SPACE_DIM > &rElement)

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:

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

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 71 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 
)

Constructor

Parameters:
rMeshA reference to the mesh
rProbeElectrodeThe location of the recording electrode
directoryThe directory where the simulation results are stored
hdf5FileThe file name where the simulation results are stored
variableNameThe name of the voltage variable (is V by default)
makeAbsolutewhether to make the path of directory absolute (using the OutputFileHandler)

Definition at line 62 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 ( )

Destructor.

Definition at line 93 of file PseudoEcgCalculator.cpp.


Member Function Documentation

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

Calculates the pseudo-ECG and returns its value at the given time step.

Parameters:
timeStepthe time step where we want to calculate the pseudo-ecg
Returns:
the pseudo ECG at the given time step.

Definition at line 106 of file PseudoEcgCalculator.cpp.

References PetscTools::CreateVec(), and PetscTools::Destroy().

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 
) [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:
rXThe point in space
rUThe unknown as a vector, u(i) = u_i
rGradUThe 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 44 of file PseudoEcgCalculator.cpp.

References EXCEPTION, and ChastePoint< DIM >::rGetLocation().

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

Sets the value of the diffusion coefficient (D)

Parameters:
diffusionCoefficientThe desired value of the diffusion coefficient

Definition at line 99 of file PseudoEcgCalculator.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
bool PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ShouldSkipThisElement ( Element< ELEMENT_DIM, SPACE_DIM > &  rElement) [private, virtual]

Whether we should not calculate the Pseudo ECG on this element.

This method returns true if we are integrating voltage and the tissue element is in the bath.

Parameters:
rElementthe element of interest
Returns:
whether we should skip this element.

Reimplemented from AbstractFunctionalCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >.

Definition at line 81 of file PseudoEcgCalculator.cpp.

References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetUnsignedAttribute(), and HeartRegionCode::IsRegionBath().

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

Calculates and writes the pseudo-ECG to file. the file will be named PseudoEcgFromElectrodeAt_x_y_z.dat, where x,y,z are replaced by the location of the electrode. 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 126 of file PseudoEcgCalculator.cpp.

References PetscTools::AmMaster(), ChasteBuildInfo::GetProvenanceString(), HeartConfig::Instance(), and OutputFileHandler::OpenOutputFile().

Referenced by PostProcessingWriter< ELEMENT_DIM, SPACE_DIM >::WritePostProcessingFiles().


Member Data Documentation

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

The diffusion coefficient D

Definition at line 82 of file PseudoEcgCalculator.hpp.

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

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

Number of nodes in the mesh (got from the data reader)

Definition at line 78 of file PseudoEcgCalculator.hpp.

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

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

Number of time steps in the simulation (got from the data reader)

Definition at line 79 of file PseudoEcgCalculator.hpp.

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

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

An HDF5 reader from which to get the solution

Definition at line 77 of file PseudoEcgCalculator.hpp.

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

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 81 of file PseudoEcgCalculator.hpp.

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

A mesh used by the calculator

Definition at line 80 of file PseudoEcgCalculator.hpp.

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

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

the variable for which we want to calculate the pseudo ecg, defaults to "V"

Definition at line 83 of file PseudoEcgCalculator.hpp.

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


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