36 #include "EllipticBoxDomainPdeModifier.hpp" 37 #include "SimpleLinearEllipticSolver.hpp" 39 template<
unsigned DIM>
42 bool isNeumannBoundaryCondition,
48 isNeumannBoundaryCondition,
55 template<
unsigned DIM>
60 template<
unsigned DIM>
81 if (old_solution_copy !=
nullptr)
89 template<
unsigned DIM>
99 template<
unsigned DIM>
111 std::set<unsigned> coarse_element_indices_in_map;
113 cell_iter != rCellPopulation.
End();
120 std::set<unsigned> coarse_mesh_boundary_node_indices;
123 if (coarse_element_indices_in_map.find(i) == coarse_element_indices_in_map.end())
126 for (
unsigned j=0; j<DIM+1; j++)
129 coarse_mesh_boundary_node_indices.insert(node_index);
135 for (std::set<unsigned>::iterator iter = coarse_mesh_boundary_node_indices.begin();
136 iter != coarse_mesh_boundary_node_indices.end();
155 template<
unsigned DIM>
virtual void UpdateAtEndOfOutputTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
unsigned GetNodeGlobalIndex(unsigned localIndex) const
void UpdateCellPdeElementMap(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
Node< SPACE_DIM > * GetNode(unsigned index) const
virtual unsigned GetNumElements() const
bool mSetBcsOnBoxBoundary
bool IsNeumannBoundaryCondition()
Element< ELEMENT_DIM, SPACE_DIM > * GetElement(unsigned index) const
virtual ~EllipticBoxDomainPdeModifier()
BoundaryNodeIterator GetBoundaryNodeIteratorBegin() const
void OutputSimulationModifierParameters(out_stream &rParamsFile)
boost::shared_ptr< AbstractBoundaryCondition< DIM > > mpBoundaryCondition
std::map< CellPtr, unsigned > mCellPdeElementMap
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
virtual void UpdateAtEndOfTimeStep(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
void OutputSimulationModifierParameters(out_stream &rParamsFile)
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)
void SetUpSourceTermsForAveragedSourcePde(TetrahedralMesh< DIM, DIM > *pMesh, std::map< CellPtr, unsigned > *pCellPdeElementMap=nullptr)
virtual std::shared_ptr< BoundaryConditionsContainer< DIM, DIM, 1 > > ConstructBoundaryConditionsContainer(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
BoundaryNodeIterator GetBoundaryNodeIteratorEnd() const
void UpdateCellData(AbstractCellPopulation< DIM, DIM > &rCellPopulation)
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
boost::shared_ptr< AbstractLinearPde< DIM, DIM > > GetPde()
virtual void SetupSolve(AbstractCellPopulation< DIM, DIM > &rCellPopulation, std::string outputDirectory)
TetrahedralMesh< DIM, DIM > * mpFeMesh