Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
Sim_Param Class Reference

: class storing simulation parameters More...

#include <params.hpp>

Collaboration diagram for Sim_Param:

Public Member Functions

 Sim_Param ()
 
 Sim_Param (int ac, const char *const av[])
 
 Sim_Param (std::string file_name)
 
void print_info (std::string out, std::string app) const
 
void print_info () const
 
double x_0 () const
 
double x_0_pwr () const
 
bool simulate ()
 
void reset ()
 
bool is_ready ()
 

Public Attributes

Box_Opt box_opt
 
Integ_Opt integ_opt
 
Out_Opt out_opt
 
Comp_App comp_app
 
Cosmo_Param cosmo
 
App_Opt app_opt
 
Run_Opt run_opt
 
Other_par other_par
 
Chi_Opt chi_opt
 
Test_Opt test_opt
 

Detailed Description

: class storing simulation parameters

Definition at line 193 of file params.hpp.

Constructor & Destructor Documentation

Sim_Param::Sim_Param ( )
inline

Definition at line 197 of file params.hpp.

197 {}; //< from simpy and partial initialization
Sim_Param::Sim_Param ( int  ac,
const char *const  av[] 
)

Definition at line 434 of file params.cpp.

References Cosmo_Param::cosmo, and handle_cmd_line().

435 {
436  handle_cmd_line(ac, av, *this);//< throw if anything happend
437  if (this->is_ready())
438  {
439  run_opt.init();
440  cosmo.init();
441  box_opt.init(cosmo);
442  integ_opt.init();
443  out_opt.init();
446  }
447 }
Box_Opt box_opt
Definition: params.hpp:202
void init()
Definition: params.cpp:390
bool is_ready()
Definition: params.cpp:556
void init(const Box_Opt &)
Definition: params.cpp:407
Cosmo_Param cosmo
Definition: params.hpp:206
void init()
lazy constructor
Definition: params.cpp:305
void init()
Definition: params.cpp:344
Integ_Opt integ_opt
Definition: params.hpp:203
Out_Opt out_opt
Definition: params.hpp:204
void init()
Definition: params.cpp:384
Run_Opt run_opt
Definition: params.hpp:208
void init(const Box_Opt &)
Definition: params.cpp:416
App_Opt app_opt
Definition: params.hpp:207
void init(const Cosmo_Param &cosmo)
Definition: params.cpp:376
Other_par other_par
Definition: params.hpp:209
void handle_cmd_line(int ac, const char *const av[], Sim_Param &sim)
parse command line arguments
Definition: core_cmd.cpp:24
Sim_Param::Sim_Param ( std::string  file_name)

Definition at line 449 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), Cosmo_Param::cosmo, from_json(), and nlohmann::detail::exception::what().

450 {
451  try{
452  Ifstream i(file_name);
453  json j;
454  i >> j;
455  try{ run_opt = j.at("run_opt"); } // sim_param.json has run_opt
456  catch(const json::out_of_range& oor){ // stack_info.json does not have run_opt
457  run_opt.nt = 0; // max
458  run_opt.seed = 0; // random
459  run_opt.init();
460  }
461 
462  from_json(j.at("cosmo"), cosmo); //< call explicitly, SWIG has some issues with json.hpp
463  if ("TZA" == j.at("app"))
464  {
465  cosmo.truncated_pk = true;
466  }
467 
468  box_opt = j.at("box_opt");
469  box_opt.init(cosmo);
470 
471  integ_opt = j.at("integ_opt");
472  try{ out_opt = j.at("out_opt"); } // new format of json files
473  catch(const json::out_of_range& oor){ // old format does not store Out_Opt
474  try {out_opt.out_dir = j.at("out_dir"); } // stack_info.json doesn`t store out_dir
475  catch(const json::out_of_range& oor){out_opt.out_dir = "~/home/FASTSIM/output/"; } // do not need it, set to some default
478  }
479  app_opt = j.at("app_opt");
480 
483 
484  try{
485  chi_opt = j.at("chi_opt");
486  comp_app.chi = (("CHI" == j.at("app")));
487  comp_app.chi_ff = (("CHI_FF" == j.at("app")));
488  } catch(const json::out_of_range& oor){ comp_app.chi = comp_app.chi_ff = false; }
489 
490  }
491  catch(const json::out_of_range& oor){
492  std::string err = std::string(oor.what()) + " in file '" + file_name + "'";
493  throw std::out_of_range(err);
494  }
495 }
Chi_Opt chi_opt
Definition: params.hpp:210
Box_Opt box_opt
Definition: params.hpp:202
a class to store JSON values
Definition: json.hpp:86
Comp_App comp_app
Definition: params.hpp:205
size_t points_per_10_Mpc
Definition: params.hpp:85
exception indicating access out of the defined range
Definition: json.hpp:1067
const char * what() const noexceptoverride
returns the explanatory string
Definition: json.hpp:817
void init(const Box_Opt &)
Definition: params.cpp:407
Cosmo_Param cosmo
Definition: params.hpp:206
bool chi_ff
Definition: params.hpp:102
void init()
Definition: params.cpp:344
Integ_Opt integ_opt
Definition: params.hpp:203
Out_Opt out_opt
Definition: params.hpp:204
size_t nt
Definition: params.hpp:134
size_t seed
Definition: params.hpp:135
Run_Opt run_opt
Definition: params.hpp:208
size_t bins_per_decade
Definition: params.hpp:85
void from_json(const json &j, Cosmo_Param &cosmo)
Definition: params.cpp:109
bool truncated_pk
Definition: params.hpp:41
void init(const Box_Opt &)
Definition: params.cpp:416
bool chi
Definition: params.hpp:102
App_Opt app_opt
Definition: params.hpp:207
std::string out_dir
Definition: params.hpp:86
void init(const Cosmo_Param &cosmo)
Definition: params.cpp:376
Other_par other_par
Definition: params.hpp:209

