Todo List

Member AbstractBoundaryConditionsContainer::HasDirichletBoundaryCondition (const Node< SPACE_DIM > *pNode, unsigned indexOfUnknown=0)
Perhaps have flag in node object for efficiency?

Member AbstractCardiacPde::mDoOneCacheReplication
maybe we don't want the conventional assembly even in the first time step.

Member AbstractCardiacPde::serialize (Archive &archive, const unsigned int version)
#98 Check that mpIntracellularConductivityTensors is archived properly here.

Member AbstractCardiacPde::AbstractCardiacPde (AbstractCardiacCellFactory< ELEM_DIM, SPACE_DIM > *pCellFactory, const unsigned stride=1)
tidy up using extract method refactoring

Member AbstractCardiacPde::AbstractCardiacPde (AbstractCardiacCellFactory< ELEM_DIM, SPACE_DIM > *pCellFactory, const unsigned stride=1)
Create a class defining constant tensors to be used when no fibre orientation is provided.

Member AbstractCardiacPde::AbstractCardiacPde (std::vector< AbstractCardiacCell * > &rCellsDistributed, const unsigned stride=1)
: #98: The state of the object is inconsistent since mpIntracellularConductivityTensors has not been set.

Member AbstractCardiacPde::~AbstractCardiacPde ()
: #98 once the archiving constructor is creating the conductivity tensors properly we won't need this if statement

Member AbstractCardiacProblem::mpWriter
CardiacElectroMechanicsProblem should be a friend, but not sure how to get friends to work when both friends are templated and abstract.

Member AbstractCardiacProblem::Initialise ()
: Only considering <LoadMesh/> definition. Consider <Slab/> too

Member AbstractCardiacProblem::Initialise ()
We can't currently instantiate the parallel mesh in 1D

Member AbstractCardiacProblem::Initialise ()
Should this method be rolled into the Solve() method or the PreSolveChecks()?

Member AbstractCardiacProblem::Solve ()
This should go in a location set in ArchiveLocationInfo (see LinearSystem::load_construct_data(...))

Member AbstractCardiacProblem::CloseFilesAndPostProcess ()
WriteFilesUsingMesh cannot handle ParallelTetrahedralMesh objects. Abort if so.

Member AbstractConvergenceTester::Converge (std::string nameOfTest)
This is a scarily long method; could do with some parts extracted?

Member AbstractConvergenceTester::Converge (std::string nameOfTest)
this is a sequential mesh

Member AbstractConvergenceTester::Converge (std::string nameOfTest)
Cover this

Member AbstractConvergenceTester::DisplayRun ()
The UseAbsoluteStimulus is temporary, while we are sorting out 3D stimulus. It is to be removed later (along with StimulusConvergenceTester)

Member AbstractElement::GetNodeLocation (unsigned localIndex) const
this used to return a reference to a c_vector, in which case a weird error arose where it compiled, ran and passed on some machines but failed the tests (bad_size errors) on another machine.

Member AbstractFunctionalCalculator::CalculateOnElement (Element< ELEMENT_DIM, SPACE_DIM > &rElement)
Check if we are using a mesh with cached Jacobians, if so, get it from the mesh rather than calling the calculate method.

Member AbstractIsotropicIncompressibleMaterialLaw::Get_dW_dI1 (double I1, double I2)=0
The name of this method should not include underscores.

Member AbstractIsotropicIncompressibleMaterialLaw::Get_dW_dI2 (double I1, double I2)=0
The name of this method should not include underscores.

Member AbstractIsotropicIncompressibleMaterialLaw::Get_d2W_dI1 (double I1, double I2)=0
The name of this method should not include underscores.

Member AbstractIsotropicIncompressibleMaterialLaw::Get_d2W_dI2 (double I1, double I2)=0
The name of this method should not include underscores.

Member AbstractIsotropicIncompressibleMaterialLaw::Get_d2W_dI1I2 (double I1, double I2)=0
The name of this method should not include underscores.

