Chaste Release::3.1
|
#include <HeartGeometryInformation.hpp>
Public Member Functions | |
HeartGeometryInformation (AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > &rMesh, const std::string &rEpiFile, const std::string &rEndoFile, bool indexFromZero) | |
HeartGeometryInformation (AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > &rMesh, const std::string &rEpiFile, const std::string &rLVFile, const std::string &rRVFile, bool indexFromZero) | |
HeartGeometryInformation (std::string nodeHeterogeneityFileName) | |
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) |
ChasteCuboid< SPACE_DIM > | CalculateBoundingBoxOfEpi () |
ChasteCuboid< SPACE_DIM > | CalculateBoundingBoxOfEndo () |
ChasteCuboid< SPACE_DIM > | CalculateBoundingBoxOfLV () |
ChasteCuboid< SPACE_DIM > | CalculateBoundingBoxOfRV () |
Static Public Attributes | |
static const HeartRegionType | LEFT_VENTRICLE_WALL = 1001 |
static const HeartRegionType | RIGHT_VENTRICLE_WALL = 1002 |
static const HeartRegionType | LEFT_SEPTUM = 1003 |
static const HeartRegionType | RIGHT_SEPTUM = 1004 |
static const HeartRegionType | LEFT_VENTRICLE_SURFACE = 1005 |
static const HeartRegionType | RIGHT_VENTRICLE_SURFACE = 1006 |
static const HeartRegionType | UNKNOWN = 1007 |
Private Member Functions | |
void | GetNodesAtSurface (const std::string &surfaceFile, std::vector< unsigned > &rSurfaceNodes, bool indexFromZero=true) const |
void | ProcessLine (const std::string &line, std::set< unsigned > &rSurfaceNodeIndexSet, unsigned offset) const |
double | GetDistanceToEndo (unsigned nodeIndex) |
double | GetDistanceToEpi (unsigned nodeIndex) |
ChasteCuboid< SPACE_DIM > | CalculateBoundingBoxOfSurface (const std::vector< unsigned > &rSurfaceNodes) |
Private Attributes | |
std::vector< unsigned > | mEpiSurface |
std::vector< unsigned > | mEndoSurface |
std::vector< unsigned > | mLVSurface |
std::vector< unsigned > | mRVSurface |
AbstractTetrahedralMesh < SPACE_DIM, SPACE_DIM > * | mpMesh |
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 |
This class provides a method to calculate the relative position of a node with respect to two (or three) given surfaces
Definition at line 62 of file HeartGeometryInformation.hpp.
HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation | ( | AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > & | rMesh, |
const std::string & | rEpiFile, | ||
const std::string & | rEndoFile, | ||
bool | indexFromZero | ||
) |
Constructor for a two surface mesh
rMesh,: | reference to the mesh |
rEpiFile,: | file of elements on the epicardial surface |
rEndoFile,: | file of elements on the endocardial surface |
indexFromZero | true for native triangles files. false for Memfem files which are indexed from 1. |
Definition at line 53 of file HeartGeometryInformation.cpp.
References DistanceMapCalculator< ELEMENT_DIM, 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 >::mpMesh.
HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation | ( | AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > & | rMesh, |
const std::string & | rEpiFile, | ||
const std::string & | rLVFile, | ||
const std::string & | rRVFile, | ||
bool | indexFromZero | ||
) |
Constructor for a three surface mesh
rMesh,: | reference to the mesh |
rEpiFile,: | file of elements on the epicardial surface |
rRVFile,: | file of elements on the endocardial right ventricular surface (can be empty string) |
rLVFile,: | file of elements on the endocardial left ventricular surface (can be empty string) |
indexFromZero | true for native triangles files. false for Memfem files which are indexed from 1. |
If either rRVFile or rLVfile are the empty string, then it is assumed that this is a wedge preparation for left or right ventricle, respectively. That is, the ventricle with a non-empty string. If both are empty strings then throws exception.
Definition at line 72 of file HeartGeometryInformation.cpp.
References DistanceMapCalculator< ELEMENT_DIM, SPACE_DIM >::ComputeDistanceMap(), EXCEPTION, 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 >::mpMesh, and HeartGeometryInformation< SPACE_DIM >::mRVSurface.
HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation | ( | std::string | nodeHeterogeneityFileName | ) |
Alternative constructor that takes in the file containing a list of numbers (as many as the number of nodes). Each number specifies the layer for the corresponding node.
This constructor should be called if the heterogeneities have /already/ been computed by an instance of this class and written to file by the WriteLayerForEachNode() method.
nodeHeterogeneityFileName | the file name. |
Definition at line 109 of file HeartGeometryInformation.cpp.
References EXCEPTION.
ChasteCuboid<SPACE_DIM> HeartGeometryInformation< SPACE_DIM >::CalculateBoundingBoxOfEndo | ( | ) | [inline] |
Uses CalculateBoundingBoxOfSurface to calculate an axis-aligned bounding box of the nodes in the input endocardial surface
Definition at line 329 of file HeartGeometryInformation.hpp.
ChasteCuboid<SPACE_DIM> HeartGeometryInformation< SPACE_DIM >::CalculateBoundingBoxOfEpi | ( | ) | [inline] |
Uses CalculateBoundingBoxOfSurface to calculate an axis-aligned bounding box of the nodes in the input epicardial surface
Definition at line 319 of file HeartGeometryInformation.hpp.
ChasteCuboid<SPACE_DIM> HeartGeometryInformation< SPACE_DIM >::CalculateBoundingBoxOfLV | ( | ) | [inline] |
Uses CalculateBoundingBoxOfSurface to calculate an axis-aligned bounding box of the nodes in the input endocardial left ventricular surface
Definition at line 339 of file HeartGeometryInformation.hpp.
ChasteCuboid<SPACE_DIM> HeartGeometryInformation< SPACE_DIM >::CalculateBoundingBoxOfRV | ( | ) | [inline] |
Uses CalculateBoundingBoxOfSurface to calculate an axis-aligned bounding box of the nodes in the input endocardial left ventricular surface
Definition at line 349 of file HeartGeometryInformation.hpp.
ChasteCuboid< SPACE_DIM > HeartGeometryInformation< SPACE_DIM >::CalculateBoundingBoxOfSurface | ( | const std::vector< unsigned > & | rSurfaceNodes | ) | [private] |
Get a bounding box for a group of node indices (such as the epi-surface)
rSurfaceNodes | The indices of the nodes which represent this surface |
Definition at line 409 of file HeartGeometryInformation.cpp.
Referenced by HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfEndo(), HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfEpi(), HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfLV(), and HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfRV().
double HeartGeometryInformation< SPACE_DIM >::CalculateRelativeWallPosition | ( | unsigned | nodeIndex | ) |
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 330 of file HeartGeometryInformation.cpp.
void HeartGeometryInformation< SPACE_DIM >::DetermineLayerForEachNode | ( | double | epiFraction, |
double | endoFraction | ||
) |
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 345 of file HeartGeometryInformation.cpp.
References EXCEPTION.
Referenced by HeartConfigRelatedCellFactory< SPACE_DIM >::FillInCellularTransmuralAreas().
double HeartGeometryInformation< SPACE_DIM >::GetDistanceToEndo | ( | unsigned | nodeIndex | ) | [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 269 of file HeartGeometryInformation.cpp.
References NEVER_REACHED.
double HeartGeometryInformation< SPACE_DIM >::GetDistanceToEpi | ( | unsigned | nodeIndex | ) | [private] |
Helper method to calculate the distance between the node and the Epicardial surface
nodeIndex | is the index of the node in the mesh |
Definition at line 324 of file HeartGeometryInformation.cpp.
HeartRegionType HeartGeometryInformation< SPACE_DIM >::GetHeartRegion | ( | unsigned | nodeIndex | ) | const |
nodeIndex | index is the index of the node in the mesh |
Definition at line 236 of file HeartGeometryInformation.cpp.
void HeartGeometryInformation< SPACE_DIM >::GetNodesAtSurface | ( | const std::string & | surfaceFile, |
std::vector< unsigned > & | rSurfaceNodes, | ||
bool | indexFromZero = true |
||
) | const [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 |
indexFromZero | true for native triangles files. false for Memfem files which are indexed from 1. |
Definition at line 176 of file HeartGeometryInformation.cpp.
References EXCEPTION.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation().
void HeartGeometryInformation< SPACE_DIM >::ProcessLine | ( | const std::string & | line, |
std::set< unsigned > & | rSurfaceNodeIndexSet, | ||
unsigned | offset | ||
) | const [private] |
Helper function for GetNodesAtSurface
line | A line in a surface file |
rSurfaceNodeIndexSet | The nodes in the element corresponding to this line |
offset | is the lowest index of a node in the original mesh (0 for native triangles or 1 for MEMFEM) |
Definition at line 157 of file HeartGeometryInformation.cpp.
References EXCEPTION.
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapEndocardium | ( | ) | [inline] |
Definition at line 227 of file HeartGeometryInformation.hpp.
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapEpicardium | ( | ) | [inline] |
Definition at line 218 of file HeartGeometryInformation.hpp.
Referenced by StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation().
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapLeftVentricle | ( | ) | [inline] |
Definition at line 247 of file HeartGeometryInformation.hpp.
std::vector<double>& HeartGeometryInformation< SPACE_DIM >::rGetDistanceMapRightVentricle | ( | ) | [inline] |
Definition at line 237 of file HeartGeometryInformation.hpp.
const std::vector<HeartLayerType>& HeartGeometryInformation< SPACE_DIM >::rGetLayerForEachNode | ( | ) | [inline] |
Get the layer for every node in the mesh.
Definition at line 284 of file HeartGeometryInformation.hpp.
Referenced by HeartConfigRelatedCellFactory< SPACE_DIM >::FillInCellularTransmuralAreas().
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnEndoSurface | ( | ) | [inline] |
Get the nodes on the endocardial surface
Definition at line 261 of file HeartGeometryInformation.hpp.
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnEpiSurface | ( | ) | [inline] |
Get the nodes on the epicardial surface
Definition at line 254 of file HeartGeometryInformation.hpp.
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnLVSurface | ( | ) | [inline] |
Get the nodes on the endocardial left ventricular surface
Definition at line 268 of file HeartGeometryInformation.hpp.
const std::vector<unsigned>& HeartGeometryInformation< SPACE_DIM >::rGetNodesOnRVSurface | ( | ) | [inline] |
Get the nodes on the endocardial right ventricular surface
Definition at line 275 of file HeartGeometryInformation.hpp.
void HeartGeometryInformation< SPACE_DIM >::WriteLayerForEachNode | ( | std::string | outputDir, |
std::string | file | ||
) |
Write the layer for each node. DetermineLayerForEachNode() must have been called first.
outputDir | Output directory - note not cleaned |
file | Output file |
Definition at line 378 of file HeartGeometryInformation.cpp.
References PetscTools::AmMaster(), PetscTools::Barrier(), and OutputFileHandler::OpenOutputFile().
const HeartRegionType HeartGeometryInformation< SPACE_DIM >::LEFT_SEPTUM = 1003 [static] |
Left portion of the septum
Definition at line 154 of file HeartGeometryInformation.hpp.
const double HeartGeometryInformation< SPACE_DIM >::LEFT_SEPTUM_SIZE = 2.0/3.0 [static, private] |
Area of the septum considered to belong to the left septum (relative to 1)
Definition at line 67 of file HeartGeometryInformation.hpp.
const HeartRegionType HeartGeometryInformation< SPACE_DIM >::LEFT_VENTRICLE_SURFACE = 1005 [static] |
Endocardial surface of the left ventricle
Definition at line 158 of file HeartGeometryInformation.hpp.
const HeartRegionType HeartGeometryInformation< SPACE_DIM >::LEFT_VENTRICLE_WALL = 1001 [static] |
Left ventricular wall
Definition at line 150 of file HeartGeometryInformation.hpp.
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapEndocardium [private] |
Vector to store the distance map to endocardium
Definition at line 126 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetDistanceMapEndocardium().
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapEpicardium [private] |
Vector to store the distance map to epicardium
Definition at line 123 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetDistanceMapEpicardium().
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapLeftVentricle [private] |
Vector to store the distance map to the left ventricle surface
Definition at line 132 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetDistanceMapLeftVentricle().
std::vector<double> HeartGeometryInformation< SPACE_DIM >::mDistMapRightVentricle [private] |
Vector to store the distance map to the right ventricle surface
Definition at line 129 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetDistanceMapRightVentricle().
std::vector<unsigned> HeartGeometryInformation< SPACE_DIM >::mEndoSurface [private] |
The nodes on the endocardial surface (only used in the 2 surface case)
Definition at line 75 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfEndo(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetNodesOnEndoSurface().
std::vector<unsigned> HeartGeometryInformation< SPACE_DIM >::mEpiSurface [private] |
The nodes on the epicardial surface
Definition at line 72 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfEpi(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetNodesOnEpiSurface().
std::vector<HeartLayerType> HeartGeometryInformation< SPACE_DIM >::mLayerForEachNode [private] |
Vector to store the layer for each node
Definition at line 138 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< ELEMENT_DIM >::rGetLayerForEachNode().
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 78 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfLV(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetNodesOnLVSurface().
unsigned HeartGeometryInformation< SPACE_DIM >::mNumberOfSurfacesProvided [private] |
Flag used to tell the methods whether two or three surfaces have been supplied
Definition at line 135 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), HeartGeometryInformation< ELEMENT_DIM >::rGetDistanceMapEndocardium(), HeartGeometryInformation< ELEMENT_DIM >::rGetDistanceMapLeftVentricle(), HeartGeometryInformation< ELEMENT_DIM >::rGetDistanceMapRightVentricle(), HeartGeometryInformation< ELEMENT_DIM >::rGetNodesOnEndoSurface(), HeartGeometryInformation< ELEMENT_DIM >::rGetNodesOnLVSurface(), and HeartGeometryInformation< ELEMENT_DIM >::rGetNodesOnRVSurface().
AbstractTetrahedralMesh<SPACE_DIM,SPACE_DIM>* HeartGeometryInformation< SPACE_DIM >::mpMesh [private] |
The mesh of the problem
Definition at line 120 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation().
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 81 of file HeartGeometryInformation.hpp.
Referenced by HeartGeometryInformation< ELEMENT_DIM >::CalculateBoundingBoxOfRV(), HeartGeometryInformation< SPACE_DIM >::HeartGeometryInformation(), and HeartGeometryInformation< ELEMENT_DIM >::rGetNodesOnRVSurface().
const HeartRegionType HeartGeometryInformation< SPACE_DIM >::RIGHT_SEPTUM = 1004 [static] |
Right portion of the septum
Definition at line 156 of file HeartGeometryInformation.hpp.
const double HeartGeometryInformation< SPACE_DIM >::RIGHT_SEPTUM_SIZE = 1.0/3.0 [static, private] |
Area of the septum considered to belong to the right septum (relative to 1)
Definition at line 69 of file HeartGeometryInformation.hpp.
const HeartRegionType HeartGeometryInformation< SPACE_DIM >::RIGHT_VENTRICLE_SURFACE = 1006 [static] |
Endocardial surface of the right ventricle
Definition at line 160 of file HeartGeometryInformation.hpp.
const HeartRegionType HeartGeometryInformation< SPACE_DIM >::RIGHT_VENTRICLE_WALL = 1002 [static] |
Right ventricular wall
Definition at line 152 of file HeartGeometryInformation.hpp.
const HeartRegionType HeartGeometryInformation< SPACE_DIM >::UNKNOWN = 1007 [static] |
Unknown node type (should never occur...)
Definition at line 162 of file HeartGeometryInformation.hpp.