BIE |
/home/weinberg/src/BIE/include/Chain.h00001 // This is really -*- C++ -*- 00002 00003 00004 #ifndef Chain_h 00005 #define Chain_h 00006 00007 #include <vector> 00008 00009 #include "BIEconfig.h" 00010 #include "gvariable.h" 00011 #include "BIEmpi.h" 00012 00013 #include "Serializable.h" 00014 00015 00016 using namespace std; 00017 using namespace BIE; 00018 00024 class Chain: public Serializable 00025 { 00026 private: 00027 00029 00030 size_t Buffer_size; 00031 vector<char> Buffer; 00032 vector<unsigned int> ofs; 00034 00035 void MakeMPI(); 00036 void Chain_to_Buffer(); 00037 void Buffer_to_Chain(); 00038 00039 State s, s1; 00040 00041 bool cache; 00042 string cache_name; 00043 int cache_ctr; 00044 bool auto_order; 00045 int order_index; 00046 00047 public: 00048 00050 int indx; 00051 00053 double beta; 00054 00056 double factor; 00057 00059 double weight; 00060 00062 00063 00064 double like_value; 00066 double prior_value; 00068 double value; 00070 00072 00073 00074 double like_value1; 00076 double prior_value1; 00078 double value1; 00080 00082 00083 00084 int Mcur, Mcur1, M, Ndim; 00086 int owner; 00087 00093 vector<int> born, died; 00094 00096 vector<int> stat; 00097 00099 vector<double> wght, wght1, wghtT; 00100 00102 vector< vector<double> > phi, phi1, phiT; 00104 00106 00107 00108 Chain(); 00110 Chain(int M, int Ndim); 00112 Chain(int M, int Ndim, bool ordering, int iorder); 00114 Chain(const Chain &); 00116 Chain& operator=(const Chain&); 00118 00120 ~Chain(); 00121 00123 00124 00125 void AssignState0(const Chain& ch); 00127 void AssignState0(const State& s); 00129 00131 00132 00133 void AssignState1(const Chain& ch); 00135 void AssignState1(const State& s); 00137 00139 void AcceptState(); 00140 00142 State& GetState0(); 00143 00145 State& GetState1(); 00146 00148 void BroadcastChain(); 00149 00151 void SendChain(int rank); 00152 00154 void RecvChain(int rank); 00155 00157 void OrderOn(int rank) { auto_order = true; order_index = rank; } 00158 00160 void Order1(); 00161 00163 void Order0(); 00164 00166 void Order1(int rank); 00167 00169 void Order0(int rank); 00170 00172 00173 00174 void PrintStats(ostream&); 00176 void PrintStats() { PrintStats(cout); } 00178 void PrintState(ostream&); 00180 void PrintState() { PrintState(cout); } 00182 void PrintState1(ostream&); 00184 void PrintState1() { PrintState1(cout); } 00186 00188 void Logging(const string& str); 00189 00191 void WriteLog(); 00192 00193 private: 00194 00195 // Remake MPI variables on reinstantiation. 00196 // They contain no state information. 00197 template<class Archive> 00198 void post_load(Archive &ar, const unsigned int file_version) 00199 { 00200 MakeMPI(); 00201 } 00202 00203 // AUTO GENERATED BY ../persistence/autopersist.py 00204 private: 00205 friend class boost::serialization::access; 00206 BOOST_SERIALIZATION_SPLIT_MEMBER(); 00207 00208 template<class Archive> 00209 void save(Archive & ar, const unsigned int version) const { 00210 this->pre_save(ar, version); 00211 try { 00212 ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00213 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00214 } 00215 try { 00216 ar << BOOST_SERIALIZATION_NVP(s); 00217 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00218 } 00219 try { 00220 ar << BOOST_SERIALIZATION_NVP(s1); 00221 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00222 } 00223 try { 00224 ar << BOOST_SERIALIZATION_NVP(cache); 00225 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00226 } 00227 try { 00228 ar << BOOST_SERIALIZATION_NVP(cache_name); 00229 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00230 } 00231 try { 00232 ar << BOOST_SERIALIZATION_NVP(cache_ctr); 00233 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00234 } 00235 try { 00236 ar << BOOST_SERIALIZATION_NVP(auto_order); 00237 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00238 } 00239 try { 00240 ar << BOOST_SERIALIZATION_NVP(order_index); 00241 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00242 } 00243 try { 00244 ar << BOOST_SERIALIZATION_NVP(indx); 00245 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00246 } 00247 try { 00248 ar << BOOST_SERIALIZATION_NVP(beta); 00249 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00250 } 00251 try { 00252 ar << BOOST_SERIALIZATION_NVP(factor); 00253 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00254 } 00255 try { 00256 ar << BOOST_SERIALIZATION_NVP(weight); 00257 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00258 } 00259 try { 00260 ar << BOOST_SERIALIZATION_NVP(like_value); 00261 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00262 } 00263 try { 00264 ar << BOOST_SERIALIZATION_NVP(prior_value); 00265 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00266 } 00267 try { 00268 ar << BOOST_SERIALIZATION_NVP(value); 00269 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00270 } 00271 try { 00272 ar << BOOST_SERIALIZATION_NVP(like_value1); 00273 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00274 } 00275 try { 00276 ar << BOOST_SERIALIZATION_NVP(prior_value1); 00277 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00278 } 00279 try { 00280 ar << BOOST_SERIALIZATION_NVP(value1); 00281 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00282 } 00283 try { 00284 ar << BOOST_SERIALIZATION_NVP(Mcur); 00285 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00286 } 00287 try { 00288 ar << BOOST_SERIALIZATION_NVP(Mcur1); 00289 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00290 } 00291 try { 00292 ar << BOOST_SERIALIZATION_NVP(M); 00293 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00294 } 00295 try { 00296 ar << BOOST_SERIALIZATION_NVP(Ndim); 00297 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00298 } 00299 try { 00300 ar << BOOST_SERIALIZATION_NVP(owner); 00301 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00302 } 00303 try { 00304 ar << BOOST_SERIALIZATION_NVP(born); 00305 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00306 } 00307 try { 00308 ar << BOOST_SERIALIZATION_NVP(died); 00309 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00310 } 00311 try { 00312 ar << BOOST_SERIALIZATION_NVP(stat); 00313 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00314 } 00315 try { 00316 ar << BOOST_SERIALIZATION_NVP(wght); 00317 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00318 } 00319 try { 00320 ar << BOOST_SERIALIZATION_NVP(wght1); 00321 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00322 } 00323 try { 00324 ar << BOOST_SERIALIZATION_NVP(wghtT); 00325 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00326 } 00327 try { 00328 ar << BOOST_SERIALIZATION_NVP(phi); 00329 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00330 } 00331 try { 00332 ar << BOOST_SERIALIZATION_NVP(phi1); 00333 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00334 } 00335 try { 00336 ar << BOOST_SERIALIZATION_NVP(phiT); 00337 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00338 } 00339 this->post_save(ar, version); 00340 } 00341 00342 template<class Archive> 00343 void load(Archive & ar, const unsigned int version) { 00344 this->pre_load(ar, version); 00345 try { 00346 ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00347 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00348 } 00349 try { 00350 ar >> BOOST_SERIALIZATION_NVP(s); 00351 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00352 } 00353 try { 00354 ar >> BOOST_SERIALIZATION_NVP(s1); 00355 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00356 } 00357 try { 00358 ar >> BOOST_SERIALIZATION_NVP(cache); 00359 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00360 } 00361 try { 00362 ar >> BOOST_SERIALIZATION_NVP(cache_name); 00363 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00364 } 00365 try { 00366 ar >> BOOST_SERIALIZATION_NVP(cache_ctr); 00367 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00368 } 00369 try { 00370 ar >> BOOST_SERIALIZATION_NVP(auto_order); 00371 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00372 } 00373 try { 00374 ar >> BOOST_SERIALIZATION_NVP(order_index); 00375 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00376 } 00377 try { 00378 ar >> BOOST_SERIALIZATION_NVP(indx); 00379 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00380 } 00381 try { 00382 ar >> BOOST_SERIALIZATION_NVP(beta); 00383 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00384 } 00385 try { 00386 ar >> BOOST_SERIALIZATION_NVP(factor); 00387 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00388 } 00389 try { 00390 ar >> BOOST_SERIALIZATION_NVP(weight); 00391 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00392 } 00393 try { 00394 ar >> BOOST_SERIALIZATION_NVP(like_value); 00395 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00396 } 00397 try { 00398 ar >> BOOST_SERIALIZATION_NVP(prior_value); 00399 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00400 } 00401 try { 00402 ar >> BOOST_SERIALIZATION_NVP(value); 00403 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00404 } 00405 try { 00406 ar >> BOOST_SERIALIZATION_NVP(like_value1); 00407 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00408 } 00409 try { 00410 ar >> BOOST_SERIALIZATION_NVP(prior_value1); 00411 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00412 } 00413 try { 00414 ar >> BOOST_SERIALIZATION_NVP(value1); 00415 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00416 } 00417 try { 00418 ar >> BOOST_SERIALIZATION_NVP(Mcur); 00419 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00420 } 00421 try { 00422 ar >> BOOST_SERIALIZATION_NVP(Mcur1); 00423 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00424 } 00425 try { 00426 ar >> BOOST_SERIALIZATION_NVP(M); 00427 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00428 } 00429 try { 00430 ar >> BOOST_SERIALIZATION_NVP(Ndim); 00431 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00432 } 00433 try { 00434 ar >> BOOST_SERIALIZATION_NVP(owner); 00435 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00436 } 00437 try { 00438 ar >> BOOST_SERIALIZATION_NVP(born); 00439 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00440 } 00441 try { 00442 ar >> BOOST_SERIALIZATION_NVP(died); 00443 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00444 } 00445 try { 00446 ar >> BOOST_SERIALIZATION_NVP(stat); 00447 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00448 } 00449 try { 00450 ar >> BOOST_SERIALIZATION_NVP(wght); 00451 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00452 } 00453 try { 00454 ar >> BOOST_SERIALIZATION_NVP(wght1); 00455 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00456 } 00457 try { 00458 ar >> BOOST_SERIALIZATION_NVP(wghtT); 00459 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00460 } 00461 try { 00462 ar >> BOOST_SERIALIZATION_NVP(phi); 00463 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00464 } 00465 try { 00466 ar >> BOOST_SERIALIZATION_NVP(phi1); 00467 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00468 } 00469 try { 00470 ar >> BOOST_SERIALIZATION_NVP(phiT); 00471 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00472 } 00473 this->post_load(ar, version); 00474 } 00475 00476 }; 00477 00478 BIE_CLASS_TYPE_INFO(Chain) 00479 BIE_CLASS_EXPORT_KEY(Chain) 00480 #endif 00481 Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:10 2010 by
|