Chaste Commit::43b116bb45f11066c455b15e05c77f8bbe23ac85
AbstractPdeModifier< DIM > Class Template Referenceabstract

#include <AbstractPdeModifier.hpp>

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

Public Member Functions

 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 UpdateAtEndOfTimeStep (AbstractCellPopulation< DIM, DIM > &rCellPopulation) override=0
 
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)
 
void OutputSimulationModifierParameters (out_stream &rParamsFile) override
 
- 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
 

Protected Attributes

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
 

Private Member Functions

template<class Archive >
void serialize (Archive &archive, const unsigned int version)
 

Friends

class boost::serialization::access
 

Detailed Description

template<unsigned DIM>
class AbstractPdeModifier< DIM >

An abstract modifier class containing functionality common to AbstractBoxDomainPdeModifier, AbstractGrowingDomainPdeModifier and their subclasses, which solve a linear elliptic or parabolic PDE coupled to a cell-based simulation.

Definition at line 54 of file AbstractPdeModifier.hpp.

Constructor & Destructor Documentation

◆ AbstractPdeModifier()

template<unsigned DIM>
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 
)

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 44 of file AbstractPdeModifier.cpp.

References AbstractPdeModifier< DIM >::mSolution.

◆ ~AbstractPdeModifier()

template<unsigned DIM>
AbstractPdeModifier< DIM >::~AbstractPdeModifier ( )
override

Destructor.

Definition at line 60 of file AbstractPdeModifier.cpp.

References PetscTools::Destroy().

Member Function Documentation

◆ GetBoundaryCondition()

template<unsigned DIM>
boost::shared_ptr< AbstractBoundaryCondition< DIM > > AbstractPdeModifier< DIM >::GetBoundaryCondition ( )
Returns
mpBoundaryCondition

Definition at line 79 of file AbstractPdeModifier.cpp.

◆ GetFeMesh()

template<unsigned DIM>
TetrahedralMesh< DIM, DIM > * AbstractPdeModifier< DIM >::GetFeMesh ( ) const
Returns
mpFeMesh.

Definition at line 141 of file AbstractPdeModifier.cpp.

◆ GetOutputGradient()

template<unsigned DIM>
bool AbstractPdeModifier< DIM >::GetOutputGradient ( ) const

Set whether to calculate and save the gradient of the solution to CellData.

Returns
mOutputGradient

Definition at line 231 of file AbstractPdeModifier.cpp.

◆ GetPde()

template<unsigned DIM>
boost::shared_ptr< AbstractLinearPde< DIM, DIM > > AbstractPdeModifier< DIM >::GetPde ( )
Returns
mpPde

Definition at line 73 of file AbstractPdeModifier.cpp.

◆ GetSolution() [1/2]

template<unsigned DIM>
Vec AbstractPdeModifier< DIM >::GetSolution ( )
Returns
mSolution.

Definition at line 129 of file AbstractPdeModifier.cpp.

◆ GetSolution() [2/2]

template<unsigned DIM>
Vec AbstractPdeModifier< DIM >::GetSolution ( ) const
Returns
mSolution (used in archiving)

Definition at line 135 of file AbstractPdeModifier.cpp.

◆ HasAveragedSourcePde()

template<unsigned DIM>
bool AbstractPdeModifier< DIM >::HasAveragedSourcePde ( )
Returns
whether the PDE has an averaged source

Definition at line 103 of file AbstractPdeModifier.cpp.

◆ IsNeumannBoundaryCondition()

template<unsigned DIM>
bool AbstractPdeModifier< DIM >::IsNeumannBoundaryCondition ( ) const
Returns
mIsNeumannBoundaryCondition

Definition at line 85 of file AbstractPdeModifier.cpp.

◆ OutputSimulationModifierParameters()

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

◆ rGetDependentVariableName()

template<unsigned DIM>
std::string & AbstractPdeModifier< DIM >::rGetDependentVariableName ( )

Get the name of the dependent variable.

Returns
the name

Definition at line 97 of file AbstractPdeModifier.cpp.

◆ serialize()

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

References AbstractPdeModifier< DIM >::mDependentVariableName, AbstractPdeModifier< DIM >::mIsNeumannBoundaryCondition, AbstractPdeModifier< DIM >::mOutputDirectory, AbstractPdeModifier< DIM >::mOutputGradient, AbstractPdeModifier< DIM >::mOutputSolutionAtPdeNodes, AbstractPdeModifier< DIM >::mpBoundaryCondition, and AbstractPdeModifier< DIM >::mpPde.

