6.22. drive.nml

This file contains a single namelist called JULES_DRIVE that indicates how meteorological driving data is input.

6.22.1. JULES_DRIVE namelist members

JULES_DRIVE::l_imogen
Type:logical
Default:F

Switch for IMOGEN.

TRUE
IMOGEN is used to generate meteorological forcing data.
FALSE
No effect.

Note

If IMOGEN is enabled, only z1_tq_vary, z1_tq_in, z1_uv_in, z1_tq_file and z1_tq_var_name are used from this namelist.

JULES_DRIVE::t_for_snow
Type:real
Default:274.0

If total precipitation is given as a forcing variable, then t_for_snow is the near-surface air temperature (K) at or below which the precipitation is assumed to be snowfall. At higher temperatures, all the precipitation is assumed to be liquid.

JULES_DRIVE::t_for_con_rain
Type:real
Default:373.15

If total preciption or total rainfall are given, then t_for_con_rain is the near-surface air temperature (K) at or above which rainfall is assumed to be convective in origin. At lower temperatures, all the rainfall is assumed to be large-scale in origin.

Also see confrac.

t_for_con_rain is not used if l_point_data = TRUE, since then there is no convective precipitation.

All snow is assumed to be large-scale in origin.

JULES_DRIVE::diff_frac_const
Type:real
Default:0.0

A constant value used to calculate diffuse radiation from the total downward shortwave radiation.

Only used if diffuse radiation is not given as a forcing variable (see List of JULES forcing variables).

Members used to control the daily disaggregator

HCTN96 refer to Hadley Centre technical note 96, available from the Met Office Library.

JULES_DRIVE::l_daily_disagg
Type:logical
Default:F

Switch controlling whether the disaggregator is used to convert daily data driving data to driving data at the model timestep. See HCTN96 for a description of the disaggregation methods used.

TRUE

Disaggregator is used.

Warning

The disaggregator requires:

  1. Daily forcing data, i.e. data_period = 86400
  2. main_run_start, spinup_start and data_start to be 00:00:00 for some day.
FALSE
Disaggregator is not used.
JULES_DRIVE::l_disagg_const_rh
Type:logical
Default:F

Switch controlling sub-daily disaggregation of humidity.

Only used if l_daily_disagg = TRUE.

TRUE
Relative humidity is kept constant over day.
FALSE
Specific humidity is kept constant over day (apart from when limited by specific humidity at saturation).
JULES_DRIVE::dur_conv_rain
Type:real
Default:21600.0

Duration of a convective rainfall event in seconds for use in the disaggregator. See HCTN96 section 2.4.

Only used if l_daily_disagg = TRUE.

JULES_DRIVE::dur_ls_rain
Type:real
Default:3600.0

Duration of a large-scale rainfall event in seconds for use in the disaggregator. See HCTN96 section 2.4.

Only used if l_daily_disagg = TRUE.

JULES_DRIVE::dur_conv_snow
Type:real
Default:3600.0

Duration of a convective snowfall event in seconds for use in the disaggregator. See HCTN96 section 2.4.

Only used if l_daily_disagg = TRUE.

JULES_DRIVE::dur_ls_snow
Type:real
Default:3600.0

Duration of a large-scale snowfall event in seconds for use in the disaggregator. See HCTN96 section 2.4.

Only used if l_daily_disagg = TRUE.

JULES_DRIVE::precip_disagg_method
Type:integer
Permitted:1, 2, 3 or 4
Default:2

Switch controlling the disaggregation method for precipitation. See HCTN96 section 2.4.

Only used if l_daily_disagg = TRUE.

  1. Do not disaggregate precipitation.
  2. Disaggregate precipitation using the method implemented in IMOGEN, which allocates the daily precipitation each type into one event of duration dur_conv_rain, dur_ls_rain, dur_conv_snow and dur_ls_snow for convective rain, large-scale rain, convective snow and large-scale snow respectively. The start time of this event is randomly distributed from the beginning of the day to the end of the day minus the event duration. If the rate of precipitation in any timestep of any type is greater than a hard-coded maximum (currently 350 mm/day), the precipitation is redistributed by the redis routine in IMOGEN.
  3. As for 2, except no upper limit on the precipitation in a timestep.
  4. The event duration variable is used to determine the fraction of wet and dry timesteps, which are then distributed randomly throughout the day.

