60 this->GenerateFeMesh(rCellPopulation);
66 VecGetSize(this->mSolution, &previous_solution_size);
70 bool is_previous_solution_size_correct = (previous_solution_size == (int)this->mpFeMesh->GetNumNodes());
74 if (is_previous_solution_size_correct)
77 VecDuplicate(this->mSolution, &initial_guess);
78 VecCopy(this->mSolution, initial_guess);
83 std::shared_ptr<BoundaryConditionsContainer<DIM,DIM,1> > p_bcc = this->ConstructBoundaryConditionsContainer();
91 if (is_previous_solution_size_correct)
93 this->mSolution = solver.
Solve(initial_guess);
99 Vec old_solution_copy = this->mSolution;
101 this->mSolution = solver.
Solve();
104 if (old_solution_copy !=
nullptr)
110 this->UpdateCellData(rCellPopulation);
134 assert(!(this->IsNeumannBoundaryCondition()));
136 node_iter != this->mpFeMesh->GetBoundaryNodeIteratorEnd();
139 p_bcc->AddDirichletBoundaryCondition(*node_iter, this->mpBoundaryCondition.get());
void OutputSimulationModifierParameters(out_stream &rParamsFile)
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
virtual void UpdateAtEndOfTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void OutputSimulationModifierParameters(out_stream &rParamsFile)
virtual ~EllipticGrowingDomainPdeModifier()
EllipticGrowingDomainPdeModifier(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()