36 #include "ParabolicGrowingDomainPdeModifier.hpp" 37 #include "CellBasedParabolicPdeSolver.hpp" 38 #include "AveragedSourceParabolicPde.hpp" 40 template<
unsigned DIM>
43 bool isNeumannBoundaryCondition,
47 isNeumannBoundaryCondition,
52 template<
unsigned DIM>
57 template<
unsigned DIM>
75 double current_time = p_simulation_time->GetTime();
76 double dt = p_simulation_time->GetTimeStep();
77 solver.
SetTimes(current_time,current_time + dt);
78 solver.SetTimeStep(dt);
82 solver.SetInitialCondition(previous_solution);
91 template<
unsigned DIM>
98 EXCEPTION(
"ParabolicGrowingDomainPdeModifier cannot be used with an AveragedSourceParabolicPde. Use a ParabolicBoxDomainPdeModifier instead.");
111 template<
unsigned DIM>
140 template<
unsigned DIM>
161 unsigned node_index = node_iter->GetIndex();
165 double solution_at_node = rCellPopulation.
GetCellDataItemAtPdeNode(node_index, variable_name, dirichlet_bc_applies, boundary_value);
172 template<
unsigned DIM>
virtual void UpdateAtEndOfOutputTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void OutputSimulationModifierParameters(out_stream &rParamsFile)
BoundaryElementIterator GetBoundaryElementIteratorBegin() const
void UpdateSolutionVector(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void UpdateCellData(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
#define EXCEPTION(message)
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
static SimulationTime * Instance()
bool IsNeumannBoundaryCondition()
virtual void UpdateAtEndOfTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
std::string mDependentVariableName
ParabolicGrowingDomainPdeModifier(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, Vec solution=nullptr)
virtual std::shared_ptr< BoundaryConditionsContainer< DIM, DIM, 1 > > ConstructBoundaryConditionsContainer()
NodeIterator GetNodeIteratorEnd()
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
virtual unsigned GetNumNodes() const
BoundaryNodeIterator GetBoundaryNodeIteratorBegin() const
void OutputSimulationModifierParameters(out_stream &rParamsFile)
void SetTimes(double tStart, double tEnd)
boost::shared_ptr< AbstractBoundaryCondition< DIM > > mpBoundaryCondition
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
virtual double GetCellDataItemAtPdeNode(unsigned pdeNodeIndex, std::string &rVariableName, bool dirichletBoundaryConditionApplies=false, double dirichletBoundaryValue=0.0)=0
boost::shared_ptr< AbstractBoundaryCondition< DIM > > GetBoundaryCondition()
NodeIterator GetNodeIteratorBegin(bool skipDeletedNodes=true)
void GenerateFeMesh(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
BoundaryNodeIterator GetBoundaryNodeIteratorEnd() const
virtual ~ParabolicGrowingDomainPdeModifier()
BoundaryElementIterator GetBoundaryElementIteratorEnd() const
boost::shared_ptr< AbstractLinearPde< DIM, DIM > > mpPde
TetrahedralMesh< DIM, DIM > * mpFeMesh