CellBasedPdeHandler< DIM > Class Template Reference

#include <CellBasedPdeHandler.hpp>

Inherits Identifiable.

Collaboration diagram for CellBasedPdeHandler< DIM >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 CellBasedPdeHandler (AbstractCellPopulation< DIM > *pCellPopulation, bool deleteMemberPointersInDestructor=false)
virtual ~CellBasedPdeHandler ()
const AbstractCellPopulation
< DIM > * 
GetCellPopulation () const
TetrahedralMesh< DIM, DIM > * GetCoarsePdeMesh ()
void OpenResultsFiles (std::string outputDirectory)
void CloseResultsFiles ()
bool GetWriteAverageRadialPdeSolution ()
bool GetWriteDailyAverageRadialPdeSolution ()
void UpdateCellPdeElementMap ()
bool GetImposeBcsOnCoarseBoundary ()
unsigned GetNumRadialIntervals ()
virtual void SolvePdeAndWriteResultsToFile (unsigned samplingTimestepMultiple)
unsigned FindCoarseElementContainingCell (CellPtr pCell)
virtual Vec GetPdeSolution (unsigned pdeIndex)
void SetWriteAverageRadialPdeSolution (unsigned numRadialIntervals=10, bool writeDailyResults=false)
void SetImposeBcsOnCoarseBoundary (bool setBcsOnCoarseBoundary)
virtual void UseCoarsePdeMesh (double stepSize, double meshWidth)
void AddPdeAndBc (PdeAndBoundaryConditions< DIM > *pPdeAndBc)
virtual void OutputParameters (out_stream &rParamsFile)

Protected Member Functions

void InitialiseCellPdeElementMap ()
virtual void WritePdeSolution (double time)
void WriteAverageRadialPdeSolution (double time)

Protected Attributes

AbstractCellPopulation< DIM > * mpCellPopulation
std::vector
< PdeAndBoundaryConditions
< DIM > * > 
mPdeAndBcCollection
out_stream mpVizPdeSolutionResultsFile
out_stream mpAverageRadialPdeSolutionResultsFile
bool mWriteAverageRadialPdeSolution
bool mWriteDailyAverageRadialPdeSolution
bool mSetBcsOnCoarseBoundary
unsigned mNumRadialIntervals
TetrahedralMesh< DIM, DIM > * mpCoarsePdeMesh
std::map< CellPtr, unsignedmCellPdeElementMap
bool mDeleteMemberPointersInDestructor

Private Member Functions

template<class Archive >
void serialize (Archive &archive, const unsigned int version)

Friends

class TestCellBasedPdeHandler
class TestOffLatticeSimulationWithPdes
class boost::serialization::access

Detailed Description

template<unsigned DIM>
class CellBasedPdeHandler< DIM >

A helper class, containing code for handling the numerical solution of one or more PDEs (using the finite element method) associated with a cell-based simulation object.

By letting AbstractCellBasedSimulation have a pointer to an object of this type as a member variable, we separate out all PDE-related functionality into this class, and thus obviate the need for specialized cell-based simulation subclasses.

Definition at line 51 of file CellBasedPdeHandler.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
CellBasedPdeHandler< DIM >::CellBasedPdeHandler ( AbstractCellPopulation< DIM > *  pCellPopulation,
bool  deleteMemberPointersInDestructor = false 
) [inline]

Constructor.

Parameters:
pCellPopulation pointer to a cell population
deleteMemberPointersInDestructor whether to delete member pointers in the destructor (defaults to false)

