dustvelocity

Module

Description

$Id$

This module takes care of everything related to dust velocity

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

MVAR CONTRIBUTION 3 MAUX CONTRIBUTION 0

PENCILS PROVIDED divud(ndustspec); ood(3,ndustspec); od2(ndustspec) PENCILS PROVIDED oud(ndustspec); ud2(ndustspec); udij(3,3,ndustspec) PENCILS PROVIDED sdij(3,3,ndustspec); udgud(3,ndustspec); uud(3,ndustspec) PENCILS PROVIDED del2ud(3,ndustspec); del6ud(3,ndustspec) PENCILS PROVIDED graddivud(3,ndustspec); advec_uud(ndustspec)

** AUTOMATIC REFERENCE-LINK.TEX GENERATION **************** Declare relevant citations from pencil-code/doc/citations/ref.bib for this module. The entries are taken from pencil-code/doc/citations/notes.tex

2004A&A…417..361J,%Johansen, Andersen & Brandenburg “Simulations of dust-trapping vortices in protoplanetary discs” 2022JFM…934A..37H,%Haugen+ “Spectral characterisation of inertial particle clustering in turbulence”


Quick access

Variables:

ad, ad0, ad1, add_pseudo_coriolis_force, adref_nud, advec_hypermesh_uud, ampl_udx, ampl_udy, ampl_udz, ampluud, betad0, betad_all, borderuud, cdtd, deltamd, diffus_nud, diffus_nud3, dimd1, direct_integration_of_motion, draglaw, dust_binning, dust_chemistry, dust_geometry, dust_pressure_factor, dustbin_width, enum_borderuud, enum_draglaw, enum_dust_binning, enum_dust_chemistry, get_dustcrosssection, get_dustsurface, get_stoppingtime, grad6_uud, gravx_dust, idiag_divud2m, idiag_dtnud, idiag_dtud, idiag_ekintot_dust, idiag_epskd, idiag_od2m, idiag_odmax, idiag_odrms, idiag_oudm, idiag_rdudmax, idiag_rdudx2m, idiag_rdudxm, idiag_rdudym, idiag_rdudzm, idiag_ud2m, idiag_udm2, idiag_udmax, idiag_udmx, idiag_udmy, idiag_udmz, idiag_udrms, idiag_udx2m, idiag_udx2mz, idiag_udxm, idiag_udxmxy, idiag_udxmz, idiag_udy2m, idiag_udy2mz, idiag_udym, idiag_udymxy, idiag_udymz, idiag_udz2m, idiag_udz2mz, idiag_udzm, idiag_udzmxy, idiag_udzmz, iefficiency_type, inituud, iviscd, kx_uud, ky_uud, kz_uud, ladvection_dust, lcoriolisforce_dust, ldragforce_dust, ldust_pressure, ldustcoagulation, ldustcondensation, ldustvelocity_shorttausd, llin_radiusbins, llog_massbins, lpifactor1, lpifactor2, lstokes_highspeed_corr, lviscd_hyper3_mesh, lviscd_hyper3_nud_const, lviscd_hyper3_polar, lviscd_hyper3_rhod_nud_const, lviscd_hyper3_simplified, lviscd_nud_const, lviscd_shock, lviscd_shock_simplified, lviscd_simplified, lvshear_dust_global_eps, md, md0, mdminus, mdplus, mmon, mu_ext, mumon, nud, nud_all, nud_hyper3, nud_hyper3_mesh, nud_shock, omega_pseudo, phase_udx, phase_udy, phase_udz, reinitialize_uud, rhod0, rhods, rhodsad1, scalehtaus, scolld, set_border_dustvelocity, short_stopping_time_approximation, shorttaus1limit, shorttauslimit, surfd, surfmon, tausd, tausd1, tausd_all, tausg1max, tausgmin, u0_gas_pseudo, unit_md, ustcst, uudx0, uudy0, uudz0, viscd_exponent, viscd_law, widthtaus, z0taus

Routines:

calc_diagnostics_dustvelocity(), calc_pencils_dustvelocity(), copy_bcs_dust(), duud_dt(), get_slices_dustvelocity(), init_uud(), initialize_dustvelocity(), pencil_criteria_dustvelocity(), pencil_interdep_dustvelocity(), read_dustvelocity_init_pars(), read_dustvelocity_run_pars(), register_dustvelocity(), rprint_dustvelocity(), write_dustvelocity_init_pars(), write_dustvelocity_run_pars()

Needed modules

