PeTar
N-body code for collisional gravitational systems
|
Go to the documentation of this file.
32 _fout<<std::setw(_width)<<
"CM.mass"
33 <<std::setw(_width)<<
"CM.pos.x"
34 <<std::setw(_width)<<
"CM.pos.y"
35 <<std::setw(_width)<<
"CM.pos.z"
36 <<std::setw(_width)<<
"CM.vel.x"
37 <<std::setw(_width)<<
"CM.vel.y"
38 <<std::setw(_width)<<
"CM.vel.z";
47 _fout<<std::setw(_width)<<
mass
48 <<std::setw(_width)<<
pos.x
49 <<std::setw(_width)<<
pos.y
50 <<std::setw(_width)<<
pos.z
51 <<std::setw(_width)<<
vel.x
52 <<std::setw(_width)<<
vel.y
53 <<std::setw(_width)<<
vel.z;
60 void print(std::ostream & _fout) {
61 _fout<<
"C.M.: mass: "<<
mass
82 template <
class Tsoft>
85 for (
int i=0; i<_n; i++) {
98 template <
class Tsoft>
101 for (
int i=0; i<_n; i++) {
115 template <
class Tsoft>
124 for (
int i=0; i<_n; i++) {
128 #ifdef NAN_CHECK_DEBUG
129 assert(!std::isnan(pi.vel.x));
130 assert(!std::isnan(pi.vel.y));
131 assert(!std::isnan(pi.vel.z));
137 #ifdef PARTICLE_SIMULATOR_MPI_PARALLEL
138 pcm.
mass = PS::Comm::getSum(mass);
139 pcm.
pos = PS::Comm::getSum(pos_cm);
140 pcm.
vel = PS::Comm::getSum(vel_cm);
154 for (
int i=0; i<_n; i++) {
158 #ifdef NAN_CHECK_DEBUG
159 assert(!std::isnan(pi.vel.x));
160 assert(!std::isnan(pi.vel.y));
161 assert(!std::isnan(pi.vel.z));
167 #ifdef PARTICLE_SIMULATOR_MPI_PARALLEL
168 pcm.
mass = PS::Comm::getSum(mass);
169 pcm.
pos = PS::Comm::getSum(pos_cm);
170 pcm.
vel = PS::Comm::getSum(vel_cm);
171 PS::S64 n_glb = PS::Comm::getSum(_n);
185 for (
int i=0; i<_n; i++) {
189 #ifdef EXTERNAL_POT_IN_PTCL
193 #ifdef NAN_CHECK_DEBUG
194 assert(!std::isnan(pi.vel.x));
195 assert(!std::isnan(pi.vel.y));
196 assert(!std::isnan(pi.vel.z));
198 pos_cm += poti*pi.pos;
199 vel_cm += poti*pi.vel;
203 #ifdef PARTICLE_SIMULATOR_MPI_PARALLEL
204 pcm.
mass = PS::Comm::getSum(mass);
205 pcm.
pos = PS::Comm::getSum(pos_cm);
206 pcm.
vel = PS::Comm::getSum(vel_cm);
207 PS::F64 pot_tot_glb = PS::Comm::getSum(pot_tot);
214 if (pot_tot_glb!=0) {
227 template <
class Tsoft>
231 std::cerr<<
"Error: particle system is in c.m. frame, cannot initial c.m."<<std::endl;
243 for (
int i=0; i<_n; i++) {
257 _fout<<std::setw(_width)<<
"Time"
258 <<std::setw(_width)<<
"N_real_loc"
259 <<std::setw(_width)<<
"N_real_glb"
260 <<std::setw(_width)<<
"N_all_loc"
261 <<std::setw(_width)<<
"N_all_glb"
262 <<std::setw(_width)<<
"N_rm_glb"
263 <<std::setw(_width)<<
"N_esc_glb";
274 _fout<<std::setw(_width)<<
time
291 _fout<<
"Time: "<<std::setprecision(15)<<
time
292 <<std::setprecision(_precision);
PS::F64vec vel
Definition: status.hpp:21
void printColumn(std::ofstream &_fout, const PS::S32 _width=16) const
print data of class members using column style
Definition: energy.hpp:145
struct Status::ParticleCM pcm
void clear()
Definition: status.hpp:66
int32_t S32
Definition: pikg_vector.hpp:24
PS::S32 n_escape_glb
Definition: status.hpp:15
Vector3< F64 > F64vec
Definition: pikg_vector.hpp:167
class for collecting and calculating the energy and angular momemtum of the system
Definition: energy.hpp:4
double F64
Definition: pikg_vector.hpp:17
void printColumnTitle(std::ofstream &_fout, const PS::S32 _width=20)
print titles of class members using column style
Definition: status.hpp:31
PS::F64 time
Definition: status.hpp:9
class for measure the status of the system
Definition: status.hpp:7
Status()
Definition: status.hpp:75
int64_t S64
Definition: pikg_vector.hpp:23
PS::S32 n_remove_glb
Definition: status.hpp:14
void printColumnTitle(std::ofstream &_fout, const PS::S32 _width=20)
print titles of class members using column style
Definition: status.hpp:256
PS::S64 n_real_glb
Definition: status.hpp:11
PS::S64 n_all_glb
Definition: status.hpp:13
void printColumn(std::ofstream &_fout, const PS::S32 _width=20)
print data of class members using column style
Definition: status.hpp:46
void print(std::ostream &_fout)
print title and values in one lines
Definition: status.hpp:60
PS::S64 n_all_loc
Definition: status.hpp:12
PS::F64 half_mass_radius
Definition: status.hpp:16
void print(std::ostream &_fout, const PS::S32 _precision=7)
print title and values in one lines
Definition: status.hpp:290
PS::F64vec pos
Definition: status.hpp:20
void calcAndShiftCenterOfMass(Tsoft *_tsys, const PS::S64 _n, const int _mode=3, const bool initial_flag=false)
calculate the center of system and shift particle systems to center frame
Definition: status.hpp:228
void print(std::ostream &_fout=std::cout, const PS::S32 _width=16)
print title and values in one lines
Definition: energy.hpp:52
void printColumnTitle(std::ofstream &_fout, const PS::S32 _width=16) const
print titles of class members using column style
Definition: energy.hpp:111
PS::S64 n_real_loc
Definition: status.hpp:10
EnergyAndMomemtum energy
Definition: status.hpp:17
void shiftToOriginFrame(Tsoft *_tsys, const PS::S64 _n)
shift particle system center back to original frame
Definition: status.hpp:99
Definition: status.hpp:18
bool is_center_shift_flag
Definition: status.hpp:22
void calcCenterOfMass(Tsoft *_tsys, const PS::S64 _n, int _mode=3)
calculate the center of system
Definition: status.hpp:116
ParticleCM()
Definition: status.hpp:24
PS::F64 mass
Definition: status.hpp:19
void shiftToCenterOfMassFrame(Tsoft *_tsys, const PS::S64 _n)
shift particle system center to c.m. frame
Definition: status.hpp:83
void printColumn(std::ofstream &_fout, const PS::S32 _width=20)
print data of class members using column style
Definition: status.hpp:273