Difference between revisions of "Dust Cycle in Mars PCM6"
(→Level 2 (developper) : Parametrizations and tunable parameters) |
(→Level 2 (developper) : Parametrizations and tunable parameters) |
||
Line 146: | Line 146: | ||
|| <span style="color:red;">'''nueff_lift'''</span> || Effective variance of injected dust [no unit] ; is also the variance in the atmosphere <span style="color:red;">nueffdust</span> || style="text-align:center;"| 0.5 || style="text-align:center;"| 0.2 - 0.6 || ''initracer.F'' (D,A,U) ; impacts ''aeroptproperties.F'', ''callsedim_mod.F'' || [https://doi.org/10.1029/2006JE002786 Wolff et al. (2006)], [https://doi.org/10.1029/2020JE006419 Luginin et al. (2020)] | || <span style="color:red;">'''nueff_lift'''</span> || Effective variance of injected dust [no unit] ; is also the variance in the atmosphere <span style="color:red;">nueffdust</span> || style="text-align:center;"| 0.5 || style="text-align:center;"| 0.2 - 0.6 || ''initracer.F'' (D,A,U) ; impacts ''aeroptproperties.F'', ''callsedim_mod.F'' || [https://doi.org/10.1029/2006JE002786 Wolff et al. (2006)], [https://doi.org/10.1029/2020JE006419 Luginin et al. (2020)] | ||
|- | |- | ||
− | || $$Q_{ext}$$ for <span style="color:red;">'''alpha_lift(igcm_[dust<nowiki>|</nowiki>stormdust]_mass)'''</span> || Extinction coefficient [no unit] used for the lifted mass coefficient ; should depend on <span style="color:red;">reff_[lift<nowiki>|</nowiki>storm]</span> and <span style="color:red;">nueff_lift</span> || style="text-align:center;"| 2.4 (hard-coded, no variable) || style="text-align:center;"| (for $$\nu _{eff}$$=0.5) | + | || $$Q_{ext}$$ for <span style="color:red;">'''alpha_lift(igcm_[dust<nowiki>|</nowiki>stormdust]_mass)'''</span> || Extinction coefficient in the visible [no unit] used for the lifted mass coefficient ; should depend on <span style="color:red;">reff_[lift<nowiki>|</nowiki>storm]</span> and <span style="color:red;">nueff_lift</span> || style="text-align:center;"| 2.4 (hard-coded, no variable) || style="text-align:center;"| (for $$\nu _{eff}$$=0.5) |
$$r_{eff}$$=3µm -> $$Q_{ext}$$=2.46 ; | $$r_{eff}$$=3µm -> $$Q_{ext}$$=2.46 ; | ||
$$r_{eff}$$=2.5µm -> $$Q_{ext}$$=2.5 ; | $$r_{eff}$$=2.5µm -> $$Q_{ext}$$=2.5 ; | ||
− | $$r_{eff}$$=2µm -> $$Q_{ext}$$=2.6 | + | $$r_{eff}$$=2µm -> $$Q_{ext}$$=2.6 ; |
+ | $$r_{eff}$$=1µm -> $$Q_{ext}$$=2.85 ; | ||
|| ''initracer.F'' (A,U) ; impacts ''vdifc_mod.F'' | || ''initracer.F'' (A,U) ; impacts ''vdifc_mod.F'' | ||
|- | |- | ||
Line 158: | Line 159: | ||
|| <span style="color:red;">'''fracmin'''</span> ; <span style="color:red;">'''fracmax'''</span> || Bounds for the rocket dust storm sub-mesh fraction [no unit] || style="text-align:center;"| 0.01 ; 0.6 || style="text-align:center;"| 0 - 1 || ''calcstormfract_mod.F90'' (D,A,U) ; impacts ''rocketduststorm_mod.F90'', ''callradite_mod.F90'' || TN2022_ESA | || <span style="color:red;">'''fracmin'''</span> ; <span style="color:red;">'''fracmax'''</span> || Bounds for the rocket dust storm sub-mesh fraction [no unit] || style="text-align:center;"| 0.01 ; 0.6 || style="text-align:center;"| 0 - 1 || ''calcstormfract_mod.F90'' (D,A,U) ; impacts ''rocketduststorm_mod.F90'', ''callradite_mod.F90'' || TN2022_ESA | ||
|- | |- | ||
− | || <span style="color:red;">'''coeff_detrainment'''</span> || Detrainment coefficient $$C_{det}$$ [no unit] || style="text-align:center;"| 0.02 || style="text-align:center;"| 0 - 1 | + | || <span style="color:red;">'''coeff_detrainment'''</span> || Detrainment coefficient $$C_{det}$$ [no unit] || style="text-align:center;"| 0.02 || style="text-align:center;"| 0 - 1'''*''' || ''callkeys.h'' (D) ; ''conf_phys.F'' (A) ; ''rocketduststorm_mod.F90'' (U) || TN2019_CNES, TN2020_CNES, TN2022_ESA |
|- | |- | ||
|rowspan="3"|Mountain top flows | |rowspan="3"|Mountain top flows | ||
Line 173: | Line 174: | ||
|} | |} | ||
− | Note on the rocket dust storm detrainment : | + | '''''*'''Note on the rocket dust storm detrainment : The rocket dust storm detrainment, currently tuned with the coefficient <span style="color:red;">coeff_detrainment</span>, should actually be revisited to match the one that is done for mountain top flows. (ticket [ #XXX])'' |
== What's going on for rocket dust storms and injection : a detailed example through the physics parametrizations == | == What's going on for rocket dust storms and injection : a detailed example through the physics parametrizations == |
Revision as of 00:29, 8 January 2024
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 technical document that sums up the features of the dust cycle in the PCM6, referred to as TN2022_ESA below, can be found here : https://www-mars.lmd.jussieu.fr/esa/contract2020_2022/deliverables/MS3/D2.1_dust_cycle.pdf
For more insights into the development and tuning of all the parametrizations related to the PCM6 Dust Cycle, please find below the reference technical documents :
- TN2019_ESA : https://www-mars.lmd.jussieu.fr/WP2018/LMD_gcm_report_part1_dust.pdf
- TN2019_CNES : https://www-mars.lmd.jussieu.fr/cnes/2019/LMD_CNES_EXM_gcm6.0.pdf
- TN2020_CNES : https://www-mars.lmd.jussieu.fr/cnes/2020/note_technique_GCM_dust.pdf
- TN2021_CNES : https://www-mars.lmd.jussieu.fr/cnes/2021/note_technique_dust_cycle2021.pdf
- TN2022_ESA : https://www-mars.lmd.jussieu.fr/esa/contract2020_2022/deliverables/MS3/D2.1_dust_cycle.pdf ; Erratum : in section 2 of this document, it is said that "Corrected values for [ the assumptions done on the tuple ($$r_{eff}$$,$$Q_{ext}$$) ] which were a bit erroneous, lead to a typical opacity of 6 instead of 10 for the dust storm we simulate in the model using $$q_{storm,ref}$$ = $$5 × 10^{−4}$$kg/kg" (mmr_ref). These "corrected" values were actually wrong. If we consider $$r_{eff}$$=2µm like in Wang et al. (2018) or TN2019_ESA, using a mmr_ref of 5e-4kg/kg leads to an opacity of 10.5. If we use $$r_{eff}$$=3µm like the default reff_lift, this leads to an opacity of 6.6.
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, where to find/modify them in the code, and references addressing their tuning in the PCM or their explorable range according to our current knowledge of Mars climate.
Process | Parameter | Description | Default value | Reasonable range for tuning | In the code
(D: declaration ; A: assignment ; U: use) |
References |
---|---|---|---|---|---|---|
Injection | coeff_injection | Injection coefficient $$C_{inj}$$ [no unit] | 0.25 | 0 - 1 | callkeys.h (D) ; conf_phys.F (A) ; compute_dtau_mod.F90 (U) | TN2019_CNES, TN2020_CNES, TN2022_ESA |
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) | TN2019_ESA, TN2019_CNES, TN2020_CNES, TN2022_ESA | |
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) | TN2019_ESA, TN2019_CNES, TN2020_CNES, TN2022_ESA | |
reff_lift | Effective radius of injected dust [m] | 3e-6 | 1e-6 - 5e-6 | initracer.F (D,A,U) ; impacts vdifc_mod.F | TN2021_CNES | |
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 | TN2021_CNES | |
nueff_lift | Effective variance of injected dust [no unit] ; is also the variance in the atmosphere nueffdust | 0.5 | 0.2 - 0.6 | initracer.F (D,A,U) ; impacts aeroptproperties.F, callsedim_mod.F | Wolff et al. (2006), Luginin et al. (2020) | |
$$Q_{ext}$$ for alpha_lift(igcm_[dust|stormdust]_mass) | Extinction coefficient in the visible [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 ; $$r_{eff}$$=1µm -> $$Q_{ext}$$=2.85 ; |
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 | 2.5e-4 - 7.5e-4 | calcstormfract_mod.F90 (D,A,U) ; impacts rocketduststorm_mod.F90, callradite_mod.F90 | TN2019_ESA, Wang et al. (2018), TN2022_ESA |
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 | TN2022_ESA | |
coeff_detrainment | Detrainment coefficient $$C_{det}$$ [no unit] | 0.02 | 0 - 1* | callkeys.h (D) ; conf_phys.F (A) ; rocketduststorm_mod.F90 (U) | TN2019_CNES, TN2020_CNES, TN2022_ESA | |
Mountain top flows | $$C_{mons}$$ for alpha_hmons | Dampening coefficient $$C_{mons}$$ [no unit] for the mountain top flows sub-mesh fraction | 0.5 (hard-coded, no variable) | 0 - 1 | topmons_mod.F90 (A,U) | TN2020_CNES, TN2021_CNES, TN2022_ESA |
k0 ; k1 ; k2 | Coefficients [m/s ; m$$^{-1}$$ ; no unit] for the slope winds vertical velocity | 0.25 ; 5e-4 ; 5e-3 (wmax = 3m/s) | 1. ; 5e-4 ; 30e-3 (wmax = 10m/s) | topmons_mod.F90 (D,A,U) | TN2019_CNES | |
$$C_{detr}$$ for coefdetrain | Dampening coefficient $$C_{detr}$$ [no unit] for the mountain top flows detrainment | 1. (hard-coded, no variable) | 0 - 1 | topmons_mod.F90 (A,U) | TN2019_CNES | |
Sedimentation | $$\beta$$ in call of newsedim for dust, stormdust and topdust | Particle shape correction factor for the Stokes-Cunningham sedimentation velocity [no unit] | 0.5 (hard-coded, no variable) | 0.5 - 1
(disk -> irregular -> sphere) |
callsedim_mod.F90 (A,U) | Murphy et al. (1990) |
*Note on the rocket dust storm detrainment : The rocket dust storm detrainment, currently tuned with the coefficient coeff_detrainment, should actually be revisited to match the one that is done for mountain top flows. (ticket [ #XXX])
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.