particles_coagulation

Module

Description

$Id$

This modules takes care of instantaneous coagulation, shattering, erosion, and bouncing of superparticles.

** 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_coagulation = .true.

MVAR CONTRIBUTION 0 MAUX CONTRIBUTION 0


Quick access

Variables:

a0, cdtpcoag, cdtpcoag1, coagulation_fragmentation, critical_mass_ratio_sticking, cum_func_first_i, cum_func_sec_ik, delta_r, deltad, deltav, deltav_grav_floor, droplet_coagulation_model, four_pi_rhopmat_over_three2, idiag_dt1_coag_par, idiag_k100_10, idiag_k100_100, idiag_k100_20, idiag_k100_30, idiag_k100_40, idiag_k100_50, idiag_k100_60, idiag_k100_80, idiag_k10_10, idiag_k20_10, idiag_k20_20, idiag_k30_10, idiag_k30_20, idiag_k30_30, idiag_k40_10, idiag_k40_20, idiag_k40_30, idiag_k40_40, idiag_k50_10, idiag_k50_20, idiag_k50_30, idiag_k50_40, idiag_k50_50, idiag_k60_10, idiag_k60_20, idiag_k60_30, idiag_k60_40, idiag_k60_50, idiag_k60_60, idiag_k80_10, idiag_k80_20, idiag_k80_30, idiag_k80_40, idiag_k80_50, idiag_k80_60, idiag_k80_80, idiag_ncoagpartpm, idiag_ncoagpm, kernel_cst, kernel_lin, kernel_output, kernel_pro, lbrownian_coag_correction, lcheck_reference_radius, lcoag_simultaneous, lcollision_output, lcollision_output_swapped, lconstant_deltav, lconstant_kernel_test, ldroplet_coagulation, ldroplet_coagulation_runtime, lgravitational_cross_section, lkernel_test, llinear_kernel_test, lmaxwell_deltav, lnoselfcollision, lproduct_kernel_test, lrelabelling, lremove_particle, lremove_particle2, lremove_particle_phys, luser_random_number_wrapper, lzsomdullemond, maxwell_param, minimum_particle_mass, minimum_particle_radius, normal_coagulation, part_melt_temp, particles_coag_maxwell, particles_coag_maxwell_johnk, particles_coag_outcome_zd, particles_coag_timestep_zd, particles_coagulation_bisection, r3, r4, r5, r6, r7, r8, r_diff, r_i_tot, r_ik_mat, r_total, radius_output, rbin, rdifference, reference_radius, sphericalkernel, three_over_four_pi_rhopmat, tstart_droplet_coagulation

Routines:

initialize_particles_coag(), particles_coagulation_blocks(), particles_coagulation_pencils(), particles_coagulation_timestep(), read_particles_coag_run_pars(), rprint_particles_coagulation(), write_particles_coag_run_pars()

Needed modules