Members used to specify perturbations to the driving data

JULES_DRIVE::l_perturb_driving
Type:logical
Default:F

Apply perturbation to driving data.

JULES_DRIVE::temperature_abs_perturbation
Type:real
Default:0.0

Absolute perturbation amount to add to temperature. Can be positive or negative. Only used if l_perturb_driving = TRUE.

JULES_DRIVE::precip_rel_perturbation
Type:real
Permitted:>= 0.0
Default:1.0

Relative perturbation for precipitation variables (a multiplicative factor). Only used if l_perturb_driving = TRUE.

Members used to specify z1_tq and z1_uv

JULES_DRIVE::z1_uv_in
Type:real
Permitted:> 0.0
Default:10.0

Constant value for the height (m) at which the wind data are valid for every point. This height is relative to the zero-plane, not the ground.

JULES_DRIVE::z1_tq_vary
Type:logical
Default:F

Switch to indicate whether z1_tq (the height (m) at which the temperature and humidity data are valid) should be constant for all points or spatially varying. The height is relative to the zero-plane, not the ground.

TRUE
Spatially varying z1_tq will be read from the file specified in z1_tq_file.
FALSE
z1_tq will be set to a constant value, specified in z1_tq_in, at all points.
JULES_DRIVE::z1_tq_in
Type:real
Permitted:> 0.0
Default:10.0

Constant value for z1_tq to be used for every point.

Only required if z1_tq_vary = F.

JULES_DRIVE::z1_tq_file
Type:character
Default:None

File to read spatially varying z1_tq from.

Only required if z1_tq_vary = T.

JULES_DRIVE::z1_tq_var_name
Type:character
Default:‘z1_tq_in’

The name of the variable in z1_tq_file containing the data for z1_tq.

The variable should have no levels dimensions and no time dimension.

Note

This is not used for ASCII files.

However, since ASCII files can only be used for single-point runs, it is recommended to set z1_tq_vary = F and use z1_tq_in anyway.

Members used to specify the start, end and period of the data

JULES_DRIVE::data_start
JULES_DRIVE::data_end
Type:character
Default:None

The times of the start of the first timestep of data and the end of the last timestep of data.

Each run of JULES (configured in timesteps.nml) can use part or all of the specified data. However, there must be data for all times between run start and run end (determined by main_run_start, main_run_end, spinup_start and spinup_end).

The times must be given in the format:

"yyyy-mm-dd hh:mm:ss"
JULES_DRIVE::data_period
Type:integer
Permitted:-2, -1 or > 0
Default:None

The period, in seconds, of the data.

Special cases:

-1: Monthly data
-2: Yearly data

Members used to specify the files containing the data

JULES_DRIVE::read_list
Type:logical
Default:F

Switch controlling how data file names are determined for a given time.

TRUE
Use a list of data file names with times of first data.
FALSE
Use a single data file for all times or a template describing the names of the data files.
JULES_DRIVE::nfiles
Type:integer
Permitted:>= 0
Default:0

Only used if read_list = TRUE.

The number of data files to read name and time of first data for.

JULES_DRIVE::file
Type:character
Default:None

If read_list = TRUE, this is the file to read the list of data file names and times from. Each line should be of the form:

'/data/file', 'yyyy-mm-dd hh:mm:ss'

In this case data file names may contain variable name templating only, with the proviso that either no file names use variable name templating or all file names do. The files must appear in chronological order.

If read_list = FALSE, this is either the single data file (if no templating is used) or a template for data file names. Both time and variable name templating may be used.

Members used to specify the provided variables

JULES_DRIVE::nvars
Type:integer
Permitted:>= 0
Default:0

The number of forcing variables that will be provided.

See List of JULES forcing variables for the available forcing variables and their possible configurations.

JULES_DRIVE::var
Type:character(nvars)
Default:None

List of forcing variable names as recognised by JULES (see List of JULES forcing variables). Names are case sensitive.

Note

For ASCII files, variable names must be in the order they appear in the file.

JULES_DRIVE::var_name
Type:character(nvars)
Default:‘’ (empty string)

For each JULES variable specified in var, this is the name of the variable in the file(s) containing the data.

