-
Notifications
You must be signed in to change notification settings - Fork 25
Vertical Regridding in ExtData2G
Start at version x.y.z of MAPL ExtData will support vertical regridding of inputs in very specific cases. The details of this will be described in detail in this wiki page. Note that I will make several references to the CF conventions. Here are the relevant links:
Cell Boundaries for Hybrid Sigma Levels
The first implementation supports regridding from one set of GEOS hybrid sigma levels (as defined in the input files) to another set of hybrid sigma levels (as defined by the model).
In addition this is only supported for quantities in the following units mol mol-1, kg kg-1, and kg m-2. In addition all these can be be per second, I.E. kg m-2 s-1 or mol mol-1 s-1. Note that the input files and the units in the GEOS fields being delivered to ExtData must agree.
In order to enable vertical regridding, several conditions must be true.
To regrid in the vertical ExtData needs the 3D edge pressures imported from dynamics. In addition volume mixing regridding requires the specific humidity from the moist component. To do this add the following to the CAP.rc, NOTE, NO SPACES BEFORE OR AFTER THE COMMA:
EXTDATA_IMPORTS:
PLE,DYN
QV,MOIST
::
Next for each rule that you want to enable vertical regridding in you must add this to the rule:
enable_vertical_regrid: true
This is just that. The files must follow the conventions that will be laid out in the next section
Note this is my best attempt to interpret the CF conventions. If this is too cumbersome it is not too late to change. Here is an example file.
dimensions:
lon = 180 ;
lat = 91 ;
lev = 72 ;
bnds = 2 ;
time = 1 ;
variables:
float lon(lon) ;
lon:long_name = "longitude" ;
lon:units = "degrees_east" ;
float lat(lat) ;
lat:long_name = "latitude" ;
lat:units = "degrees_north" ;
float lev(lev) ;
lev:long_name = "vertical level" ;
lev:units = "layer" ;
lev:positive = "down" ;
lev:coordinate = "eta" ;
lev:formula_terms = "ap: ak b: bk ps: PS" ;
lev:bounds = "lev_bnds" ;
lev:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ;
float lev_bnds(lev, bnds) ;
lev_bnds:formula_terms = "ap: ak_bnds b: bk_bnds ps: PS" ;
float ak(lev, bnds) ;
float bk(lev, bnds) ;
float ak_bnds(lev, bnds) ;
float bk_bnds(lev, bnds) ;
Unfortunately these are hard coded in source code although I am working on a script to extract them from the source code and put them in a yaml file. The hard coded AK and BK's are in this file.
I also have extract a few sets here on Discover that are in a yaml file that is here: /discover/nobackup/bmauer/akbk_file.