Member AbstractLinearAssembler::Solve (Vec currentSolutionOrGuess=NULL, double currentTime=0.0)
move the asserts into PrepareForSolve()

Member AbstractMesh::GetWidthExtremes (const unsigned &rDimension) const
use NodeIterator here?

Member AbstractNonlinearAssembler::StaticSolve (Vec currentSolutionOrGuess=NULL, double currentTime=0.0, bool assembleMatrix=true)
do something sensible if assembleMatrix is false.

Member AbstractOdeSystem::serialize (Archive &archive, const unsigned int version)
archive mpSystemInfo

Member AbstractStaticAssembler::ComputeTransformedBasisFunctionDerivatives (const ChastePoint< ELEMENT_DIM > &rPoint, const c_matrix< double, ELEMENT_DIM, SPACE_DIM > &rInverseJacobian, c_matrix< double, SPACE_DIM, ELEMENT_DIM+1 > &rReturnValue)
Template LinearBasisFunction over SPACE_DIM?

Member AbstractStaticAssembler::AssembleOnElement (Element< ELEMENT_DIM, SPACE_DIM > &rElement, c_matrix< double, PROBLEM_DIM *(ELEMENT_DIM+1), PROBLEM_DIM *(ELEMENT_DIM+1) > &rAElem, c_vector< double, PROBLEM_DIM *(ELEMENT_DIM+1)> &rBElem, bool assembleVector, bool assembleMatrix)
This assumes that the Jacobian is constant on an element. This is true for linear basis functions, but not for any other type of basis function.

Member AbstractStaticAssembler::AssembleOnSurfaceElement (const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &rSurfaceElement, c_vector< double, PROBLEM_DIM *ELEMENT_DIM > &rBSurfElem)
: add interpolation of u as well

Member AbstractStaticAssembler::AssembleOnSurfaceElement (const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &rSurfaceElement, c_vector< double, PROBLEM_DIM *ELEMENT_DIM > &rBSurfElem)
Improve efficiency of Neumann BC implementation.

Member AbstractStaticAssembler::SetNumberOfQuadraturePointsPerDimension (unsigned numQuadPoints)
: There may be a small memory leak if this occurs.)

Member AbstractTetrahedralElement::GetVolume (double determinant) const
make this argument const?

Member AbstractTetrahedralElement::AbstractTetrahedralElement (unsigned index, const std::vector< Node< SPACE_DIM > * > &rNodes)
We don't want to create new data, calculation and throw the answer away

