PeTar
N-body code for collisional gravitational systems
escaper.hpp
Go to the documentation of this file.
1
#pragma once
2
#include<particle_simulator.hpp>
3
5
class
Escaper
{
6
public
:
7
PS::F64
r_escape_sq
;
// escape distance criterion square
8
bool
check_energy_flag
;
// if true, escaper should have E>0
9
10
Escaper
():
r_escape_sq
(PS::LARGE_FLOAT),
check_energy_flag
(true) {}
11
13
template
<
class
Tptcl,
class
Tpcm>
14
bool
isEscaper
(Tptcl& _p, Tpcm& _pcm) {
15
//assert(_p.pot_tot!=0.0);
16
bool
is_escape=
true
;
17
18
if
(
check_energy_flag
) {
19
// check energy
20
PS::F64
kin = _p.vel*_p.vel;
21
PS::F64
tot = _p.pot_tot + kin;
22
if
(tot<0) is_escape=
false
;
23
}
24
25
// check distance
26
#ifdef RECORD_CM_IN_HEADER
27
PS::F64vec
dr = _p.pos;
28
#else
29
PS::F64vec
dr = _p.pos - _pcm.pos;
30
#endif
31
PS::F64
r2 = dr*dr;
32
if
(r2<
r_escape_sq
) is_escape=
false
;
33
34
return
is_escape;
35
}
36
};
Escaper::isEscaper
bool isEscaper(Tptcl &_p, Tpcm &_pcm)
check escaper based on distance and c.m. of the system
Definition:
escaper.hpp:14
PIKG::F64vec
Vector3< F64 > F64vec
Definition:
pikg_vector.hpp:167
PIKG::F64
double F64
Definition:
pikg_vector.hpp:17
Escaper
escaper checker
Definition:
escaper.hpp:5
Escaper::check_energy_flag
bool check_energy_flag
Definition:
escaper.hpp:8
Escaper::r_escape_sq
PS::F64 r_escape_sq
Definition:
escaper.hpp:7
Escaper::Escaper
Escaper()
Definition:
escaper.hpp:10
src
escaper.hpp
Generated by
1.8.17