particles_nbody

Module

Description

$Id$

This module takes care of direct N-body gravity between particles.

** AUTOMATIC CPARAM.INC GENERATION ************************

Declare (for generation of cparam.inc) the number of f array variables and auxiliary variables added by this module

MPVAR CONTRIBUTION 3 CPARAM logical, parameter :: lparticles_nbody=.true.


Quick access

Variables:

cdtpnbody, create_jeans_constant, delta_vsp0, fsp, icreate, idiag_torqext, idiag_torqext_gas, idiag_torqext_par, idiag_torqint, idiag_torqint_gas, idiag_torqint_par, idiag_totangmom, idiag_totenergy, idiag_vvspar, idiag_xxspar, iglobal_ggp, imass_nbody, initvvsp, initxxsp, iplanet, istar, laccrete_when_create, ladd_mass, lbackreaction, lcalc_orbit, lcreate_dust, lcreate_gas, lcreate_sinks, ldt_nbody, linertial_frame, linterpolate_gravity, linterpolate_linear, linterpolate_quadratic_spline, lnoselfgrav_star, ltempering, lvectorgravity, maxsink, mspar_orig, vspx0, vspy0, vspz0, xsp0, ysp0, zsp0

Routines:

add_friends(), add_indirect_term(), advance_particles_in_cartesian(), bcast_nbodyarray(), calc_nbodygravity_particles(), calc_pencils_par_nbody(), calc_torque(), check_particle(), collapse_cluster(), create_particles_sink_nbody(), dvvp_dt_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), friends_of_friends(), get_evr(), get_gravity_field_nbody(), get_ramped_mass(), get_total_gravity(), get_totalmass(), init_particles_nbody(), initialize_particles_nbody(), integrate_selfgravity(), loop_through_nbodies(), loop_through_nbodies_fixstar(), loop_through_nbodies_inertial(), make_cluster(), merge_and_share(), particles_nbody_read_snapshot(), particles_nbody_special(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), point_par_name(), read_particles_nbody_init_pars(), read_particles_nbody_run_pars(), register_particles_nbody(), remove_particles_sink_nbody(), reset_center_of_mass(), rprint_particles_nbody(), update_position(), update_velocity(), write_particles_nbody_init_pars(), write_particles_nbody_run_pars()

Needed modules

