36 #ifndef ABSTRACTDISCRETECONTINUUMSOLVER_HPP_ 37 #define ABSTRACTDISCRETECONTINUUMSOLVER_HPP_ 41 #include "OutputFileHandler.hpp" 42 #include "VesselNetwork.hpp" 43 #include "AbstractCellPopulation.hpp" 44 #include "AbstractDiscreteContinuumLinearEllipticPde.hpp" 45 #include "AbstractDiscreteContinuumNonLinearEllipticPde.hpp" 46 #include "DiscreteContinuumBoundaryCondition.hpp" 47 #include "RegularGrid.hpp" 48 #include "DiscreteContinuumMesh.hpp" 49 #include "UnitCollection.hpp" 58 template<
unsigned DIM>
112 boost::shared_ptr<AbstractDiscreteContinuumLinearEllipticPde<DIM, DIM> >
mpPde;
117 boost::shared_ptr<AbstractDiscreteContinuumNonLinearEllipticPde<DIM, DIM> >
mpNonLinearPde;
212 boost::shared_ptr<AbstractDiscreteContinuumNonLinearEllipticPde<DIM, DIM> >
GetNonLinearPde();
218 boost::shared_ptr<AbstractDiscreteContinuumLinearEllipticPde<DIM, DIM> >
GetPde();
272 units::quantity<unit::length> cellPopulationReferenceLength,
273 units::quantity<unit::concentration> cellPopulationReferenceConcentration);
279 void SetFileHandler(boost::shared_ptr<OutputFileHandler> pOutputFileHandler);
291 void SetLabel(
const std::string& rLabel);
308 virtual void Setup() = 0;
331 virtual void Solve() = 0;
336 virtual void Update() = 0;
353 virtual void UpdateSolution(
const std::vector<units::quantity<unit::concentration> >& rData);
358 virtual void Write() = 0;
virtual void UpdateCellData()=0
virtual std::vector< units::quantity< unit::concentration > > GetConcentrations()
void SetCellPopulation(AbstractCellPopulation< DIM > &rCellPopulation, units::quantity< unit::length > cellPopulationReferenceLength, units::quantity< unit::concentration > cellPopulationReferenceConcentration)
virtual void UpdateSolution(const std::vector< double > &rData)
void SetNonLinearPde(boost::shared_ptr< AbstractDiscreteContinuumNonLinearEllipticPde< DIM, DIM > > pPde)
void SetPde(boost::shared_ptr< AbstractDiscreteContinuumLinearEllipticPde< DIM, DIM > > pPde)
boost::shared_ptr< AbstractDiscreteContinuumLinearEllipticPde< DIM, DIM > > mpPde
bool mHasUnstructuredGrid
void SetReferenceConcentration(units::quantity< unit::concentration > referenceConcentration)
void SetWriteSolution(bool write=true)
void SetLabel(const std::string &rLabel)
boost::shared_ptr< OutputFileHandler > mpOutputFileHandler
void SetFileHandler(boost::shared_ptr< OutputFileHandler > pOutputFileHandler)
AbstractCellPopulation< DIM > * mpCellPopulation
std::vector< units::quantity< unit::concentration > > mConcentrations
virtual std::vector< double > GetSolution()
boost::shared_ptr< AbstractDiscreteContinuumLinearEllipticPde< DIM, DIM > > GetPde()
AbstractDiscreteContinuumSolver()
void AddBoundaryCondition(boost::shared_ptr< DiscreteContinuumBoundaryCondition< DIM > > pBoundaryCondition)
void SetVesselNetwork(boost::shared_ptr< VesselNetwork< DIM > > pNetwork)
bool HasUnstructuredGrid()
const std::string & GetLabel()
std::vector< boost::shared_ptr< DiscreteContinuumBoundaryCondition< DIM > > > mBoundaryConditions
boost::shared_ptr< AbstractDiscreteContinuumNonLinearEllipticPde< DIM, DIM > > GetNonLinearPde()
boost::shared_ptr< AbstractDiscreteContinuumNonLinearEllipticPde< DIM, DIM > > mpNonLinearPde
boost::shared_ptr< VesselNetwork< DIM > > mpNetwork
bool CellPopulationIsSet()
units::quantity< unit::concentration > mReferenceConcentration
std::vector< double > mSolution
units::quantity< unit::concentration > mCellPopulationReferenceConcentration
units::quantity< unit::concentration > GetReferenceConcentration()
units::quantity< unit::length > mCellPopulationReferenceLength
virtual ~AbstractDiscreteContinuumSolver()
void SetFileName(const std::string &rFilename)