Dust Cycle in Mars PCM6

From Planets
Revision as of 20:18, 5 January 2024 by Abierjon (talk | contribs) (Level 2 (developper) : Parametrizations and tunable parameters)

Jump to: navigation, search

This page details at different levels how to use and what is featured in the dust cycle in Mars PCM6. This is still work in progress for now !

Level 1 (user) : Flags for PCM6 dust cycle

To run a simulation with the PCM6 dust cycle, you need to set up several flags and parameters in your callphys.def (see an example here: https://trac.lmd.jussieu.fr/Planeto/browser/trunk/LMDZ.MARS/deftank/callphys.def.GCM6)

We list below all the relevant flags and parameters directly related to PCM6 dust cycle :

  1 ##General options
  2 ##~~~~~~~~~~~~~~~
  3 #Directory where external input files are:
  4 datadir=/path/to/datadir
  5 
  6 #Run with or without tracer transport ?
  7 tracer=.true.
  8 .
  9 .
 10 .
 11 
 12 ## Dust scenario. Used to prescribe the dust
 13 ## ~~~~~~~~~~~~~
 14 #  =1 Dust opt.deph read in startfi; =2 Viking scenario; =3 MGS scenario [default],
 15 #  =4 Mars Year 24 from TES assimilation (old version of MY24; dust_tes.nc file)
 16 #  =6 "cold" (low dust) scenario ; =7 "warm" (high dust) scenario
 17 #  =8 "climatology" (our best guess of a typical Mars year) scenario
 18 #  =24 Mars Year 24 from TES assimilation (ie: MCD reference case)
 19 #  =25 Mars Year 25 from TES assimilation (ie: a year with a global dust storm)
 20 #  =26 Mars Year 26 from TES assimilation
 21 #  ...
 22 #  =35 Mars Year 35 from observers assimilation
 23 iaervar = 8
 24 .
 25 .
 26 .
 27 
 28 # Dust IR opacity ref. wavelength (for dso diagnostics only)
 29 # "tes" (9.3 microns) [default] or "mcs" (21.6 microns)
 30 dustiropacity = tes
 31 # Use an IR to VIS scenario conversion coefficient that is
 32 # dependent on the GCM dust effective radius,
 33 # instead of a fixed 2.6 coefficient ?
 34 #(only if dustiropacity = tes ; default = .false.)
 35 reff_driven_IRtoVIS_scenario = .true.
 36 
 37 ## Physical Parameterizations :
 38 ## ~~~~~~~~~~~~~~~~~~~~~~~~~~
 39 # call radiative transfer ? (default=.true.)
 40 callrad   = .true.
 41 .
 42 .
 43 .
 44 
 45 
 46 ## Radiative transfer options :
 47 ## ~~~~~~~~~~~~~~~~~~~~~~~~~~
 48 .
 49 .
 50 .
 51 
 52 # SCATTERERS: set number of scatterers.
 53 # Must be compliant with other options: +1 if active, +1 if rdstorm, +1 if topflows, +1 if activice ; default=1)
 54 naerkind = 4
 55 
 56 ## Tracer (dust water, ice and/or chemical species) options (used if tracer=T):
 57 ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 58 # DUST: Transported dust ? (if >0, use 'dustbin' dust bins ; default=0)
 59 dustbin    = 2
 60 # DUST: Radiatively active dust ? (matters if dustbin>0 ; default=.false.)
 61 active  = .true.
 62 # DUST: use mass and number mixing ratios to predict dust size ? (default=.false.)
 63 doubleq   = .true.
 64 .
 65 .
 66 .
 67 # DUST: lifted by GCM surface winds ? (default=.false.)
 68 lifting = .true.
 69 .
 70 .
 71 .
 72 # DUST: Scavenging by H2O snowfall ? (default=.false.)
 73 scavenging = .true.
 74 
 75 # DUST: freedust ? (default=.false.)
 76 freedust=.true.
 77 # DUST: dustscaling_mode?
 78 #     =0 --> freedust, tauscaling=1
 79 #     =1 --> GCM5.3-like, tauscaling
 80 #     =2 --> tauscaling=1,dust_rad_adjust
 81 dustscaling_mode=2
 82 # DUST: dust injection scheme (if >0, use 'dustinjection' ; default=0)
 83 dustinjection=1
 84 # DUST: dust injection scheme coefficient (default=0.25)
 85 coeff_injection=0.25
 86 # DUST: dust injection scheme initial local time (default=0.)
 87 ti_injection=0.
 88 # DUST: dust injection scheme final local time (default=24.)
 89 tf_injection=24.
 90 # DUST: Rocket Dust Storm scheme (default=.false.)
 91 rdstorm=.true.
 92 # DUST: RDS detrainment coefficient (default=0.02)
 93 coeff_detrainment=0.02
 94 # DUST: Dust entrainment by subgrid-scale slope winds (default=.false.)
 95 topflows=.true.
 96 
 97 # DUST/WATERICE: Scavenging by CO2 condensation? (default=.false.)
 98 scavco2cond = .true.
 99 # DUST/WATERICE: Gravitationnal sedimentation ? (default=.true.)
100 sedimentation = .true.
101 
102 .
103 .
104 .

Note that the PCM6 dust cycle has mainly been tested with the non-dust-related flags and parameters that are featured in callphys.def.GCM6 and callphys.def.MCD6 (cf https://trac.lmd.jussieu.fr/Planeto/browser/trunk/LMDZ.MARS/deftank/), and in general with the *.def files (run.def, traceur.def, z2sig.def) that are suffixed with .GCM6 or .MCD6. If you depart from these files, even for non-dust related processes, we do not ensure the good tuning of the dust cycle, nor to a lesser extent the good compilation/execution of the model. If this happens, please reach out to us !


Level 2 (developper) : Parametrizations and tunable parameters

The table below sums up all the parameters related to PCM6 Dust Cycle, a short description, their default value in PCM6, a reasonable range that can explored for tuning, and where to find/modify them in the code.

Caption text
Process Parameter Description Default value Reasonable range for tuning In the code (D: declaration ; A: assignment ; U: use)
Injection coeff_injection Dampening injection coefficient $$C_{inj}$$ [no unit] 0.25 0 - 1 callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U)
ti_injection Beginning local time for injection window [h] 0 0 - 18 callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U) ; vdifc_mod.F (U)
tf_injection Ending local time for injection window [h] 24 6 - 24 callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U) ; vdifc_mod.F (U)
reff_lift Effective radius of injected dust [m] 3e-6 0.5e-6 - 5e-6 initracer.F (D,A,U) ; impacts vdifc_mod.F
reff_storm Effective radius of injected dust when rdstorm=.true. [m] 3e-6 (should be equal to reff_lift) initracer.F (D,A,U) ; impacts vdifc_mod.F
nueff_lift Effective variance of injected dust [no unit] ; is also the variance in the atmosphere nueffdust 0.5 0.1 - 0.6 initracer.F (D,A,U) ; impacts aeroptproperties.F, callsedim_mod.F
$$Q_{ext}$$ for alpha_lift(igcm_[dust|stormdust]_mass) Extinction coefficient [no unit] used for the lifted mass coefficient ; should depend on reff_[lift|storm] and nueff_lift 2.4 (hard-coded, no variable) (for $$\nu _{eff}$$=0.5)

