Difference between revisions of "Dust Cycle in Mars PCM6"
(→What's going on for rocket dust storms and injection : a detailed example through the physics parametrizations) |
|||
Line 139: | Line 139: | ||
+ | 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 a specific 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), compared with a reference mixing ratio mmr_ref=5e-4kg/kg that we consider representative of an opacity of 10 (as measured in a local dust storm by OMEGA), given some assumptions like a vertical extent of $$\Delta P$$=200Pa for the stormdust plume. | ||
+ | |||
+ | 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 submesh fraction and the total mesh, the resulting vertical transport in the submesh fraction, and the detrailing. If this is not the case (not enough stormdust anywhere in the column), we detrain the entire mesh. | ||
[[Category:Mars-Model]] | [[Category:Mars-Model]] |
Revision as of 19:14, 4 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
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
À 14h, si le scénario du jour d'après donne une opacité de 5 alors que le jour actuel, le GCM a une opacité disons de 1 dans la colonne :
1. on calcule le dtau=5-1=4, puis ce que ça ferait comme quantité de poussière à 3µm à ajouter dans l'atmosphère
2. on injecte cette quantité de poussière nuancée par un coef Cinj pour prendre en compte que le saut de tau_scenario peut venir non pas d'injection locale mais de transports depuis les autres mailles. En pratique, Cinj=0.25, ce qui donne une injection de ~5e-8kg/m²/s
3. toute cette poussière est injectée de manière uniforme entre le 14h actuel et 14h du jour d'après sous forme de stormdust dans la 1ère couche par vdifc, qui la mélange déjà un peu sur plusieurs couches, avant qu'elle ne passe par les thermiques/l'ajustement convectif, la sédimentation (mais on empêche la stormdust de tomber au sol, elle reste dans la 1ère couche à la place), et 5 pas de temps de dynamique
4. une fois retourné au pas de temps physique suivant, on calcule la fraction sous-maille à partir du maximum de mass mixing ratio de stormdust dans toute la colonne (à part la 1ère couche (?) ), par rapport à un mixing ratio de référence mmr_ref=5e-4kg/kg que l'on considère représentatif d'une opacité de 10 (telle que mesurée dans une local dust storm par OMEGA)
5. enfin, on rentre dans la routine rocketduststorm, où on regarde si qqpart dans la colonne, le mmr de stormdust (non-concentré dans la fraction sous-maille) est supérieur à 10^(-4) fois celui du background dust. Si c'est le cas, on active le schéma dans la colonne, et on calcule l'écart de chauffage entre la fraction sous-maille et la maille totale, le transport vertical qui en résulte dans la fraction sous-maille, et le détraînement. Si ce n'est pas le cas (pas assez de stormdust nulle part dans la colonne) on détraîne tout
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 a specific 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), compared with a reference mixing ratio mmr_ref=5e-4kg/kg that we consider representative of an opacity of 10 (as measured in a local dust storm by OMEGA), given some assumptions like a vertical extent of $$\Delta P$$=200Pa for the stormdust plume.
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 submesh fraction and the total mesh, the resulting vertical transport in the submesh fraction, and the detrailing. If this is not the case (not enough stormdust anywhere in the column), we detrain the entire mesh.