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
00030
00031
00032
00033
00034
00035
00036 #ifndef CRYPTSIMULATION1D_HPP_
00037 #define CRYPTSIMULATION1D_HPP_
00038
00039 #include "ChasteSerialization.hpp"
00040 #include <boost/serialization/base_object.hpp>
00041
00042 #include <cmath>
00043 #include <ctime>
00044 #include <iostream>
00045
00046 #include "WntConcentration.hpp"
00047 #include "CryptSimulationBoundaryCondition.hpp"
00048 #include "OffLatticeSimulation.hpp"
00049 #include "MeshBasedCellPopulation.hpp"
00050
00055 class CryptSimulation1d : public OffLatticeSimulation<1>
00056 {
00057
00058 friend class TestCryptSimulation1d;
00059
00060 private:
00061
00063 friend class boost::serialization::access;
00070 template<class Archive>
00071 void serialize(Archive & archive, const unsigned int version)
00072 {
00073 archive & boost::serialization::base_object<OffLatticeSimulation<1> >(*this);
00074
00075 SerializableSingleton<WntConcentration<1> >* p_wnt_wrapper = WntConcentration<1>::Instance()->GetSerializationWrapper();
00076 archive & p_wnt_wrapper;
00077 }
00078
00080 MeshBasedCellPopulation<1>* mpStaticCastCellPopulation;
00081
00092 c_vector<double, 1> CalculateCellDivisionVector(CellPtr pParentCell);
00093
00094 public:
00095
00104 CryptSimulation1d(AbstractCellPopulation<1>& rCellPopulation,
00105 bool deleteCellPopulationInDestructor=false,
00106 bool initialiseCells=true);
00107
00113 virtual ~CryptSimulation1d();
00114
00123 void OutputSimulationParameters(out_stream& rParamsFile);
00124 };
00125
00126
00127 #include "SerializationExportWrapper.hpp"
00128 CHASTE_CLASS_EXPORT(CryptSimulation1d)
00129
00130 namespace boost
00131 {
00132 namespace serialization
00133 {
00137 template<class Archive>
00138 inline void save_construct_data(
00139 Archive & ar, const CryptSimulation1d * t, const BOOST_PFTO unsigned int file_version)
00140 {
00141
00142 const AbstractCellPopulation<1>* p_cell_population = &(t->rGetCellPopulation());
00143 ar & p_cell_population;
00144 }
00145
00149 template<class Archive>
00150 inline void load_construct_data(
00151 Archive & ar, CryptSimulation1d * t, const unsigned int file_version)
00152 {
00153
00154 AbstractCellPopulation<1>* p_cell_population;
00155 ar & p_cell_population;
00156
00157
00158
00159 ::new(t)CryptSimulation1d(*p_cell_population, true, false);
00160 }
00161 }
00162 }
00163
00164 #endif