particles_sub
Module
Description
$Id$
This module contains useful subroutines for the particle modules. Subroutines that depend on domain decomposition should be put in the Particles_map module.
Quick access
- Variables:
calc_velocity_averages,diffuse_domain_scalar,fp_rmv,fp_sink,get_rhopswarm,get_rhopswarm_block,get_rhopswarm_ineargrid,get_rhopswarm_pencil,get_rhopswarm_point,ipar_rmv,ipar_sink,mrmv,nrmv,particlemesh_weighting,remove_particle_log,sharpen_tsc_density,smooth_kernel_domain- Routines:
append_npaux(),append_npvar(),assign_species(),boundconds_particles(),count_particles(),diffuse_interaction(),dragforce_equi_multispecies(),find_grid_volume(),find_interpolation_indeces(),find_interpolation_weight(),find_weight_array_dims(),get_gas_density(),get_particles_interdistance(),input_particles(),integrate_par_name(),max_par_name(),output_particle_size_dist(),output_particles(),precalc_weights(),remove_particle(),remove_particle_initialize(),remove_particle_writelog(),sum_par_name(),weigh_particle()
Needed modules
cdata: $Id$general(keep_compiler_quiet()): $Id$messages: $Id$particles_cdata: $Id$particles_mpicomm: $Id$
Variables
- particles_sub/calc_velocity_averages [private]
- particles_sub/diffuse_domain_scalar [private]
- particles_sub/fp_rmv (*,*) [real,private/allocatable]
- particles_sub/fp_sink (*,*) [real,private/allocatable]
- particles_sub/get_rhopswarm [public]
- particles_sub/get_rhopswarm_block [private]
- particles_sub/get_rhopswarm_ineargrid [private]
- particles_sub/get_rhopswarm_pencil [private]
- particles_sub/get_rhopswarm_point [private]
- particles_sub/ipar_rmv (*) [integer,private/allocatable]
- particles_sub/ipar_sink (*) [integer,private/allocatable]
- particles_sub/mrmv [integer,private/optional/default=1]
- particles_sub/nrmv [integer,private/optional/default=0]
number of removed particles
- particles_sub/particlemesh_weighting [private]
- particles_sub/remove_particle_log [private]
- particles_sub/sharpen_tsc_density [private]
- particles_sub/smooth_kernel_domain [private]
Subroutines and functions
- function particles_sub/assign_species(ipar)
- Parameters:
ipar [integer,in]
- Return:
p [real]
- subroutine particles_sub/input_particles(filename, fp, ipar)
Read snapshot file with particle data.
24-Oct-2018/PABourdin: coded
- Parameters:
filename [character,in]
fp (mpar_loc,mparray) [real,out] :: r*sin(theta)
ipar (mpar_loc) [integer,out] ::
’
- Use :
- Called from:
particles_register_modules(),particles_rprint_list(),particles_initialize_modules(),particles_init(),particles_finalize(),particles_read_snapshot(),read_all_particles_init_pars(),read_all_particles_run_pars(),write_dim_particles(),read_snapshot_particles()- Call to:
input_part_snap(),output_part_snap(),particle_index_append(),fatal_error(),fatal_error_local(),remove_particle(),stop_it(),migrate_particles(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/output_particles(filename, fp, ipar)
Write snapshot file with particle data.
24-Oct-2018/PABourdin: coded
- Parameters:
filename [character,in]
fp (mpar_loc,mparray) [real,in] :: r*sin(theta)
ipar (mpar_loc) [integer,in] ::
’
- Use :
- 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()- Call to:
output_part_snap(),particle_index_append(),fatal_error(),fatal_error_local(),remove_particle(),stop_it(),migrate_particles(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/append_npvar(label, ilabel)
- Parameters:
label [character,in]
ilabel [integer,out]
- Use :
- Called from:
register_particles(),register_particles_nbody(),register_particles_radius(),register_particles_ads(),register_particles_caustics(),register_particles_density(),register_pars_diagnos_state(),register_particles_grad(),register_particles_lyapunov(),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(),particles_powersnap(),get_slices_particles(),write_dim_particles(),write_snapshot_particles(),read_snapshot_particles(),particles_stochastic(),fetch_nparloc(),append_particle_index(),register_particles_mass(),register_particles_number(),register_particles_sink(),register_particles_spin(),register_particles_surfspec(),register_particles_tt(),register_particles_tetrad()- Call to:
particle_index_append(),fatal_error(),fatal_error_local(),remove_particle(),stop_it(),migrate_particles(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/append_npaux(label, ilabel)
- Parameters:
label [character,in]
ilabel [integer,out]
- Use :
- Called from:
register_particles(),register_particles_radius(),register_particles_breakup(),register_particles_caustics(),register_particles_tetrad()- Call to:
particle_index_append(),fatal_error(),fatal_error_local(),remove_particle(),stop_it(),migrate_particles(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/boundconds_particles(fp, ipar[, dfp[, linsert]])
Global boundary conditions for particles.
30-dec-04/anders: coded
- Parameters:
fp (mpar_loc,mparray) [real,inout] :: r*sin(theta)
ipar (mpar_loc) [integer,inout] ::
’
dfp (mpar_loc,mpvar) [real,inout,]
linsert [logical]
- Use :
mpicomm,general(random_number_wrapper()),particles_mpicomm,sharedvariables(get_shared_variable())- Called from:
register_particles(),initialize_particles(),init_particles(),insert_lost_particles(),insert_particles(),particles_dragforce_stiff(),pencil_criteria_particles(),pencil_interdep_particles(),calc_pencils_particles(),dxxp_dt(),dvvp_dt(),dxxp_dt_pencil(),dvvp_dt_pencil(),dxxp_dt_blocks(),dvvp_dt_blocks(),remove_particles_sink_simple(),create_particles_sink_simple(),read_particles_init_pars(),write_particles_init_pars(),read_particles_run_pars(),write_particles_run_pars(),powersnap_particles(),register_particles_nbody(),initialize_particles_nbody(),pencil_criteria_par_nbody(),pencil_interdep_par_nbody(),calc_pencils_par_nbody(),init_particles_nbody(),calc_diagnostics_particles(),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(),register_particles_sink(),initialize_particles_sink(),init_particles_sink(),calc_selfpot_sinkparticles(),create_particles_sink(),remove_particles_sink()- Call to:
fatal_error_local(),fatal_error(),remove_particle(),stop_it(),migrate_particles(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/sum_par_name(a, iname[, lsqrt[, llog10[, len]]])
Successively calculate sum of a, which is supplied at each call. Works for particle diagnostics. The number of particles is stored as
- Parameters:
a (*) [real] ::
weight used later for normalisation of sum.
- TODO: All processors must enter this subroutine in order to set the
diagnostics type right, even processors with no particles. One can do this by calling sum_par_name(fp(1:npar_loc,ixp),…), which sends an array of zero size. This is a bug and needs to be fixed.
02-jan-05/anders: adapted from sum_mn_name
iname [integer]
lsqrt [logical]
llog10 [logical]
len [integer]
- Called from:
register_particles(),initialize_particles(),init_particles(),particles_dragforce_stiff(),pencil_criteria_particles(),pencil_interdep_particles(),calc_pencils_particles(),dxxp_dt(),periodic_boundcond_on_aux(),register_particles_radius(),initialize_particles_radius(),set_particle_radius(),pencil_criteria_par_radius(),dap_dt_pencil(),dap_dt(),dap_dt_supersat_pencil(),register_particles_ads(),initialize_particles_ads(),init_particles_ads(),pencil_criteria_par_ads(),dpads_dt(),register_particles_breakup(),initialize_particles_breakup(),read_particles_breakup_init_pars(),write_particles_breakup_init_pars(),read_particles_breakup_run_pars(),write_particles_breakup_run_pars(),rprint_particles_breakup(),dbreakup_dt(),register_particles_caustics(),initialize_particles_caustics(),init_particles_caustics(),dcaustics_dt(),initialize_particles_coag(),particles_coagulation_timestep(),particles_coagulation_pencils(),initialize_particles_collisions(),particles_collisions_timestep(),particles_collisions_pencils(),particles_collisions_blocks(),register_pars_diagnos_state(),initialize_pars_diagnos_state(),init_particles_diagnos_state(),insert_particles_diagnos_state(),read_pars_diag_state_run_pars(),write_pars_diag_state_run_pars(),rprint_particles_diagnos_state(),persistence_check(),register_particles_lyapunov(),initialize_particles_lyapunov(),init_particles_lyapunov(),dlyapunov_dt(),register_particles_mass(),initialize_particles_mass(),init_particles_mass(),pencil_criteria_par_mass(),dpmass_dt(),register_particles_number(),initialize_particles_number(),init_particles_number(),set_particle_number(),pencil_criteria_par_number(),dnpswarm_dt_pencil(),dnpswarm_dt(),calc_diagnostics_particles_num(),register_particles_persistence(),initialize_particles_persist(),init_particles_persistence(),dpersist_dt(),calc_diagnostics_particles_rad(),register_particles_selfgrav(),initialize_particles_selfgrav(),calc_selfpotential_particles(),pencil_criteria_par_selfgrav(),pencil_interdep_par_selfgrav(),calc_pencils_par_selfgrav(),dvvp_dt_selfgrav_pencil(),calc_diagnostics_particles_selg(),dvvp_dt_selfgrav(),register_particles_spin(),initialize_particles_spin(),init_particles_spin(),pencil_criteria_par_spin(),dps_dt_pencil(),dps_dt(),register_particles_surfspec(),init_particles_surf(),read_particles_surf_init_pars(),write_particles_surf_init_pars(),read_particles_surf_run_pars(),write_particles_surf_run_pars(),initialize_particles_surf(),dpsurf_dt(),register_particles_tt(),initialize_particles_tt(),init_particles_tt(),pencil_criteria_par_tt(),dptt_dt(),register_particles_tetrad(),initialize_particles_tetrad(),init_particles_tetrad(),dtetrad_dt()- Call to:
fatal_error(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/max_par_name(a, iname[, lneg[, len]])
Successively calculate maximum of a, which is supplied at each call. Works for particle diagnostics.
28-nov-05/anders: adapted from max_par_name
- Parameters:
a (*) [real]
iname [integer]
lneg [logical]
len [integer]
- Called from:
register_particles_radius(),initialize_particles_radius(),set_particle_radius(),pencil_criteria_par_radius(),dap_dt_pencil(),dap_dt(),dap_dt_supersat_pencil(),register_particles_breakup(),initialize_particles_breakup(),read_particles_breakup_init_pars(),write_particles_breakup_init_pars(),read_particles_breakup_run_pars(),write_particles_breakup_run_pars(),rprint_particles_breakup(),dbreakup_dt(),register_particles_grad(),initialize_particles_grad(),pencil_criteria_par_grad(),set_particle_grad(),dsigmap_dt_pencil(),dsigmap_dt(),register_particles_mass(),initialize_particles_mass(),init_particles_mass(),pencil_criteria_par_mass(),dpmass_dt(),register_particles_number(),initialize_particles_number(),init_particles_number(),set_particle_number(),pencil_criteria_par_number(),dnpswarm_dt_pencil(),dnpswarm_dt(),calc_diagnostics_particles_num(),calc_diagnostics_particles_rad()- Call to:
fatal_error(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/integrate_par_name(a, iname[, lsqrt[, llog10[, len]]])
Calculate integral of a, which is supplied at each call. Works for particle diagnostics.
29-nov-05/anders: adapted from sum_par_name
- Parameters:
a (*) [real]
iname [integer]
lsqrt [logical]
llog10 [logical]
len [integer]
- Called from:
register_particles_number(),initialize_particles_number(),init_particles_number(),set_particle_number(),pencil_criteria_par_number(),dnpswarm_dt_pencil(),dnpswarm_dt(),calc_diagnostics_particles_num()- Call to:
fatal_error(),fourier_transform_shear(),fourier_transform(),output_part_rmv()
- subroutine particles_sub/get_particles_interdistance(xx1, xx2[, vector[, distance[, lsquare]]])
The name of the subroutine is pretty self-explanatory.
14-mar-08/wlad: moved here from the N-body code.
- Parameters:
xx1 (3) [real]
xx2 (3) [real]
vector (3) [real]
distance [real]
lsquare [logical]
- 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:
- subroutine particles_sub/remove_particle(fp, ipar, k[, dfp[, ineargrid[, ks]]])
- Parameters:
fp (mpar_loc,mparray) [real,inout]
ipar (mpar_loc) [integer]
k [integer,in]
dfp (mpar_loc,mpvar) [real,inout,]
ineargrid (mpar_loc,3) [integer,inout,]
ks [integer,in,]
- 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(),initialize_particles_coag(),particles_coagulation_timestep(),particles_coagulation_pencils(),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(),particles_powersnap(),get_slices_particles(),write_dim_particles(),write_snapshot_particles(),read_snapshot_particles(),particles_stochastic(),fetch_nparloc(),append_particle_index(),fetch_fp_array(),return_fp_array(),register_particles_sink(),initialize_particles_sink(),init_particles_sink(),calc_selfpot_sinkparticles(),create_particles_sink(),remove_particles_sink(),input_particles(),output_particles(),append_npvar(),append_npaux(),boundconds_particles()- Call to:
- subroutine particles_sub/remove_particle_initialize()
Allocates buffers for logging removed particles.
21-jan-24/ccyang: coded
- Called from:
particles_register_modules(),particles_rprint_list(),particles_initialize_modules()- Call to:
- subroutine particles_sub/remove_particle_writelog()
Writes the log of removed particles and clears the log.
21-jan-24/ccyang: coded
- Use :
- 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(),read_all_particles_init_pars(),read_all_particles_run_pars(),write_dim_particles(),write_snapshot_particles(),read_snapshot_particles()- Call to:
- subroutine particles_sub/count_particles(ipar, npar_found)
- Parameters:
ipar (mpar_loc) [integer]
npar_found [integer]
- Use :
- subroutine particles_sub/output_particle_size_dist(fp)
Calculate size distribution of particles and output to file.
6-feb-11/anders: coded
- Parameters:
fp (mpar_loc,mparray) [real,in]
- Use :
- 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()
- subroutine particles_sub/find_grid_volume(ixx, iyy, izz, volume_cell)
Find the volume of the grid cell
24-sep-14/nils: coded
- Parameters:
ixx [integer,in]
iyy [integer,in]
izz [integer,in]
volume_cell [real,out]
- subroutine particles_sub/find_interpolation_weight(weight, fp, k, ixx, iyy, izz, ix0, iy0, iz0)
- Parameters:
weight [real]
fp (mpar_loc,mparray) [real,in]
k [integer,in]
ixx [integer,in]
iyy [integer,in]
izz [integer,in]
ix0 [integer,in]
iy0 [integer,in]
iz0 [integer,in]
- subroutine particles_sub/find_interpolation_indeces(ixx0, ixx1, iyy0, iyy1, izz0, izz1, fp, k, ix0, iy0, iz0)
- Parameters:
ixx0 [integer,out]
ixx1 [integer,out]
iyy0 [integer,out]
iyy1 [integer,out]
izz0 [integer,out]
izz1 [integer,out]
fp (mpar_loc,mparray) [real,in]
k [integer,in]
ix0 [integer,in]
iy0 [integer,in]
iz0 [integer,in]
- Called from:
register_particles_surfspec(),init_particles_surf(),read_particles_surf_init_pars(),write_particles_surf_init_pars(),read_particles_surf_run_pars(),write_particles_surf_run_pars(),initialize_particles_surf(),dpsurf_dt(),dpsurf_dt_pencil(),register_particles_tt(),initialize_particles_tt(),init_particles_tt(),pencil_criteria_par_tt(),dptt_dt_pencil(),dptt_dt()
- function particles_sub/weigh_particle(dxi1, dxi2, dxi3)
- Parameters:
dxi1 [real,in]
dxi2 [real,in]
dxi3 [real,in]
- Return:
weight [real]
- Called from:
initialize_particles_map(),map_nearest_grid(),map_xxp_grid(),map_vvp_grid()
- function particles_sub/get_gas_density(f, ix, iy, iz)
Reads the gas density at location (ix, iy, iz).
19-jun-14/ccyang: coded.
- Parameters:
- Return:
rho [real]
- Use :
equationofstate(get_stratz(),rho0()),densitymethods(getrho_s())- Call to:
- subroutine particles_sub/precalc_weights(weight_array)
- Parameters:
weight_array (,,*) [real]
- Called from:
register_particles_surfspec(),initialize_particles_surf(),register_particles_tt(),initialize_particles_tt()- Call to:
- subroutine particles_sub/dragforce_equi_multispecies(npar_species, tausp, eps, eta_vk, vpx, vpy, ux, uy)
Finds the multi-species drag force equilibrium solution.
12-aug-16/nschaffer+ccyang: coded.
- Reference:
Appendix A, Bai, X.-N., & Stone, J.~M. 2010, ApJ, 722, 1437
- subroutine particles_sub/find_weight_array_dims(ndimx, ndimy, ndimz)
- Parameters:
ndimx [integer]
ndimy [integer]
ndimz [integer]
- Called from:
- Call to:
- subroutine particles_sub/diffuse_interaction(domain, ldiff, lexp, rdiffconst)
- Parameters:
- Called from:
register_particles_surfspec(),init_particles_surf(),read_particles_surf_init_pars(),write_particles_surf_init_pars(),read_particles_surf_run_pars(),write_particles_surf_run_pars(),initialize_particles_surf(),dpsurf_dt(),register_particles_tt(),initialize_particles_tt(),init_particles_tt(),pencil_criteria_par_tt(),dptt_dt()- Call to: