This file sets up the grid configuration for the run. It contains six namelists - JULES_INPUT_GRID, JULES_LATLON, JULES_LAND_FRAC, JULES_MODEL_GRID, JULES_SURF_HGT and JULES_Z_LAND
Each run of JULES involves two grids: the input grid and the model grid. The input grid is the grid on which all input data are held. The model grid is the set of points on which the model is run. The model grid is the grid of points that will be processed by JULES, and is a subset of the input grid.
As discussed in General principles, the input grid consists of three pieces of information:
The latitude, longitude and land fraction of each point are then read in on the full input grid as specified by the namelists. A subset of the input grid to use as the model grid can then be specified in various ways described below (e.g. land points only, all points within certain latitude/longitude bounds).
In most cases, the model grid will be represented internally as a vector of points, even when the input grid is 2D. Numerically, this makes no difference. The only time that the model grid will be 2D is when the input grid is 2D, force_1d_grid = F and the model grid is a contiguous rectangular subsection of the input grid.
Warning
The dimension names specified in this namelist will be used for all input files.
Type: | logical |
---|---|
Default: | F |
Indicates if the input grid is 1D or 2D.
Only used when grid_is_1d = TRUE
Type: | character |
---|---|
Default: | “land” |
The name of the single grid dimension.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | integer |
---|---|
Permitted: | >= 1 |
Default: | 0 |
The size of the single grid dimension.
Only used when grid_is_1d = FALSE
Type: | character |
---|---|
Default: | “x” |
The name of the x dimension.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “y” |
The name of the y dimension.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | integer |
---|---|
Permitted: | >= 1 |
Default: | 0 |
The size of the x dimension.
Type: | integer |
---|---|
Permitted: | >= 1 |
Default: | 0 |
The size of the y dimension.
Type: | character |
---|---|
Default: | “time” |
The name of the time dimension in any input files containing time varying data.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “pft” |
The dimension name used when variables have an additional dimension of size npft.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “cpft” |
The dimension name used when variables have an additional dimension of size ncpft.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “nvg” |
The dimension name used when variables have an additional dimension of size nnvg.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “type” |
The dimension name used when variables have an additional dimension of size ntype.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “tile” |
The dimension name used when variables have an additional dimension of size ntiles.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “soil” |
The dimension name used when variables have an additional dimension of size sm_levels.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “snow” |
The dimension name used when variables have an additional dimension of size nsmax.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Type: | character |
---|---|
Default: | “scpool” |
The dimension name used when variables have an additional dimension of size dim_cs1.
Note
For ASCII files, this can be anything. For NetCDF files, it should the name of the dimension in input file(s).
Used when input grid consists of a single location (1D and npoints = 1 or 2D and nx = ny = 1
Type: | real |
---|---|
Default: | None |
The latitude of the single grid location.
Type: | real |
---|---|
Default: | None |
The longitude of the single grid location.
Used for any input grid with more than a single location
Type: | character |
---|---|
Default: | None |
The name of the file to read latitude and longitude from.
Type: | character |
---|---|
Default: | ‘latitude’ |
The name of the variable containing the latitude data.
In the file, the variable must have no levels dimensions and no time dimension.
Type: | character |
---|---|
Default: | ‘longitude’ |
The name of the variable containing the longitude data.
In the file, the variable must have no levels dimensions and no time dimension.
Land fraction is the fraction of each gridbox that is land. Currently, JULES considers any gridbox with land fraction > 0 to be 100% land, and all others to be 100% sea (or sea-ice). Land fraction data can be used to select only land points from the full input grid (see below).
Warning
When the input grid consists of a single location (1D and npoints = 1 or 2D and nx = ny = 1), that single location is assumed to be 100% land.
For any input grid with more than a single location, the following are used:
Type: | character |
---|---|
Default: | None |
The name of the file to read land fraction data from.
Type: | character |
---|---|
Default: | ‘land_fraction’ |
The name of the variable containing the land fraction data.
In the file, the variable must have no levels dimensions and no time dimension.
Members of this namelist are used to select the points to be modelled from the input grid. This can be done in various ways (see the Examples).
Type: | logical |
---|---|
Default: | T |
If use_subgrid = FALSE (see below), the land points will be extracted from the full input grid.
If use_subgrid = TRUE, then the subgrid extraction takes place first, and the land points will be extracted from the specified subgrid.
Type: | logical |
---|---|
Default: | F |
Type: | logical |
---|---|
Default: | F |
Only used if use_subgrid = TRUE
Type: | logical |
---|---|
Default: | None |
Only used if latlon_region = TRUE
Type: | real(2) |
---|---|
Default: | None |
The lower and upper bounds (in that order) for the latitude to use. The model grid will only contain points where lat_bounds(1) <= latitude <= lat_bounds(2).
Type: | real(2) |
---|---|
Default: | None |
The lower and upper bounds (in that order) for the longitude to use. The model grid will only contain points where lon_bounds(1) <= longitude <= lon_bounds(2).
Only used if latlon_region = FALSE
Type: | integer |
---|---|
Permitted: | >= 1 |
Default: | 0 |
The number of points to model.
Type: | character |
---|---|
Default: | None |
The name of the file containing the latitude and longitude for each point.
Each line in the file should contain the latitude and longitude (in that order) for a point.
This namelist sets the elevation of each surface tile. Elevations can either be relative to the gridbox mean or have constant elevation bands above sea-level.
If tile elevations are set relative to the gridbox mean, then the gridbox mean elevation is not required. The gridbox mean elevation is implicit in the near-surface meteorological data that are provided (higher locations will tend to be colder, have lower pressure, etc.). The elevation of each tile is used to alter the values of the air temperature and humidity (and possibly downwelling longwave, see l_elev_lw_down) over that tile relative to the surface.
If any tile uses absolute heights (i.e. l_elev_absolute_height has at least one element that is .true.), then the gridbox mean elevation must also be supplied. This is read in from the optional JULES_Z_LAND namelist which is described below. The model calculates elevations relative to the gridbox mean by taking the difference between the absolute elevation and the gridbox mean.
If any tile uses absolute heights, then tile heights are set constant across a domain, regardless of whether each tile’s height is specified as a relative offset or absolute. This makes it simple to set zero-offset heights for tiles that should not be considered in the elevation bands. It is no longer possible to have spatially varying tile heights if this option is used.
Type: | logical |
---|---|
Default: | T |
Switch used to simplify the initialisation of tile elevation.
Note
If l_aggregate = TRUE, this switch is also set to TRUE.
Only used if zero_height = FALSE
Type: | logical(ntiles) |
---|---|
Default: | F |
Type: | logical |
---|---|
Default: | T |
This indicates if tile heights relative to the gridbox mean should be read from a specified file or namelist.
Only used if use_file = TRUE
Type: | character |
---|---|
Default: | None |
The name of the file containing tile heights relative to the gridbox mean.
Type: | character |
---|---|
Default: | ‘surf_hgt’ |
The name of the variable containing tile heights relative to the gridbox mean. In the file, the variable must have a single levels dimension of size ntiles called tile_dim_name.
This is an optional namelist and only used if any tile has l_elev_absolute_height = TRUE. The namelist sets values for the elevation bands and reads the elevation of the forcing data.
Type: | real(ntiles) |
---|---|
Default: | None |
Spatially invariant elevation bands for each tile. These may be relative to the gridbox mean or absolute elevations above sea-level depending on l_elev_absolute_height.
Type: | logical |
---|---|
Default: | T |
This indicates if the elevation of the forcing data should be read from a file or from a namelist.
Used if use_file = TRUE
Type: | character |
---|---|
Default: | None |
The name of the file containing the elevation of the forcing data.
Type: | character |
---|---|
Default: | ‘z_land’ |
The name of the variable containing the elevation of the forcing data. In the file, the variable must have no level dimensions and no time dimensions.
Used if use_file = FALSE
Type: | real |
---|---|
Default: | None |
Elevation of the forcing data for a single location.
The following gives an example of how you would set up the namelists to use elevation bands above sea-level.
&JULES_SURF_HGT
zero_height = .false.,
# No elevation correction to tiles 1 to 6, use elevation bands for tiles 7 to 9
l_elev_absolute_height = 6*.false., 3* .true.,
/
&JULES_Z_LAND
# Set values for the elevation bands.
surf_hgt_band = 6*0.0, 1000.0, 2000.0, 3000.0,
# Read the WFDEI forcing data elevation from a file
use_file = .true.,
file = 'WFDEI-elevation.nc',
z_land_name = 'elevation'
/
&JULES_INPUT_GRID
nx = 1,
ny = 1
/
&JULES_LATLON
latitude = 52.168,
longitude = 5.744
/
&JULES_LAND_FRAC /
&JULES_MODEL_GRID /
&JULES_SURF_HGT
zero_height = T
/
All the examples in this section assume gridded NetCDF data.
In this example, input files contain data on a vector of land points. The land points dimension is called “land”. The time dimension for time-varying variables is called “time”. The default dimension names are used for all additional dimensions (e.g. pft, tile).
&JULES_INPUT_GRID
grid_is_1D = T,
npoints = 15238,
grid_dim_name = "land",
time_dim_name = "time"
/
In this example, input files contain data on a 2D latitude/longitude grid. The x dimension is called “lon” and the y dimension is called “lat”. The time dimension for time-varying variables is called “time”. Variables with an extra tiles dimension use the dimension name “pseudo” for that dimension. All other additional dimensions use their default names.
&JULES_INPUT_GRID
grid_is_1D = F,
nx = 96,
ny = 56,
x_dim_name = "lon",
y_dim_name = "lat",
tile_dim_name = "pseudo",
time_dim_name = "time"
/
This can be used with either a 1D or 2D input grid.
&JULES_LATLON
file = 'lat_lon.nc',
lat_name = 'latitude',
lon_name = 'longitude'
/
&JULES_LAND_FRAC
file = 'land_mask.nc',
land_frac_name = 'land_frac'
/
&JULES_MODEL_GRID
land_only = F,
use_subgrid = T,
latlon_region = T,
lat_bounds = 55.0 57.0,
lon_bounds = -5.0 -3.0
/
This setup reads latitude, longitude and land fraction for each gridbox in the full input grid (1D or 2D) from the named variables in the specified files.
In JULES_MODEL_GRID, use_subgrid indicates that a subset of the input grid will be selected as the model grid. latlon_region then indicates that latitude and longitude bounds will be used to select the subgrid. land_only = FALSE means that sea and sea-ice points will remain in the model grid if any are selected. The model grid will then be a vector containing the selected points (those that fall within the latitude/longitude bounds), even if those points could be used to form a rectangular region.
This can be used with either a 1D or 2D input grid.
&JULES_LATLON
file = 'lat_lon.nc',
lat_name = 'latitude',
lon_name = 'longitude'
/
&JULES_LAND_FRAC
file = 'land_mask.nc',
land_frac_name = 'land_frac'
/
&JULES_MODEL_GRID
use_subgrid = T,
latlon_region = F,
npoints = 4,
points_file = 'points.txt'
/
This setup reads latitude, longitude and land fraction for each gridbox in the full input grid (1D or 2D) from the named variables in the specified files.
In JULES_MODEL_GRID, use_subgrid indicates that a subset of the input grid will be selected as the model grid. latlon_region then indicates that a list of latitudes and longitudes will be used to select the subgrid. land_only is not given, meaning it takes its default value, TRUE. This means that any sea or sea-ice points specified in the list of points will be discarded. The model grid will then be a vector containing the selected points (those with the given latitude/longitude).
Assuming that the input grid is a 1 degree grid and the latitude and longitude are given at the centre of the gridbox, points.txt should look like the following:
55.5 -4.5
55.5 -3.5
56.5 -4.5
56.5 -3.5
&JULES_INPUT_GRID
grid_is_1d = F,
nx = 96,
ny = 56,
# ...
/
&JULES_LATLON
# <specified from file>
/
&JULES_LAND_FRAC
# <specified from file>
/
&JULES_MODEL_GRID
land_only = F
/
In general, the only configuration that yields a 2D model grid is:
If the input grid is a 2D region where every point is land (i.e. not the whole globe), then land_only = TRUE would also yield a 2D model grid. If any options are set that mean some points from the input grid are not modeled, the model grid will be a vector of points. Computationally, this makes no difference.