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 #ifndef VOLUMEDEPENDENTAVERAGEDSOURCEPDE_HPP_
00030 #define VOLUMEDEPENDENTAVERAGEDSOURCEPDE_HPP_
00031
00032 #include "ChasteSerialization.hpp"
00033 #include <boost/serialization/base_object.hpp>
00034
00035 #include "NodeBasedCellPopulation.hpp"
00036 #include "AveragedSourcePde.hpp"
00037 #include "TetrahedralMesh.hpp"
00038 #include "AbstractLinearEllipticPde.hpp"
00039
00044 template<unsigned DIM>
00045 class VolumeDependentAveragedSourcePde : public AveragedSourcePde<DIM>
00046 {
00047 friend class TestCellBasedPdes;
00048
00049 private:
00050
00052 friend class boost::serialization::access;
00059 template<class Archive>
00060 void serialize(Archive & archive, const unsigned int version)
00061 {
00062 archive & boost::serialization::base_object<AveragedSourcePde<DIM> >(*this);
00063 }
00064
00066 NodeBasedCellPopulation<DIM>* mpStaticCastCellPopulation;
00067
00068 public:
00069
00076 VolumeDependentAveragedSourcePde(AbstractCellPopulation<DIM>& rCellPopulation, double coefficient=0.0);
00077
00084 void SetupSourceTerms(TetrahedralMesh<DIM,DIM>& rCoarseMesh, std::map<CellPtr, unsigned>* pCellPdeElementMap=NULL);
00085 };
00086
00087 #include "SerializationExportWrapper.hpp"
00088 EXPORT_TEMPLATE_CLASS_SAME_DIMS(VolumeDependentAveragedSourcePde)
00089
00090 namespace boost
00091 {
00092 namespace serialization
00093 {
00097 template<class Archive, unsigned DIM>
00098 inline void save_construct_data(
00099 Archive & ar, const VolumeDependentAveragedSourcePde<DIM>* t, const BOOST_PFTO unsigned int file_version)
00100 {
00101
00102 const AbstractCellPopulation<DIM>* p_cell_population = &(t->rGetCellPopulation());
00103 ar & p_cell_population;
00104 }
00105
00109 template<class Archive, unsigned DIM>
00110 inline void load_construct_data(
00111 Archive & ar, VolumeDependentAveragedSourcePde<DIM>* t, const unsigned int file_version)
00112 {
00113
00114 AbstractCellPopulation<DIM>* p_cell_population;
00115 ar >> p_cell_population;
00116
00117
00118 ::new(t)VolumeDependentAveragedSourcePde<DIM>(*p_cell_population);
00119 }
00120 }
00121 }
00122
00123 #endif