Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
anonymous_namespace{app_var.cpp}::Tracking Class Reference

: class storing info about tracked particles More...

Public Member Functions

 Tracking (size_t sqr_num_track_par, size_t par_num_per_dim)
 
size_t get_num_track_par () const
 
size_t get_num_steps () const
 
template<class T >
void update_track_par (const std::vector< T > &particles)
 
void print_track_par (const Sim_Param &sim, std::string out_dir, std::string suffix) const
 

Private Member Functions

void set_par_ids (size_t sqr_num_track_par, size_t par_num_per_dim)
 

Private Attributes

std::vector< size_t > par_ids
 
std::vector< std::vector< Particle_x< double > > > par_pos
 

Detailed Description

: class storing info about tracked particles

Definition at line 45 of file app_var.cpp.

Constructor & Destructor Documentation

anonymous_namespace{app_var.cpp}::Tracking::Tracking ( size_t  sqr_num_track_par,
size_t  par_num_per_dim 
)
inline

Definition at line 49 of file app_var.cpp.

50  {
51  set_par_ids(sqr_num_track_par, par_num_per_dim);
52  }
void set_par_ids(size_t sqr_num_track_par, size_t par_num_per_dim)
Definition: app_var.cpp:98

Member Function Documentation

size_t anonymous_namespace{app_var.cpp}::Tracking::get_num_steps ( ) const
inline

Definition at line 60 of file app_var.cpp.

61  {
62  return par_pos.size();
63  }
std::vector< std::vector< Particle_x< double > > > par_pos
Definition: app_var.cpp:119
size_t anonymous_namespace{app_var.cpp}::Tracking::get_num_track_par ( ) const
inline

Definition at line 55 of file app_var.cpp.

56  {
57  return par_ids.size();
58  }
void anonymous_namespace{app_var.cpp}::Tracking::print_track_par ( const Sim_Param sim,
std::string  out_dir,
std::string  suffix 
) const
inline

Definition at line 75 of file app_var.cpp.

References x, Sim_Param::x_0(), and z.

76  {
77  out_dir += "par_cut/";
78  std::string file_name = out_dir + "track_par_pos" + suffix + ".dat";
79  Ofstream File(file_name);
80 
81  FTYPE_t x,y,z;
82  const FTYPE_t x_0 = sim.x_0();
83  BOOST_LOG_TRIVIAL(debug) << "Writing positons of " << par_ids.size() << " tracked particles into file " << file_name;
84  File << "# This file contains positions of particles in units [Mpc/h].\n"
85  "# x [Mpc/h]\tz [Mpc/h]";
86  for (size_t i=0; i < par_ids.size(); i++){
87  for (const auto& par_pos_step : par_pos){
88  x = par_pos_step[i].position[0];
89  y = par_pos_step[i].position[1];
90  z = par_pos_step[i].position[2];
91  File << x*x_0 << "\t" << z*x_0 << "\t" << y*x_0 << "\n";
92  }
93  File << "\n\n";
94  }
95  }
std::vector< std::vector< Particle_x< double > > > par_pos
Definition: app_var.cpp:119
static CCL_BEGIN_DECLS double x[111][8]
static double z[8]
double x_0() const
Definition: params.hpp:216
void anonymous_namespace{app_var.cpp}::Tracking::set_par_ids ( size_t  sqr_num_track_par,
size_t  par_num_per_dim 
)
inlineprivate

Definition at line 98 of file app_var.cpp.

References x, and z.

99  {
100  size_t num_track_par = sqr_num_track_par*sqr_num_track_par;
101  par_ids.reserve(num_track_par);
102  size_t x, y, z;
103  FTYPE_t s;
104  y = par_num_per_dim / 2; // middle of the cube
105  s = par_num_per_dim / FTYPE_t(4*(sqr_num_track_par+1)); // quarter of the cube
106  for (size_t i=1; i<=sqr_num_track_par;i++)
107  {
108  z = (size_t)(s*i);
109  for (size_t j=1; j<=sqr_num_track_par;j++)
110  {
111  x = (size_t)(s*j);
112  par_ids.push_back(x*par_num_per_dim*par_num_per_dim+y*par_num_per_dim+z);
113  }
114  }
115  }
static CCL_BEGIN_DECLS double x[111][8]
static double z[8]
template<class T >
void anonymous_namespace{app_var.cpp}::Tracking::update_track_par ( const std::vector< T > &  particles)
inline

Definition at line 65 of file app_var.cpp.

66  {
67  std::vector<Particle_x<FTYPE_t>> par_pos_step;
68  par_pos_step.reserve(par_ids.size());
69  for (size_t i=0; i < par_ids.size(); i++){
70  par_pos_step.emplace_back(particles[par_ids[i]].position);
71  }
72  par_pos.push_back(par_pos_step);
73  }
std::vector< std::vector< Particle_x< double > > > par_pos
Definition: app_var.cpp:119

Member Data Documentation

std::vector<size_t> anonymous_namespace{app_var.cpp}::Tracking::par_ids
private

Definition at line 118 of file app_var.cpp.

std::vector<std::vector<Particle_x<double> > > anonymous_namespace{app_var.cpp}::Tracking::par_pos
private

Definition at line 119 of file app_var.cpp.


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