36 #include "ParabolicBoxDomainPdeModifier.hpp" 37 #include "SimpleLinearParabolicSolver.hpp" 39 template<
unsigned DIM>
42 bool isNeumannBoundaryCondition,
48 isNeumannBoundaryCondition,
55 template<
unsigned DIM>
60 template<
unsigned DIM>
79 double current_time = p_simulation_time->GetTime();
80 double dt = p_simulation_time->GetTimeStep();
81 solver.
SetTimes(current_time,current_time + dt);
82 solver.SetTimeStep(dt);
86 solver.SetInitialCondition(previous_solution);
95 template<
unsigned DIM>
107 template<
unsigned DIM>
114 EXCEPTION(
"Boundary conditions cannot yet be set on the cell population boundary for a ParabolicBoxDomainPdeModifier");
143 template<
unsigned DIM>
152 cell_iter != rCellPopulation.
End();
157 assert(fabs(initial_condition_at_cell - initial_condition)<1e-12);
164 template<
unsigned DIM>
virtual void UpdateAtEndOfOutputTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
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)
BoundaryElementIterator GetBoundaryElementIteratorBegin() const
virtual void UpdateAtEndOfTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void SetupInitialSolutionVector(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void UpdateCellPdeElementMap(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
#define EXCEPTION(message)
bool mSetBcsOnBoxBoundary
static SimulationTime * Instance()
bool IsNeumannBoundaryCondition()
std::string mDependentVariableName
virtual unsigned GetNumNodes() const
void OutputSimulationModifierParameters(out_stream &rParamsFile)
BoundaryNodeIterator GetBoundaryNodeIteratorBegin() const
virtual ~ParabolicBoxDomainPdeModifier()
void OutputSimulationModifierParameters(out_stream &rParamsFile)
void SetTimes(double tStart, double tEnd)
boost::shared_ptr< AbstractBoundaryCondition< DIM > > mpBoundaryCondition
std::map< CellPtr, unsigned > mCellPdeElementMap
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
void SetUpSourceTermsForAveragedSourcePde(TetrahedralMesh< DIM, DIM > *pMesh, std::map< CellPtr, unsigned > *pCellPdeElementMap=nullptr)
BoundaryNodeIterator GetBoundaryNodeIteratorEnd() const
virtual std::shared_ptr< BoundaryConditionsContainer< DIM, DIM, 1 > > ConstructBoundaryConditionsContainer(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void UpdateCellData(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
boost::shared_ptr< AbstractLinearPde< DIM, DIM > > GetPde()
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
BoundaryElementIterator GetBoundaryElementIteratorEnd() const
TetrahedralMesh< DIM, DIM > * mpFeMesh