CellwiseSourcePde.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef CELLWISESOURCEPDE_HPP_
00037 #define CELLWISESOURCEPDE_HPP_
00038
00039 #include "ChasteSerialization.hpp"
00040 #include <boost/serialization/base_object.hpp>
00041
00042 #include "AbstractCellPopulation.hpp"
00043 #include "AbstractLinearEllipticPde.hpp"
00044
00048 template<unsigned DIM>
00049 class CellwiseSourcePde : public AbstractLinearEllipticPde<DIM,DIM>
00050 {
00051 friend class TestCellBasedPdes;
00052
00053 private:
00054
00056 friend class boost::serialization::access;
00063 template<class Archive>
00064 void serialize(Archive & archive, const unsigned int version)
00065 {
00066 archive & boost::serialization::base_object<AbstractLinearEllipticPde<DIM, DIM> >(*this);
00067 archive & mCoefficient;
00068 }
00069
00070 protected:
00071
00073 AbstractCellPopulation<DIM, DIM>& mrCellPopulation;
00074
00076 double mCoefficient;
00077
00078 public:
00079
00086 CellwiseSourcePde(AbstractCellPopulation<DIM, DIM>& rCellPopulation, double coefficient=0.0);
00087
00091 const AbstractCellPopulation<DIM>& rGetCellPopulation() const;
00092
00096 double GetCoefficient() const;
00097
00107 virtual double ComputeConstantInUSourceTerm(const ChastePoint<DIM>& rX, Element<DIM,DIM>* pElement);
00108
00118 virtual double ComputeLinearInUCoeffInSourceTerm(const ChastePoint<DIM>& rX, Element<DIM,DIM>* pElement);
00119
00120
00128 virtual double ComputeLinearInUCoeffInSourceTermAtNode(const Node<DIM>& rNode);
00129
00137 virtual c_matrix<double,DIM,DIM> ComputeDiffusionTerm(const ChastePoint<DIM>& rX);
00138 };
00139
00140 #include "SerializationExportWrapper.hpp"
00141 EXPORT_TEMPLATE_CLASS_SAME_DIMS(CellwiseSourcePde)
00142
00143 namespace boost
00144 {
00145 namespace serialization
00146 {
00150 template<class Archive, unsigned DIM>
00151 inline void save_construct_data(
00152 Archive & ar, const CellwiseSourcePde<DIM>* t, const BOOST_PFTO unsigned int file_version)
00153 {
00154
00155 const AbstractCellPopulation<DIM, DIM>* p_cell_population = &(t->rGetCellPopulation());
00156 ar & p_cell_population;
00157 }
00158
00162 template<class Archive, unsigned DIM>
00163 inline void load_construct_data(
00164 Archive & ar, CellwiseSourcePde<DIM>* t, const unsigned int file_version)
00165 {
00166
00167 AbstractCellPopulation<DIM, DIM>* p_cell_population;
00168 ar >> p_cell_population;
00169
00170
00171 ::new(t)CellwiseSourcePde<DIM>(*p_cell_population);
00172 }
00173 }
00174 }
00175
00176 #endif