Chaste
Release::2017.1
|
#include <EllipticBoxDomainPdeModifier.hpp>
Public Member Functions | |
EllipticBoxDomainPdeModifier (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 | ~EllipticBoxDomainPdeModifier () |
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 | 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 | TestEllipticBoxDomainPdeModifier |
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 elliptic 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 AveragedSourceEllipticPde, VolumeDependentAveragedSourceEllipticPde and UniformSourceEllipticPde.
Definition at line 66 of file EllipticBoxDomainPdeModifier.hpp.
EllipticBoxDomainPdeModifier< DIM >::EllipticBoxDomainPdeModifier | ( | 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 EllipticBoxDomainPdeModifier.cpp.
Referenced by EllipticBoxDomainPdeModifier< DIM >::serialize().
|
virtual |
Destructor.
Definition at line 56 of file EllipticBoxDomainPdeModifier.cpp.
Referenced by EllipticBoxDomainPdeModifier< DIM >::serialize().
|
virtual |
Helper method to construct the boundary conditions container for the PDE.
rCellPopulation | reference to the cell population |
Definition at line 100 of file EllipticBoxDomainPdeModifier.cpp.
References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::Begin(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::End(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorBegin(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryNodeIteratorEnd(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), AbstractPdeModifier< DIM >::IsNeumannBoundaryCondition(), AbstractBoxDomainPdeModifier< DIM >::mCellPdeElementMap, AbstractPdeModifier< DIM >::mpBoundaryCondition, AbstractPdeModifier< DIM >::mpFeMesh, and AbstractBoxDomainPdeModifier< DIM >::mSetBcsOnBoxBoundary.
Referenced by EllipticBoxDomainPdeModifier< DIM >::serialize(), and EllipticBoxDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep().
|
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 156 of file EllipticBoxDomainPdeModifier.cpp.
References EXPORT_TEMPLATE_CLASS_SAME_DIMS, and AbstractBoxDomainPdeModifier< DIM >::OutputSimulationModifierParameters().
Referenced by EllipticBoxDomainPdeModifier< DIM >::serialize().
|
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 82 of file EllipticBoxDomainPdeModifier.hpp.
References RelativeTo::Absolute, EllipticBoxDomainPdeModifier< DIM >::ConstructBoundaryConditionsContainer(), PetscTools::DumpPetscObject(), EllipticBoxDomainPdeModifier< DIM >::EllipticBoxDomainPdeModifier(), FileFinder::Exists(), EXPORT_TEMPLATE_CLASS_SAME_DIMS, ArchiveLocationInfo::GetArchiveDirectory(), AbstractPdeModifier< DIM >::GetSolution(), EllipticBoxDomainPdeModifier< DIM >::OutputSimulationModifierParameters(), PetscTools::ReadPetscObject(), EllipticBoxDomainPdeModifier< DIM >::SetupSolve(), EllipticBoxDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep(), and EllipticBoxDomainPdeModifier< DIM >::~EllipticBoxDomainPdeModifier().
|
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 90 of file EllipticBoxDomainPdeModifier.cpp.
References AbstractBoxDomainPdeModifier< DIM >::SetupSolve(), AbstractPdeModifier< DIM >::UpdateAtEndOfOutputTimeStep(), and EllipticBoxDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep().
Referenced by EllipticBoxDomainPdeModifier< DIM >::serialize().
|
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 EllipticBoxDomainPdeModifier.cpp.
References EllipticBoxDomainPdeModifier< DIM >::ConstructBoundaryConditionsContainer(), PetscTools::Destroy(), AbstractPdeModifier< DIM >::GetPde(), AbstractBoxDomainPdeModifier< DIM >::mCellPdeElementMap, AbstractPdeModifier< DIM >::mpFeMesh, AbstractPdeModifier< DIM >::mSolution, AbstractPdeModifier< DIM >::SetUpSourceTermsForAveragedSourcePde(), AbstractBoxDomainPdeModifier< DIM >::UpdateCellData(), and AbstractBoxDomainPdeModifier< DIM >::UpdateCellPdeElementMap().
Referenced by EllipticBoxDomainPdeModifier< DIM >::serialize(), and EllipticBoxDomainPdeModifier< DIM >::SetupSolve().
|
friend |
Needed for serialization.
Definition at line 73 of file EllipticBoxDomainPdeModifier.hpp.