PeTar
N-body code for collisional gravitational systems
|
class to organize artificial particles More...
#include <artificial_particles.hpp>
Public Member Functions | |
ArtificialParticleManager () | |
More... | |
bool | checkParams () |
check paramters More... | |
template<class Tptcl > | |
void | createArtificialParticles (Tptcl *_ptcl_artificial, COMM::BinaryTree< Tptcl, COMM::Binary > &_bin, const PS::F64 *_data_to_store, const PS::S32 _n_data) |
create artificial particles More... | |
template<class Tptcl > | |
void | correctOrbitalParticleForce (Tptcl *_ptcl_artificial) |
correct orbit-samping/pseudo particles force More... | |
template<class Tptcl > | |
void | correctArtficialParticleForce (Tptcl *_ptcl_artificial) |
correct artificial particles force for furture use More... | |
template<class Tptcl > | |
Tptcl * | getOrbitalParticles (Tptcl *_ptcl_list) |
get oribit/pseudo particle list address from a artificial particle array More... | |
template<class Tptcl > | |
Tptcl * | getTidalTensorParticles (Tptcl *_ptcl_list) |
get tidal tensor particle list address from a artificial particle array More... | |
template<class Tptcl > | |
Tptcl * | getCMParticles (Tptcl *_ptcl_list) |
get c.m. particle list address from a artificial particle array More... | |
PS::S32 | getIndexOffsetTT () const |
tidal tensor particle index offset More... | |
PS::S32 | getIndexOffsetOrb () const |
orbital/pseudo particle index offset More... | |
PS::S32 | getIndexOffsetCM () const |
CM particle index offset. More... | |
PS::S32 | getArtificialParticleN () const |
get artificial particle total number More... | |
PS::S32 | getTidalTensorParticleN () const |
get artificial particle total number More... | |
PS::S32 | getOrbitalParticleN () const |
get orbitial particle number More... | |
template<class Tptcl > | |
PS::S32 | getLeftMemberN (const Tptcl *_ptcl_list) const |
get left member number More... | |
template<class Tptcl > | |
PS::S32 | getMemberN (const Tptcl *_ptcl_list) const |
get member number More... | |
template<class Tptcl > | |
PS::S32 | getRightMemberN (const Tptcl *_ptcl_list) const |
get right member number More... | |
template<class Tptcl > | |
PS::S64 | getCMID (const Tptcl *_ptcl_list) const |
get center of mass id More... | |
template<class Tptcl > | |
PS::F64 | getStoredData (const Tptcl *_ptcl_list, const PS::S32 _index, const bool _is_positive) const |
get stored data More... | |
void | writeBinary (FILE *_fp) |
write class data to file with binary format More... | |
void | readBinary (FILE *_fin) |
read class data to file with binary format More... | |
void | print (std::ostream &_fout) const |
print parameters More... | |
Public Attributes | |
PS::F64 | r_tidal_tensor |
PS::S64 | id_offset |
More... | |
PS::F64 | gravitational_constant |
More... | |
OrbitManager | orbit_manager |
More... | |
class to organize artificial particles
|
inline |
orbit particle method
initializer, require setParticleSplitN later to initialize the size
|
inline |
check paramters
|
inline |
correct artificial particles force for furture use
substract c.m. force (acc) from tidal tensor force (acc)
replace c.m. force by the averaged force on orbital particles
[in,out] | _ptcl_artificial | one group of artificial particles |
|
inline |
correct orbit-samping/pseudo particles force
replace c.m. force by the averaged force on sample/pseudo particles
[in,out] | _ptcl_artificial | one group of artificial particles |
|
inline |
create artificial particles
First TidalTensor::getParticleN() are tidal tensor particles; others-1 are orbitial sample particles; last is c.m.
id: tt/orb: id_offset + abs(member->id)*(n_artificial-1)/2 + index/2; cm: - abs(_bin.id)
status: Tidal tensors/orbital 0: left member N 1: right member N others: index+1 (_data_to_store>0.0)
c.m.: n_members
mass_backup: Tidial tensors/orbital: 0.0 (_data_to_store <=0.0) c.m.: mass(cm)
[out] | _ptcl_new | artificial particles that will be added |
[in] | _bin | binary tree root |
[in] | _data_to_store | array of data to be stored in the status of artificial particles |
[in] | _n_data | number of data |
|
inline |
get artificial particle total number
|
inline |
get center of mass id
|
inline |
get c.m. particle list address from a artificial particle array
|
inline |
CM particle index offset.
|
inline |
orbital/pseudo particle index offset
|
inline |
tidal tensor particle index offset
|
inline |
get left member number
|
inline |
get member number
|
inline |
get orbitial particle number
|
inline |
get oribit/pseudo particle list address from a artificial particle array
|
inline |
get right member number
|
inline |
get stored data
|
inline |
get artificial particle total number
|
inline |
get tidal tensor particle list address from a artificial particle array
|
inline |
print parameters
|
inline |
read class data to file with binary format
[in] | _fp | FILE type file for reading |
|
inline |
write class data to file with binary format
[in] | _fp | FILE type file for output |
PS::F64 ArtificialParticleManager::gravitational_constant |
offset to generate ID for artificial particles
PS::S64 ArtificialParticleManager::id_offset |
tidal tensor maximum distance of particles
OrbitManager ArtificialParticleManager::orbit_manager |
gravitational constant
PS::F64 ArtificialParticleManager::r_tidal_tensor |