Chaste Commit::30a3e656d4b131f8c595cc6eb2becd297337570f
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)
 
 ~EllipticGrowingDomainPdeModifier () override=default
 
void UpdateAtEndOfTimeStep (AbstractCellPopulation< DIM, DIM > &rCellPopulation) override
 
void SetupSolve (AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory) override
 
virtual std::shared_ptr< BoundaryConditionsContainer< DIM, DIM, 1 > > ConstructBoundaryConditionsContainer ()
 
void OutputSimulationModifierParameters (out_stream &rParamsFile) override
 
- 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)
 
 ~AbstractGrowingDomainPdeModifier () override=default
 
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)
 
 ~AbstractPdeModifier () override
 
boost::shared_ptr< AbstractLinearPde< DIM, DIM > > GetPde ()
 
boost::shared_ptr< AbstractBoundaryCondition< DIM > > GetBoundaryCondition ()
 
bool IsNeumannBoundaryCondition () const
 
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
 
void SetupSolve (AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory) override
 
void UpdateAtEndOfOutputTimeStep (AbstractCellPopulation< DIM, DIM > &rCellPopulation) override
 
void UpdateAtEndOfSolve (AbstractCellPopulation< DIM, DIM > &rCellPopulation) override
 
bool GetOutputGradient () const
 
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 = nullptr
 
TetrahedralMesh< DIM, DIM > * mpFeMesh = nullptr
 
std::string mOutputDirectory {}
 
bool mOutputGradient = false
 
bool mOutputSolutionAtPdeNodes = false
 
out_stream mpVizPdeSolutionResultsFile
 
bool mDeleteFeMesh = false
 
std::vector< doublemIsDirichletBoundaryNode
 

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

◆ EllipticGrowingDomainPdeModifier()

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.

◆ ~EllipticGrowingDomainPdeModifier()

Destructor.

Member Function Documentation

◆ ConstructBoundaryConditionsContainer()

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 124 of file EllipticGrowingDomainPdeModifier.cpp.

◆ OutputSimulationModifierParameters()

template<unsigned DIM>
void EllipticGrowingDomainPdeModifier< DIM >::OutputSimulationModifierParameters ( out_stream &  rParamsFile)
overridevirtual

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 142 of file EllipticGrowingDomainPdeModifier.cpp.

References AbstractGrowingDomainPdeModifier< DIM >::OutputSimulationModifierParameters().

◆ serialize()

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.

◆ SetupSolve()

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

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

Definition at line 109 of file EllipticGrowingDomainPdeModifier.cpp.

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

◆ UpdateAtEndOfTimeStep()

template<unsigned DIM>
void EllipticGrowingDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)
overridevirtual

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 53 of file EllipticGrowingDomainPdeModifier.cpp.

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

Friends And Related Symbol Documentation

◆ boost::serialization::access

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

Needed for serialization.

Definition at line 68 of file EllipticGrowingDomainPdeModifier.hpp.

◆ TestEllipticGrowingDomainPdeModifier

template<unsigned DIM>
friend class TestEllipticGrowingDomainPdeModifier
friend

Definition at line 63 of file EllipticGrowingDomainPdeModifier.hpp.


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