◆ SetDependentVariableName()

template<unsigned DIM>
void AbstractPdeModifier< DIM >::SetDependentVariableName ( const std::string &  rName)

Set the name of the dependent variable.

Parameters
rNamethe name.

Definition at line 91 of file AbstractPdeModifier.cpp.

◆ SetOutputGradient()

template<unsigned DIM>
void AbstractPdeModifier< DIM >::SetOutputGradient ( bool  outputGradient)

Set whether to calculate and save the gradient of the solution to CellData.

Parameters
outputGradientwhether to output the gradient

Definition at line 237 of file AbstractPdeModifier.cpp.

◆ SetOutputSolutionAtPdeNodes()

template<unsigned DIM>
void AbstractPdeModifier< DIM >::SetOutputSolutionAtPdeNodes ( bool  outputSolutionAtPdeNodes)

Set mOutputSolutionAtPdeNodes.

Parameters
outputSolutionAtPdeNodeswhether to output the PDE solution at each node of the FE mesh at output time steps

Definition at line 243 of file AbstractPdeModifier.cpp.

◆ SetupSolve()

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

Overridden SetupSolve() method.

Set mOutputDirectory and, if mOutputSolutionAtPdeNodes is set to true, open mpVizPdeSolutionResultsFile. This method is overridden in subclasses.

Parameters
rCellPopulationreference to the cell population
outputDirectorythe output directory, relative to where Chaste output is stored

Definition at line 147 of file AbstractPdeModifier.cpp.

References PetscTools::AmMaster(), OutputFileHandler::OpenOutputFile(), and AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::Update().

Referenced by ParabolicGrowingDomainPdeModifier< DIM >::SetupSolve(), AbstractBoxDomainPdeModifier< DIM >::SetupSolve(), and EllipticGrowingDomainPdeModifier< DIM >::SetupSolve().

◆ SetUpSourceTermsForAveragedSourcePde()

template<unsigned DIM>
void AbstractPdeModifier< DIM >::SetUpSourceTermsForAveragedSourcePde ( TetrahedralMesh< DIM, DIM > *  pMesh,
std::map< CellPtr, unsigned > *  pCellPdeElementMap = nullptr 
)

In the case where the PDE has an averaged source, set the source terms using the information in the given mesh.

Parameters
pMeshPointer to a tetrahedral mesh
pCellPdeElementMapmap between cells and elements

Definition at line 111 of file AbstractPdeModifier.cpp.

◆ UpdateAtEndOfOutputTimeStep()

template<unsigned DIM>
void AbstractPdeModifier< DIM >::UpdateAtEndOfOutputTimeStep ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)
override

Overridden UpdateAtEndOfOutputTimeStep() method, after UpdateAtEndOfTimeStep() has been called.

Output the solution to the PDE at each cell to VTK and, if mOutputSolutionAtPdeNodes is set to true, output the solution to the PDE at each node of mpFeMesh to mpVizPdeSolutionResultsFile.

Parameters
rCellPopulationreference to the cell population

Definition at line 166 of file AbstractPdeModifier.cpp.

References PetscTools::AmMaster(), SimulationTime::GetTime(), SimulationTime::GetTimeStepsElapsed(), and SimulationTime::Instance().

◆ UpdateAtEndOfSolve()

template<unsigned DIM>
void AbstractPdeModifier< DIM >::UpdateAtEndOfSolve ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)
override

Overridden UpdateAtEndOfSolve() method.

If mOutputSolutionAtPdeNodes is set to true, close mpVizPdeSolutionResultsFile.

Parameters
rCellPopulationreference to the cell population

Definition at line 219 of file AbstractPdeModifier.cpp.

References PetscTools::AmMaster().

◆ UpdateAtEndOfTimeStep()

template<unsigned DIM>
void AbstractPdeModifier< DIM >::UpdateAtEndOfTimeStep ( AbstractCellPopulation< DIM, DIM > &  rCellPopulation)
overridepure virtual

Overridden UpdateAtEndOfTimeStep() method.

As this method is pure virtual, it must be overridden in subclasses.

Parameters
rCellPopulationreference to the cell population

