BIE |
/home/weinberg/src/BIE/PopModel/modelCMD.h00001 // This is really -*- C++ -*- 00002 00003 #include <time.h> 00004 00005 #include <cstdlib> 00006 #include <cmath> 00007 #include <iostream> 00008 00009 #ifndef modelCMD_h 00010 #define modelCMD_h 00011 00012 using namespace std; 00013 00014 #include "gvariable.h" 00015 #include <Normal.h> 00016 #include <Uniform.h> 00017 00018 #include "Serializable.h" 00019 00020 00021 00022 namespace BIE { 00023 00024 class star: public Serializable 00025 { 00026 public: 00027 float h, j, k; 00028 00029 star() {} 00030 00031 // AUTO GENERATED BY ../persistence/autopersist.py 00032 private: 00033 friend class boost::serialization::access; 00034 template<class Archive> 00035 void serialize(Archive & ar, const unsigned int version) { 00036 this->pre_serialize(ar, version); 00037 try { 00038 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00039 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00040 } 00041 try { 00042 ar & BOOST_SERIALIZATION_NVP(h); 00043 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00044 } 00045 try { 00046 ar & BOOST_SERIALIZATION_NVP(j); 00047 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00048 } 00049 try { 00050 ar & BOOST_SERIALIZATION_NVP(k); 00051 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00052 } 00053 this->post_serialize(ar, version); 00054 } 00055 00056 }; 00057 00058 00059 class CMD2: public Serializable 00060 { 00061 typedef vector<int> ivector; 00062 typedef vector<float> fvector; 00063 typedef vector<fvector> ffvector; 00064 00065 private: 00066 int Nbins, iSFR; 00067 fvector SFR, t_init, t_final, metal; 00068 00069 Normal *normal; 00070 Uniform *unit; 00071 00072 //bool bar, disk, normalize; 00073 00074 int ntotal, nages, initialized, imetal; 00075 int imetal1, imetal2; 00076 ivector number_ages; 00077 ffvector log_age, age, M_ini, M_act; 00078 ffvector log_L, log_Te, log_G; 00079 ffvector Mbol, Mu, Mb, Mv, Mr, Mi, Mj; 00080 ffvector Mh, Mk, CO, McTPAGB; 00081 fvector isoc_Z; 00082 ivector isoc_sizes; 00083 fvector list_ages, list_ages_log; 00084 float random_age, logage; 00085 00086 fvector sfrh_time, sfrh_bar, sfrh_disk; 00087 fvector amr_time, amr_bar_box, amr_bar_infall_04; 00088 fvector amr_bar_infall_06, amr_bar_infall_max; 00089 fvector amr_bar_outfall_05, amr_bar_outfall_10; 00090 fvector amr_bar_inout_04, amr_bar_inout_05; 00091 fvector amr_bar_inout_06, amr_disk_box_014; 00092 fvector amr_disk_box_008; 00093 fvector amr_disk_infall_03, amr_disk_infall_05; 00094 fvector amr_disk_infall_08; 00095 fvector amr_disk_infall_max, amr_disk_outfall_06; 00096 fvector amr_disk_outfall_13, amr_disk_outfall_20; 00097 fvector amr_disk_outfall_25, amr_disk_inout_01; 00098 fvector amr_disk_inout_005, amr_disk_inout_02; 00099 00100 float rm1, rm2, rm3, rm4, deltat; 00101 int t1, t2; 00102 int iage_t1_Z1, iage_t2_Z1; 00103 int iage_t1_Z2, iage_t2_Z2; 00104 float matched_age_t1, matched_age_t2; 00105 fvector Mh_t1_Z1, Mj_t1_Z1, Mk_t1_Z1; 00106 fvector log_age_t1_Z1, M_ini_t1_Z1, M_act_t1_Z1; 00107 fvector Mh_t1_Z2, Mj_t1_Z2, Mk_t1_Z2; 00108 fvector log_age_t1_Z2, M_ini_t1_Z2, M_act_t1_Z2; 00109 fvector Mh_t2_Z1, Mj_t2_Z1, Mk_t2_Z1; 00110 fvector log_age_t2_Z1, M_ini_t2_Z1, M_act_t2_Z1; 00111 fvector Mh_t2_Z2, Mj_t2_Z2, Mk_t2_Z2; 00112 fvector log_age_t2_Z2, M_ini_t2_Z2, M_act_t2_Z2; 00113 ffvector mass_A, mass_B, mass_C, mass_D; 00114 float massmax, minmass; 00115 float minmass_t1_Z1, minmass_t2_Z1; 00116 float minmass_t1_Z2, minmass_t2_Z2; 00117 float maxmass_t1_Z1, maxmass_t2_Z1; 00118 float maxmass_t1_Z2, maxmass_t2_Z2; 00119 float Z; 00120 float threshold; 00121 00122 public: 00126 // CMD2() {}; 00127 CMD2(); 00128 CMD2(int); 00129 CMD2(int, bool, bool); 00130 CMD2(int, int); 00131 CMD2(int, int, int); 00132 00136 ~CMD2(); 00137 00144 int init_SFR(int); 00151 int init_isoc(); 00157 int sample_from_SFR_history(); 00162 int find_mass_range(); 00167 float get_gaussian_rn(float); 00172 float get_random_time(int, float); 00180 float get_random_gauss(float, float); 00184 float get_result_disk_jk(int, int); 00185 //float get_result_disk_jkk(int, int); 00186 float get_result_disk_jk(float, float, float, float); 00187 //float get_result_disk_jkk(float, float, float, float); 00188 float get_result_bar_jk(int, int); 00189 //float get_result_bar_jkk(int, int); 00190 float get_result_bar_jk(float, float, float, float); 00191 //float get_result_bar_jkk(float, float, float, float); 00197 int set_random_time(int, void **); 00203 float get_random_age(); 00209 int get_IMF_flag(float mass); 00210 //int run_model(int, void **); 00211 void run_model(); 00217 void CMD2_init(int, int, int); 00221 void setbar(); 00225 void setdisk(); 00229 void setnbinsk(int); 00233 void setnbinsj(int); 00237 void setnbinsjk(int); 00241 void setnbins(int, int, int); 00245 void setjrange(float, float); 00246 void setkrange(float, float); 00250 void setjkrange(float, float); 00254 void setranges(float, float, float, float, float, float); 00258 void dontnormalize(); 00262 void donormalize(); 00267 void setthreshold(float); 00268 // 00269 float get_jmin(); 00270 float get_jmax(); 00271 float get_kmin(); 00272 float get_kmax(); 00273 /* 00274 int istar; 00275 int idebug, ierror, ifixed; 00276 int ibuffer; 00277 //int iprocessed; 00278 fvector jkm, jhm, hm, jm, km, dhm, djm, dkm, met, mact, agem, minim; 00279 fvector hm_disk, jm_disk, km_disk, hm_bar, jm_bar, km_bar; 00280 */ 00281 vector<float> kvsjk_bar, kvsj_bar, kvsjk_disk, kvsj_disk; 00282 vector<int> ikvsjk_bar, ikvsj_bar, ikvsjk_disk, ikvsj_disk; 00283 float kmin, kmax, jmin, jmax, jkmin, jkmax; 00284 int nbins_k, nbins_j, nbins_jk; 00285 00286 //struct star { 00287 // float h; 00288 // float j; 00289 // float k; 00290 //}; 00291 vector<star> dstar; 00292 vector<star> dstar_f; 00293 vector<int> dstar_i; 00294 vector<star> bstar; 00295 vector<star> bstar_f; 00296 vector<int> bstar_i; 00297 00298 struct sortbyk { 00299 bool operator () (const star & lhs , const star & rhs) const { 00300 return lhs.k < rhs.k; 00301 } 00302 }; 00303 00304 // AUTO GENERATED BY ../persistence/autopersist.py 00305 private: 00306 friend class boost::serialization::access; 00307 template<class Archive> 00308 void serialize(Archive & ar, const unsigned int version) { 00309 this->pre_serialize(ar, version); 00310 try { 00311 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00312 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00313 } 00314 try { 00315 ar & BOOST_SERIALIZATION_NVP(kvsjk_bar); 00316 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00317 } 00318 try { 00319 ar & BOOST_SERIALIZATION_NVP(kvsj_bar); 00320 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00321 } 00322 try { 00323 ar & BOOST_SERIALIZATION_NVP(kvsjk_disk); 00324 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00325 } 00326 try { 00327 ar & BOOST_SERIALIZATION_NVP(kvsj_disk); 00328 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00329 } 00330 try { 00331 ar & BOOST_SERIALIZATION_NVP(ikvsjk_bar); 00332 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00333 } 00334 try { 00335 ar & BOOST_SERIALIZATION_NVP(ikvsj_bar); 00336 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00337 } 00338 try { 00339 ar & BOOST_SERIALIZATION_NVP(ikvsjk_disk); 00340 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00341 } 00342 try { 00343 ar & BOOST_SERIALIZATION_NVP(ikvsj_disk); 00344 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00345 } 00346 try { 00347 ar & BOOST_SERIALIZATION_NVP(kmin); 00348 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00349 } 00350 try { 00351 ar & BOOST_SERIALIZATION_NVP(kmax); 00352 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00353 } 00354 try { 00355 ar & BOOST_SERIALIZATION_NVP(jmin); 00356 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00357 } 00358 try { 00359 ar & BOOST_SERIALIZATION_NVP(jmax); 00360 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00361 } 00362 try { 00363 ar & BOOST_SERIALIZATION_NVP(jkmin); 00364 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00365 } 00366 try { 00367 ar & BOOST_SERIALIZATION_NVP(jkmax); 00368 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00369 } 00370 try { 00371 ar & BOOST_SERIALIZATION_NVP(nbins_k); 00372 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00373 } 00374 try { 00375 ar & BOOST_SERIALIZATION_NVP(nbins_j); 00376 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00377 } 00378 try { 00379 ar & BOOST_SERIALIZATION_NVP(nbins_jk); 00380 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00381 } 00382 try { 00383 ar & BOOST_SERIALIZATION_NVP(dstar); 00384 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00385 } 00386 try { 00387 ar & BOOST_SERIALIZATION_NVP(dstar_f); 00388 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00389 } 00390 try { 00391 ar & BOOST_SERIALIZATION_NVP(dstar_i); 00392 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00393 } 00394 try { 00395 ar & BOOST_SERIALIZATION_NVP(bstar); 00396 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00397 } 00398 try { 00399 ar & BOOST_SERIALIZATION_NVP(bstar_f); 00400 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00401 } 00402 try { 00403 ar & BOOST_SERIALIZATION_NVP(bstar_i); 00404 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00405 } 00406 this->post_serialize(ar, version); 00407 } 00408 00409 00410 }; 00411 } 00412 BIE_CLASS_TYPE_INFO(BIE::star) 00413 BIE_CLASS_TYPE_INFO(BIE::CMD2) 00414 BIE_CLASS_EXPORT_KEY(BIE::star) 00415 BIE_CLASS_EXPORT_KEY(BIE::CMD2) 00416 #endif Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:11 2010 by
|