If the empty string (the default) is given for any variable, then the corresponding value from var is used instead.

Note

For ASCII files, this is not used - only the order in the file matters, as described above.

JULES_DRIVE::tpl_name
Type:character(nvars)
Default:None

For each JULES variable specified in var, this is the string to substitute into the file name(s) in place of the variable name substitution string.

If the file name(s) do not use variable name templating, this is not used.

JULES_DRIVE::interp
Type:character(nvars)
Default:None

For each JULES variable specified in var, this indicates how the variable is to be interpolated in time (see Temporal interpolation).

6.22.1.1. List of JULES forcing variables

All of the available forcing variables listed in the sections below, are expected to have no levels dimensions, but must have a time dimension called time_dim_name.

6.22.1.1.1. Pressure, Humidity and Temperature

Name Description
pstar Air pressure (Pa).
q Specific humidity (kg kg-1).
t Air temperature (K).

6.22.1.1.2. Radiation variables

The radiation forcing variables can be given in one of four ways:

sw_down and lw_down
Downward fluxes of short- and longwave radiation are input. This is the preferred option.
rad_net and sw_down
Downward shortwave and net all wavelength (downward is positive) radiation are input. The modelled albedo and surface temperature are used to calculate the downward longwave flux.
lw_net and sw_net
Net downward fluxes of short- and longwave radiation are input. The modelled albedo and surface temperature are used to calculate the downward fluxes of shortwave and longwave radiation.
lw_down and sw_net
Downward flux of longwave radiation and net downward flux of shortwave radiation are input. The modelled albedo is used to calculate the downward flux of shortwave radiation.

If any of the four combinations of radiation variables listed above are provided, then these are used to drive JULES. There is no default option. JULES will give a fatal error and stop if there are too many, too few or invalid forcing variables provided in the variable list.

Warning

If l_daily_disagg = TRUE, then the first method must be used.

diff_rad can be used with any of the four methods. If it is given, diffuse radiation is input from file. If it is not given, diff_frac_const is used instead to partition the downward shortwave radiation into diffuse and direct.

Name Description
rad_net Net (all wavelength) downward radiation (W m-2).
lw_net Net downward longwave radiation (W m-2).
sw_net Net downward shortwave radiation (W m-2).
lw_down Downward longwave radiation (W m-2).
sw_down Downward shortwave radiation (W m-2).
diff_rad Diffuse radiation (W m-2).

6.22.1.1.3. Precipitation variables

The precipitation variables can be specified in one of four ways:

precip
A single precipitation field is input. This represents the total precipitation (rainfall and snowfall). The total is partitioned between snowfall and rainfall using t_for_snow, and rainfall is then further partitioned into large-scale and convective components using t_for_con_rain. Convective snowfall is assumed to be zero.
tot_rain and tot_snow
Two precipitation fields are input: total rainfall and total snowfall. The rainfall is partitioned between large-scale and convective, using t_for_con_rain. Convective snowfall is assumed to be zero.
ls_rain, con_rain and tot_snow
Three precipitation fields are input: large-scale rainfall, convective rainfall and total snowfall. This cannot be used with l_point_data = TRUE. Convective snowfall is assumed to be zero.
ls_rain, con_rain, ls_snow and con_snow
Four precipitation fields are input: large-scale rainfall, convective rainfall, large-scale snowfall and convective snowfall. This cannot be used with l_point_data = TRUE. Note that this is the only option that considers convective snowfall.

If precip is given, the first method is used. If precip is not given but tot_rain is, the second method is used. If neither precip nor tot_rain are given but tot_snow is, the third method is used. The fourth method is used in all other cases.

The concept of convective and large-scale (or dynamical) components of precipitation comes from atmospheric models, in which the precipitation from small-scale (convective) and large-scale motions is often calculated separately. If JULES is to be driven by the output from such a model, the driving data might include these components.

Warning

If l_daily_disagg = TRUE, then interp for each precipitation variable should be f or nf.

Name Description
precip Precipitation rate (kg m-2 s-1).
tot_rain Rainfall rate (kg m-2 s-1).
tot_snow Snowfall rate (kg m-2 s-1).
ls_rain Large-scale rainfall rate (kg m-2 s-1).
con_rain Convective rainfall rate (kg m-2 s-1).
ls_snow Large-scale snowfall rate (kg m-2 s-1).
con_snow Convective snowfall rate (kg m-2 s-1).

6.22.1.1.4. Wind variables

The wind variables can be given in one of two ways:

wind
The wind speed is input.
u and v
The two components of the horizontal wind (e.g. the southerly and westerly components) are input.

If wind is given, then the first method is used. The second method is used in all other cases.

Name Description
wind Total wind speed (m s-1).
u Zonal component of the wind (m s-1).
v Meridional component of the wind (m s-1).

6.22.1.1.5. Daily disaggregator variables

If l_daily_disagg = TRUE, then the diurnal temperature range is also required:

Name Description
dt_range Diurnal temperature range (K).

6.22.2. Examples of specifying driving data

6.22.2.1. Single point ASCII driving data for one year

&JULES_DRIVE
  diff_frac_const = 0.1,

  data_start  = '1997-01-01 00:00:00',
  data_end    = '1998-01-01 00:00:00',
  data_period = 1800,

  file = "met_data.dat",

  nvars = 8,
  var    = 'sw_down'  'lw_down'  'tot_rain'  'tot_snow'   't'  'wind'  'pstar'   'q',
  interp =      'nf'       'nf'        'nf'        'nf'  'nf'    'nf'     'nf'  'nf'
/

data_start, data_end and data_period specify that the driving dataset provides one year (1997) of half-hourly data.

read_list is not given, so takes its default value of FALSE. This means that file is used as either the single data file or a file name template. In this case there is no templating, so JULES treats the given file as the single data file for all data times.

sw_down and lw_down are given, so the first radiation scheme (above) is used.

precip is not given but tot_rain is, so the second precipitation scheme (above) is used.

wind is given, so total wind speed is used (first scheme above).

diff_rad is not given, so the diffuse radiation is calculated as 0.1 (the value of diff_frac_const) times the total shortwave radiation.

The driving data file (met_data.dat) should look similar to:

# solar   long  rain  snow    temp   wind     press      humid
    3.3  187.8   0.0   0.0  259.10  3.610  102400.5  1.351E-03
   89.5  185.8   0.0   0.0  259.45  3.140  102401.9  1.357E-03
  142.3  186.4   0.0   0.0  259.85  2.890  102401.0  1.369E-03
# ----- data for later times ----

6.22.2.2. Driving data from NetCDF files with one variable per file

&JULES_DRIVE
  data_start  = '1982-07-01 03:00:00',
  data_end    = '1996-01-01 00:00:00',
  data_period = 10800,

  read_list = T,
  nfiles    = 162,

  file = "./file_list.txt",

  nvars = 8,
  var      = 'sw_down'  'lw_down'  'tot_rain'  'tot_snow'     't'  'wind'  'pstar'     'q',
  var_name =  'SWdown'   'LWdown'     'Rainf'     'Snowf'  'Tair'  'Wind'  'PSurf'  'Qair',
  tpl_name =  'SWdown'   'LWdown'     'Rainf'     'Snowf'  'Tair'  'Wind'  'PSurf'  'Qair',
  interp   =      'nb'       'nb'        'nb'        'nb'     'i'     'i'      'i'     'i'
/

In this example, the driving dataset provides 13.5 years of driving data on a 3 hourly timestep.

read_list = TRUE indicates that the names and start times of the data files should be read from file_list.txt. The first few lines of this file are:

'met_data/%vv_data/%vv198207.nc', '1982-07-01 03:00:00'
'met_data/%vv_data/%vv198208.nc', '1982-08-01 03:00:00'
'met_data/%vv_data/%vv198209.nc', '1982-09-01 03:00:00'
# ------ rest of file not shown -----

The presence of the variable name templating string in each file name shows that we are using variable name templating. The dates show that we do in fact have monthly files, but we cannot use time templating for these files because the start time of 03H does not conform to the requirements.

Furthermore, files for each variable are stored in separate directories. The values from tpl_name will be substituted into the file name templates in place of the substitution string (%vv). For example, pressure is held in files with names like met_data/PSurf_data/PSurf198207.nc, and temperature in files like met_data/Tair_data/Tair198207.nc.

The driving variable setup is as the previous example, except that diff_frac_const takes its default value of 0.0.