Implemented in ParabolicGrowingDomainPdeModifier< DIM >, EllipticBoxDomainPdeModifier< DIM >, EllipticGrowingDomainPdeModifier< DIM >, and ParabolicBoxDomainPdeModifier< DIM >.

Friends And Related Symbol Documentation

◆ boost::serialization::access

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

Needed for serialization.

Definition at line 59 of file AbstractPdeModifier.hpp.

Member Data Documentation

◆ mDeleteFeMesh

template<unsigned DIM>
bool AbstractPdeModifier< DIM >::mDeleteFeMesh = false
protected

Whether to delete the finite element mesh when we are destroyed.

Definition at line 131 of file AbstractPdeModifier.hpp.

Referenced by AbstractBoxDomainPdeModifier< DIM >::AbstractBoxDomainPdeModifier().

◆ mDependentVariableName

template<unsigned DIM>
std::string AbstractPdeModifier< DIM >::mDependentVariableName
protected

For use in PDEs where we know what the quantity for which we are solving is called, e.g. oxygen concentration.

Definition at line 105 of file AbstractPdeModifier.hpp.

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

◆ mIsDirichletBoundaryNode

template<unsigned DIM>
std::vector<double> AbstractPdeModifier< DIM >::mIsDirichletBoundaryNode
protected

Store the nodes that dirichlet boundary conditions on which are output with the solution.

Definition at line 136 of file AbstractPdeModifier.hpp.

Referenced by AbstractBoxDomainPdeModifier< DIM >::AbstractBoxDomainPdeModifier().

◆ mIsNeumannBoundaryCondition

template<unsigned DIM>
bool AbstractPdeModifier< DIM >::mIsNeumannBoundaryCondition
protected

Whether the boundary condition is Neumann (false corresponds to a Dirichlet boundary condition).

Todo:
Generalize to allow mixed boundary conditions

Definition at line 99 of file AbstractPdeModifier.hpp.

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

◆ mOutputDirectory

template<unsigned DIM>
std::string AbstractPdeModifier< DIM >::mOutputDirectory {}
protected

Store the output directory name.

Definition at line 114 of file AbstractPdeModifier.hpp.

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

◆ mOutputGradient

template<unsigned DIM>
bool AbstractPdeModifier< DIM >::mOutputGradient = false
protected

Whether to calculate and output the gradient of the solution.

Definition at line 117 of file AbstractPdeModifier.hpp.

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

◆ mOutputSolutionAtPdeNodes

template<unsigned DIM>
bool AbstractPdeModifier< DIM >::mOutputSolutionAtPdeNodes = false
protected

Whether to output the PDE solution at each node of the FE mesh at output time steps. Defaults to false.

Definition at line 123 of file AbstractPdeModifier.hpp.

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

◆ mpBoundaryCondition

template<unsigned DIM>
boost::shared_ptr<AbstractBoundaryCondition<DIM> > AbstractPdeModifier< DIM >::mpBoundaryCondition
protected

Shared pointer to a boundary condition object.

Definition at line 92 of file AbstractPdeModifier.hpp.

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

◆ mpFeMesh

template<unsigned DIM>
TetrahedralMesh<DIM,DIM>* AbstractPdeModifier< DIM >::mpFeMesh = nullptr
protected

Pointer to the finite element mesh on which to solve the PDE.

Definition at line 111 of file AbstractPdeModifier.hpp.

Referenced by AbstractBoxDomainPdeModifier< DIM >::AbstractBoxDomainPdeModifier().

◆ mpPde

template<unsigned DIM>
boost::shared_ptr<AbstractLinearPde<DIM,DIM> > AbstractPdeModifier< DIM >::mpPde
protected

Shared pointer to a linear PDE object.

Definition at line 87 of file AbstractPdeModifier.hpp.

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

◆ mpVizPdeSolutionResultsFile

template<unsigned DIM>
out_stream AbstractPdeModifier< DIM >::mpVizPdeSolutionResultsFile
protected

File that the values of the PDE solution are written out to.

Definition at line 126 of file AbstractPdeModifier.hpp.

◆ mSolution

template<unsigned DIM>
Vec AbstractPdeModifier< DIM >::mSolution = nullptr
protected

The solution to the PDE problem at the current time step.

Definition at line 108 of file AbstractPdeModifier.hpp.

Referenced by AbstractPdeModifier< DIM >::AbstractPdeModifier().


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