$$r_{eff}$$=3µm -> $$Q_{ext}$$=2.46 ; $$r_{eff}$$=2.5µm -> $$Q_{ext}$$=2.5 ; $$r_{eff}$$=2µm -> $$Q_{ext}$$=2.6

initracer.F (A,U) ; impacts vdifc_mod.F
Rocket dust storm mmr_ref Reference mass mixing ratio [kg/kg] for the rocket dust storm sub-mesh fraction 5e-4 calcstormfract_mod.F90 (D,A,U) ; impacts rocketduststorm_mod.F90, callradite_mod.F90
fracmin ; fracmax Bounds for the rocket dust storm sub-mesh fraction [no unit] 0.01 ; 0.6 0 - 1 calcstormfract_mod.F90 (D,A,U) ; impacts rocketduststorm_mod.F90, callradite_mod.F90
coeff_detrainment Detrainment coefficient $$C_{det}$$ [no unit] 0.02 0 - 1 callkeys.h (D) ; conf_phys.F (A) ; rocketduststorm_mod.F90 (U)
Mountain top flows coeff_injection Dampening injection coefficient $$C_{inj}$$ [no unit] 0.25 0 - 1 callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U)
coeff_injection Dampening injection coefficient $$C_{inj}$$ [no unit] 0.25 0 - 1 callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U)
Sedimentation coeff_injection Dampening injection coefficient $$C_{inj}$$ [no unit] 0.25 0 - 1 callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U)
coeff_injection Dampening injection coefficient $$C_{inj}$$ [no unit] 0.25 0 - 1 callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U)


