Chaste  Release::2018.1
ParabolicGrowingDomainPdeModifier< DIM > Class Template Reference

#include <ParabolicGrowingDomainPdeModifier.hpp>

+ Inheritance diagram for ParabolicGrowingDomainPdeModifier< DIM >:
+ Collaboration diagram for ParabolicGrowingDomainPdeModifier< DIM >:

Public Member Functions

 ParabolicGrowingDomainPdeModifier (boost::shared_ptr< AbstractLinearPde< DIM, DIM > > pPde=boost::shared_ptr< AbstractLinearPde< DIM, DIM > >(), boost::shared_ptr< AbstractBoundaryCondition< DIM > > pBoundaryCondition=boost::shared_ptr< AbstractBoundaryCondition< DIM > >(), bool isNeumannBoundaryCondition=true, Vec solution=nullptr)
 
virtual ~ParabolicGrowingDomainPdeModifier ()
 
virtual void UpdateAtEndOfTimeStep (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
virtual void SetupSolve (AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
 
virtual std::shared_ptr
< BoundaryConditionsContainer
< DIM, DIM, 1 > > 
ConstructBoundaryConditionsContainer ()
 
void UpdateSolutionVector (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
void OutputSimulationModifierParameters (out_stream &rParamsFile)
 
- Public Member Functions inherited from AbstractGrowingDomainPdeModifier< DIM >
 AbstractGrowingDomainPdeModifier (boost::shared_ptr< AbstractLinearPde< DIM, DIM > > pPde=boost::shared_ptr< AbstractLinearPde< DIM, DIM > >(), boost::shared_ptr< AbstractBoundaryCondition< DIM > > pBoundaryCondition=boost::shared_ptr< AbstractBoundaryCondition< DIM > >(), bool isNeumannBoundaryCondition=true, Vec solution=nullptr)
 
virtual ~AbstractGrowingDomainPdeModifier ()
 
void GenerateFeMesh (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
void UpdateCellData (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
- Public Member Functions inherited from AbstractPdeModifier< DIM >
 AbstractPdeModifier (boost::shared_ptr< AbstractLinearPde< DIM, DIM > > pPde=NULL, boost::shared_ptr< AbstractBoundaryCondition< DIM > > pBoundaryCondition=boost::shared_ptr< AbstractBoundaryCondition< DIM > >(), bool isNeumannBoundaryCondition=true, Vec solution=nullptr)
 
virtual ~AbstractPdeModifier ()
 
boost::shared_ptr
< AbstractLinearPde< DIM, DIM > > 
GetPde ()
 
boost::shared_ptr
< AbstractBoundaryCondition
< DIM > > 
GetBoundaryCondition ()
 
bool IsNeumannBoundaryCondition ()
 
void SetDependentVariableName (const std::string &rName)
 
std::string & rGetDependentVariableName ()
 
bool HasAveragedSourcePde ()
 
void SetUpSourceTermsForAveragedSourcePde (TetrahedralMesh< DIM, DIM > *pMesh, std::map< CellPtr, unsigned > *pCellPdeElementMap=nullptr)
 
Vec GetSolution ()
 
Vec GetSolution () const
 
TetrahedralMesh< DIM, DIM > * GetFeMesh () const
 
virtual void UpdateAtEndOfOutputTimeStep (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
virtual void UpdateAtEndOfSolve (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
bool GetOutputGradient ()
 
void SetOutputGradient (bool outputGradient)
 
void SetOutputSolutionAtPdeNodes (bool outputSolutionAtPdeNodes)
 
- Public Member Functions inherited from AbstractCellBasedSimulationModifier< DIM, DIM >
 AbstractCellBasedSimulationModifier ()
 
virtual ~AbstractCellBasedSimulationModifier ()
 
virtual void UpdateAtEndOfTimeStep (AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > &rCellPopulation)=0
 
virtual void UpdateAtEndOfOutputTimeStep (AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > &rCellPopulation)
 
virtual void SetupSolve (AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > &rCellPopulation, std::string outputDirectory)=0
 
virtual void UpdateAtEndOfSolve (AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > &rCellPopulation)
 
void OutputSimulationModifierInfo (out_stream &rParamsFile)
 
- Public Member Functions inherited from Identifiable
virtual ~Identifiable ()
 
std::string GetIdentifier () const
 

Private Member Functions

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

Friends

class TestParabolicGrowingDomainPdeModifier
 
class boost::serialization::access
 

Additional Inherited Members

- Protected Attributes inherited from AbstractPdeModifier< DIM >
boost::shared_ptr
< AbstractLinearPde< DIM, DIM > > 
mpPde
 
boost::shared_ptr
< AbstractBoundaryCondition
< DIM > > 
mpBoundaryCondition
 
bool mIsNeumannBoundaryCondition
 
std::string mDependentVariableName
 
Vec mSolution
 
TetrahedralMesh< DIM, DIM > * mpFeMesh
 
std::string mOutputDirectory
 
bool mOutputGradient
 
bool mOutputSolutionAtPdeNodes
 
out_stream mpVizPdeSolutionResultsFile
 
bool mDeleteFeMesh
 

Detailed Description

template<unsigned DIM>
class ParabolicGrowingDomainPdeModifier< DIM >

A modifier class in which a linear parabolic PDE coupled to a cell-based simulation is solved on a growing domain. The value of the dependent variable at each cell is stored and updated in a CellData item.

At each time step, the finite element mesh used to solve the PDE numerically is defined by the spatial domain associated with the cell population. The precise definition of this domain is implemented in the method GetTetrahedralMeshForPdeModifier(), which is overridden for each cell population class and is used in the AbstractGrowingDomainPdeModifier method GenerateFeMesh() that is inherited by this class.

Examples of PDEs in the source folder that can be solved using this class are CellwiseSourceParabolicPde and UniformSourceParabolicPde.

Definition at line 61 of file ParabolicGrowingDomainPdeModifier.hpp.

Constructor & Destructor Documentation

template<unsigned DIM>
ParabolicGrowingDomainPdeModifier< DIM >::ParabolicGrowingDomainPdeModifier ( boost::shared_ptr< AbstractLinearPde< DIM, DIM > >  pPde = boost::shared_ptr<AbstractLinearPde<DIM,DIM> >(),
boost::shared_ptr< AbstractBoundaryCondition< DIM > >  pBoundaryCondition = boost::shared_ptr<AbstractBoundaryCondition<DIM> >(),
bool  isNeumannBoundaryCondition = true,
Vec  solution = nullptr 
)

Constructor.

Parameters
pPdeA shared pointer to a linear PDE object (defaults to NULL)
pBoundaryConditionA shared pointer to an abstract boundary condition (defaults to NULL, corresponding to a constant boundary condition with value zero)
isNeumannBoundaryConditionWhether the boundary condition is Neumann (defaults to true)
solutionsolution vector (defaults to NULL)

Definition at line 41 of file ParabolicGrowingDomainPdeModifier.cpp.

template<unsigned DIM>
ParabolicGrowingDomainPdeModifier< DIM >::~ParabolicGrowingDomainPdeModifier ( )
virtual

Destructor.

Definition at line 53 of file ParabolicGrowingDomainPdeModifier.cpp.

Member Function Documentation

template<unsigned DIM>
std::shared_ptr< BoundaryConditionsContainer< DIM, DIM, 1 > > ParabolicGrowingDomainPdeModifier< DIM >::ConstructBoundaryConditionsContainer ( )
virtual

Helper method to construct the boundary conditions container for the PDE.

Returns
the full boundary conditions container

Definition at line 112 of file ParabolicGrowingDomainPdeModifier.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorBegin(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorBegin().

template<unsigned DIM>
void ParabolicGrowingDomainPdeModifier< DIM >::OutputSimulationModifierParameters ( out_stream &  rParamsFile)
virtual

Overridden OutputSimulationModifierParameters() method. Output any simulation modifier parameters to file.

Parameters
rParamsFilethe file stream to which the parameters are output

Reimplemented from AbstractGrowingDomainPdeModifier< DIM >.

Definition at line 173 of file ParabolicGrowingDomainPdeModifier.cpp.

References AbstractGrowingDomainPdeModifier< DIM >::OutputSimulationModifierParameters().

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

Boost Serialization method for archiving/checkpointing. Archives the object and its member variables.

Parameters
archiveThe boost archive.
versionThe current version of this class.

Definition at line 77 of file ParabolicGrowingDomainPdeModifier.hpp.

template<unsigned DIM>
void ParabolicGrowingDomainPdeModifier< DIM >::SetupSolve ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation,
std::string  outputDirectory 
)
virtual

Overridden SetupSolve() method.

Specifies what to do in the simulation before the start of the time loop.

Parameters
rCellPopulationreference to the cell population
outputDirectorythe output directory, relative to where Chaste output is stored

Reimplemented from AbstractPdeModifier< DIM >.

Definition at line 92 of file ParabolicGrowingDomainPdeModifier.cpp.

References EXCEPTION, and AbstractPdeModifier< DIM >::SetupSolve().

template<unsigned DIM>
void ParabolicGrowingDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)
virtual

Overridden UpdateAtEndOfTimeStep() method.

Specifies what to do in the simulation at the end of each time step.

Parameters
rCellPopulationreference to the cell population
Todo:
Investigate more than one PDE time step per spatial step

Implements AbstractPdeModifier< DIM >.

Definition at line 58 of file ParabolicGrowingDomainPdeModifier.cpp.

References PetscTools::Destroy(), SimulationTime::Instance(), and AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, 1 >::SetTimes().

template<unsigned DIM>
void ParabolicGrowingDomainPdeModifier< DIM >::UpdateSolutionVector ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)

Friends And Related Function Documentation

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

Needed for serialization.

Definition at line 68 of file ParabolicGrowingDomainPdeModifier.hpp.


The documentation for this class was generated from the following files: