Skip to content
This repository has been archived by the owner on Sep 1, 2022. It is now read-only.

WRF design notes, August 8, 2019

Howard Van Dam edited this page Sep 9, 2019 · 15 revisions

These are notes from the design meeting, along with new questions/issues:

Mapping to the WRF intermediate file

WRF File Identifier Coverage Object Data (see notes)
IFV (1)
FIELD metgrid name (2)
UNITS metgrid units (2)
DESC metgrid desc (2)
IS_WIND_EARTH_REL (3)
HDATE (4)
XFSCT (4)
XLVL (5)
NX (6)
NY (6)
IPROJ (7)
WRF RECORD 3 ?
SLAB (8)
MAP_SOURCE (9)

Notes:

  1. The number 5.
  2. the metgrid name, units and desc will be populated as coverage attributes from vtable metgrid data.

The metgrid info can be pulled From a Coverage object via the attributes within the coverage:

String attName = "Metgrid_Name";
  Attribute att = cov.findAttributeIgnoreCase(attName);
  String nameValue = att.getStringValue();

  1. Perhaps a command line flag, or will be exposed as a global attribute. The only place we have this is at the iosp level in netcdf. The user will have to tell us if the u an v grids are relative, setting to false for the time being.

Examples of using the Coverage object:

  Coverage c = cv.findCoverage("Temperature_isobaric");
--or--
  for (Coverage cov : cv.getCoverages()){
    //get coverage items as well as the attributes
    CoverageCoordSys ccs = c.getCoordSys();
  
    CoverageCoordAxis theDate = ccs.getAxis(AxisType.RunTime);
    String HDATE = theDate.getCalendarDateUnit().toString();

    CoverageCoordAxis fcast = ccs.getAxis(AxisType.Time);
  }
  CoverageCoordAxis verticalLevel = ccs.getAxis(AxisType.Pressure)
   Coverage c = cv.findCoverage("Temperature_isobaric");
   c.getCoordSys().getHorizCoordSys().getXAxis();
   c.getCoordSys().getHorizCoordSys().getYAxis();
   c.getCoordSys().getProjection();

This depends of the forecast time and level time,coverage.readData is the method call, this is an example from a netcdf java test driver:

LatLonRect bbox = new LatLonRect(new LatLonPointImpl(90, -180), new LatLonPointImpl(-90, -90));
SubsetParams params = new SubsetParams().set(SubsetParams.timePresent, true).set(SubsetParams.latlonBB, bbox);
GeoReferencedArray geo = coverage.readData(params);
  1. This is coming from the coverage Collection, representing the whole:
CoverageCollection.findAttribute("Originating_or_generating_Center").getStringValue();

Required Fields for WRF ungrib processing:

We are going to ensure that the "required fields" are present as coverage objects before we create the intermediate file. What are those fields?

This link provides the answer.

For a little more information: list.

What needs to be done is see how these match with the Coverage objects. For example, there are several fields with Temperature. In an example GRIB file, there are "Temperature_isobaric", "Temperature_sigma", "Temperature_tropopause", "Temperature_maximum_wind" among others.

  1. Is only one "Temperature" needed? If so which one?
  2. Is Temperature_isobaric only needed if "v-component_of_wind_isobaric" is also found in the dataset?
  3. It appears that Temperature, u and v components of wind, geopotential height and RH, are these to be grouped together by pressure values?
  4. The full set of 3d and 2d objects have to be included (i.e. the intermedate file must have both, or can it contain only 3d or 2d)?