Todo:
change to exceptions (#1891)

Definition at line 39 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mpCellPopulation.

template<unsigned DIM>
CellBasedPdeHandler< DIM >::~CellBasedPdeHandler (  )  [inline, virtual]

Member Function Documentation

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::AddPdeAndBc ( PdeAndBoundaryConditions< DIM > *  pPdeAndBc  )  [inline]

Pass a PDE and associated boundary conditions to the simulation.

Parameters:
pPdeAndBc a pointer to a PdeAndBoundaryConditions object

Definition at line 91 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mPdeAndBcCollection.

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::CloseResultsFiles (  )  [inline]
template<unsigned DIM>
unsigned CellBasedPdeHandler< DIM >::FindCoarseElementContainingCell ( CellPtr  pCell  )  [inline]
template<unsigned DIM>
const AbstractCellPopulation< DIM > * CellBasedPdeHandler< DIM >::GetCellPopulation (  )  const [inline]

Get a pointer to the cell population.

Returns:
a const pointer to mpCellPopulation

Definition at line 79 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mpCellPopulation.

template<unsigned DIM>
TetrahedralMesh< DIM, DIM > * CellBasedPdeHandler< DIM >::GetCoarsePdeMesh (  )  [inline]
Returns:
mpCoarsePdeMesh

Definition at line 85 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mpCoarsePdeMesh.

template<unsigned DIM>
bool CellBasedPdeHandler< DIM >::GetImposeBcsOnCoarseBoundary (  )  [inline]
Returns:
mSetBcsOnCoarseBoundary

Definition at line 667 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mSetBcsOnCoarseBoundary.

template<unsigned DIM>
unsigned CellBasedPdeHandler< DIM >::GetNumRadialIntervals (  )  [inline]
Returns:
mNumRadialIntervals

Definition at line 673 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mNumRadialIntervals.

template<unsigned DIM>
Vec CellBasedPdeHandler< DIM >::GetPdeSolution ( unsigned  pdeIndex  )  [inline, virtual]

Get the solution to the PDE at this time step.

Parameters:
pdeIndex The index of the PDE in the vector mPdeAndBcCollection

Definition at line 97 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mPdeAndBcCollection.

template<unsigned DIM>
bool CellBasedPdeHandler< DIM >::GetWriteAverageRadialPdeSolution (  )  [inline]
Returns:
mWriteAverageRadialPdeSolution

Definition at line 655 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mWriteAverageRadialPdeSolution.

template<unsigned DIM>
bool CellBasedPdeHandler< DIM >::GetWriteDailyAverageRadialPdeSolution (  )  [inline]
Returns:
mWriteDailyAverageRadialPdeSolution

Definition at line 661 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mWriteDailyAverageRadialPdeSolution.

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::InitialiseCellPdeElementMap (  )  [inline, protected]

Initialise mCellPdeElementMap.

This method is only called within SetupSolve(), but is written as a separate method for testing purposes.

Definition at line 104 of file CellBasedPdeHandler.cpp.

References EXCEPTION, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndex(), CellBasedPdeHandler< DIM >::mCellPdeElementMap, CellBasedPdeHandler< DIM >::mpCellPopulation, and CellBasedPdeHandler< DIM >::mpCoarsePdeMesh.

Referenced by CellBasedPdeHandler< DIM >::OpenResultsFiles().

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::OpenResultsFiles ( std::string  outputDirectory  )  [inline]
template<unsigned DIM>
void CellBasedPdeHandler< DIM >::OutputParameters ( out_stream &  rParamsFile  )  [inline, virtual]
template<unsigned DIM>
template<class Archive >
void CellBasedPdeHandler< DIM >::serialize ( Archive &  archive,
const unsigned int  version 
) [inline, private]
template<unsigned DIM>
void CellBasedPdeHandler< DIM >::SetImposeBcsOnCoarseBoundary ( bool  setBcsOnCoarseBoundary  )  [inline]

Impose the PDE boundary conditions on the edge of the cell population when using the coarse mesh. The default option is to impose the condition on the boundary of the coarse mesh.

Parameters:
setBcsOnCoarseBoundary whether to impose the BCs on the edge of the cell population

Definition at line 590 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mSetBcsOnCoarseBoundary.

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::SetWriteAverageRadialPdeSolution ( unsigned  numRadialIntervals = 10,
bool  writeDailyResults = false 
) [inline]

Write the final (and optionally also the daily) average radial PDE solution to file.

Parameters:
numRadialIntervals The number of radial intervals in which the average PDE solution is calculated (defaults to 10)
writeDailyResults Whether to record the average radial PDE solution at the end of each day of the simulation (defaults to false)

Definition at line 582 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mNumRadialIntervals, CellBasedPdeHandler< DIM >::mWriteAverageRadialPdeSolution, and CellBasedPdeHandler< DIM >::mWriteDailyAverageRadialPdeSolution.

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::SolvePdeAndWriteResultsToFile ( unsigned  samplingTimestepMultiple  )  [inline, virtual]

Solve the PDE and write the solution to file.

Parameters:
samplingTimestepMultiple the ratio of the number of actual timesteps to the number of timesteps at which results are written to file.

Todo:
enable this (#1891)
Todo:
enable the coarse PDE mesh to change size, e.g. for a growing domain (#630/#1891)
Todo:
enable this in the case where a coarse PDE mesh is used
Todo:
Worry about round-off errors (#1891)

Definition at line 241 of file CellBasedPdeHandler.cpp.

References BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AddDirichletBoundaryCondition(), BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AddNeumannBoundaryCondition(), Element< ELEMENT_DIM, SPACE_DIM >::CalculateInterpolationWeights(), PdeAndBoundaryConditions< DIM >::DestroySolution(), EXCEPTION, PdeAndBoundaryConditions< DIM >::GetBoundaryCondition(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorBegin(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorEnd(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorBegin(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorEnd(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), PdeAndBoundaryConditions< DIM >::GetPde(), PdeAndBoundaryConditions< DIM >::GetSolution(), SimulationTime::GetTime(), SimulationTime::GetTimeStep(), SimulationTime::GetTimeStepsElapsed(), SimulationTime::Instance(), PdeAndBoundaryConditions< DIM >::IsNeumannBoundaryCondition(), CellBasedPdeHandler< DIM >::mCellPdeElementMap, CellBasedPdeHandler< DIM >::mpCellPopulation, CellBasedPdeHandler< DIM >::mpCoarsePdeMesh, CellBasedPdeHandler< DIM >::mPdeAndBcCollection, CellBasedPdeHandler< DIM >::mSetBcsOnCoarseBoundary, CellBasedPdeHandler< DIM >::mWriteDailyAverageRadialPdeSolution, PdeAndBoundaryConditions< DIM >::SetSolution(), PdeAndBoundaryConditions< DIM >::SetUpSourceTermsForAveragedSourcePde(), CellBasedPdeHandler< DIM >::UpdateCellPdeElementMap(), CellBasedPdeHandler< DIM >::WriteAverageRadialPdeSolution(), and CellBasedPdeHandler< DIM >::WritePdeSolution().

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::UpdateCellPdeElementMap (  )  [inline]

Update the mCellPdeElementMap

This method should be called before sending the element map to a PDE class to ensure map is up to date.

Definition at line 125 of file CellBasedPdeHandler.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndexWithInitialGuess(), CellBasedPdeHandler< DIM >::mCellPdeElementMap, CellBasedPdeHandler< DIM >::mpCellPopulation, and CellBasedPdeHandler< DIM >::mpCoarsePdeMesh.

Referenced by CellBasedPdeHandler< DIM >::SolvePdeAndWriteResultsToFile().

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::UseCoarsePdeMesh ( double  stepSize,
double  meshWidth 
) [inline, virtual]
template<unsigned DIM>
void CellBasedPdeHandler< DIM >::WriteAverageRadialPdeSolution ( double  time  )  [inline, protected]

Write the average radial PDE solution to file at a specified time.

Parameters:
time The time at which to record the average radial PDE solution

Definition at line 596 of file CellBasedPdeHandler.cpp.

References CellBasedPdeHandler< DIM >::mNumRadialIntervals, and CellBasedPdeHandler< DIM >::mpCellPopulation.

Referenced by CellBasedPdeHandler< DIM >::CloseResultsFiles(), and CellBasedPdeHandler< DIM >::SolvePdeAndWriteResultsToFile().

template<unsigned DIM>
void CellBasedPdeHandler< DIM >::WritePdeSolution ( double  time  )  [inline, protected, virtual]

Friends And Related Function Documentation

template<unsigned DIM>
friend class boost::serialization::access [friend]

Needed for serialization.

Definition at line 60 of file CellBasedPdeHandler.hpp.


Member Data Documentation

template<unsigned DIM>
std::map<CellPtr, unsigned> CellBasedPdeHandler< DIM >::mCellPdeElementMap [protected]
template<unsigned DIM>
bool CellBasedPdeHandler< DIM >::mDeleteMemberPointersInDestructor [protected]

Whether to delete member pointers in the destructor. Used in archiving.

Definition at line 113 of file CellBasedPdeHandler.hpp.

Referenced by CellBasedPdeHandler< DIM >::~CellBasedPdeHandler().

template<unsigned DIM>
unsigned CellBasedPdeHandler< DIM >::mNumRadialIntervals [protected]
template<unsigned DIM>
out_stream CellBasedPdeHandler< DIM >::mpAverageRadialPdeSolutionResultsFile [protected]

File that the average radial PDE solution is written out to.

Definition at line 89 of file CellBasedPdeHandler.hpp.

Referenced by CellBasedPdeHandler< DIM >::CloseResultsFiles(), and CellBasedPdeHandler< DIM >::OpenResultsFiles().

template<unsigned DIM>
AbstractCellPopulation<DIM>* CellBasedPdeHandler< DIM >::mpCellPopulation [protected]
template<unsigned DIM>
TetrahedralMesh<DIM,DIM>* CellBasedPdeHandler< DIM >::mpCoarsePdeMesh [protected]
template<unsigned DIM>
std::vector<PdeAndBoundaryConditions<DIM>*> CellBasedPdeHandler< DIM >::mPdeAndBcCollection [protected]
template<unsigned DIM>
out_stream CellBasedPdeHandler< DIM >::mpVizPdeSolutionResultsFile [protected]

File that the values of the PDE solution are written out to.

Definition at line 86 of file CellBasedPdeHandler.hpp.

Referenced by CellBasedPdeHandler< DIM >::CloseResultsFiles(), and CellBasedPdeHandler< DIM >::OpenResultsFiles().

template<unsigned DIM>
bool CellBasedPdeHandler< DIM >::mSetBcsOnCoarseBoundary [protected]
template<unsigned DIM>
bool CellBasedPdeHandler< DIM >::mWriteAverageRadialPdeSolution [protected]
template<unsigned DIM>
bool CellBasedPdeHandler< DIM >::mWriteDailyAverageRadialPdeSolution [protected]

The documentation for this class was generated from the following files:
Generated on Thu Dec 22 13:03:22 2011 for Chaste by  doxygen 1.6.3