Member Function Documentation

bool Sim_Param::is_ready ( )

Definition at line 556 of file params.cpp.

Referenced by main().

557 {
558  bool is_ready = true;
559  is_ready &= run_opt.is_ready();
560  is_ready &= comp_app.is_ready();
561  return is_ready;
562 }
Comp_App comp_app
Definition: params.hpp:205
bool is_ready()
Definition: params.cpp:556
bool is_ready()
Definition: params.cpp:360
Run_Opt run_opt
Definition: params.hpp:208
bool is_ready()
Definition: params.cpp:402
void Sim_Param::print_info ( std::string  out,
std::string  app 
) const

Definition at line 497 of file params.cpp.

References anonymous_namespace{params.cpp}::baryons_power_spectrum_method, ccl_configuration::baryons_power_spectrum_method, ccl_cosmology::config, Cosmo_Param::cosmo, anonymous_namespace{params.cpp}::find_value(), anonymous_namespace{params.cpp}::mass_function_method, ccl_configuration::mass_function_method, anonymous_namespace{params.cpp}::matter_power_spectrum_method, ccl_configuration::matter_power_spectrum_method, sqrt(), anonymous_namespace{params.cpp}::transfer_function_method, and ccl_configuration::transfer_function_method.

Referenced by main(), App_Var< T >::Impl< T >::print_info(), and TEST_CASE().

498 {
499  if (out == "")
500  {
501  BOOST_LOG_TRIVIAL(info) << "\n"
502  "*********************\n"
503  "SIMULATION PARAMETERS\n"
504  "*********************\n"
505  "Ng:\t\t" << box_opt.Ng << "\n"
506  "Num_par:\t" << box_opt.par_num_1d << "^3\n"
507  "Num_mesh:\t" << box_opt.mesh_num << "^3\n"
508  "Num_mesh_pwr:\t" << box_opt.mesh_num_pwr << "^3\n"
509  "Box size:\t" << box_opt.box_size << " Mpc/h\n"
510  "Redshift:\t" << integ_opt.z_in << " ---> " << integ_opt.z_out << "\n"
511  "Pk:\t\t[sigma_8 = " << cosmo.sigma8 << ", ns = " << cosmo.ns << ", k_smooth = " << sqrt(cosmo.k2_G) << "]\n" <<
512  "\t\t[transfer_function_method = " << find_value(transfer_function_method, cosmo.config.transfer_function_method) << "]\n" <<
513  "\t\t[matter_power_spectrum_method = " << find_value(matter_power_spectrum_method, cosmo.config.matter_power_spectrum_method) << "]\n" <<
514  "\t\t[mass_function_method = " << find_value(mass_function_method, cosmo.config.mass_function_method) << "]\n" <<
515  "\t\t[baryons_power_spectrum_method = " << find_value(baryons_power_spectrum_method, cosmo.config.baryons_power_spectrum_method) << "]\n" <<
516  "AA:\t\t[nu = " << app_opt.nu_dim << " (Mpc/h)^2]\n" <<
517  "LL:\t\t[rs = " << app_opt.rs << ", a = " << app_opt.a << ", M = " << app_opt.M << ", Hc = " << app_opt.Hc << "]\n" <<
518  "CHI:\t\t[beta = " << chi_opt.beta << ", n = " << chi_opt.n << ", phi = " << chi_opt.phi << "\n" <<
519  "num_thread:\t << " << run_opt.nt << "\n" <<
520  "Output:\t\t'" << out_opt.out_dir << "'\n";
521  }
522  else
523  {
524  std::string file_name = out + "sim_param.json";
525  std::ofstream o(file_name);
526 
527  json j = {
528  {"box_opt", box_opt},
529  {"integ_opt", integ_opt},
530  {"cosmo", cosmo},
531  {"app_opt", app_opt},
532  {"run_opt", run_opt},
533  {"out_opt", out_opt},
534  {"k_nyquist", other_par.nyquist},
535  {"app", app}
536  };
537  if (comp_app.chi | comp_app.chi_ff) j["chi_opt"] = chi_opt;
538  if (app == "test") j["test_opt"] = test_opt;
539 
540  o << std::setw(2) << j << std::endl;
541  o.close();
542  }
543 }
Chi_Opt chi_opt
Definition: params.hpp:210
double box_size
Definition: params.hpp:59
Box_Opt box_opt
Definition: params.hpp:202
a class to store JSON values
Definition: json.hpp:86
matter_power_spectrum_t matter_power_spectrum_method
Definition: ccl_config.h:112
const std::map< std::string, transfer_function_t > transfer_function_method
Definition: params.cpp:25
size_t mesh_num_pwr
Definition: params.hpp:58
Comp_App comp_app
Definition: params.hpp:205
ccl_configuration config
Definition: params.hpp:31
double z_in
Definition: params.hpp:72
double Hc
Definition: params.hpp:118
double a
Definition: params.hpp:118
size_t M
Definition: params.hpp:119
T find_value(const std::map< T, U > &map, const U &value)
Definition: params.cpp:57
size_t Ng
Definition: params.hpp:61
double n
Definition: params.hpp:185
transfer_function_t transfer_function_method
Definition: ccl_config.h:111
double nu_dim
Definition: params.hpp:118
size_t par_num_1d
Definition: params.hpp:58
Cosmo_Param cosmo
Definition: params.hpp:206
const std::map< std::string, matter_power_spectrum_t > matter_power_spectrum_method
Definition: params.cpp:33
Grid< NDIM, T > sqrt(Grid< NDIM, T > lhs)
Definition: grid.h:231
bool chi_ff
Definition: params.hpp:102
Test_Opt test_opt
Definition: params.hpp:211
Integ_Opt integ_opt
Definition: params.hpp:203
Out_Opt out_opt
Definition: params.hpp:204
const std::map< std::string, baryons_power_spectrum_t > baryons_power_spectrum_method
Definition: params.cpp:48
std::map< std::string, double > nyquist
Definition: params.hpp:175
size_t nt
Definition: params.hpp:134
double z_out
Definition: params.hpp:72
baryons_power_spectrum_t baryons_power_spectrum_method
Definition: ccl_config.h:113
double k2_G
Definition: params.hpp:35
double ns
Definition: params.hpp:35
Run_Opt run_opt
Definition: params.hpp:208
mass_function_t mass_function_method
Definition: ccl_config.h:114
bool chi
Definition: params.hpp:102
double phi
Definition: params.hpp:185
size_t mesh_num
Definition: params.hpp:58
App_Opt app_opt
Definition: params.hpp:207
std::string out_dir
Definition: params.hpp:86
const std::map< std::string, mass_function_t > mass_function_method
Definition: params.cpp:40
Other_par other_par
Definition: params.hpp:209
double beta
Definition: params.hpp:185
double sigma8
Definition: params.hpp:35
double rs
Definition: params.hpp:116
void Sim_Param::print_info ( ) const

