This repository contains changes to the dry dynamical core spectral model from the GFDL Flexible Modeling System. The original model 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 stratospheric 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 stratospheric equilibrium temp 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). - 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) |