Chaste
Release::2018.1
|
#include <ParabolicBoxDomainPdeModifier.hpp>
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) | |
virtual | ~ParabolicBoxDomainPdeModifier () |
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 (AbstractCellPopulation< DIM, DIM > &rCellPopulation) |
void | SetupInitialSolutionVector (AbstractCellPopulation< DIM, DIM > &rCellPopulation) |
void | OutputSimulationModifierParameters (out_stream &rParamsFile) |
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) | |
virtual | ~AbstractBoxDomainPdeModifier () |
double | GetStepSize () |
void | SetBcsOnBoxBoundary (bool setBcsOnBoxBoundary) |
bool | AreBcsSetOnBoxBoundary () |
void | GenerateFeMesh (boost::shared_ptr< ChasteCuboid< DIM > > pMeshCuboid, double stepSize) |
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) | |
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 | TestParabolicBoxDomainPdeModifier |
class | boost::serialization::access |
Additional Inherited Members | |
Protected Attributes inherited from AbstractBoxDomainPdeModifier< DIM > | |
std::map< CellPtr, unsigned > | mCellPdeElementMap |
boost::shared_ptr < ChasteCuboid< DIM > > | mpMeshCuboid |
double | mStepSize |
bool | mSetBcsOnBoxBoundary |
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 |
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.
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.
pPde | A shared pointer to a linear PDE object (defaults to NULL) |
pBoundaryCondition | A shared pointer to an abstract boundary condition (defaults to NULL, corresponding to a constant boundary condition with value zero) |
isNeumannBoundaryCondition | Whether the boundary condition is Neumann (defaults to true) |
pMeshCuboid | A shared pointer to a ChasteCuboid specifying the outer boundary for the FE mesh (defaults to NULL) |
stepSize | step size to be used in the FE mesh (defaults to 1.0, i.e. the default cell size) |
solution | solution vector (defaults to NULL) |
Definition at line 40 of file ParabolicBoxDomainPdeModifier.cpp.
|
virtual |
Destructor.
Definition at line 56 of file ParabolicBoxDomainPdeModifier.cpp.
|
virtual |
Helper method to construct the boundary conditions container for the PDE.
rCellPopulation | reference to the cell population |
Definition at line 108 of file ParabolicBoxDomainPdeModifier.cpp.
References EXCEPTION, AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorBegin(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorBegin().
|
virtual |
Overridden OutputSimulationModifierParameters() method. Output any simulation modifier parameters to file.
rParamsFile | the file stream to which the parameters are output |
Reimplemented from AbstractBoxDomainPdeModifier< DIM >.
Definition at line 165 of file ParabolicBoxDomainPdeModifier.cpp.
References AbstractBoxDomainPdeModifier< DIM >::OutputSimulationModifierParameters().
|
inlineprivate |
Boost Serialization method for archiving/checkpointing. Archives the object and its member variables.
archive | The boost archive. |
version | The current version of this class. |
Definition at line 80 of file ParabolicBoxDomainPdeModifier.hpp.
void ParabolicBoxDomainPdeModifier< DIM >::SetupInitialSolutionVector | ( | AbstractCellPopulation< DIM, DIM > & | rCellPopulation | ) |
Helper method to initialise the PDE solution using the CellData.
Here we assume a homogeneous initial consition.
rCellPopulation | reference to the cell population |
Definition at line 144 of file ParabolicBoxDomainPdeModifier.cpp.
References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::Begin(), PetscTools::CreateAndSetVec(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::End(), and UNUSED_OPT.
|
virtual |
Overridden SetupSolve() method.
Specifies what to do in the simulation before the start of the time loop.
rCellPopulation | reference to the cell population |
outputDirectory | the output directory, relative to where Chaste output is stored |
Reimplemented from AbstractBoxDomainPdeModifier< DIM >.
Definition at line 96 of file ParabolicBoxDomainPdeModifier.cpp.
References AbstractBoxDomainPdeModifier< DIM >::SetupSolve().
|
virtual |
Overridden UpdateAtEndOfTimeStep() method.
Specifies what to do in the simulation at the end of each time step.
rCellPopulation | reference to the cell population |
Implements AbstractPdeModifier< DIM >.
Definition at line 61 of file ParabolicBoxDomainPdeModifier.cpp.
References PetscTools::Destroy(), SimulationTime::Instance(), and AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, 1 >::SetTimes().
|
friend |
Needed for serialization.
Definition at line 71 of file ParabolicBoxDomainPdeModifier.hpp.