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

#include <EllipticGrowingDomainPdeModifier.hpp>

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

Public Member Functions

 EllipticGrowingDomainPdeModifier (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 ~EllipticGrowingDomainPdeModifier ()
 
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 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 TestEllipticGrowingDomainPdeModifier
 
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 EllipticGrowingDomainPdeModifier< DIM >

A modifier class in which a linear elliptic 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 CellwiseSourceEllipticPde and UniformSourceEllipticPde.

Definition at line 61 of file EllipticGrowingDomainPdeModifier.hpp.

Constructor & Destructor Documentation

template<unsigned DIM>
EllipticGrowingDomainPdeModifier< DIM >::EllipticGrowingDomainPdeModifier ( 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 EllipticGrowingDomainPdeModifier.cpp.

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

Destructor.

Definition at line 53 of file EllipticGrowingDomainPdeModifier.cpp.

Member Function Documentation

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

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

Returns
the full boundary conditions container

Definition at line 129 of file EllipticGrowingDomainPdeModifier.cpp.

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

template<unsigned DIM>
void EllipticGrowingDomainPdeModifier< 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 146 of file EllipticGrowingDomainPdeModifier.cpp.

References AbstractGrowingDomainPdeModifier< DIM >::OutputSimulationModifierParameters().

template<unsigned DIM>
template<class Archive >
void EllipticGrowingDomainPdeModifier< 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 EllipticGrowingDomainPdeModifier.hpp.

template<unsigned DIM>
void EllipticGrowingDomainPdeModifier< 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 114 of file EllipticGrowingDomainPdeModifier.cpp.

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

template<unsigned DIM>
void EllipticGrowingDomainPdeModifier< 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

Implements AbstractPdeModifier< DIM >.

Definition at line 58 of file EllipticGrowingDomainPdeModifier.cpp.

References PetscTools::Destroy(), and AbstractStaticLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve().

Friends And Related Function Documentation

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

Needed for serialization.

Definition at line 68 of file EllipticGrowingDomainPdeModifier.hpp.


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