|
Chaste Release::3.1
|
#include <HeartGeometryInformation.hpp>
Inheritance diagram for HeartGeometryInformation< SPACE_DIM >:
Collaboration diagram for HeartGeometryInformation< SPACE_DIM >: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.