Skip to content

lukelbd/gfdl-fms

Repository files navigation

GFDL dynamical core mods

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.

Additions

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 to vert_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 setting vert_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' or damp_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 of surf_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.

Documentation

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.

Input

The model can be given two types of input files in the INPUT directory.

  • Topography file topography.data.nc, containing a zsurf variable with longitude and latitude dimensions.
  • Locked heating file heating.data.nc, containing a t variable or tdt variable with longitude, latitude, and level dimensions. This heating replaces thermal damping.

Truncation

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)

About

🌎 Direct edits of the GFDL dry dynamical core FMS model code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published