particles_sink

Module

Description

$Id: particles_dust.f90 19206 2012-06-30 21:40:24Z sven.bingert $

This module takes care of everything related to sink particles.

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

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

CPARAM logical, parameter :: lparticles_sink=.true.

MPVAR CONTRIBUTION 1


Quick access

Variables:

aps0, aps1, aps2, aps3, bondi_accretion_grav_smooth, cdtsubgrid, idiag_nparsink, idiag_rhopinterp, initaps, laccrete_sink_sink, lbondi_accretion, ldebug_subgrid_accretion, lrhop_roche_unit, lselfgravity_sinkparticles, lsink_communication_all_to_all, lsink_create_one_per_27_cells, lsink_create_one_per_cell, lsink_radius_dx_unit, lsubgrid_accretion, lsubgrid_accretion_attempt, rhop_sink_create, rsurf_subgrid, rsurf_to_rhill, sink_birth_radius, sink_particle_accretion, sink_radius, subgrid_accretion, tausp1_species, tausp_species

Routines:

calc_selfpot_sinkparticles(), create_particles_sink(), init_particles_sink(), initialize_particles_sink(), read_particles_sink_init_pars(), read_particles_sink_run_pars(), register_particles_sink(), remove_particles_sink(), rprint_particles_sink(), write_particles_sink_init_pars(), write_particles_sink_run_pars()

Needed modules

Variables

  • particles_sink/aps0 [real,private/optional/default=0.0]
  • particles_sink/aps1 [real,private/optional/default=0.0]
  • particles_sink/aps2 [real,private/optional/default=0.0]
  • particles_sink/aps3 [real,private/optional/default=0.0]
  • particles_sink/bondi_accretion_grav_smooth [real,private/optional/default=1.35]
  • particles_sink/cdtsubgrid [real,private/optional/default=0.1]
  • particles_sink/gravitational_const [real,private/pointer]
  • particles_sink/idiag_nparsink [integer,private/optional/default=0]
  • particles_sink/idiag_rhopinterp [integer,private/optional/default=0]
  • particles_sink/initaps (ninit) [character,private/optional/default='nothing']
  • particles_sink/laccrete_sink_sink [logical,private/optional/default=.true.]
  • particles_sink/lbondi_accretion [logical,private/optional/default=.false.]
  • particles_sink/ldebug_subgrid_accretion [logical,private/optional/default=.false.]
  • particles_sink/lrhop_roche_unit [logical,private/optional/default=.false.]
  • particles_sink/lselfgravity_sinkparticles [logical,private/optional/default=.true.]
  • particles_sink/lsink_communication_all_to_all [logical,private/optional/default=.false.]
  • particles_sink/lsink_create_one_per_27_cells [logical,private/optional/default=.false.]
  • particles_sink/lsink_create_one_per_cell [logical,private/optional/default=.false.]
  • particles_sink/lsink_radius_dx_unit [logical,private/optional/default=.false.]
  • particles_sink/lsubgrid_accretion [logical,private/optional/default=.false.]
  • particles_sink/lsubgrid_accretion_attempt (*) [logical,private/allocatable]
  • particles_sink/rhop_sink_create [real,private/optional/default=-1.0]
  • particles_sink/rsurf_subgrid [real,private/optional/default=0.001]
  • particles_sink/rsurf_to_rhill [real,private/optional/default=0.0]
  • particles_sink/sink_birth_radius [real,private/optional/default=1.0]
  • particles_sink/sink_particle_accretion [private]
  • particles_sink/sink_radius [real,private/optional/default=0.0]
  • particles_sink/subgrid_accretion [private]
  • particles_sink/tausp1_species (*) [real,private/pointer]
  • particles_sink/tausp_species (*) [real,private/pointer]
  • particles_sink/tselfgrav_gentle [real,private/pointer]
  • particles_sink/tstart_selfgrav [real,private/pointer]

Subroutines and functions

subroutine  particles_sink/register_particles_sink()

Set up indices for access to the fp and dfp arrays

07-aug-12/anders: coded

Called from:

particles_register_modules()

Call to:

svn_id(), append_npvar(), fatal_error(), map_xxp_grid(), interpolate_linear(), interpolate_quadratic_spline(), interpolate_quadratic(), map_nearest_grid(), fatal_error_local(), fatal_error_local_collect(), remove_particle(), boundconds_particles()

subroutine  particles_sink/initialize_particles_sink(f)

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

07-aug-12/anders: coded

Parameters:

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

Use :

sharedvariables (get_shared_variable())

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules()

Call to:

fatal_error(), map_xxp_grid(), interpolate_linear(), interpolate_quadratic_spline(), interpolate_quadratic(), map_nearest_grid(), fatal_error_local(), fatal_error_local_collect(), remove_particle(), boundconds_particles()

subroutine  particles_sink/init_particles_sink(f, fp)

Initial sink particle radii.

07-aug-12/anders: coded

Parameters:
Use :

general (random_number_wrapper())

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init()

Call to:

fatal_error(), map_xxp_grid(), interpolate_linear(), interpolate_quadratic_spline(), interpolate_quadratic(), map_nearest_grid(), fatal_error_local(), fatal_error_local_collect(), remove_particle(), boundconds_particles()

subroutine  particles_sink/calc_selfpot_sinkparticles(f, rhs_poisson, fp, ineargrid)

Calculate the gravitational potential of the sink particles.

13-jun-06/anders: coded

Parameters:
Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_calc_selfpotential(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

map_xxp_grid(), interpolate_linear(), interpolate_quadratic_spline(), interpolate_quadratic(), map_nearest_grid(), fatal_error_local(), fatal_error_local_collect(), remove_particle(), fatal_error(), boundconds_particles()

subroutine  particles_sink/create_particles_sink(f, fp, dfp, ineargrid)

Create sink particles based on local particle density.

07-aug-12/anders: coded 25-aug-15/ccyang: added switch to create at most one sink per cell 03-jan-23/urs: added switch to create at most one sink in each cube of 3x3x3 cells

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

  • fp (mpar_loc,mparray) [real]

  • dfp (mpar_loc,mpvar) [real] :: Index of sink which removed the particle

  • ineargrid (mpar_loc,3) [integer]

Use :

diagnostics

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_pencil_interdep(), particles_calc_pencils(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), particles_pde(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

interpolate_linear(), interpolate_quadratic_spline(), interpolate_quadratic(), map_nearest_grid(), fatal_error_local(), fatal_error_local_collect(), remove_particle(), fatal_error(), boundconds_particles()

subroutine  particles_sink/remove_particles_sink(f, fp, dfp, ineargrid)

Remove particles in the vicinity of sink particles.

07-aug-12/anders: coded

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

  • fp (mpar_loc,mparray) [real]

  • dfp (mpar_loc,mpvar) [real] :: Index of sink which removed the particle

  • ineargrid (mpar_loc,3) [integer]

Use :

mpicomm (mpisend_int(), mpirecv_int(), mpisend_real(), mpirecv_real(), mpibcast_int(), mpibcast_real(), mpireduce_sum())

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

map_nearest_grid(), fatal_error_local(), fatal_error_local_collect(), remove_particle(), fatal_error(), boundconds_particles(), interpolate_linear()

subroutine  particles_sink/read_particles_sink_init_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

subroutine  particles_sink/write_particles_sink_init_pars(unit)
Parameters:

unit [integer,in]

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_pencil_interdep(), particles_calc_pencils(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), particles_pde(), particles_pde_pencil(), particles_calc_pencil_diags(), particles_pde_blocks(), read_all_particles_init_pars(), write_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

subroutine  particles_sink/read_particles_sink_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

subroutine  particles_sink/write_particles_sink_run_pars(unit)
Parameters:

unit [integer,in]

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_pencil_interdep(), particles_calc_pencils(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), particles_pde(), particles_pde_pencil(), particles_calc_pencil_diags(), particles_pde_blocks(), read_all_particles_init_pars(), write_all_particles_init_pars(), read_all_particles_run_pars(), write_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

subroutine  particles_sink/rprint_particles_sink(lreset[, lwrite])

Read and register print parameters relevant for particles sink radius.

11-aug-12/anders: coded

Parameters:
  • lreset [logical]

  • lwrite [logical]

Use :

diagnostics (parse_name())

Called from:

particles_register_modules(), particles_rprint_list()