-
Notifications
You must be signed in to change notification settings - Fork 19
Guide to Supported ExtData Input Files
Ben Auer edited this page Feb 16, 2024
·
13 revisions
This will be a guide on what ExtData expects to have in its files for inputs. Note that since the History component uses the same IO layer, this is also describes what sort of files you will get from History.
The the horizontal dimensions and any associated metadata variable depend on the grid type. There are generally 3 grid types we currently support.
The file must have 2 dimensions, name lon and lat and two coordinate variables of the same name.
dimensions:
lon = 180 ;
lat = 91 ;
variables:
double lon(lon) ;
lon:long_name = "longitude" ;
lon:units = "degrees_east" ;
double lat(lat) ;
lat:long_name = "latitude" ;
lat:units = "degrees_north" ;
Xdim = 180 ;
Ydim = 180 ;
nf = 6 ;
ncontact = 4 ;
orientationStrLen = 5 ;
variables:
int nf(nf) ;
nf:long_name = "cubed-sphere face" ;
nf:axis = "e" ;
nf:grads_dim = "e" ;
int ncontact(ncontact) ;
ncontact:long_name = "number of contact points" ;
char cubed_sphere ;
cubed_sphere:grid_mapping_name = "gnomonic cubed-sphere" ;
cubed_sphere:file_format_version = "2.90" ;
cubed_sphere:additional_vars = "contacts,orientation,anchor" ;
cubed_sphere:gridspec_file = "C180_gridspec.nc4" ;
double Xdim(Xdim) ;
Xdim:long_name = "Fake Longitude for GrADS Compatibility" ;
Xdim:units = "degrees_east" ;
double Ydim(Ydim) ;
Ydim:long_name = "Fake Latitude for GrADS Compatibility" ;
Ydim:units = "degrees_north" ;
double lons(nf, Ydim, Xdim) ;
lons:long_name = "longitude" ;
lons:units = "degrees_east" ;
double lats(nf, Ydim, Xdim) ;
lats:long_name = "latitude" ;
lats:units = "degrees_north" ;
int contacts(nf, ncontact) ;
contacts:long_name = "adjacent face starting from left side going clockwise" ;
char orientation(nf, ncontact, orientationStrLen) ;
orientation:long_name = "orientation of boundary" ;
int anchor(nf, ncontact, ncontact) ;
anchor:long_name = "anchor point"
dimensions:
XCdim = 73 ;
Xdim = 72 ;
YCdim = 37 ;
Ydim = 36 ;
variables:
double Xdim(Xdim) ;
Xdim:long_name = "Fake Longitude for GrADS Compatibility" ;
Xdim:units = "degrees_east" ;
double Ydim(Ydim) ;
Ydim:long_name = "Fake Latitude for GrADS Compatibility" ;
Ydim:units = "degrees_north" ;
double lons(Ydim, Xdim) ;
lons:long_name = "longitude" ;
lons:units = "degrees_east" ;
double lats(Ydim, Xdim) ;
lats:long_name = "latitude" ;
lats:units = "degrees_north" ;
double corner_lons(YCdim, XCdim) ;
corner_lons:long_name = "longitude" ;
corner_lons:units = "degrees_east" ;
double corner_lats(YCdim, XCdim) ;
corner_lats:long_name = "latitude" ;
corner_lats:units = "degrees_north" ;
// global attributes:
:grid_type = "Tripolar" ;
Input files are allow to have one dimension not associated with the horizontal dimensions. It must be named 'lev' no matter what.
Each variable, that is something that is not part of the horizontal grid or vertical level metadata and variables specific for those must conform to the following
- Every variable must depend on the dimensions in this order: horizontal dimensions, vertical dimension (optional), time
- Note that only the vertical dimension is optional. All variables must depend on any dimensions associated with the horizontal and time. Time is not optional, if your dataset doesn't depend on time, just add it anyway. If not, ExtData is not reading it.
- Each variable must have a units attribute and a long_name attribute.