Chaste Commit::30a3e656d4b131f8c595cc6eb2becd297337570f
ParabolicBoxDomainPdeModifier< DIM > Class Template Reference

#include <ParabolicBoxDomainPdeModifier.hpp>

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

Public Member Functions

 ParabolicBoxDomainPdeModifier (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, boost::shared_ptr< ChasteCuboid< DIM > > pMeshCuboid=boost::shared_ptr< ChasteCuboid< DIM > >(), double stepSize=1.0, Vec solution=nullptr)
 
 ~ParabolicBoxDomainPdeModifier () 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 (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
void SetupInitialSolutionVector (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
Vec InterpolateSolutionFromCellMovement (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
void SetMoveSolutionWithCells (bool moveSolutionWithCells)
 
bool GetMoveSolutionWithCells () const
 
void OutputSimulationModifierParameters (out_stream &rParamsFile) override
 
- Public Member Functions inherited from AbstractBoxDomainPdeModifier< DIM >
 AbstractBoxDomainPdeModifier (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, boost::shared_ptr< ChasteCuboid< DIM > > pMeshCuboid=boost::shared_ptr< ChasteCuboid< DIM > >(), double stepSize=1.0, Vec solution=nullptr)
 
 ~AbstractBoxDomainPdeModifier () override=default
 
double GetStepSize () const
 
void SetBcsOnBoxBoundary (bool setBcsOnBoxBoundary)
 
bool AreBcsSetOnBoxBoundary () const
 
void SetBcsOnBoundingSphere (bool setBcsOnBoundingSphere)
 
bool AreBcsSetOnBoundingSphere () const
 
void SetUseVoronoiCellsForInterpolation (bool useVoronoiCellsForInterpolation)
 
bool GetUseVoronoiCellsForInterpolation () const
 
void SetTypicalCellRadius (double typicalCellRadius)
 
double GetTypicalCellRadius () const
 
void ConstructBoundaryConditionsContainerHelper (AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::shared_ptr< BoundaryConditionsContainer< DIM, DIM, 1 > > pBcc)
 
void SetupSolve (AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory) override
 
void GenerateFeMesh (boost::shared_ptr< ChasteCuboid< DIM > > pMeshCuboid, double stepSize)
 
void GenerateAndReturnFeMesh (boost::shared_ptr< ChasteCuboid< DIM > > pMeshCuboid, double stepSize, TetrahedralMesh< DIM, DIM > *pMesh)
 
void UpdateCellData (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
void InitialiseCellPdeElementMap (AbstractCellPopulation< DIM, DIM > &rCellPopulation)
 
void UpdateCellPdeElementMap (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)
 

Private Attributes

bool mMoveSolutionWithCells
 
std::map< CellPtr, c_vector< double, DIM > > mOldCellLocations
 

Friends

class TestParabolicBoxDomainPdeModifier
 
class boost::serialization::access
 

Additional Inherited Members

- Protected Attributes inherited from AbstractBoxDomainPdeModifier< DIM >
std::map< CellPtr, unsignedmCellPdeElementMap
 
boost::shared_ptr< ChasteCuboid< DIM > > mpMeshCuboid
 
double mStepSize
 
bool mSetBcsOnBoxBoundary
 
bool mSetBcsOnBoundingSphere
 
bool mUseVoronoiCellsForInterpolation
 
double mTypicalCellRadius
 
- 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 ParabolicBoxDomainPdeModifier< DIM >

A modifier class in which a linear parabolic PDE coupled to a cell-based simulation is solved on a coarse domain.

The finite element mesh used to solve the PDE numerically is a fixed tessellation of a cuboid (box), which must be supplied to the constructor. The value of the dependent variable is interpolated between coarse mesh nodes to obtain a value at each cell, which is stored and updated in a CellData item.

At each time step the boundary condition supplied to the constructor may be imposed either on the boundary of the box domain, or on the boundary of the cell population (which is assumed to lie within the box domain). This choice can be made using the AbstractBoxDomainPdeModifier method SetBcsOnBoxBoundary(), which is inherited by this class.

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

Definition at line 64 of file ParabolicBoxDomainPdeModifier.hpp.

Constructor & Destructor Documentation

◆ ParabolicBoxDomainPdeModifier()

template<unsigned DIM>
ParabolicBoxDomainPdeModifier< DIM >::ParabolicBoxDomainPdeModifier ( 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,
boost::shared_ptr< ChasteCuboid< DIM > >  pMeshCuboid = boost::shared_ptr<ChasteCuboid<DIM> >(),
double  stepSize = 1.0,
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)
pMeshCuboidA shared pointer to a ChasteCuboid specifying the outer boundary for the FE mesh (defaults to NULL)
stepSizestep size to be used in the FE mesh (defaults to 1.0, i.e. the default cell size)
solutionsolution vector (defaults to NULL)

Definition at line 42 of file ParabolicBoxDomainPdeModifier.cpp.

◆ ~ParabolicBoxDomainPdeModifier()

template<unsigned DIM>
ParabolicBoxDomainPdeModifier< DIM >::~ParabolicBoxDomainPdeModifier ( )
overridedefault

Destructor.

Member Function Documentation

◆ ConstructBoundaryConditionsContainer()

template<unsigned DIM>
std::shared_ptr< BoundaryConditionsContainer< DIM, DIM, 1 > > ParabolicBoxDomainPdeModifier< DIM >::ConstructBoundaryConditionsContainer ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)
virtual

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

Parameters
rCellPopulationreference to the cell population
Returns
the full boundary conditions container

Definition at line 152 of file ParabolicBoxDomainPdeModifier.cpp.

◆ GetMoveSolutionWithCells()

template<unsigned DIM>
bool ParabolicBoxDomainPdeModifier< DIM >::GetMoveSolutionWithCells ( ) const
Returns
mMoveSolutionWithCells.

Definition at line 337 of file ParabolicBoxDomainPdeModifier.cpp.

◆ InterpolateSolutionFromCellMovement()

template<unsigned DIM>
Vec ParabolicBoxDomainPdeModifier< DIM >::InterpolateSolutionFromCellMovement ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)

◆ OutputSimulationModifierParameters()

template<unsigned DIM>
void ParabolicBoxDomainPdeModifier< 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 AbstractBoxDomainPdeModifier< DIM >.

Definition at line 343 of file ParabolicBoxDomainPdeModifier.cpp.

References AbstractBoxDomainPdeModifier< DIM >::OutputSimulationModifierParameters().

◆ serialize()

template<unsigned DIM>
template<class Archive >
void ParabolicBoxDomainPdeModifier< 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 80 of file ParabolicBoxDomainPdeModifier.hpp.

References ParabolicBoxDomainPdeModifier< DIM >::mMoveSolutionWithCells, and ParabolicBoxDomainPdeModifier< DIM >::mOldCellLocations.

◆ SetMoveSolutionWithCells()

template<unsigned DIM>
void ParabolicBoxDomainPdeModifier< DIM >::SetMoveSolutionWithCells ( bool  moveSolutionWithCells)

Set mMoveSolutionWithCells.

Parameters
moveSolutionWithCellswhether to move the solution with cells.

Definition at line 331 of file ParabolicBoxDomainPdeModifier.cpp.

◆ SetupInitialSolutionVector()

template<unsigned DIM>
void ParabolicBoxDomainPdeModifier< DIM >::SetupInitialSolutionVector ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)

Helper method to initialise the PDE solution using the CellData.

Here we assume a homogeneous initial condition.

TODO use InterpolateSolutionFromCellMovement instead!

Parameters
rCellPopulationreference to the cell population

Definition at line 162 of file ParabolicBoxDomainPdeModifier.cpp.

References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::Begin(), PetscTools::CreateAndSetVec(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::End(), and UNUSED_OPT.

◆ SetupSolve()

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

References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::Begin(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::End(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetLocationOfCellCentre(), and AbstractBoxDomainPdeModifier< DIM >::SetupSolve().

◆ UpdateAtEndOfTimeStep()

Friends And Related Symbol Documentation

◆ boost::serialization::access

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

Needed for serialization.

Definition at line 71 of file ParabolicBoxDomainPdeModifier.hpp.

◆ TestParabolicBoxDomainPdeModifier

template<unsigned DIM>
friend class TestParabolicBoxDomainPdeModifier
friend

Definition at line 66 of file ParabolicBoxDomainPdeModifier.hpp.

Member Data Documentation

◆ mMoveSolutionWithCells

template<unsigned DIM>
bool ParabolicBoxDomainPdeModifier< DIM >::mMoveSolutionWithCells
private

Whether to move the solution along with the cells in the cell population. Default to true.

Definition at line 91 of file ParabolicBoxDomainPdeModifier.hpp.

Referenced by ParabolicBoxDomainPdeModifier< DIM >::serialize().

◆ mOldCellLocations

template<unsigned DIM>
std::map<CellPtr, c_vector<double, DIM> > ParabolicBoxDomainPdeModifier< DIM >::mOldCellLocations
private

Map used to calculate displacement of cells if moving pde solution with cells

Definition at line 96 of file ParabolicBoxDomainPdeModifier.hpp.

Referenced by ParabolicBoxDomainPdeModifier< DIM >::serialize().


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