Definition at line 545 of file params.cpp.

546 {
547  Sim_Param::print_info("", "");
548 }
void print_info() const
Definition: params.cpp:545
void Sim_Param::reset ( )

Definition at line 550 of file params.cpp.

Referenced by handle_cmd_line().

551 {
552  run_opt.reset();
553  comp_app.reset();
554 }
Comp_App comp_app
Definition: params.hpp:205
void reset()
Definition: params.cpp:397
void reset()
Definition: params.cpp:355
Run_Opt run_opt
Definition: params.hpp:208
bool Sim_Param::simulate ( )
inline

Definition at line 218 of file params.hpp.

References Run_Opt::simulate().

Referenced by main().

218 { return run_opt.simulate(); }
Run_Opt run_opt
Definition: params.hpp:208
bool simulate()
Definition: params.cpp:365
double Sim_Param::x_0 ( ) const
inline

Definition at line 216 of file params.hpp.

References Box_Opt::box_size, and Box_Opt::mesh_num.

Referenced by print_par_pos_cut_small(), and anonymous_namespace{app_var.cpp}::Tracking::print_track_par().

double box_size
Definition: params.hpp:59
Box_Opt box_opt
Definition: params.hpp:202
size_t mesh_num
Definition: params.hpp:58
double Sim_Param::x_0_pwr ( ) const
inline

Definition at line 217 of file params.hpp.

References Box_Opt::box_size, and Box_Opt::mesh_num_pwr.

Referenced by print_projected_rho(), and print_rho_map().

double box_size
Definition: params.hpp:59
Box_Opt box_opt
Definition: params.hpp:202
size_t mesh_num_pwr
Definition: params.hpp:58

Member Data Documentation

Chi_Opt Sim_Param::chi_opt

Definition at line 210 of file params.hpp.

Referenced by handle_cmd_line(), App_Var_Chi::ChiImpl::solve(), and TEST_CASE().

Comp_App Sim_Param::comp_app

Definition at line 205 of file params.hpp.

Referenced by handle_cmd_line(), and main().

Integ_Opt Sim_Param::integ_opt

Definition at line 203 of file params.hpp.

Referenced by handle_cmd_line(), and App_Var< T >::Impl< T >::set_init_pos().

Test_Opt Sim_Param::test_opt

The documentation for this class was generated from the following files: