This repository contains changes to the "dry" dynamical core spectral model from the GFDL Flexible Modeling System. The original model code can be found here.
Various features were added to the model, described in detail below and in the namelist
file input.nml. Note that the hs_forcing_mod
module and
hs_forcing.f90
file are renamed to forcing_mod
and
forcing.f90, and the gaussian_topog_mod
module
and gaussian_topog.f90
file are renamed to idealized_topog_mod
and
idealized_topog.f90. This renaming reflects
the availability of new model features. Also, the forcing
subroutine now accepts
longitudes as well as latitudes.
- vert_coordinate.f90 implements the
Polvani and Kushner method for constructing levels with high stratospheric resolution
directly. It can be requested using
vert_coord_option='pk_sigma'
, analogous tovert_coord_option='even_sigma'
, in the&spectral_dynamics_nml
namelist (see input.nml). - ECMWF hybrid coordinate data is located in levels, and implemented as a
&vert_coordinate_nml
namelist in the levels_ecmwf_60.nml file. This namelist can be copied into input.nml and applied by settingvert_coord_option='input'
in the&spectral_dynamics_nml
namelist (see below). - forcing.f90 adds options to apply static
diabatic heating perturbations from Butler at el. (2010) and Lindgren et al. (2018)
(various
&forcing_nml
options), and the option to load locked diabatic heating from a file instead of using Newtonian damping (locked_heating=.true.
). - forcing.f90 adds new forcing options other than
Held and Suarez (1994): the Polvani and Kushner (2002)
'pk'
scheme (teq_mode='pk'
), and a modified Polvani and Kushner scheme (teq_mode='pkmod'
), with stratospheric equilibrium temperatures conforming to the height at which the minimum tropospheric equilibrium temperature is reached. It also includes an option to change the damping timescale in the stratosphere (damp_mode='pk'
ordamp_mode='pkmod'
), beginning where the minimum tropospheric equilibrium temperature is reached. - forcing.f90 adds various options for modifying
the damping scheme: specifying surface equilibrium temperature from its global mean
surface value rather than its equatorial surface value (
surf_shneider=.true.
and e.g.t_mean=300
instead ofsurf_schneider=.false.
and e.g.t_0=315
), changing the exponent to which the cosine latitude is raised to control how boundary layer damping intensity changes with latitude (e.g.exp_b=4
), and changing the latitude of the most intense meridional equilibrium temperature gradients (e.g.exp_h=-2
for equatorward motion,exp_h=2
for poleward motion). - forcing.f90 adds options for imposing stronger tropopause inversion layer (TIL) - Boljka and Birner (2022). Accordingly, changes were made to input.nml as well.
- idealized_topog.f90 adds a new sinusoidal
topography option, configurable with the
&idealized_topog_nml
namelist.
The full, original model documentation is published on github-pages. Use the links at the top of each page to navigate between sections! Below are some important notes regarding the documentation.
- bgrid.pdf, spectral_core.pdf, shallow.pdf, barotropic.pdf, contain background information on the model physical equations.
- diag_table is a template "diagnostic table". It specifies the model output NetCDF files, time-averaging behavior, and variable names. A brief description of this file format in found in the diag_table comments. Full lists of diagnostic table parameters are found on the following pages.
- input.nml is a template namelist file. It allows you to specify
various model settings and forcing parameters at run-time, rather than compile-time.
Brief descriptions of some important parameters are found in the
input.nml comments. Full tables and descriptions for all namelist
parameters are found on the following pages:
- atmos_model.html
- atmos_bgrid/atmosphere.html
- atmos_bgrid_shallow/atmosphere.html
- atmos_spectral_barotropic/atmosphere.html
- atmos_spectral_shallow/atmosphere.html
- barotropic_dynamics.html
- barotropic_physics.html
- bgrid_advection.html
- bgrid_cold_start.html
- bgrid_core_driver.html
- bgrid_horiz_diff.html
- bgrid_integrals.html
- bgrid_sponge.html
- diag_manager.html
- fms.html
- forcing.html
- horiz_interp_spherical.html
- idealized_topog.html
- shallow_dynamics.html
- shallow_physics.html
- shallow_physics.html
- spectral_dynamics.html
- topography.html
The model can be given two types of input files in the INPUT
directory.
- Topography file
topography.data.nc
, containing azsurf
variable with longitude and latitude dimensions. - Locked heating file
heating.data.nc
, containing at
variable ortdt
variable with longitude, latitude, and level dimensions. This heating replaces the thermal damping term.
The following is a table of valid truncation numbers with the corresponding recommended
number of latitudes and cores for parallelization. Remember that to avoid aliasing of
the harmonics, N >= (3M + 1)/2
, where N
is the number of latitudes and M
is the
truncation number.
Truncation | Number of latitudes | Recommended cores (latitudes per file) |
---|---|---|
42 | 64 | 16 (4) |
63 | 96 | 24 (4) |
85 | 128 | 32 (4) |
106 | 160 | 40 (4), 80 (2) |
159 | 240 | 60 (4) |
170 | 256 | 64 (4) |
266 | 400 | 100 (4) |