VolumeDependentAveragedSourcePde.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 VOLUMEDEPENDENTAVERAGEDSOURCEPDE_HPP_
00037 #define VOLUMEDEPENDENTAVERAGEDSOURCEPDE_HPP_
00038
00039 #include "ChasteSerialization.hpp"
00040 #include <boost/serialization/base_object.hpp>
00041
00042 #include "NodeBasedCellPopulation.hpp"
00043 #include "AveragedSourcePde.hpp"
00044 #include "TetrahedralMesh.hpp"
00045 #include "AbstractLinearEllipticPde.hpp"
00046
00051 template<unsigned DIM>
00052 class VolumeDependentAveragedSourcePde : public AveragedSourcePde<DIM>
00053 {
00054 friend class TestCellBasedPdes;
00055
00056 private:
00057
00059 friend class boost::serialization::access;
00066 template<class Archive>
00067 void serialize(Archive & archive, const unsigned int version)
00068 {
00069 archive & boost::serialization::base_object<AveragedSourcePde<DIM> >(*this);
00070 }
00071
00073 NodeBasedCellPopulation<DIM>* mpStaticCastCellPopulation;
00074
00075 public:
00076
00083 VolumeDependentAveragedSourcePde(AbstractCellPopulation<DIM>& rCellPopulation, double coefficient=0.0);
00084
00091 void SetupSourceTerms(TetrahedralMesh<DIM,DIM>& rCoarseMesh, std::map<CellPtr, unsigned>* pCellPdeElementMap=NULL);
00092 };
00093
00094 #include "SerializationExportWrapper.hpp"
00095 EXPORT_TEMPLATE_CLASS_SAME_DIMS(VolumeDependentAveragedSourcePde)
00096
00097 namespace boost
00098 {
00099 namespace serialization
00100 {
00104 template<class Archive, unsigned DIM>
00105 inline void save_construct_data(
00106 Archive & ar, const VolumeDependentAveragedSourcePde<DIM>* t, const BOOST_PFTO unsigned int file_version)
00107 {
00108
00109 const AbstractCellPopulation<DIM>* p_cell_population = &(t->rGetCellPopulation());
00110 ar & p_cell_population;
00111 }
00112
00116 template<class Archive, unsigned DIM>
00117 inline void load_construct_data(
00118 Archive & ar, VolumeDependentAveragedSourcePde<DIM>* t, const unsigned int file_version)
00119 {
00120
00121 AbstractCellPopulation<DIM>* p_cell_population;
00122 ar >> p_cell_population;
00123
00124
00125 ::new(t)VolumeDependentAveragedSourcePde<DIM>(*p_cell_population);
00126 }
00127 }
00128 }
00129
00130 #endif