Variables

  • particles_coagulation/a0 [real,private/optional/default=1.0]
  • particles_coagulation/cdtpcoag [real,private/optional/default=0.2]
  • particles_coagulation/cdtpcoag1 [real,private/optional/default=5.0]
  • particles_coagulation/coagulation_fragmentation [private]
  • particles_coagulation/critical_mass_ratio_sticking [real,private/optional/default=1.0]
  • particles_coagulation/cum_func_first_i (*) [real,private/allocatable]
  • particles_coagulation/cum_func_sec_ik (*,*) [real,private/allocatable]
  • particles_coagulation/delta_r [real,private/optional/default=0.0]
  • particles_coagulation/deltad [real,private/optional/default=1.0]
  • particles_coagulation/deltav [real,private/optional/default=1.0]

    relative velocity

  • particles_coagulation/deltav_grav_floor [real,private/optional/default=0.0]
  • particles_coagulation/droplet_coagulation_model [character,private/optional/default='standard']
  • particles_coagulation/four_pi_rhopmat_over_three2 [real,private/optional/default=0.0]
  • particles_coagulation/gnewton [real,private/optional/default=6.67428e-11]
  • particles_coagulation/idiag_dt1_coag_par [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_100 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_20 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_30 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_40 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_50 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_60 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k100_80 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k10_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k20_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k20_20 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k30_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k30_20 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k30_30 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k40_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k40_20 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k40_30 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k40_40 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k50_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k50_20 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k50_30 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k50_40 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k50_50 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k60_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k60_20 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k60_30 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k60_40 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k60_50 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k60_60 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k80_10 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k80_20 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k80_30 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k80_40 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k80_50 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k80_60 [integer,private/optional/default=0]
  • particles_coagulation/idiag_k80_80 [integer,private/optional/default=0]
  • particles_coagulation/idiag_ncoagpartpm [integer,private/optional/default=0]
  • particles_coagulation/idiag_ncoagpm [integer,private/optional/default=0]
  • particles_coagulation/kernel_cst [real,private/optional/default=1.0]
  • particles_coagulation/kernel_lin [real,private/optional/default=1.0]
  • particles_coagulation/kernel_output [logical,private/optional/default=.false.]
  • particles_coagulation/kernel_pro [real,private/optional/default=1.0]
  • particles_coagulation/lbrownian_coag_correction [logical,private/optional/default=.true.]

    use thermal (coalescence) velocity in the Brownian kernel

  • particles_coagulation/lcheck_reference_radius [logical,private/optional/default=.false.]
  • particles_coagulation/lcoag_simultaneous [logical,private/optional/default=.false.]
  • particles_coagulation/lcollision_output [logical,private/optional/default=.false.]
  • particles_coagulation/lcollision_output_swapped [logical,private/optional/default=.false.]
  • particles_coagulation/lconstant_deltav [logical,private/optional/default=.false.]

    use constant relative velocity

  • particles_coagulation/lconstant_kernel_test [logical,private/optional/default=.false.]
  • particles_coagulation/ldroplet_coagulation [logical,private/optional/default=.false.]
  • particles_coagulation/ldroplet_coagulation_runtime [logical,private/optional/default=.false.]
  • particles_coagulation/lgravitational_cross_section [logical,private/optional/default=.false.]
  • particles_coagulation/lkernel_test [logical,private/optional/default=.false.]
  • particles_coagulation/llinear_kernel_test [logical,private/optional/default=.false.]
  • particles_coagulation/lmaxwell_deltav [logical,private/optional/default=.false.]

    use maxwellian relative velocity

  • particles_coagulation/lnoselfcollision [logical,private/optional/default=.true.]
  • particles_coagulation/lproduct_kernel_test [logical,private/optional/default=.false.]
  • particles_coagulation/lrelabelling [logical,private/optional/default=.false.]
  • particles_coagulation/lremove_particle [logical,private/optional/default=.false.]
  • particles_coagulation/lremove_particle2 [logical,private/optional/default=.false.]
  • particles_coagulation/lremove_particle_phys [logical,private/optional/default=.true.]
  • particles_coagulation/lshear_in_vp [logical,private/optional/default=.true.]
  • particles_coagulation/luser_random_number_wrapper [logical,private/optional/default=.false.]
  • particles_coagulation/lzsomdullemond [logical,private/optional/default=.false.]

    use Zsom and Dullemond method

  • particles_coagulation/maxwell_param [real,private/optional/default=1.0]

    alpha parameter for maxwell distribution

  • particles_coagulation/minimum_particle_mass [real,private/optional/default=0.0]
  • particles_coagulation/minimum_particle_radius [real,private/optional/default=0.0]
  • particles_coagulation/normal_coagulation [logical,private/optional/default=.false.]
  • particles_coagulation/part_melt_temp [real,private/optional/default=0.0]
  • particles_coagulation/particles_coag_maxwell [private]
  • particles_coagulation/particles_coag_maxwell_johnk [private]
  • particles_coagulation/particles_coag_outcome_zd [private]
  • particles_coagulation/particles_coag_timestep_zd [private]
  • particles_coagulation/particles_coagulation_bisection [private]
  • particles_coagulation/r1 [real,private/optional/default=0.0]
  • particles_coagulation/r2 [real,private/optional/default=0.0]
  • particles_coagulation/r3 [real,private/optional/default=0.0]
  • particles_coagulation/r4 [real,private/optional/default=0.0]
  • particles_coagulation/r5 [real,private/optional/default=0.0]
  • particles_coagulation/r6 [real,private/optional/default=0.0]
  • particles_coagulation/r7 [real,private/optional/default=0.0]
  • particles_coagulation/r8 [real,private/optional/default=0.0]
  • particles_coagulation/r_diff [real,private/optional/default=0.0]
  • particles_coagulation/r_i_tot (*) [real,private/allocatable]
  • particles_coagulation/r_ik_mat (*,*) [real,private/allocatable]
  • particles_coagulation/r_total [real,private/optional/default=0.0]
  • particles_coagulation/radius_output [logical,private/optional/default=.false.]
  • particles_coagulation/rbin [integer,private/optional/default=0]
  • particles_coagulation/rdifference [real,private/optional/default=1.0]
  • particles_coagulation/reference_radius [real,private/optional/default=5e-05]
  • particles_coagulation/rhs_poisson_const [real,private/pointer]
  • particles_coagulation/sphericalkernel [logical,private/optional/default=.false.]
  • particles_coagulation/three_over_four_pi_rhopmat [real,private/optional/default=0.0]
  • particles_coagulation/tstart_droplet_coagulation [real,private/optional/default=impossible]

Subroutines and functions

subroutine  particles_coagulation/initialize_particles_coag(f)

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

24-nov-10/anders: coded 15-nov-12/KWJ: modified

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(), shepherd_neighbour_pencil(), sum_par_name(), remove_particle()

subroutine  particles_coagulation/particles_coagulation_timestep(fp, ineargrid)

Time-step contribution from particle coagulation.

30-nov-10/anders: coded 15-nov-12/KWJ: modified

Parameters:
  • fp (mpar_loc,mparray) [real] :: rate matrix element

  • ineargrid (mpar_loc,3) [integer]

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(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

shepherd_neighbour_pencil(), fatal_error(), sum_par_name(), remove_particle()

subroutine  particles_coagulation/particles_coagulation_pencils(fp, ineargrid)

Calculate outcome of superparticle collisions by comparing the collision time-scale to the time-step. A random number is used to determine whether two superparticles collide in this time-step.

Collisions lead to coagulation, shattering, erosion, or bouncing.

24-nov-10/anders: coded 15-nov-12/KWJ: modified

Parameters:
  • fp (mpar_loc,mparray) [real,inout] :: rate matrix element

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

Use :

diagnostics, general (random_number_wrapper())

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(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

shepherd_neighbour_pencil(), fatal_error(), sum_par_name(), remove_particle()

subroutine  particles_coagulation/particles_coagulation_blocks(fp, ineargrid)

Calculate outcome of superparticle collisions by comparing the collision time-scale to the time-step. A random number is used to determine whether two superparticles collide in this time-step.

Collisions lead to coagulation, shattering, erosion, or bouncing.

24-nov-10/anders: coded

Parameters:
  • fp (mpar_loc,mparray) [real] :: rate matrix element

  • ineargrid (mpar_loc,3) [integer]

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(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

fatal_error()

subroutine  particles_coagulation/read_particles_coag_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

subroutine  particles_coagulation/write_particles_coag_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_coagulation/rprint_particles_coagulation(lreset[, lwrite])

Read and register diagnostic parameters.

28-mar-09/anders: adapted

Parameters:
  • lreset [logical]

  • lwrite [logical]

Use :

diagnostics

Called from:

particles_register_modules(), particles_rprint_list()