Dust Cycle in Mars PCM6
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
Reference technical notes :
https://www-mars.lmd.jussieu.fr/cnes/2019/LMD_CNES_EXM_gcm6.0.pdf
https://www-mars.lmd.jussieu.fr/cnes/2020/note_technique_GCM_dust.pdf
https://www-mars.lmd.jussieu.fr/cnes/2021/note_technique_dust_cycle2021.pdf
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.