#include <HeartGeometryInformation.hpp>
Public Member Functions | |
HeartGeometryInformation (TetrahedralMesh< SPACE_DIM, SPACE_DIM > &rMesh, std::string mEpiFile, std::string mEndoFile) | |
HeartGeometryInformation (TetrahedralMesh< SPACE_DIM, SPACE_DIM > &rMesh, std::string mEpiFile, std::string mLVFile, std::string mRVFile) | |
HeartGeometryInformation (TetrahedralMesh< SPACE_DIM, SPACE_DIM > &rMesh, std::vector< unsigned > &rNodesAtEpi, std::vector< unsigned > &rNodesAtEndo) | |
HeartGeometryInformation (TetrahedralMesh< SPACE_DIM, SPACE_DIM > &rMesh, std::vector< unsigned > &rNodesAtEpi, std::vector< unsigned > &rNodesAtLv, std::vector< unsigned > &rNodesAtRv) | |
HeartRegionType | GetHeartRegion (unsigned nodeIndex) const |
std::vector< double > & | rGetDistanceMapEpicardium () |
std::vector< double > & | rGetDistanceMapEndocardium () |
std::vector< double > & | rGetDistanceMapRightVentricle () |
std::vector< double > & | rGetDistanceMapLeftVentricle () |
const std::vector< unsigned > & | rGetNodesOnEpiSurface () |
const std::vector< unsigned > & | rGetNodesOnEndoSurface () |
const std::vector< unsigned > & | rGetNodesOnLVSurface () |
const std::vector< unsigned > & | rGetNodesOnRVSurface () |
const std::vector < HeartLayerType > & | rGetLayerForEachNode () |
double | CalculateRelativeWallPosition (unsigned nodeIndex) |
void | DetermineLayerForEachNode (double epiFraction, double endoFraction) |
void | WriteLayerForEachNode (std::string outputDir, std::string file) |
Private Member Functions | |
void | GetNodesAtSurface (const std::string &surfaceFile, std::vector< unsigned > &rSurfaceNodes) const |
void | ProcessLine (const std::string &line, std::set< unsigned > &surfaceNodeIndexSet) const |
double | GetDistanceToEndo (unsigned nodeIndex) |
double | GetDistanceToEpi (unsigned nodeIndex) |
Private Attributes | |
std::vector< unsigned > | mEpiSurface |
std::vector< unsigned > | mEndoSurface |
std::vector< unsigned > | mLVSurface |
std::vector< unsigned > | mRVSurface |
TetrahedralMesh< SPACE_DIM, SPACE_DIM > & | mrMesh |
std::vector< double > | mDistMapEpicardium |
std::vector< double > | mDistMapEndocardium |
std::vector< double > | mDistMapRightVentricle |
std::vector< double > | mDistMapLeftVentricle |
unsigned | mNumberOfSurfacesProvided |
std::vector< HeartLayerType > | mLayerForEachNode |
Static Private Attributes | |
static const double | LEFT_SEPTUM_SIZE = 2.0/3.0 |
static const double | RIGHT_SEPTUM_SIZE = 1.0/3.0 |
Definition at line 52 of file HeartGeometryInformation.hpp.
HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation | ( | TetrahedralMesh< SPACE_DIM, SPACE_DIM > & | rMesh, | |
std::string | mEpiFile, | |||
std::string | mEndoFile | |||
) | [inline] |
Constructor for a two surface mesh
rMesh,: | reference to the mesh | |
mEpiFile,: | file of elements on the epicardial surface | |
mEndoFile,: | file of elements on the endocardial surface |
Definition at line 47 of file HeartGeometryInformation.cpp.
References DistanceMapCalculator< SPACE_DIM >::ComputeDistanceMap(), HeartGeometryInformation< SPACE_DIM >::GetNodesAtSurface(), HeartGeometryInformation< SPACE_DIM >::mDistMapEndocardium, HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium, HeartGeometryInformation< SPACE_DIM >::mEndoSurface, HeartGeometryInformation< SPACE_DIM >::mEpiSurface, HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided, and HeartGeometryInformation< SPACE_DIM >::mrMesh.
HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation | ( | TetrahedralMesh< SPACE_DIM, SPACE_DIM > & | rMesh, | |
std::string | mEpiFile, | |||
std::string | mLVFile, | |||
std::string | mRVFile | |||
) | [inline] |
Constructor for a three surface mesh
rMesh,: | reference to the mesh | |
mEpiFile,: | file of elements on the epicardial surface | |
mRVFile,: | file of elements on the endocardial right ventricular surface | |
mLVFile,: | file of elements on the endocardial left ventricular surface |
Definition at line 66 of file HeartGeometryInformation.cpp.
References DistanceMapCalculator< SPACE_DIM >::ComputeDistanceMap(), HeartGeometryInformation< SPACE_DIM >::GetNodesAtSurface(), HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium, HeartGeometryInformation< SPACE_DIM >::mDistMapLeftVentricle, HeartGeometryInformation< SPACE_DIM >::mDistMapRightVentricle, HeartGeometryInformation< SPACE_DIM >::mEpiSurface, HeartGeometryInformation< SPACE_DIM >::mLVSurface, HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided, HeartGeometryInformation< SPACE_DIM >::mrMesh, and HeartGeometryInformation< SPACE_DIM >::mRVSurface.
HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation | ( | TetrahedralMesh< SPACE_DIM, SPACE_DIM > & | rMesh, | |
std::vector< unsigned > & | rNodesAtEpi, | |||
std::vector< unsigned > & | rNodesAtEndo | |||
) | [inline] |
Constructor which takes in the nodes indices for each surface (mainly for testing or simple geometries) - 2 surface version
rMesh,: | reference to the mesh | |
rNodesAtEpi,: | indices of the nodes in the epicardial surface | |
rNodesAtEndo,: | indices of the nodes in the endocardial surface |
Definition at line 88 of file HeartGeometryInformation.cpp.
References DistanceMapCalculator< SPACE_DIM >::ComputeDistanceMap(), HeartGeometryInformation< SPACE_DIM >::mDistMapEndocardium, HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium, HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided, and HeartGeometryInformation< SPACE_DIM >::mrMesh.
HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation | ( | TetrahedralMesh< SPACE_DIM, SPACE_DIM > & | rMesh, | |
std::vector< unsigned > & | rNodesAtEpi, | |||
std::vector< unsigned > & | rNodesAtLv, | |||
std::vector< unsigned > & | rNodesAtRv | |||
) | [inline] |
Constructor which takes in the nodes indices for each surface (mainly for testing or simple geometries)
rMesh,: | reference to the mesh | |
rNodesAtEpi,: | indices of the nodes in the epicardial surface | |
rNodesAtLv,: | indices of the nodes in the lv surface | |
rNodesAtRv,: | indices of the nodes in the rv surface |
Definition at line 104 of file HeartGeometryInformation.cpp.
References DistanceMapCalculator< SPACE_DIM >::ComputeDistanceMap(), HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium, HeartGeometryInformation< SPACE_DIM >::mDistMapLeftVentricle, HeartGeometryInformation< SPACE_DIM >::mDistMapRightVentricle, HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided, and HeartGeometryInformation< SPACE_DIM >::mrMesh.
void HeartGeometryInformation< SPACE_DIM >::GetNodesAtSurface | ( | const std::string & | surfaceFile, | |
std::vector< unsigned > & | rSurfaceNodes | |||
) | const [inline, private] |
Takes in a file of all the surface elements on ONE PARTICULAR surface of the mesh (eg the right ventricular endo-cardial surface) and collects all the nodes on that surface in one vector
surfaceFile | The surface file | |
rSurfaceNodes | The returned vector of nodes indices on this surface |
Definition at line 146 of file HeartGeometryInformation.cpp.
References HeartGeometryInformation< SPACE_DIM >::ProcessLine().
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation().
void HeartGeometryInformation< SPACE_DIM >::ProcessLine | ( | const std::string & | line, | |
std::set< unsigned > & | surfaceNodeIndexSet | |||
) | const [inline, private] |
Helper function for GetNodesAtSurface
line | A line in a surface file | |
surfaceNodeIndexSet | The nodes in the element corresponding to this line |
Definition at line 121 of file HeartGeometryInformation.cpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetNodesAtSurface().
double HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo | ( | unsigned | nodeIndex | ) | [inline, private] |
Helper method to calculate the distance between the node and the Endocardial surface as defined to be the closest surface to the node out of left ventricle and right ventricle.
nodeIndex | is the index of the node in the mesh |
Definition at line 221 of file HeartGeometryInformation.cpp.
References HeartGeometryInformation< SPACE_DIM >::GetHeartRegion(), HeartRegionCode::LEFT_SEPTUM, HeartRegionCode::LEFT_VENTRICLE_SURFACE, HeartRegionCode::LEFT_VENTRICLE_WALL, HeartGeometryInformation< SPACE_DIM >::mDistMapEndocardium, HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium, HeartGeometryInformation< SPACE_DIM >::mDistMapLeftVentricle, HeartGeometryInformation< SPACE_DIM >::mDistMapRightVentricle, HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided, HeartRegionCode::RIGHT_SEPTUM, HeartRegionCode::RIGHT_VENTRICLE_SURFACE, HeartRegionCode::RIGHT_VENTRICLE_WALL, and HeartRegionCode::UNKNOWN.
Referenced by HeartGeometryInformation< SPACE_DIM >::CalculateRelativeWallPosition().
double HeartGeometryInformation< SPACE_DIM >::GetDistanceToEpi | ( | unsigned | nodeIndex | ) | [inline, private] |
Helper method to calculate the distance between the node and the Epicardial surface
nodeIndex | is the index of the node in the mesh |
\ to do: there needs to be the logic for the septum as in Streeter
Definition at line 276 of file HeartGeometryInformation.cpp.
References HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium.
Referenced by HeartGeometryInformation< SPACE_DIM >::CalculateRelativeWallPosition().
HeartRegionType HeartGeometryInformation< SPACE_DIM >::GetHeartRegion | ( | unsigned | nodeIndex | ) | const [inline] |
nodeIndex | index is the index of the node in the mesh |
Definition at line 188 of file HeartGeometryInformation.cpp.
References HeartRegionCode::LEFT_SEPTUM, HeartGeometryInformation< SPACE_DIM >::LEFT_SEPTUM_SIZE, HeartRegionCode::LEFT_VENTRICLE_WALL, HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium, HeartGeometryInformation< SPACE_DIM >::mDistMapLeftVentricle, HeartGeometryInformation< SPACE_DIM >::mDistMapRightVentricle, HeartRegionCode::RIGHT_SEPTUM, HeartRegionCode::RIGHT_VENTRICLE_WALL, and HeartRegionCode::UNKNOWN.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo().
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapEpicardium | ( | ) | [inline] |
Definition at line 189 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium.
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapEndocardium | ( | ) | [inline] |
Definition at line 198 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mDistMapEndocardium, and HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided.
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapRightVentricle | ( | ) | [inline] |
Definition at line 208 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mDistMapRightVentricle, and HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided.
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapLeftVentricle | ( | ) | [inline] |
Definition at line 218 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mDistMapLeftVentricle, and HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided.
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnEpiSurface | ( | ) | [inline] |
Get the nodes on the epicardial surface
Definition at line 225 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mEpiSurface.
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnEndoSurface | ( | ) | [inline] |
Get the nodes on the endocardial surface
Definition at line 232 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mEndoSurface, and HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided.
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnLVSurface | ( | ) | [inline] |
Get the nodes on the endocardial left ventricular surface
Definition at line 239 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mLVSurface, and HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided.
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnRVSurface | ( | ) | [inline] |
Get the nodes on the endocardial right ventricular surface
Definition at line 246 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided, and HeartGeometryInformation< SPACE_DIM >::mRVSurface.
const std::vector<HeartLayerType>& HeartGeometryInformation< SPACE_DIM >::rGetLayerForEachNode | ( | ) | [inline] |
Get the layer for every node in the mesh.
Definition at line 255 of file HeartGeometryInformation.hpp.
References HeartGeometryInformation< SPACE_DIM >::mLayerForEachNode.
double HeartGeometryInformation< SPACE_DIM >::CalculateRelativeWallPosition | ( | unsigned | nodeIndex | ) | [inline] |
Calculates the relative position within the wall thickness (normalised to [0,1])
nodeIndex | index is the index of the node in the mesh |
Definition at line 283 of file HeartGeometryInformation.cpp.
References HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo(), and HeartGeometryInformation< SPACE_DIM >::GetDistanceToEpi().
Referenced by HeartGeometryInformation< SPACE_DIM >::DetermineLayerForEachNode().
void HeartGeometryInformation< SPACE_DIM >::DetermineLayerForEachNode | ( | double | epiFraction, | |
double | endoFraction | |||
) | [inline] |
Compute which layer (endocardial, midmyocardial or epicardial) each node is in
epiFraction | is the fraction of wall designed to be epicardial layer | |
endoFraction | is the fraction of wall designed to be endocardial layer |
Definition at line 307 of file HeartGeometryInformation.cpp.
References HeartGeometryInformation< SPACE_DIM >::CalculateRelativeWallPosition(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), HeartGeometryInformation< SPACE_DIM >::mLayerForEachNode, and HeartGeometryInformation< SPACE_DIM >::mrMesh.
void HeartGeometryInformation< SPACE_DIM >::WriteLayerForEachNode | ( | std::string | outputDir, | |
std::string | file | |||
) | [inline] |
Write the layer for each node. DetermineLayerForEachNode() must have been called first.
outputDir | Output directory - note not cleaned | |
file | Output file |
Definition at line 334 of file HeartGeometryInformation.cpp.
References PetscTools::AmMaster(), PetscTools::Barrier(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), HeartGeometryInformation< SPACE_DIM >::mLayerForEachNode, HeartGeometryInformation< SPACE_DIM >::mrMesh, and OutputFileHandler::OpenOutputFile().
const double HeartGeometryInformation< SPACE_DIM >::LEFT_SEPTUM_SIZE = 2.0/3.0 [inline, static, private] |
Area of the septum considered to belong to the left septum (relative to 1)
Definition at line 57 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetHeartRegion().
const double HeartGeometryInformation< SPACE_DIM >::RIGHT_SEPTUM_SIZE = 1.0/3.0 [inline, static, private] |
Area of the septum considered to belong to the right septum (relative to 1)
Definition at line 59 of file HeartGeometryInformation.hpp.
std::vector<unsigned> HeartGeometryInformation< SPACE_DIM >::mEpiSurface [private] |
The nodes on the epicardial surface
Definition at line 62 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetNodesOnEpiSurface().
std::vector<unsigned> HeartGeometryInformation< SPACE_DIM >::mEndoSurface [private] |
The nodes on the endocardial surface (only used in the 2 surface case)
Definition at line 65 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetNodesOnEndoSurface().
std::vector<unsigned> HeartGeometryInformation< SPACE_DIM >::mLVSurface [private] |
The nodes on the endocardial left ventricular surface (only used in the 3 surface case)
Definition at line 68 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetNodesOnLVSurface().
std::vector<unsigned> HeartGeometryInformation< SPACE_DIM >::mRVSurface [private] |
The nodes on the endocardial right ventricular surface (only used in the 3 surface case)
Definition at line 71 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetNodesOnRVSurface().
TetrahedralMesh<SPACE_DIM,SPACE_DIM>& HeartGeometryInformation< SPACE_DIM >::mrMesh [private] |
The mesh of the problem
Definition at line 108 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::DetermineLayerForEachNode(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::WriteLayerForEachNode().
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium [private] |
Vector to store the distance map to epicardium
Definition at line 111 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo(), HeartGeometryInformation< SPACE_DIM >::GetDistanceToEpi(), HeartGeometryInformation< SPACE_DIM >::GetHeartRegion(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapEpicardium().
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapEndocardium [private] |
Vector to store the distance map to endocardium
Definition at line 114 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapEndocardium().
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapRightVentricle [private] |
Vector to store the distance map to the right ventricle surface
Definition at line 117 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo(), HeartGeometryInformation< SPACE_DIM >::GetHeartRegion(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapRightVentricle().
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapLeftVentricle [private] |
Vector to store the distance map to the left ventricle surface
Definition at line 120 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo(), HeartGeometryInformation< SPACE_DIM >::GetHeartRegion(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapLeftVentricle().
unsigned HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided [private] |
Flag used to tell the methods whether two or three surfaces have been supplied
Definition at line 123 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapEndocardium(), HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapLeftVentricle(), HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapRightVentricle(), HeartGeometryInformation< SPACE_DIM >::rGetNodesOnEndoSurface(), HeartGeometryInformation< SPACE_DIM >::rGetNodesOnLVSurface(), and HeartGeometryInformation< SPACE_DIM >::rGetNodesOnRVSurface().
std::vector<HeartLayerType> HeartGeometryInformation< SPACE_DIM >::mLayerForEachNode [private] |
Vector to store the layer for each node
Definition at line 126 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::DetermineLayerForEachNode(), HeartGeometryInformation< SPACE_DIM >::rGetLayerForEachNode(), and HeartGeometryInformation< SPACE_DIM >::WriteLayerForEachNode().