Variables

  • particles_nbody/accrete_hills_frac (nspar) [real,optional/default=0.2]
  • particles_nbody/cdtpnbody [real,optional/default=0.1]
  • particles_nbody/create_jeans_constant [real,optional/default=0.25]
  • particles_nbody/delta_vsp0 [real,optional/default=1.0]
  • particles_nbody/density_scale [real,optional/default=0.001]
  • particles_nbody/eccentricity [real,optional/default=0.0]
  • particles_nbody/final_ramped_mass (nspar) [real,optional/default=0.0]
  • particles_nbody/frac_smooth (nspar) [real,optional/default=0.3]
  • particles_nbody/fsp (nspar,mspvar) [real]
  • particles_nbody/gnewton [real,optional/default=impossible]
  • particles_nbody/gnewton1 [real]
  • particles_nbody/hills_tempering_fraction [real,optional/default=0.8]
  • particles_nbody/icreate [integer,optional/default=100]
  • particles_nbody/idiag_torqext (nspar) [integer,optional/default=0]
  • particles_nbody/idiag_torqext_gas (nspar) [integer,optional/default=0]
  • particles_nbody/idiag_torqext_par (nspar) [integer,optional/default=0]
  • particles_nbody/idiag_torqint (nspar) [integer,optional/default=0]
  • particles_nbody/idiag_torqint_gas (nspar) [integer,optional/default=0]
  • particles_nbody/idiag_torqint_par (nspar) [integer,optional/default=0]
  • particles_nbody/idiag_totangmom [integer,optional/default=0]
  • particles_nbody/idiag_totenergy [integer,optional/default=0]
  • particles_nbody/idiag_vvspar (nspar,3) [integer,optional/default=0]
  • particles_nbody/idiag_xxspar (nspar,3) [integer,optional/default=0]
  • particles_nbody/iglobal_ggp [integer,optional/default=0]
  • particles_nbody/imass_nbody [integer,optional/default=0]
  • particles_nbody/initvvsp [character,optional/default='nothing']
  • particles_nbody/initxxsp [character,optional/default='random']
  • particles_nbody/iplanet [integer,optional/default=2]
  • particles_nbody/istar [integer,optional/default=1]
  • particles_nbody/laccrete_when_create [logical,optional/default=.true.]
  • particles_nbody/laccretion (nspar) [logical,optional/default=.false.]
  • particles_nbody/ladd_mass (nspar) [logical,optional/default=.false.]
  • particles_nbody/lbackreaction [logical,optional/default=.false.]
  • particles_nbody/lcalc_orbit [logical,optional/default=.true.]
  • particles_nbody/lcreate_dust [logical,optional/default=.true.]
  • particles_nbody/lcreate_gas [logical,optional/default=.true.]
  • particles_nbody/lcreate_sinks [logical,optional/default=.false.]
  • particles_nbody/lcylindrical_gravity_nbody (nspar) [logical,optional/default=.false.]
  • particles_nbody/ldt_nbody [logical,optional/default=.true.]
  • particles_nbody/ldust [logical,optional/default=.false.]
  • particles_nbody/ldust_gravity [logical,optional/default=.false.]
  • particles_nbody/lexclude_frozen [logical,optional/default=.false.]
  • particles_nbody/lfollow_particle (nspar) [logical,optional/default=.false.]
  • particles_nbody/lgas_gravity [logical,optional/default=.false.]
  • particles_nbody/linertial_frame [logical,optional/default=.true.]
  • particles_nbody/linterpolate_gravity [logical,optional/default=.false.]
  • particles_nbody/linterpolate_linear [logical,optional/default=.true.]
  • particles_nbody/linterpolate_quadratic_spline [logical,optional/default=.false.]
  • particles_nbody/lnogravz_star [logical,optional/default=.false.]
  • particles_nbody/lnorm [logical,optional/default=.true.]
  • particles_nbody/lnoselfgrav_star [logical,optional/default=.true.]
  • particles_nbody/lramp [logical,optional/default=.false.]
  • particles_nbody/lreset_cm [logical,optional/default=.false.]
  • particles_nbody/lretrograde [logical,optional/default=.false.]
  • particles_nbody/ltempering [logical,optional/default=.false.]
  • particles_nbody/maxsink [integer,optional/default=10*nspar]
  • particles_nbody/mspar_orig [integer,optional/default=1]
  • particles_nbody/pmass (nspar) [real,optional/default=0.0]
  • particles_nbody/pmass1 (nspar) [real]
  • particles_nbody/r_smooth (nspar) [real,optional/default=impossible]
  • particles_nbody/ramp_orbits [integer,optional/default=5]
  • particles_nbody/rhs_poisson_const [real,pointer]
  • particles_nbody/semimajor_axis [real,optional/default=1.0]
  • particles_nbody/totmass [real]
  • particles_nbody/totmass1 [real]
  • particles_nbody/tstart_selfgrav [real,pointer]
  • particles_nbody/vspx0 (nspar) [real,optional/default=0.0]
  • particles_nbody/vspy0 (nspar) [real,optional/default=0.0]
  • particles_nbody/vspz0 (nspar) [real,optional/default=0.0]
  • particles_nbody/xsp0 (nspar) [real,optional/default=0.0]
  • particles_nbody/ysp0 (nspar) [real,optional/default=0.0]
  • particles_nbody/zsp0 (nspar) [real,optional/default=0.0]

Subroutines and functions

subroutine  particles_nbody/register_particles_nbody()

Set up indices for access to the f and fsp.

27-aug-06/wlad: adapted

Call to:

