Skip to content

Vertical Regridding in ExtData2G

Ben Auer edited this page Apr 3, 2025 · 34 revisions

Introduction

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:

Vertical Coordinates

Hybrid Sigma Levels

Cell Boundaries for Hybrid Sigma Levels

Supported Use Cases

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.

Prerequisites

In order to enable vertical regridding, several conditions must be true.

ExtData Must Import PLE and Q

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
::

Enable Vertical Regridding

Next for each rule that you want to enable vertical regridding in you must add this to the rule:

enable_vertical_regrid: true

Files Must Have Proper Format

This is just that. The files must follow the conventions that will be laid out in the next section

File Format for Vertical Regridding

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.

Format for Hybrid Sigma Pressure Levels (What GEOS Uses)

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) ;

Where can I find AK and BK?

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.

Clone this wiki locally