CryptSimulation1d.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 CRYPTSIMULATION1D_HPP_
00030 #define CRYPTSIMULATION1D_HPP_
00031
00032 #include "ChasteSerialization.hpp"
00033 #include <boost/serialization/base_object.hpp>
00034
00035 #include <cmath>
00036 #include <ctime>
00037 #include <iostream>
00038
00039 #include "WntConcentration.hpp"
00040 #include "CryptSimulationBoundaryCondition.hpp"
00041 #include "OffLatticeSimulation.hpp"
00042 #include "MeshBasedCellPopulation.hpp"
00043
00048 class CryptSimulation1d : public OffLatticeSimulation<1>
00049 {
00050
00051 friend class TestCryptSimulation1d;
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<OffLatticeSimulation<1> >(*this);
00067
00068 SerializableSingleton<WntConcentration<1> >* p_wnt_wrapper = WntConcentration<1>::Instance()->GetSerializationWrapper();
00069 archive & p_wnt_wrapper;
00070 }
00071
00073 MeshBasedCellPopulation<1>* mpStaticCastCellPopulation;
00074
00085 c_vector<double, 1> CalculateCellDivisionVector(CellPtr pParentCell);
00086
00087 public:
00088
00097 CryptSimulation1d(AbstractCellPopulation<1>& rCellPopulation,
00098 bool deleteCellPopulationInDestructor=false,
00099 bool initialiseCells=true);
00100
00106 virtual ~CryptSimulation1d();
00107
00116 void OutputSimulationParameters(out_stream& rParamsFile);
00117 };
00118
00119
00120 #include "SerializationExportWrapper.hpp"
00121 CHASTE_CLASS_EXPORT(CryptSimulation1d)
00122
00123 namespace boost
00124 {
00125 namespace serialization
00126 {
00130 template<class Archive>
00131 inline void save_construct_data(
00132 Archive & ar, const CryptSimulation1d * t, const BOOST_PFTO unsigned int file_version)
00133 {
00134
00135 const AbstractCellPopulation<1>* p_cell_population = &(t->rGetCellPopulation());
00136 ar & p_cell_population;
00137 }
00138
00142 template<class Archive>
00143 inline void load_construct_data(
00144 Archive & ar, CryptSimulation1d * t, const unsigned int file_version)
00145 {
00146
00147 AbstractCellPopulation<1>* p_cell_population;
00148 ar & p_cell_population;
00149
00150
00151
00152 ::new(t)CryptSimulation1d(*p_cell_population, true, false);
00153 }
00154 }
00155 }
00156
00157 #endif