#include <PapillaryFibreCalculator.hpp>
Public Member Functions | |
PapillaryFibreCalculator (TetrahedralMesh< 3, 3 > &rMesh) | |
std::vector< c_vector< double, 3 > > | CalculateFibreOrientations () |
Private Member Functions | |
c_vector< double, 3 > | GetRadiusVectorForOneElement (unsigned elementIndex) |
void | GetRadiusVectors () |
void | ConstructStructureTensors () |
void | SmoothStructureTensors () |
Private Attributes | |
TetrahedralMesh< 3, 3 > & | mrMesh |
std::vector< c_vector< double, 3 > > | mRadiusVectors |
std::vector< c_matrix< double, 3, 3 > > | mStructureTensors |
std::vector< c_matrix< double, 3, 3 > > | mSmoothedStructureTensors |
Friends | |
class | TestPapillaryFibreCalculator |
Assigns fibre orientation vectors for papillary muscle structures. Vectors are assigned to be parallel to the direction of the axis of the muscle. To do this we use the "Structure Tensor" method.
Definition at line 39 of file PapillaryFibreCalculator.hpp.
PapillaryFibreCalculator::PapillaryFibreCalculator | ( | TetrahedralMesh< 3, 3 > & | rMesh | ) |
Constructor saves mesh and allocates memory
rMesh | The mesh to calculate fibres on |
Definition at line 106 of file PapillaryFibreCalculator.hpp.
References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), mRadiusVectors, mrMesh, mSmoothedStructureTensors, and mStructureTensors.
std::vector< c_vector< double, 3 > > PapillaryFibreCalculator::CalculateFibreOrientations | ( | ) |
Main method - calculate the fibre orientations
Definition at line 114 of file PapillaryFibreCalculator.hpp.
References ConstructStructureTensors(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), GetRadiusVectors(), mrMesh, mSmoothedStructureTensors, and SmoothStructureTensors().
void PapillaryFibreCalculator::ConstructStructureTensors | ( | ) | [private] |
This generates structure tensors from the radial vectors by taking
T = r.r'
Definition at line 176 of file PapillaryFibreCalculator.hpp.
References mRadiusVectors, and mStructureTensors.
Referenced by CalculateFibreOrientations().
c_vector< double, 3 > PapillaryFibreCalculator::GetRadiusVectorForOneElement | ( | unsigned | elementIndex | ) | [private] |
This method calculates the vector from the centroid of an element to all of the boundary nodes. It returns the shortest of the vectors.
elementIndex | The index of the element we are calculating radial vectors for |
Definition at line 133 of file PapillaryFibreCalculator.hpp.
References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorBegin(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorEnd(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode(), and mrMesh.
Referenced by GetRadiusVectors().
void PapillaryFibreCalculator::GetRadiusVectors | ( | ) | [private] |
This method calls GetRadiusVectorForOneElement() for each of the elements sets the radial vector for each element of the mesh.
Definition at line 164 of file PapillaryFibreCalculator.hpp.
References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), GetRadiusVectorForOneElement(), mRadiusVectors, and mrMesh.
Referenced by CalculateFibreOrientations().
void PapillaryFibreCalculator::SmoothStructureTensors | ( | ) | [private] |
Smoothes the structure tensor components for each papillary element by looping over all other papillary elements, calculating distance geometric distance between the two elements; if it is within a certain limit, include this in the Gaussian kernel
Here mStructureTensors[i] is the 'rough' tensor for each element and mSmoothedStructureTensors[i] is the smoothed tensor for each element
Definition at line 184 of file PapillaryFibreCalculator.hpp.
References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), mrMesh, mSmoothedStructureTensors, and mStructureTensors.
Referenced by CalculateFibreOrientations().
std::vector< c_vector<double, 3> > PapillaryFibreCalculator::mRadiusVectors [private] |
vectors from the centre of each element to the nearest boundary node
Definition at line 48 of file PapillaryFibreCalculator.hpp.
Referenced by ConstructStructureTensors(), GetRadiusVectors(), and PapillaryFibreCalculator().
TetrahedralMesh<3,3>& PapillaryFibreCalculator::mrMesh [private] |
Reference to the ventricular/papillary mesh
Definition at line 46 of file PapillaryFibreCalculator.hpp.
Referenced by CalculateFibreOrientations(), GetRadiusVectorForOneElement(), GetRadiusVectors(), PapillaryFibreCalculator(), and SmoothStructureTensors().
std::vector< c_matrix<double,3,3> > PapillaryFibreCalculator::mSmoothedStructureTensors [private] |
Smoothed tensors created from mStructureTensors
Definition at line 52 of file PapillaryFibreCalculator.hpp.
Referenced by CalculateFibreOrientations(), PapillaryFibreCalculator(), and SmoothStructureTensors().
std::vector< c_matrix<double,3,3> > PapillaryFibreCalculator::mStructureTensors [private] |
Tensors created from mRadiusVectors
Definition at line 50 of file PapillaryFibreCalculator.hpp.
Referenced by ConstructStructureTensors(), PapillaryFibreCalculator(), and SmoothStructureTensors().