#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 |
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.
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::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().
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::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().
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_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().
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().
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().