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 #ifndef CRYPTSIMULATION1D_HPP_
00029 #define CRYPTSIMULATION1D_HPP_
00030
00031 #include "ChasteSerialization.hpp"
00032 #include <boost/serialization/base_object.hpp>
00033
00034 #include <cmath>
00035 #include <ctime>
00036 #include <iostream>
00037
00038 #include "TissueSimulation.hpp"
00039 #include "MeshBasedTissue.hpp"
00040
00045 class CryptSimulation1d : public TissueSimulation<1>
00046 {
00047
00048 friend class TestCryptSimulation1d;
00049
00050 private:
00051
00053 friend class boost::serialization::access;
00060 template<class Archive>
00061 void serialize(Archive & archive, const unsigned int version)
00062 {
00063
00064
00065 archive & boost::serialization::base_object<TissueSimulation<1> >(*this);
00066 }
00067
00069 MeshBasedTissue<1>* mpStaticCastTissue;
00070
00081 c_vector<double, 1> CalculateCellDivisionVector(TissueCell& rParentCell);
00082
00083 public:
00084
00093 CryptSimulation1d(AbstractTissue<1>& rTissue,
00094 std::vector<AbstractForce<1>*> forceCollection,
00095 bool deleteTissueAndForceCollection=false,
00096 bool initialiseCells=true);
00097
00107 void ApplyTissueBoundaryConditions(const std::vector<c_vector<double,1> >& rOldLocations);
00108 };
00109
00110
00111
00112 #include "SerializationExportWrapper.hpp"
00113 CHASTE_CLASS_EXPORT(CryptSimulation1d)
00114
00115 namespace boost
00116 {
00117 namespace serialization
00118 {
00122 template<class Archive>
00123 inline void save_construct_data(
00124 Archive & ar, const CryptSimulation1d * t, const BOOST_PFTO unsigned int file_version)
00125 {
00126
00127 const AbstractTissue<1>* p_tissue = &(t->rGetTissue());
00128 ar & p_tissue;
00129 const std::vector<AbstractForce<1>*> force_collection = t->rGetForceCollection();
00130 ar & force_collection;
00131 }
00132
00136 template<class Archive>
00137 inline void load_construct_data(
00138 Archive & ar, CryptSimulation1d * t, const unsigned int file_version)
00139 {
00140
00141 AbstractTissue<1>* p_tissue;
00142 ar >> p_tissue;
00143 std::vector<AbstractForce<1>*> force_collection;
00144 ar >> force_collection;
00145
00146
00147 ::new(t)CryptSimulation1d(*p_tissue, force_collection, true, false);
00148 }
00149 }
00150 }
00151
00152 #endif