Variables

  • dustvelocity/ad (ndustspec) [real,public/optional/default=0.]
  • dustvelocity/ad0 [real,private/optional/default=0.0]
  • dustvelocity/ad1 [real,private/optional/default=0.0]
  • dustvelocity/add_pseudo_coriolis_force [private]
  • dustvelocity/adref_nud [real,private/optional/default=0.0]
  • dustvelocity/advec_hypermesh_uud (nx) [real,private]
  • dustvelocity/ampl_udx [real,private/optional/default=0.0]
  • dustvelocity/ampl_udy [real,private/optional/default=0.0]
  • dustvelocity/ampl_udz [real,private/optional/default=0.0]
  • dustvelocity/ampluud [real,private/optional/default=0.0]
  • dustvelocity/beta_dpdr_dust [real,private/optional/default=0.0]
  • dustvelocity/beta_dpdr_dust_scaled [real,private/optional/default=0.0]
  • dustvelocity/betad (ndustspec) [real,private/optional/default=0.0]
  • dustvelocity/betad0 [real,private/optional/default=0.0]
  • dustvelocity/betad_all [real,private/optional/default=0.0]
  • dustvelocity/borderuud [character,private/optional/default='nothing']
  • dustvelocity/cdtd [real,private/optional/default=0.2]
  • dustvelocity/coeff (7) [complex,private/optional/default=0.]
  • dustvelocity/deltamd [real,private/optional/default=1.0]
  • dustvelocity/diffus_nud (nx) [real,private]
  • dustvelocity/diffus_nud3 (nx) [real,private]
  • dustvelocity/dimd1 [real,private/optional/default=0.333333]
  • dustvelocity/direct_integration_of_motion [private]
  • dustvelocity/draglaw [character,private/optional/default='epstein_cst']
  • dustvelocity/dust_binning [character,public/optional/default='log_mass']
  • dustvelocity/dust_chemistry [character,public/optional/default='nothing']
  • dustvelocity/dust_geometry [character,private/optional/default='sphere']
  • dustvelocity/dust_pressure_factor [real,private/optional/default=1.0]
  • dustvelocity/dustbin_width [real,private]
  • dustvelocity/enum_borderuud [integer,private/optional/default=0]
  • dustvelocity/enum_draglaw [integer,private/optional/default=0]
  • dustvelocity/enum_dust_binning [integer,private/optional/default=0]
  • dustvelocity/enum_dust_chemistry [integer,private/optional/default=0]
  • dustvelocity/get_dustcrosssection [private]
  • dustvelocity/get_dustsurface [private]
  • dustvelocity/get_stoppingtime [private]
  • dustvelocity/grad6_uud (nx,3,3,ndustspec) [real,private]
  • dustvelocity/gravx_dust [real,private/optional/default=0.0]
  • dustvelocity/idiag_divud2m (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_dtnud (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_dtud (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_ekintot_dust [integer,private/optional/default=0]
  • dustvelocity/idiag_epskd (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_od2m (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_odmax (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_odrms (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_oudm (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_rdudmax (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_rdudx2m (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_rdudxm (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_rdudym (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_rdudzm (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_ud2m (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udm2 (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udmax (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udmx (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udmy (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udmz (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udrms (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udx2m (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udx2mz (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udxm (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udxmxy (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udxmz (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udy2m (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udy2mz (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udym (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udymxy (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udymz (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udz2m (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udz2mz (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udzm (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udzmxy (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/idiag_udzmz (ndustspec) [integer,private/optional/default=0]
  • dustvelocity/iefficiency_type [character,private/optional/default='nothing']
  • dustvelocity/inituud (ninit) [character,private/optional/default='nothing']
  • dustvelocity/iviscd (4) [character,private/optional/default='']
  • dustvelocity/kx_uud [real,private/optional/default=1.0]
  • dustvelocity/ky_uud [real,private/optional/default=1.0]
  • dustvelocity/kz_uud [real,private/optional/default=1.0]
  • dustvelocity/ladvection_dust [logical,private/optional/default=.true.]
  • dustvelocity/lcoriolisforce_dust [logical,private/optional/default=.true.]
  • dustvelocity/ldragforce_dust [logical,private/optional/default=.true.]
  • dustvelocity/ldragforce_gas [logical,private/optional/default=.false.]
  • dustvelocity/ldust_pressure [logical,private/optional/default=.false.]
  • dustvelocity/ldustcoagulation [logical,public/optional/default=.false.]
  • dustvelocity/ldustcondensation [logical,public/optional/default=.false.]
  • dustvelocity/ldustvelocity_shorttausd [logical,private/optional/default=.false.]
  • dustvelocity/llin_radiusbins [logical,private/optional/default=.false.]
  • dustvelocity/llog_massbins [logical,private/optional/default=.true.]
  • dustvelocity/lpifactor1 [logical,private/optional/default=.false.]
  • dustvelocity/lpifactor2 [logical,private/optional/default=.false.]
  • dustvelocity/lstokes_highspeed_corr [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_hyper3_mesh [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_hyper3_nud_const [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_hyper3_polar [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_hyper3_rhod_nud_const [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_hyper3_simplified [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_nud_const [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_shock [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_shock_simplified [logical,private/optional/default=.false.]
  • dustvelocity/lviscd_simplified [logical,private/optional/default=.false.]
  • dustvelocity/lvshear_dust_global_eps [logical,private/optional/default=.false.]
  • dustvelocity/md (ndustspec) [real,public/optional/default=1.0]
  • dustvelocity/md0 [real,private/optional/default=1.0]
  • dustvelocity/mdminus (ndustspec) [real,public]
  • dustvelocity/mdplus (ndustspec) [real,public]
  • dustvelocity/mmon [real,public]
  • dustvelocity/mu_ext [real,private/optional/default=0.0]
  • dustvelocity/mumon [real,public]
  • dustvelocity/nd0 [real,public/optional/default=1.0]
  • dustvelocity/nud (ndustspec) [real,private/optional/default=0.0]
  • dustvelocity/nud_all [real,private/optional/default=0.0]
  • dustvelocity/nud_hyper3 (ndustspec) [real,private/optional/default=0.0]
  • dustvelocity/nud_hyper3_mesh (ndustspec) [real,private/optional/default=5.0]
  • dustvelocity/nud_shock (ndustspec) [real,private/optional/default=0.0]
  • dustvelocity/nvisc_max [integer,private/parameter/optional/default=4]
  • dustvelocity/omega_pseudo [real,private/optional/default=0.0]
  • dustvelocity/phase_udx [real,private/optional/default=0.0]
  • dustvelocity/phase_udy [real,private/optional/default=0.0]
  • dustvelocity/phase_udz [real,private/optional/default=0.0]
  • dustvelocity/reinitialize_uud [logical,private/optional/default=.false.]
  • dustvelocity/rhod0 [real,public/optional/default=1.0]
  • dustvelocity/rhods [real,public/optional/default=1.0]
  • dustvelocity/rhodsad1 (ndustspec) [real,private]
  • dustvelocity/scalehtaus [real,private/optional/default=1.0]
  • dustvelocity/scolld (ndustspec,ndustspec) [real,public]
  • dustvelocity/set_border_dustvelocity [private]
  • dustvelocity/short_stopping_time_approximation [private]
  • dustvelocity/shorttaus1limit [real,private/optional/default=0.0]
  • dustvelocity/shorttauslimit [real,private/optional/default=0.0]
  • dustvelocity/surfd (ndustspec) [real,public]
  • dustvelocity/surfmon [real,private]
  • dustvelocity/tausd (ndustspec) [real,public/optional/default=1.0]
  • dustvelocity/tausd1 (nx,ndustspec) [real,public]
  • dustvelocity/tausd_all [real,private/optional/default=0.0]
  • dustvelocity/tausg1max [real,private/optional/default=0.0]
  • dustvelocity/tausgmin [real,private/optional/default=0.0]
  • dustvelocity/u0_gas_pseudo [real,private/optional/default=0.0]
  • dustvelocity/unit_md [real,public/optional/default=1.0]
  • dustvelocity/ustcst [real,public]
  • dustvelocity/uudx0 [real,private/optional/default=0.0]
  • dustvelocity/uudy0 [real,private/optional/default=0.0]
  • dustvelocity/uudz0 [real,private/optional/default=0.0]
  • dustvelocity/viscd_exponent [real,private/optional/default=0.0]
  • dustvelocity/viscd_law [character,private/optional/default='const']
  • dustvelocity/widthtaus [real,private/optional/default=1.0]
  • dustvelocity/z0taus [real,private/optional/default=0.0]

Subroutines and functions

subroutine  dustvelocity/register_dustvelocity()

Initialise variables which should know that we solve the hydro equations: iuu, etc; increase nvar accordingly.

18-mar-03/axel+anders: adapted from hydro

Use :

farraymanager, general (itoa()), sharedvariables (put_shared_variable())

Call to:

svn_id(), fatal_error(), copy_bcs_dust(), information(), request_border_driving(), warning(), sinwave_phase(), sinwave(), initial_condition_uud(), dot2_mn(), gij(), multmv_mn(), dot_mn(), del2v(), del6v(), del2v_etc(), der6(), identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond()

subroutine  dustvelocity/initialize_dustvelocity(f)

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

18-mar-03/axel+anders: adapted from hydro

Parameters:

f (,,*,*) [real,contiguous]

Use :

equationofstate (cs20()), borderprofiles (request_border_driving())

Call to:

copy_bcs_dust(), fatal_error(), information(), request_border_driving(), warning(), sinwave_phase(), sinwave(), initial_condition_uud(), dot2_mn(), gij(), multmv_mn(), dot_mn(), del2v(), del6v(), del2v_etc(), der6(), identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond()

subroutine  dustvelocity/copy_bcs_dust()

Copy boundary conditions on first dust species to all others

27-feb-04/anders: Copied from initialize_dustvelocity

Copy boundary conditions on first dust species to all species

Call to:

sinwave_phase(), sinwave(), fatal_error(), initial_condition_uud(), dot2_mn(), gij(), multmv_mn(), dot_mn(), del2v(), del6v(), del2v_etc(), der6(), identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond()

subroutine  dustvelocity/init_uud(f)

initialise uud; called from start.f90

18-mar-03/axel+anders: adapted from hydro 21-jan-15/MR: changes for use for reference state.

Parameters:

f (,,*,*) [real,contiguous]

Use :

sub, gravity, initcond, initialcondition (initial_condition_uud()), equationofstate (pressure_gradient(), cs20()), sharedvariables (get_shared_variable())

Call to:

sinwave_phase(), sinwave(), fatal_error(), initial_condition_uud(), dot2_mn(), gij(), multmv_mn(), dot_mn(), del2v(), del6v(), del2v_etc(), der6(), identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond()

subroutine  dustvelocity/pencil_criteria_dustvelocity()

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

20-11-04/anders: coded

MR: this restriction is in general not correct as, e.g. dustdensity uses pencils from here

without restriction.

  • if (.not. lchemistry) then

AB: Nils and I agree with Matthias and commented this out.

Call to:

dot2_mn(), gij(), multmv_mn(), dot_mn(), del2v(), del6v(), del2v_etc(), der6(), identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond(), fatal_error()

subroutine  dustvelocity/pencil_interdep_dustvelocity(lpencil_in)

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

20-11-04/anders: coded

Parameters:

lpencil_in (npencils) [logical]

Call to:

dot2_mn(), gij(), multmv_mn(), dot_mn(), del2v(), del6v(), del2v_etc(), der6(), identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond(), fatal_error()

subroutine  dustvelocity/calc_pencils_dustvelocity(f, p)

Calculate Dustvelocity pencils. Most basic pencils should come first, as others may depend on them.

13-nov-04/anders: coded

Parameters:
  • f (,,*,*) [real,in,contiguous]

  • p [pencil_case,inout]

Use :

sub, deriv (der6())

Call to:

dot2_mn(), gij(), multmv_mn(), dot_mn(), del2v(), del6v(), del2v_etc(), der6(), identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond(), fatal_error()

subroutine  dustvelocity/duud_dt(f, df, p)
Parameters:
  • f (,,*,*) [real,in,contiguous]

  • df (,,*,*) [real,out,contiguous]

  • p [pencil_case,inout]

Use :

debug_io, general, sub (identify_bcs()), diagnostics (max_mn_name())

Call to:

identify_bcs(), calc_diagnostics_dustvelocity(), max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond(), fatal_error()

subroutine  dustvelocity/calc_diagnostics_dustvelocity(p)
Parameters:

p [pencil_case]

Use :

diagnostics

Call to:

max_mn_name(), integrate_mn_name(), xysum_mn_name_z(), border_driving(), set_border_initcond(), fatal_error()

subroutine  dustvelocity/read_dustvelocity_init_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

subroutine  dustvelocity/write_dustvelocity_init_pars(unit)
Parameters:

unit [integer,in]

subroutine  dustvelocity/read_dustvelocity_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

subroutine  dustvelocity/write_dustvelocity_run_pars(unit)
Parameters:

unit [integer,in]

subroutine  dustvelocity/rprint_dustvelocity(lreset[, lwrite])

Reads and registers print parameters relevant for dust velocity.

3-may-02/axel: coded

Parameters:
  • lreset [logical]

  • lwrite [logical]

Use :

diagnostics, general (itoa())

subroutine  dustvelocity/get_slices_dustvelocity(f, slices)

Write slices for animation of Dustvelocity variables.

26-jul-06/tony: coded

Parameters:
Use :

slices_methods (assign_slices_vec())

subroutine  dustvelocity/pushpars2c(p_par)
Parameters:

p_par (200) [integer]

Use :

syscalls (copy_addr()), general (string_to_enum())