Reference technical notes :

What's going on for rocket dust storms and injection : a detailed example through the physics parametrizations

We detail below the successive steps and processes performed concerning the coupling between the rocket dust storms and the dust injection. We place ourselves in one column of the model, which will serve as an example. The Fortran subroutines that are involved at each step are referred as subroutine.

0. as we reach 2pm in this column, we read and interpolate the value of the optical depth scenario for the next day (compute_dtau). Let's say the scenario features an opacity of 5 (big dusty event), while the current day's GCM column has an opacity of 1 (which has been computed before, in aeropacity)

1. (compute_dtau) we calculate the optical depth difference dtau=5-1=4, then what this means in terms of dust mass to be added to the atmosphere, assuming an effective size reff_lift = 3µm by default (defined in initracer). We dampen this quantity of dust by a coefficient Cinj (=0.25 by default) to take into account that the jump in tau_pref_scenario from the current day to the next may not come from local injection but from transport from adjacent meshes. For the values considered in this example, this gives an injection of ~5e-8 kg/m²/s.

2. all this dust is injected uniformly during the injection window, by default between 2 p.m. this day and 2 p.m. the next day (when we are supposed to reach the scenario target), in the form of stormdust into the 1st layer by vdifc, which already mixes it a little on several layers. Then this stormdust undergoes processes like thermals (calltherm_interface), convective adjustment (convadj) and sedimentation (callsedim) that further mix it in the atmosphere. For the latter, stormdust is prevented from falling to the ground, and remains in the 1st layer instead. We need to do so, because the main process responsible for the stormdust rising, represented by the routine rocketduststorm, only happens at the beginning of the next timestep (see point 5).

3. the stormdust is further mixed by the dynamics, and may also be transported to adjacent meshes. The column may also receive stormdust from other meshes.

4. once back to the next physical time step, we calculate a sub-mesh fraction that is representative of the size of the stormdust plume (calcstormfract). To do so, we use the maximum mass mixing ratio of stormdust in the entire column (apart from the 1st layer), and compute the sub-mesh fraction that is needed to reach a reference mixing ratio mmr_ref=5e-4kg/kg. This reference mmr is a value that we consider representative of an opacity of 10 that was measured in a local dust storm by OMEGA, given some assumptions like a vertical extent of $$\Delta P$$=200Pa for the dust plume (see also Wang et al. 2018, JGRPlanets, doi:10.1002/2017JE005255).

5. finally, we enter the rocketduststorm routine, where we check whether anywhere in the column, the mmr of stormdust (not concentrated in the sub-mesh fraction, but expanded to the whole mesh) is greater than $$10^{-4}$$ times that of background dust. If so, we activate the scheme in the column, and calculate the heating difference between the sub-mesh fraction (where we have concentrated stormdust, and background dust) and the rest of the mesh (only background dust), the resulting vertical transport in the sub-mesh fraction, and the horizontal detrainment where the stormdust plume vertical velocity decreases. If there is not enough stormdust compared to background dust at any level, the stormdust is detrained into background dust at all levels of the column.