Class AbstractTetrahedralElement< 0, SPACE_DIM >
Move implementation into .cpp file? (#847)

Member AbstractTetrahedralElement< 0, SPACE_DIM >::AbstractTetrahedralElement (unsigned index, const std::vector< Node< SPACE_DIM > * > &rNodes)
We don't want to create new data, calculation and throw the answer away

Member AbstractTetrahedralMesh::save (Archive &archive, const unsigned int version) const
#98 - what does this achieve? Overwrites existing mesh file or potentially rewrites mesh with a different name, would it be better just to update the name in the ArchiveLocationInfo ??

Member AbstractTetrahedralMesh::save (Archive &archive, const unsigned int version) const
#98, you can use the line mesh_writer.WriteFilesUsingMesh(*this) from above here, but have to think about parallel meshes.

Member AbstractTetrahedralMesh::GetWeightedDirectionForBoundaryElement (unsigned elementIndex, c_vector< double, SPACE_DIM > &rWeightedDirection, double &rJacobianDeterminant) const
: this method doesn't seem to be used anywhere but in the test. Consider removing it.

Member AbstractTetrahedralMeshWriter::WriteFilesUsingMesh (const AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &rMesh)
This is a very smelly method which has copied code from the above method...

Member AbstractTissue::WriteTimeAndNodeResultsToFiles (std::vector< unsigned > &rCellTypeCounter, std::vector< unsigned > &rCellMutationStateCounter, std::vector< unsigned > &rCellCyclePhaseCounter)
Vertex meshes output nans here if the node does not exist.

Class AxisymmetricConductivityTensors< SPACE_DIM >
is the compatibility argument above really worthwhile? We could just inherit from AbstractConductivityTensors<3>. This would however require changes to the constructors of AbstractCardiacPde and BidomainPde.

Member BidomainPde::~BidomainPde ()
: #98 once the archiving constructor is creating the conductivity tensors properly we won't need this if statement

Member BidomainWithBathAssembler::FinaliseLinearSystem (Vec existingSolutionOrGuess, double time, bool assembleVector, bool assembleMatrix)
: assumes Vm and Phie are interleaved

Member BidomainWithBathMatrixBasedAssembler::mpBidomainWithBathRhsMatrixAssembler
: Once BidomainWithBathRhsMatrixAssembler inherits from BidomainRhsMatrixAssembler we'll be able to reuse the pointer in BidomainMatrixBasedAssembler

Member BidomainWithBathMatrixBasedAssembler::BidomainWithBathMatrixBasedAssembler (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh, BidomainPde< SPACE_DIM > *pPde, BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, 2 > *pBcc, unsigned numQuadPoints=2)
: at this point we'll have a BidomainWithBathRhsMatrixAssembler object and a BidomainRhsMatrixAssembler object in memory. This is a waste of memory since both construct and store a matrix for RHS assembly.

Class BidomainWithBathRhsMatrixAssembler< DIM >
: make this class inherit from BidomainRhsMatrixAssembler

Class BoundaryConditionsContainer< ELEM_DIM, SPACE_DIM, PROBLEM_DIM >
Various operations are currently very inefficient - there is certainly scope for optimisation here!

Member BoundaryConditionsContainer::Validate (AbstractTetrahedralMesh< ELEM_DIM, SPACE_DIM > *pMesh)
Might we want to throw an exception specifying which node failed? What about checking for multiple conditions at a point (might be intentional)?

Member BoundaryConditionsContainer::HasNeumannBoundaryCondition (const BoundaryElement< ELEM_DIM-1, SPACE_DIM > *pSurfaceElement, unsigned indexOfUnknown=0)
This is a horrendously inefficient fix. Perhaps have flag in element object?

Member BoundaryElement::BoundaryElement (unsigned index, std::vector< Node< SPACE_DIM > * > nodes)
make rNodes like in AbstractTetrahedralElement? (#991)

Member CardiacElectroMechanicsProblem::WriteWatchedLocationData (double time, Vec voltage)
Improve efficiency of this method?

Member CardiacElectroMechanicsProblem::WriteWatchedLocationData (double time, Vec voltage)
: NOTE!!! HARDCODED state variable index - assumes Lr91. Metadata is currently being added to CellML models and then this will be avoided by asking for Calcium.

Member CardiacElectroMechanicsProblem::Max (std::vector< double > &vec)
Move to UblasCustomFunctions?

Member CardiacElectroMechanicsProblem::CardiacElectroMechanicsProblem (TetrahedralMesh< DIM, DIM > *pElectricsMesh, QuadraticMesh< DIM > *pMechanicsMesh, std::vector< unsigned > fixedMechanicsNodes, AbstractCardiacCellFactory< DIM > *pCellFactory, double endTime, unsigned numElecTimeStepsPerMechTimestep, double nhsOdeTimeStep, std::string outputDirectory)
Cover these lines

Member CellProperties::CalculateActionPotentialDurations (const double percentage)
linear interpolation here too?

Member ChasteCuboid::DoesContain (const ChastePoint< 3U > &rPointToCheck)
: use a templated definition of the method below

Member CmguiWriter::CmguiWriter (const std::string &rDirectory, const std::string &rBaseName, const bool &rCleanDirectory=true)
make this cleanDirectory to be consistent with other writers? (#991)

Member ColumnDataReader::mVariablesToColumns
Change int to unsigned? (#991)

Member ColumnDataReader::GetValues (const std::string &rVariableName)
This method returns a copy of ColumnDataReader::mValues - would it make more sense to change the semantics and return by reference? The only downside is that users would need to copy the result before calling ColumnDataReader::GetValues again, if they wanted to keep the original results, which might cause head scratching!

Member ColumnDataReader::GetValues (const std::string &rVariableName, int fixedDimension)
This method returns a copy of ColumnDataReader::mValues - would it make more sense to change the semantics and return by reference? The only downside is that users would need to copy the result before calling ColumnDataReader::GetValues again, if they wanted to keep the original results, which might cause head scratching!

Member ColumnDataReader::GetUnlimitedDimensionValues ()
This method returns a copy of ColumnDataReader::mValues - would it make more sense to change the semantics and return by reference? The only downside is that users would need to copy the result before calling ColumnDataReader::GetValues again, if they wanted to keep the original results, which might cause head scratching!

Member CuboidMeshConstructor::NumElements
Should be mNumElements and private

Member CuboidMeshConstructor::NumNodes
Should be mNumNodes and private

Member Element::Element (unsigned index, std::vector< Node< SPACE_DIM > * > nodes)
make rNodes like in AbstractTetrahedralElement? (#991)

Member Element::Element (const Element &rElement, const unsigned index)
this is rather dubious; a factory method might be better.

Member Element::CalculatePsi (ChastePoint< SPACE_DIM > testPoint)
This method shouldn't need a new Jacobian inverse for every Psi

Class Exception
Might we want this class to inherit from STL exceptions?

Member Exception::Exception (std::string message, std::string filename, const unsigned rLineNumber)
make this argument a reference?

Member ExponentialMaterialLaw::Get_dW_dI1 (double I1, double I2)
The name of this method should not include underscores.

Member ExponentialMaterialLaw::Get_dW_dI2 (double I1, double I2)
The name of this method should not include underscores.

Member ExponentialMaterialLaw::Get_d2W_dI1 (double I1, double I2)
The name of this method should not include underscores.

Member ExponentialMaterialLaw::Get_d2W_dI2 (double I1, double I2)
The name of this method should not include underscores.

Member ExponentialMaterialLaw::Get_d2W_dI1I2 (double I1, double I2)
The name of this method should not include underscores.

Member GeneralPlaneStimulusCellFactory::GeneralPlaneStimulusCellFactory (unsigned numEleAcross, double meshWidth, bool useMeshWidthAsMag=false, double stimulusMagnitude=-1e7, double stimulusDuration=0.5)
The useMeshWidth is temporary, while we are sorting out 3D stimulus. It is to be removed later (along with StimulusConvergenceTester) scale stimulus depending on space_step of elements

Member GeneralPlaneStimulusCellFactory::GeneralPlaneStimulusCellFactory (unsigned numEleAcross, double meshWidth, bool useMeshWidthAsMag=false, double stimulusMagnitude=-1e7, double stimulusDuration=0.5)
It looks like the value of the stimulus is specific to 3D

Member Hdf5DataReader::MAX_DATASET_RANK
: define it once

Member Hdf5DataReader::GetVariableOverNodes (Vec data, const std::string &rVariableName, unsigned timestep=0)
Use DistributedVector?

Member Hdf5DataWriter::DATASET_DIMS
: define it once

Member Hdf5DataWriter::PutStripedVector (int firstVariableID, int secondVariableID, Vec petscVector)
Use distributed vector functionality here?

Member HeartConfig::GetIonicModelRegions (std::vector< ChasteCuboid > &definedRegions, std::vector< ionic_models_available_type > &ionicModels) const
- do we assume the vectors are initially empty? The standard vectors returned are of the same length (one entry per region)

Member HeartConfig::GetIonicModelRegions (std::vector< ChasteCuboid > &definedRegions, std::vector< ionic_models_available_type > &ionicModels) const
No set method

Member HeartConfig::GetSlabDimensions (c_vector< double, 3 > &slabDimensions) const
IsMeshProvided and GetLoadMesh are subtly different but very similar. Can one of them go?

Member HeartConfig::GetStimuli (std::vector< boost::shared_ptr< SimpleStimulus > > &rStimuliApplied, std::vector< ChasteCuboid > &rStimulatedAreas) const
- do we assume the vectors are initially empty? The returned std::vectors are all of the same length

Member HeartConfig::GetStimuli (std::vector< boost::shared_ptr< SimpleStimulus > > &rStimuliApplied, std::vector< ChasteCuboid > &rStimulatedAreas) const
There is no set method

Member HeartConfig::GetCellHeterogeneities (std::vector< ChasteCuboid > &cellHeterogeneityAreas, std::vector< double > &scaleFactorGks, std::vector< double > &scaleFactorIto, std::vector< double > &scaleFactorGkr) const
- do we assume the vectors are initially empty? The returned std::vectors are all of the same length

Member HeartConfig::GetCellHeterogeneities (std::vector< ChasteCuboid > &cellHeterogeneityAreas, std::vector< double > &scaleFactorGks, std::vector< double > &scaleFactorIto, std::vector< double > &scaleFactorGkr) const
There is no set method

Member HeartConfig::GetConductivityHeterogeneities (std::vector< ChasteCuboid > &conductivitiesHeterogeneityAreas, std::vector< c_vector< double, 3 > > &intraConductivities, std::vector< c_vector< double, 3 > > &extraConductivities) const
- do we assume the vectors are initially empty? The returned std::vectors are all of the same length

Member HeartConfig::IsPostProcessingRequested () const
- no set method

Member HeartConfig::GetUpstrokeTimeMaps (std::vector< double > &upstroke_time_maps) const
- no set method

Member HeartConfig::IsMaxUpstrokeVelocityMapRequested () const
- no set method

Member HeartConfig::IsMaxUpstrokeVelocityMapRequested () const
- This method has "Is" in the name, others do not.

Member HeartConfig::GetConductionVelocityMaps (std::vector< unsigned > &conduction_velocity_maps) const
- no set method

Member HeartConfig::SetMeshFileName (std::string meshPrefix, media_type fibreDefinition=media_typeNoFibreOrientation)
There is no Get method

Member HeartConfig::SetBathConductivity (double bathConductivity)
Is this used anywhere?

Member LinearSystem::mOwnershipRangeLo
Verify claim that ownership range for Vec and Mat is same. This should only matter for efficiency if the claim is false.

Member LinearSystem::Solve (Vec lhsGuess=NULL)
never tested in linalg component

Member LinearSystem::Solve (Vec lhsGuess=NULL)
Should it be compulsory for the caller to supply this and manage the memory?

Member LinearSystem::SetNullBasis (Vec nullbasis[], unsigned numberOfBases)
Document this method and its parameters!

Member LinearSystem::LinearSystem (PetscInt lhsVectorSize, MatType matType=(MatType) MATMPIAIJ)
: if we create a linear system object outside a cardiac assembler, these are gonna be the default solver and preconditioner. Not consitent with ChasteDefaults.xml though...

Member LinearSystem::LinearSystem (Vec templateVector)
: if we create a linear system object outside a cardiac assembler, these are gonna be the default solver and preconditioner. Not consitent with ChasteDefaults.xml though...

Member LinearSystem::LinearSystem (Vec residualVector, Mat jacobianMatrix)
: if we create a linear system object outside a cardiac assembler, these are gonna be the default solver and preconditioner. Not consitent with ChasteDefaults.xml though...

Member LinearSystem::~LinearSystem ()
Never tested in linalg component

Member LogFile::Set (unsigned level, std::string directory, std::string fileName="log.txt")
make this argument a reference?

Member MemfemMeshReader::MemfemMeshReader (const std::string &rPathBaseName)
make this a reference?

Member MeshBasedTissue::SetOutputTissueAreas (bool writeTissueAreas)
Extend this to 3D (possibly rename to SetOutputTissueVolumes?) - see also #738

Member MooneyRivlinMaterialLaw::Get_dW_dI1 (double I1, double I2)
The name of this method should not include underscores.

Member MooneyRivlinMaterialLaw::Get_dW_dI2 (double I1, double I2)
The name of this method should not include underscores.

Member MooneyRivlinMaterialLaw::Get_d2W_dI1 (double I1, double I2)
The name of this method should not include underscores.

Member MooneyRivlinMaterialLaw::Get_d2W_dI2 (double I1, double I2)
The name of this method should not include underscores.

Member MooneyRivlinMaterialLaw::Get_d2W_dI1I2 (double I1, double I2)
The name of this method should not include underscores.

Member MutableMesh::CheckVoronoi (Element< ELEMENT_DIM, SPACE_DIM > *pElement, double maxPenetration)
Should use a set union operation here

Member MutableMesh::RescaleMeshFromBoundaryNode (ChastePoint< 1 > updatedPoint, unsigned boundaryNodeIndex)
should unsigned GetNumBoundaryNodes() be overloaded too??

Member MutableMesh::ReMesh (NodeMap &map)
communicate the length first

Member MutableMesh::CheckVoronoi (double maxPenetration=0.0)
use ElementIterator here?

Member NodeBoxCollection::NodeBoxCollection (double cutOffLength, c_vector< double, 2 *DIM > domainSize)
3d node box collection

Member NodeBoxCollection::NodeBoxCollection (double cutOffLength, c_vector< double, 2 *DIM > domainSize)
1d node box collection

Member OdeSystemInformation::mpInstance
see if using weak_ptr would work and give funkier semantics (automatically destroy the singleton when no ODE systems were using it)

Member ParallelColumnDataWriter::PutVector (int variableID, Vec petscVector)
Where is this implemented? (#991)

Member ParallelColumnDataWriter::PutVectorStripe (int variableId, DistributedVector::Stripe &rStripe)
allow this to be a const-reference

Member ParallelColumnDataWriter::AdvanceAlongUnlimitedDimension ()
This is where the master is going to take messages from the slaves and write them.

Member ParallelColumnDataWriter::Close ()
we may still have queued messages at this point - force their output.

Member ParallelTetrahedralMesh::ConstructFromMeshReader (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader, bool cullInternalFaces=false)
: assert the node is not considered both owned and halo-owned. Remove continue statement few lines below then.

Member ParallelTetrahedralMesh::ComputeMeshPartitioning (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader, std::set< unsigned > &rNodesOwned, std::set< unsigned > &rHaloNodesOwned, std::set< unsigned > &rElementsOwned, std::vector< unsigned > &rProcessorsOffset, std::vector< unsigned > &rNodePermutation)
Make it clear which way the permutation applies

Member ParallelTetrahedralMesh::ComputeMeshPartitioning (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader, std::set< unsigned > &rNodesOwned, std::set< unsigned > &rHaloNodesOwned, std::set< unsigned > &rElementsOwned, std::vector< unsigned > &rProcessorsOffset, std::vector< unsigned > &rNodePermutation)
: add a timing event for the partitioning

Member ParallelTetrahedralMesh::DumbNodePartitioning (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader, std::set< unsigned > &rNodesOwned)
: to be removed

Member PCBlockDiagonal::PCBlockDiagonalContext::A11_matrix_subblock
- don't create this every iteration but save it first time is needed.

Member PCBlockDiagonal::PCBlockDiagonalContext::A22_matrix_subblock
- don't create this every iteration but save it first time is needed.

Member PCBlockDiagonal::PCBlockDiagonalContext::PC_amg_A11
- don't create this every iteration but save it first time is needed.

Member PCBlockDiagonal::PCBlockDiagonalContext::PC_amg_A22
- don't create this every iteration but save it first time is needed.

Member PetscTools::DumpPetscObject (const Mat &rMat, const std::string &rOutputFileFullPath)
Think if there is an efficient compromise between this method and the full weight of ReplicatableVector (broadcast single values to all processors). How do you know who has the value?

Member PolynomialMaterialLaw3d::Get_dW_dI1 (double I1, double I2)
The name of this method should not include underscores.

Member PolynomialMaterialLaw3d::Get_dW_dI2 (double I1, double I2)
The name of this method should not include underscores.

Member PolynomialMaterialLaw3d::Get_d2W_dI1 (double I1, double I2)
The name of this method should not include underscores.

Member PolynomialMaterialLaw3d::Get_d2W_dI2 (double I1, double I2)
The name of this method should not include underscores.

Member PolynomialMaterialLaw3d::Get_d2W_dI1I2 (double I1, double I2)
The name of this method should not include underscores.

Class PostProcessingWriter
- Needs to deal with the case where no upstroke is found.

Member PostProcessingWriter::WriteUpstrokeTimeMap (double threshold)
Allow this (see class description)

Member PostProcessingWriter::WriteUpstrokeTimeMap (double threshold)
Allow this (see class description)

Member PostProcessingWriter::WriteMaxUpstrokeVelocityMap (double threshold)
Allow this (see class description)

Member PostProcessingWriter::WriteMaxUpstrokeVelocityMap (double threshold)
Allow this (see class description)

Member PropagationPropertiesCalculator::CalculateMaximumUpstrokeVelocity (unsigned globalNodeIndex)
the following helper method, when used, causes seg faults. Mend it and use to reduce repeated code.

Member QuadraticMesh::HelperMethod1 (unsigned boundaryElemNode0, unsigned boundaryElemNode1, Element< DIM, DIM > *pElement, unsigned node0, unsigned node1, unsigned node2, unsigned &rOffset, bool &rReverse)
document these parameters

Member QuadraticMesh::HelperMethod2 (BoundaryElement< DIM-1, DIM > *pBoundaryElement, Element< DIM, DIM > *pElement, unsigned internalNode0, unsigned internalNode1, unsigned internalNode2, unsigned offset, bool reverse)
document these parameters

Member QuadraticMesh::RunMesherAndReadMesh (std::string binary, std::string outputDir, std::string fileStem)
document these parameters (also shouldn't they be references?)

Member QuadraticMesh::QuadraticMesh (double xEnd, double yEnd, unsigned numElemX, unsigned numElemY)
1d constructor

Member QuarterStimulusCellFactory::CreateCardiacCellForTissueNode (unsigned node)
- I thought that the concept here was to ramp the stimulus down over the first quarter, in order to make sure that there is no interface between stimulated region and un-stimulated region where the FEM linear interpolation makes the stimulus mesh-dependant.

Member SimpleDg0ParabolicAssembler::ComputeMatrixTerm (c_vector< double, ELEMENT_DIM+1 > &rPhi, c_matrix< double, SPACE_DIM, ELEMENT_DIM+1 > &rGradPhi, ChastePoint< SPACE_DIM > &rX, c_vector< double, 1 > &rU, c_matrix< double, 1, SPACE_DIM > &rGradU, Element< ELEMENT_DIM, SPACE_DIM > *pElement)
should this be rU?

Member SimpleLinearEllipticAssembler::ComputeMatrixTerm (c_vector< double, ELEMENT_DIM+1 > &rPhi, c_matrix< double, SPACE_DIM, ELEMENT_DIM+1 > &rGradPhi, ChastePoint< SPACE_DIM > &rX, c_vector< double, 1 > &rU, c_matrix< double, 1, SPACE_DIM > &rGradU, Element< ELEMENT_DIM, SPACE_DIM > *pElement)
should this be rU?

Class SimpleNonlinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM >
[old todo, maybe not true anymore after refactor(?)] This class could do with some tidying. More (3D) tests are also needed. It probably needs re-writing to take advantage of parallel machines.

Member SimpleNonlinearEllipticAssembler::ComputeMatrixTerm (c_vector< double, ELEMENT_DIM+1 > &rPhi, c_matrix< double, ELEMENT_DIM, ELEMENT_DIM+1 > &rGradPhi, ChastePoint< SPACE_DIM > &rX, c_vector< double, 1 > &rU, c_matrix< double, 1, SPACE_DIM > &rGradU, Element< ELEMENT_DIM, SPACE_DIM > *pElement)
should this be rU?

Member StreeterFibreGenerator::GetAveragedThickness (const unsigned nodeIndex, const std::vector< double > &wallThickness) const
The following nested loops appear in DistanceMapCalculator as well, refactor it. Idea: create an iterator over the neighbour nodes in class Node

Member StreeterFibreGenerator::GenerateOrthotropicFibreOrientation (std::string outputDirectory, std::string fibreOrientationFile, bool logInfo=false)
basis_functions matrix is 3D specific, work out the generic expression

Member TetrahedralMesh::Translate (c_vector< double, SPACE_DIM > displacement)
pass by const reference?

Member TetrahedralMesh::GetContainingElementIndex (ChastePoint< SPACE_DIM > testPoint, bool strict=false, std::set< unsigned > testElements=stdset< unsigned >())
What if the element is deleted?

Member TetrahedralMesh::GetContainingElementIndex (ChastePoint< SPACE_DIM > testPoint, bool strict=false, std::set< unsigned > testElements=stdset< unsigned >())
This ought to return a set of all elements that contain the point (if the point is a node in the mesh then it's contained in multiple elements)

Member TetrahedralMesh::GetContainingElementIndex (ChastePoint< SPACE_DIM > testPoint, bool strict=false, std::set< unsigned > testElements=stdset< unsigned >())
Polling every element is unnecessary. We ought to start from a likely place and hill climb

Member TetrahedralMesh::GetNearestElementIndex (ChastePoint< SPACE_DIM > testPoint)
This ought to return a set of all elements that contain the point (if the point is a node in the mesh then it's contained in multiple elements)

Member TetrahedralMesh::GetNearestElementIndex (ChastePoint< SPACE_DIM > testPoint)
Polling every element is unnecessary. We ought to start from a likely place and hill climb

Member TetrahedralMesh::GetNearestElementIndex (ChastePoint< SPACE_DIM > testPoint)
What if the element is deleted?

Member TetrahedralMesh::GetContainingElementIndices (ChastePoint< SPACE_DIM > testPoint)
What if the element is deleted?

Member TetrahedralMesh::FlagElementsNotContainingNodes (std::set< unsigned > nodes)
pass by const reference?

Member TetrahedralMesh::EdgeIterator::mCellIndex
This doesn't appear to be used anywhere - remove it?

Member TetrahedralMesh::EdgeIterator::mNodeIndex
This doesn't appear to be used anywhere - remove it?

Member TimeStepper::TimeStepper (double startTime, double endTime, double dt, bool enforceConstantTimeStep=false)
This assertion breaks several tests

Member TissueSimulation::DoCellBirth ()
This is specific to cell-centre based models, the location isn't used in a vertex simulation, move it down to AbstractCellCentreBasedTissue??

Member TrianglesMeshReader::OpenNodeFile ()
Change name to OpenNodesFile for consistency with OpenElementsFile and OpenFacesFile? (#991)

Member TrianglesMeshReader::ReadHeaders ()
: rename std::stringstream variables

Member TrianglesMeshReader::GetNextLineFromStream (std::ifstream &fileStream, std::string &rRawLine)
: improve this error message

Class VertexAndAngle< DIM >
does this really need to be templated?

Generated on Tue Aug 4 16:10:27 2009 for Chaste by  doxygen 1.5.5