forked from ESCOMP/atmospheric_physics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
suite_cam4.xml
202 lines (201 loc) · 19.3 KB
/
suite_cam4.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<?xml version="1.0" encoding="UTF-8"?>
<suite name="cam4" version="1.0">
<group name="physics_bc">
<!--cam4: deep=ZM, shallow=Hack, macrop=RK, microp=RK, radiation=CAMRT, chem=none -->
<time_split>
<scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. -->
<!-- Negative moisture/tracer check -->
<!-- **************************** -->
<scheme>qneg3</scheme> <!-- This scheme modifies the state directly. Combine with state check? -->
<!-- **************************** -->
<scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. -->
<scheme>diag_state_b4_phys_write</scheme> <!-- Diagnostics -->
<!-- energy and momentum fixer -->
<!-- **************************** -->
<scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBF' -->
<scheme>check_energy_fix</scheme> <!-- Only matters if dycore is FV (called "LR" in physics) or SE -->
<scheme>check_energy_cam_update_pre_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations before "chng" call. -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<scheme>check_energy_cam_update_post_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations after "chng" call. -->
<scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBP' -->
<!-- **************************** -->
<scheme>diag_conv_tend_ini</scheme> <!-- Initalizes convective-scheme diagnostic outputs -->
<scheme>calc_dtcore</scheme> <!-- diagnostic calculation. Could likely be included in energy fixer scheme. -->
<!-- Dry adiabatic adjustment -->
<!-- **************************** -->
<!-- Technically only needs temperature and humidity as inputs -->
<scheme>dadadj_calc_update</scheme> <!-- Actual dry adiabatic adjustment scheme, with placeholders for CAM updates calculations -->
<!-- **************************** -->
<!-- Zhang-Macfarlane deep convection scheme -->
<!-- **************************** -->
<!-- Is ZM microphysics going to be supported? -->
<!-- Is initalization scheme required (it depends on numerous physics settings? -->
<scheme>zm_convr</scheme> <!-- Actual deep convection routine -->
<scheme>zm_convr_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<scheme>zm_conv_evap</scheme> <!-- Actual ZM rain evaporation scheme -->
<scheme>zm_conv_evap_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<scheme>momtran</scheme> <!-- Actual ZM momentum transport scheme -->
<scheme>momtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<scheme>convtran</scheme> <!-- Actual ZM convective transport scheme -->
<scheme>convtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<!-- **************************** -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<!-- Hack shallow convection scheme -->
<!-- **************************** -->
<scheme>cmfmca</scheme> <!-- Actual shallow convective scheme -->
<scheme>cmfmca_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<scheme>zm_conv_evap</scheme> <!-- Actual ZM rain evaporation scheme -->
<scheme>zm_conv_evap_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<!-- **************************** -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. -->
<scheme>sslt_rebin_adv</scheme> <!--Only matters if certain sea salt species are present in chemistry package-->
<!-- Rasch-Kristjansson stratiform cloud scheme -->
<!-- **************************** -->
<scheme>tropopause_find</scheme> <!-- Calculate tropopause height, but only if do_psrhmin is True -->
<scheme>cld_sediment_vel</scheme> <!-- Calculate cloud liquid and ice sedimentation velocities -->
<scheme>cld_sediment_tend</scheme> <!-- Calculate tendencies produced by cloud sedimentation -->
<scheme>rk_sed_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<scheme>add_conv_detrain_rliq</scheme> <!-- Add convectively-detrained cloud liquid to environment, and reserved liquid back to precipitaton (managed by host model?) -->
<scheme>cldfrc</scheme> <!-- Calculate cloud fraction -->
<scheme>cldfrc_rh2</scheme> <!-- Calculate cloud fraction with perturbed RH (is there a better way to do this, e.g. subcycle?) -->
<scheme>rhdfda_calc</scheme> <!-- Calculate "rhdfda", or the derivative d(RH)/da -->
<scheme>cldfrc_fice</scheme> <!-- Calculate ice cloud fraction -->
<scheme>strat_cond_repartition</scheme> <!-- Re-partition stratiform cloud ice and cloud liquid, and calculate relevant heating rates -->
<scheme>pcond</scheme> <!-- Actual RK macro/micro-physics scheme -->
<scheme>rk_pcond_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations -->
<scheme>cldfrc</scheme> <!-- Calculate cloud fraction -->
<scheme>cldfrc_diag_output</scheme> <!-- Calculate cloud fraction diagnostics and output them to history file -->
<scheme>cldefr</scheme> <!-- Calculate cloud liquid and ice particle effective radii, and output to history file/host model -->
<!-- **************************** -->
<scheme>convtran</scheme> <!-- Actual ZM convective transport scheme, for constituents in cnst_is_convtran2 -->
<scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. -->
<scheme>diag_phys_writeout</scheme> <!-- Calculate generic atmospheric physics diagnostics and output them to history file -->
<scheme>diag_conv</scheme> <!-- Calculate generic precipitation and convection diagnostics and output them to history file -->
<scheme>cloud_diagnostics_calc</scheme> <!-- Calculate generic cloud diagnostics and output them to history file -->
<!-- CAM-RT radiation scheme -->
<!-- **************************** -->
<scheme>calc_solar_zenith_ang</scheme> <!-- Calculate the solar zenith angle for the given time step -->
<scheme>group_day_night</scheme> <!-- Determine which columns are in the day-side, vs night-side -->
<scheme>calc_col_mean_co2</scheme> <!-- Calculate column mean CO2 values -->
<scheme>eccf_calc</scheme> <!-- Calculate "earth sun distance factor". -->
<scheme>tropopause_find</scheme> <!-- Calculate tropopause height -->
<scheme>calc_col_mean_o2</scheme> <!-- Calculate column mean O2 values -->
<scheme>aer_rad_props_sw</scheme> <!-- Gather/calculate aerosol shortwave optical properties -->
<scheme>radcswmx</scheme> <!-- Actual CAM-RT shortwave radiation parameterization -->
<scheme>rad_sw_diag_output</scheme> <!-- Calculate shortwave diagnostic variables, and output them to history file -->
<scheme>aer_rad_props_lw</scheme> <!-- Gather/calculate aerosol longwave optical properties -->
<scheme>radclwmx</scheme> <!-- Actual CAM-RT longwave radiation parameterization -->
<scheme>rad_lw_diag_output</scheme> <!-- Calculate longwave diagnostic variables, and output them to history file -->
<scheme>cloud_cover_diags_output</scheme> <!-- Calculate cloud cover diagnostic variables, and output them to history file -->
<scheme>rad_qdp_q_calc</scheme> <!-- Convert Q*dp to Q (potentially managed by registry/framework?) -->
<scheme>rad_data_write</scheme> <!-- Calculate additional radiation diagnostics, and output them to history file -->
<scheme>radheat_tend</scheme> <!-- Calculate net radiative heating tendencies -->
<scheme>radheat_diag_output</scheme> <!-- Calculate radiative heating diagnostic variables, and output them to history file -->
<scheme>rad_q_qdp_calc</scheme> <!-- Convert Q to Q*dp (potentially managed by registry/framework?) -->
<scheme>set_srf_net_sw</scheme> <!-- Add net shortwave surface flux to host model surface fluxes -->
<!-- **************************** -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<scheme>tropopause_output</scheme> <!-- Calculate tropopause diagnostic variables, and output them to history file -->
<scheme>cam_export</scheme> <!-- Add various physics state variables to host model surface fluxes -->
<scheme>diag_export</scheme> <!-- Output various host model surface fluxes to history file -->
</time_split>
</group>
<group name="physics_ac">
<!--cam6: diffusion=HB, chem=none -->
<time_split>
<scheme>flux_avg_run</scheme> <!-- Smooth/average surface fluxes, but only if phys_do_flux_avg is True -->
<scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found -->
<scheme>calc_flx_net</scheme> <!-- Accumulate net surface fluxes, which is necessary for spectral dycores -->
<!-- Negative moisture/tracer check -->
<!-- **************************** -->
<scheme>qneg4</scheme> <!-- Modify surface moisture and heat fluxes to prevent negative moisture values, and output diagnostics -->
<scheme>aoa_tracers_timestep_tend</scheme> <!-- Calculate age of air tracer tendencies. Also output tendencies to history file -->
<scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. -->
<scheme>co2_cycle_set_ptend</scheme> <!-- Calculate CO2 tendencies. Only matters if co2_flag or co2_readFlux_aircraft is True -->
<!-- **************************** -->
<!-- Vertical diffusion -->
<!-- **************************** -->
<scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor -->
<scheme>tint_calc</scheme> <!-- Interpolate air temperature to layer interface levels -->
<scheme>ubc_get_vals</scheme> <!-- Calcuate upper-level boundary conditions (depends on chemistry and model-top choice) -->
<scheme>set_top_tint_val</scheme> <!-- Calculate air temperature at top interface level -->
<scheme>rhoi_calc</scheme> <!-- Interpolate air density and dry air density to layer interface levels -->
<scheme>compute_tms</scheme> <!-- Calculate Turbulent Mountain Stress (TMS) tendency -->
<scheme>tms_diag_output</scheme> <!-- Calculate TMS diangostic variables, and output them to history file -->
<scheme>compute_blj</scheme> <!-- Calculate Sub-Grid Orgraphic (SGO) drag via Beljaars parameterization -->
<scheme>blj_diag_output</scheme> <!-- Calculate SGO diagnostic variables, and output them to history file -->
<scheme>temp_to_potential_temp</scheme> <!-- Calculate potential temperature -->
<scheme>virtem</scheme> <!-- Calculate virtual temperature (managed by registry/framework?) -->
<scheme>calc_ustar</scheme> <!-- Calculate friction velocity -->
<scheme>calc_obklen</scheme> <!-- Calculate Obhukov length -->
<!-- Holtslag and Boville, 1991 PBL scheme -->
<!-- ++++++++++++++++++++++++++ -->
<scheme>trbintd</scheme> <!-- Calculate shear squared, brunt-viasala frequency, and Richardson number -->
<scheme>pblintd</scheme> <!-- Initialize time dependent variables that depend on PBL height -->
<scheme>austausch_atm</scheme> <!-- Calculate free atmosphere exchange coefficients -->
<scheme>austausch_pbl</scheme> <!-- Calculate PBL exchange coefficients (and assume kvq = kvh) -->
<!-- ++++++++++++++++++++++++++ -->
<scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False -->
<scheme>dse_top_calc</scheme> <!-- Calculate top-level dry static energy, but only if do_molec_diff is True and WACCM-X is False -->
<scheme>compute_molec_diff_wet</scheme> <!-- Calculate molecular diffusion of wet atmospheric constituents, if do_molec_diff is True -->
<scheme>compute_vdiff_wet</scheme> <!-- Calculate the vertical (eddy) diffusion of wet atmospheric constituents -->
<scheme>compute_molec_diff_dry</scheme> <!-- Calculate molecular diffusion of dry atmospheric constituents, if do_molec_diff is True -->
<scheme>compute_vdiff_dry</scheme> <!-- Calculate the vertical (eddy) diffusion of dry atmospheric constituents -->
<scheme>diff_flux_diag</scheme> <!-- Calculate diffusion variable diagnostics, if do_pbl_diags is False (is that correct?) -->
<scheme>diff_flux_tend_dry</scheme> <!-- Calculate vertical diffusion tendencies for "dry" quantities, and send them back to host model -->
<scheme>set_wet_to_dry</scheme> <!-- Convert mixing ratios from air + water vapor to dry air -->
<scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False -->
<scheme>diff_mass_check</scheme> <!-- Check mass conservation after vertical diffusion, and send error messages if check fails -->
<scheme>pbl_output</scheme> <!-- Write PBL diagnostic variables to history files -->
<!-- **************************** -->
<scheme>rayleigh_friction_tend</scheme> <!-- Calculate Rayleigh friction tendency -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. -->
<scheme>charge_balance</scheme> <!-- Enforce charge nuetrality, if chemistry simulates electrons -->
<!-- Gravit wave tendencies -->
<!-- **************************** -->
<!-- This interface depends heavily
on namelist inputs, with entire
blocks of code being used (or not)
depending on said namelist choices.
However, the general structure of these
code blocks is more or less the same,
so a "generic" scheme set is included
here, which will need to be expanded
out once "if-statement" like dependencies
can be added to suite definition files
like this one -->
<scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor -->
<scheme>gw_prof</scheme> <!-- Calculate layer interface densities and Brunt-Viasala frequencies (combine with other schemes?) -->
<!-- Generic gravity wave scheme order -->
<!-- +++++++++++++++++++++++++ -->
<scheme>effgw_calc</scheme> <!-- Calculate the efficiency of gravity wave momentum transfer -->
<scheme>gw_src_calc</scheme> <!-- Determine gravity wave sources -->
<scheme>gw_drag_prof</scheme> <!-- Solve for the drag profile with the gravity wave spectrum -->
<scheme>calc_taucd</scheme> <!-- Project stress into directional components -->
<scheme>egwdffi_tot_calc</scheme> <!-- add diffusion coefficients -->
<scheme>momentum_flux_calc</scheme> <!-- Calculate momentum fluxes/wind tendencies -->
<scheme>energy_change</scheme> <!-- Calculate atmospheric energy change -->
<scheme>energy_fixer</scheme> <!-- Ensure energy conservation -->
<scheme>gw_cam_update</scheme> <!-- Placeholder for CAM gravity wave updates and diagnostic output calculations -->
<!-- +++++++++++++++++++++++++ -->
<!-- **************************** -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<scheme>lunar_tides_tend</scheme> <!-- Calculate horizontal wind tendencies due to M2 lunar tide, but only if apply_lunar_tides is True -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAP' -->
<scheme>nudging_timestep_tend</scheme> <!-- Apply nudging to horizontal winds, heat, and water vapor, and output diagnostics, but only if nudging is turned on. -->
<scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs -->
<scheme>set_dry_to_wet</scheme> <!-- Only matters if dycore is LR (still used?) or SE-->
<!-- Dry air mass adjuster --> <!-- Only matters if dycore is FV (LR), otherwise this calculation is purely diagnostic -->
<!-- **************************** -->
<scheme>qfac_state_adjust</scheme> <!-- Adjust state variables based off the change in water vapor -->
<scheme>geopotential_dse</scheme> <!-- Calculate the temperatue and geopotential height using pressure and dry static energy -->
<!-- **************************** -->
<scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAM' -->
<scheme>dtcore_reset</scheme> <!-- Reset "dtcore" variable to equal temperature -->
<scheme>diag_phys_tend_writeout</scheme> <!-- Calculate physics diagnostic variables, and output them to history file -->
</time_split>
</group>
</suite>