svn_id(), fatal_error(), append_npvar(), rprint_particles_nbody(), warning(), boundconds_particles(), bcast_nbodyarray(), interpolate_linear(), interpolate_quadratic_spline(), get_total_gravity(), get_radial_distance(), integrate_selfgravity(), calc_torque(), sum_lim_mn_name(), reset_center_of_mass(), get_ramped_mass(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), integrate_mn_name(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), friends_of_friends(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/initialize_particles_nbody(f)

Perform any post-parameter-read initialization i.e. calculate derived parameters.

27-aug-06/wlad: adapted

Parameters:

f (mx,my,mz,mfarray) [real]

Use :

farraymanager, sharedvariables

Call to:

fatal_error(), rprint_particles_nbody(), warning(), boundconds_particles(), bcast_nbodyarray(), interpolate_linear(), interpolate_quadratic_spline(), get_total_gravity(), get_radial_distance(), integrate_selfgravity(), calc_torque(), sum_lim_mn_name(), reset_center_of_mass(), get_ramped_mass(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), integrate_mn_name(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), friends_of_friends(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/pencil_criteria_par_nbody()

All pencils that the Particles_nbody module depends on are specified here.

22-sep-06/wlad: adapted

Call to:

warning(), fatal_error(), boundconds_particles(), bcast_nbodyarray(), interpolate_linear(), interpolate_quadratic_spline(), get_total_gravity(), get_radial_distance(), integrate_selfgravity(), calc_torque(), sum_lim_mn_name(), reset_center_of_mass(), get_ramped_mass(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), integrate_mn_name(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), friends_of_friends(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/pencil_interdep_par_nbody(lpencil_in)

Interdependency among pencils provided by the Particles_nbody module is specified here.

22-sep-06/wlad: adapted

Parameters:

lpencil_in (npencils) [logical]

Call to:

warning(), fatal_error(), boundconds_particles(), bcast_nbodyarray(), interpolate_linear(), interpolate_quadratic_spline(), get_total_gravity(), get_radial_distance(), integrate_selfgravity(), calc_torque(), sum_lim_mn_name(), reset_center_of_mass(), get_ramped_mass(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), integrate_mn_name(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), friends_of_friends(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/calc_pencils_par_nbody(f, p)

Calculate nbody particle pencils

22-sep-06/wlad: adapted

Parameters:
Call to:

warning(), fatal_error(), boundconds_particles(), bcast_nbodyarray(), interpolate_linear(), interpolate_quadratic_spline(), get_total_gravity(), get_radial_distance(), integrate_selfgravity(), calc_torque(), sum_lim_mn_name(), reset_center_of_mass(), get_ramped_mass(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), integrate_mn_name(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), friends_of_friends(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/init_particles_nbody(f, fp)

Initial positions and velocities of nbody particles. Overwrite the position asserted by the dust module

17-nov-05/anders+wlad: adapted

Parameters:
Use :

general (random_number_wrapper()), sub

Call to:

warning(), fatal_error(), boundconds_particles(), bcast_nbodyarray(), interpolate_linear(), interpolate_quadratic_spline(), get_total_gravity(), get_radial_distance(), integrate_selfgravity(), calc_torque(), sum_lim_mn_name(), reset_center_of_mass(), get_ramped_mass(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), integrate_mn_name(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), friends_of_friends(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/dvvp_dt_nbody_pencil(f, df, fp, dfp, p, ineargrid)

Add gravity from the particles to the gas and the backreaction from the gas onto the particles.

Adding the gravity on the dust component via the grid is less accurate, but much faster than looping through all npar_loc particle and add the gravity of all massive particles to it.

07-sep-06/wlad: coded

Parameters:
  • f (mx,my,mz,mfarray) [real,in]

  • df (mx,my,mz,mvar) [real,inout]

  • fp (mpar_loc,mparray) [real,in] :: =vz

  • dfp (mpar_loc,mpvar) [real,inout]

  • p [pencil_case,in]

  • ineargrid (mpar_loc,3) [integer,in]

Use :

diagnostics, sub

Call to:

interpolate_linear(), interpolate_quadratic_spline(), get_total_gravity(), get_radial_distance(), integrate_selfgravity(), calc_torque(), sum_lim_mn_name(), reset_center_of_mass(), get_ramped_mass(), fatal_error(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), integrate_mn_name(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/dxxp_dt_nbody(dfp)

If the center of mass of the nbody particles was moved from the center of the grid, reset it.

22-sep-06/wlad: coded

Parameters:

dfp (mpar_loc,mpvar) [real]

Call to:

reset_center_of_mass(), get_ramped_mass(), fatal_error(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), sum_lim_mn_name(), integrate_mn_name(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/dvvp_dt_nbody(f, df, fp, dfp, ineargrid)

Evolution of nbody and dust particles velocities due to particle-particle interaction only.

Coriolis and shear are already added in particles_dust.

27-aug-06/wlad: coded

Parameters:
  • f (mx,my,mz,mfarray) [real,in]

  • df (mx,my,mz,mvar) [real,inout]

  • fp (mpar_loc,mparray) [real,inout] :: =vz

  • dfp (mpar_loc,mpvar) [real,inout]

  • ineargrid (mpar_loc,3) [integer,in]

Use :

mpicomm (mpibcast_real()), sub

Call to:

get_ramped_mass(), fatal_error(), loop_through_nbodies(), point_par_name(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), sum_lim_mn_name(), integrate_mn_name(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/loop_through_nbodies(fp, dfp, k, sq_hills, ineargrid)
Parameters:
  • fp (mpar_loc,mparray) [real] :: =vz

  • dfp (mpar_loc,mpvar) [real]

  • k [integer]

  • sq_hills (mspar) [real]

  • ineargrid (mpar_loc,3) [integer]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody()

Call to:

loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), remove_particle(), fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/loop_through_nbodies_inertial(fp, dfp, k, sq_hills, ineargrid)

Subroutine that adds the gravity from all massive particles. Particle gravity has always to be added in Cartesian, for better conservation of the Jacobi constant.

07-mar-08/wlad:coded

Parameters:
  • fp (mpar_loc,mparray) [real,inout] :: =vz

  • dfp (mpar_loc,mpvar) [real,inout]

  • k [integer,in]

  • sq_hills (mspar) [real]

  • ineargrid (mpar_loc,3) [integer]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies()

Call to:

get_evr(), remove_particle(), fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/loop_through_nbodies_fixstar(fp, dfp, k, sq_hills, ineargrid)

Gravity acceleration for all bodies, in the reference frame of the star. So far, works only for two massive bodies, in Cartesian coordinates.

23-jun-14/wlad: coded

Parameters:
  • fp (mpar_loc,mparray) [real,inout] :: =vz

  • dfp (mpar_loc,mpvar) [real,inout]

  • k [integer,in]

  • sq_hills (mspar) [real]

  • ineargrid (mpar_loc,3) [integer]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/get_evr(xxp, xxsp, evr_cart)

Point-to-point vector distance, in different coordinate systems. Return always in Cartesian.

14-feb-14/wlad: coded

Parameters:
  • xxp (3) [real,in]

  • xxsp (3) [real,in]

  • evr_cart (3) [real,out]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/point_par_name(a, iname)

Register a, a simple scalar, as diagnostic.

Works for individual particle diagnostics.

07-mar-08/wlad: adapted from sum_par_name

Parameters:
  • a [real]

  • iname [integer]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/read_particles_nbody_init_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/write_particles_nbody_init_pars(unit)
Parameters:

unit [integer,in]

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/read_particles_nbody_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/write_particles_nbody_run_pars(unit)
Parameters:

unit [integer,in]

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/reset_center_of_mass(dfp)

If the center of mass was accelerated, reset its position to the center of the grid.

Assumes that the total mass of the particles is one.

27-aug-06/wlad: coded 18-mar-08/wlad: cylindrical and spherical corrections

Parameters:

dfp (mpar_loc,mpvar) [real,inout]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/integrate_selfgravity(p, rrp, xxpar, accg, rp0)

Calculates acceleration on the point (x,y,z)=xxpar due to the gravity of the gas+dust.

15-sep-06/wlad : coded

Parameters:
  • p [pencil_case]

  • rrp (nx) [real]

  • xxpar (3) [real]

  • accg (3) [real,out]

  • rp0 [real]

Use :

mpicomm

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/bcast_nbodyarray(fp)

Broadcast nbody particles across processors The non-root processors, if they find a nbody particle in their

Parameters:

fp (mpar_loc,mparray) [real] ::

=vz

send it to root with a true logical else send a false logical

The root processor receives all the logicals, and if they are true, then receives the value, broadcasting it

07-sep-06/wlad: coded

Use :

mpicomm

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian(), update_position(), update_velocity(), particles_nbody_read_snapshot(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), rprint_particles_nbody(), create_particles_sink_nbody()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/particles_nbody_special()

Fetch fsp array to special module

01-mar-08/wlad: coded

Use :

special (special_calc_particles_nbody())

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/get_totalmass(tmass)

called from global_shear to set the initial keplerian field

Parameters:

tmass [real]

Called from:

register_density(), initialize_density(), init_lnrho(), density_before_boundary(), pencil_criteria_density(), pencil_interdep_density(), density_after_boundary(), dlnrho_dt(), calc_pencils_density()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/get_gravity_field_nbody(grr, gg, ks)

Subroutine that returns the gravity field a particle exterts in a pencil, respecting the coordinate system used

07-mar-08/wlad: coded

Parameters:
  • grr (mx) [real,in]

  • gg (mx,3) [real,out]

  • ks [integer]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity()

Call to:

fatal_error(), sum_lim_mn_name(), integrate_mn_name(), get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/get_ramped_mass()
Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles()

Call to:

get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/calc_nbodygravity_particles(f)

For the case of interpolated gravity, add the gravity of all n-body particles to slots of the f-array.

08-mar-08/wlad: coded

Parameters:

f (mx,my,mz,mfarray) [real]

Call to:

get_ramped_mass(), get_total_gravity(), get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/get_total_gravity(ggt)

Sum the gravities of all massive particles

08-mar-08/wlad: coded

Parameters:

ggt (mx,3) [real,out]

Use :

sub

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles()

Call to:

get_radial_distance(), get_gravity_field_nbody(), add_indirect_term(), update_position(), update_velocity(), read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/add_indirect_term(ks, ggt)

Add the terms due to the reference frame being away from the baricenter. So far, only for one perturber (two massive bodies), and in Cartesian coordinates.

23-jun-14/wlad: coded

Parameters:
  • ks [integer,in]

  • ggt (mx,3) [real]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity()

Call to:

update_position(), update_velocity(), read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/advance_particles_in_cartesian(fp, dfp)

With N-body gravity, the particles should have their position advanced in Cartesian coordinates, for better conservation of the Jacobi constant, even if the grid is polar.

14-feb-14/wlad: coded

Parameters:
  • fp (mpar_loc,mparray) [real] :: =vz

  • dfp (mpar_loc,mpvar) [real]

Call to:

update_position(), update_velocity(), read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/update_position(fp, dfp, xp, yp, zp, vx, vy, vz)

Update position if N-body is used in polar coordinates.

14-feb-14:wlad/coded

Parameters:
Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian()

Call to:

read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/update_velocity(fp, vx, vy, vz, ax, ay, az)

Update velocity if N-body is used in polar coordinates.

14-feb-14:wlad/coded

Parameters:
Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian()

Call to:

read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/particles_nbody_read_snapshot(filename)

Read nbody particle info

01-apr-08/wlad: dummy

Parameters:

filename [character]

Use :

mpicomm (mpibcast_int(), mpibcast_real())

Call to:

read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/particles_nbody_write_snapshot(snapbase, enum[, flist])
Parameters:
  • snapbase [character]

  • enum [logical]

  • flist [character]

Use :

general (safe_character_assign()), sub (update_snaptime(), read_snaptime())

Call to:

read_snaptime(), update_snaptime(), fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/particles_nbody_write_spdim(filename)

Write nspar and mspvar to file.

01-apr-08/wlad: coded

Parameters:

filename [character]

Call to:

fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/rprint_particles_nbody(lreset[, lwrite])

Read and register print parameters relevant for nbody particles.

17-nov-05/anders+wlad: adapted

Parameters:
  • lreset [logical]

  • lwrite [logical]

Use :

diagnostics, farraymanager (farray_index_append()), general (itoa())

Called from:

register_particles_nbody(), initialize_particles_nbody()

Call to:

fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/create_particles_sink_nbody(f, fp, dfp, ineargrid)

If the flow in any place of the grid has gone gravitationally unstable, substitute the local flow by a sink particle. By now, the only criterion is the local Jeans mass. The Jeans length is

lambda_J = sqrt(pi*cs2/(G*rho))

We substitute lambda_J by the biggest resolution element and write the condition in terms of density

rho_J = pi*cs2/G*Delta_x^2

The constant is a free parameter of the module.

13-mar-08/wlad: coded

Parameters:
  • f (mx,my,mz,mfarray) [real]

  • fp (mpar_loc,mparray) [real]

  • dfp (mpar_loc,mpvar) [real]

  • ineargrid (mpar_loc,3) [integer]

Use :

equationofstate (cs20()), farraymanager (farray_use_global()), mpicomm

Call to:

fatal_error(), remove_particle(), merge_and_share(), bcast_nbodyarray(), friends_of_friends(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/remove_particles_sink_nbody(f, fp, dfp, ineargrid)

Subroutine for taking particles out of the simulation due to their proximity to a sink particle or sink point.

Just a dummy routine for now.

25-sep-08/anders: coded

Parameters:
  • f (mx,my,mz,mfarray) [real]

  • fp (mpar_loc,mparray) [real]

  • dfp (mpar_loc,mpvar) [real]

  • ineargrid (mpar_loc,3) [integer]

Call to:

friends_of_friends(), fatal_error(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/merge_and_share(fcsp, nc, fp)

Subroutine to merge a gravitationally unstable cluster of particles into a sink particle

13-mar-08/wlad: coded

Parameters:
  • fcsp (maxsink,mspvar) [real]

  • nc [integer]

  • fp (mpar_loc,mparray) [real]

Use :

mpicomm

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian(), update_position(), update_velocity(), particles_nbody_read_snapshot(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), rprint_particles_nbody(), create_particles_sink_nbody()

Call to:

friends_of_friends(), fatal_error(), warning(), fatal_error_local(), make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance()

subroutine  particles_nbody/friends_of_friends(fcsp, fleft, nc, nfinal)

Algorithm that cluster particles together based on a proximity threshold. It takes a particle and find all its neighbours (=friends). Then loops through the neighbours finding the neighbours of the neighbours (friends of friends), and so on.

13-mar-08/wlad: coded

Parameters:
  • fcsp (maxsink,mspvar) [real]

  • fleft (nspar,mspvar) [real,out]

  • nc [integer,in]

  • nfinal [integer,out]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian(), update_position(), update_velocity(), particles_nbody_read_snapshot(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), rprint_particles_nbody(), create_particles_sink_nbody(), remove_particles_sink_nbody(), merge_and_share()

Call to:

make_cluster(), collapse_cluster(), check_particle(), add_friends(), get_particles_interdistance(), fatal_error()

subroutine  particles_nbody/make_cluster(ks, lchecked, cluster, nc, nf, fcsp)

This subroutine starts a cluster of particles, by checking the first one. Once a particle is checked, it will also look for its neighbours, checking them. In the end, all friends and friends of friends are checked into the cluster.

13-mar-08/wlad: coded

Parameters:
  • ks [integer,in]

  • lchecked (nc) [logical,inout]

  • cluster (nc) [integer,inout]

  • nc [integer,in,]

  • nf [integer,out]

  • fcsp (maxsink,mspvar) [real]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian(), update_position(), update_velocity(), particles_nbody_read_snapshot(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), rprint_particles_nbody(), create_particles_sink_nbody(), remove_particles_sink_nbody(), merge_and_share(), friends_of_friends()

Call to:

check_particle(), add_friends(), get_particles_interdistance(), fatal_error()

subroutine  particles_nbody/check_particle(k, lchecked, cluster, ic, nc, fcsp)

Check (tag) a particle and its neighbours

13-mar-08/wlad : coded

Parameters:
  • k [integer,in]

  • lchecked (nc) [logical,inout]

  • cluster (nc) [integer,inout]

  • ic [integer,inout]

  • nc [integer,in,]

  • fcsp (maxsink,mspvar) [real]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian(), update_position(), update_velocity(), particles_nbody_read_snapshot(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), rprint_particles_nbody(), create_particles_sink_nbody(), remove_particles_sink_nbody(), merge_and_share(), friends_of_friends(), make_cluster(), check_particle(), add_friends()

Call to:

add_friends(), get_particles_interdistance(), check_particle(), fatal_error()

subroutine  particles_nbody/add_friends(par, lchecked, cluster, ic, nc, fcsp)

Add all neighbours of a particle to the cluster. This subroutine is called by check_particle, but also calls it. The procedure is therefore recursive: the loop will be over when all friends of friends are added to the cluster.

13-mar-08/wlad: coded

Parameters:
  • par [integer,in]

  • lchecked (nc) [logical,inout]

  • cluster (nc) [integer,inout]

  • ic [integer,inout]

  • nc [integer,in,]

  • fcsp (maxsink,mspvar) [real]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian(), update_position(), update_velocity(), particles_nbody_read_snapshot(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), rprint_particles_nbody(), create_particles_sink_nbody(), remove_particles_sink_nbody(), merge_and_share(), friends_of_friends(), make_cluster(), check_particle()

Call to:

get_particles_interdistance(), check_particle(), fatal_error()

subroutine  particles_nbody/collapse_cluster(cluster, nf, fcsp, particle)

Collapse the cluster into a single particle with the total mass, momentum and energy of the collapsed stuff

13-mar-08/wlad: coded

Parameters:
  • cluster (nf) [integer,inout]

  • nf [integer,in,]

  • fcsp (maxsink,mspvar) [real]

  • particle (mspvar) [real,out]

Called from:

register_particles_nbody(), initialize_particles_nbody(), pencil_criteria_par_nbody(), pencil_interdep_par_nbody(), calc_pencils_par_nbody(), init_particles_nbody(), dvvp_dt_nbody_pencil(), dxxp_dt_nbody(), dvvp_dt_nbody(), loop_through_nbodies(), loop_through_nbodies_inertial(), loop_through_nbodies_fixstar(), get_evr(), point_par_name(), read_particles_nbody_init_pars(), write_particles_nbody_init_pars(), read_particles_nbody_run_pars(), write_particles_nbody_run_pars(), reset_center_of_mass(), integrate_selfgravity(), bcast_nbodyarray(), particles_nbody_special(), get_totalmass(), get_gravity_field_nbody(), calc_torque(), get_ramped_mass(), calc_nbodygravity_particles(), get_total_gravity(), add_indirect_term(), advance_particles_in_cartesian(), update_position(), update_velocity(), particles_nbody_read_snapshot(), particles_nbody_write_snapshot(), particles_nbody_write_spdim(), rprint_particles_nbody(), create_particles_sink_nbody(), remove_particles_sink_nbody(), merge_and_share(), friends_of_friends()

Call to:

fatal_error()