6.31. drive.nml
¶
This file contains a single namelist called JULES_DRIVE
that indicates how meteorological driving data is input.
6.31.1. JULES_DRIVE
namelist members¶
- JULES_DRIVE::t_for_snow¶
- Type:
real
- Default:
None
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. The default value used to be 274.0 K.
- JULES_DRIVE::t_for_con_rain¶
- Type:
real
- Default:
None
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. In this configuration all snow is assumed to be large-scale in origin. The default value used to be 373.15 K but in general this is not recommended as it effectively means all precipitation is large-scale; a value of 293.15 K might be more appropriate.Also see
confrac
.t_for_con_rain
is not used ifl_point_data
= TRUE, since then there is no convective precipitation.
- JULES_DRIVE::diff_frac_const¶
- Type:
real
- Default:
None
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:
Daily forcing data, i.e.
data_period
= 86400main_run_start
,spinup_start
anddata_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:
None
Duration of a convective rainfall event in seconds for use in the disaggregator. See HCTN96 section 2.4. A value of 21600s (6 hours) used to be the default.
Only used if
l_daily_disagg
= TRUE.
- JULES_DRIVE::dur_ls_rain¶
- Type:
real
- Default:
None
Duration of a large-scale rainfall event in seconds for use in the disaggregator. See HCTN96 section 2.4. A value of 3600s (1 hour) used to be the default.
Only used if
l_daily_disagg
= TRUE.
- JULES_DRIVE::dur_conv_snow¶
- Type:
real
- Default:
None
Duration of a convective snowfall event in seconds for use in the disaggregator. See HCTN96 section 2.4. A value of 3600s (1 hour) used to be the default.
Only used if
l_daily_disagg
= TRUE.
- JULES_DRIVE::dur_ls_snow¶
- Type:
real
- Default:
None
Duration of a large-scale snowfall event in seconds for use in the disaggregator. See HCTN96 section 2.4. A value of 3600s (1 hour) used to be the default.
Only used if
l_daily_disagg
= TRUE.
- JULES_DRIVE::precip_disagg_method¶
- Type:
integer
- Permitted:
1, 2, 3 or 4
- Default:
None
Switch controlling the disaggregation method for precipitation. See HCTN96 section 2.4. The default value used to be 2.
Only used if
l_daily_disagg
= TRUE.Do not disaggregate precipitation.
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
anddur_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 theredis
routine in IMOGEN.As for 2, except no upper limit on the precipitation in a timestep.
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:
None
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:
None
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:
None
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 inz1_tq_file
.- FALSE
z1_tq
will be set to a constant value, specified inz1_tq_in
, at all points.
- JULES_DRIVE::z1_tq_in¶
- Type:
real
- Permitted:
> 0.0
- Default:
None
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 forz1_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 usez1_tq_in
anyway.
Members used to specify boundary layer height
- JULES_DRIVE::bl_height¶
- Type:
real
- Permitted:
> 0.0
- Default:
1000.0
Height above ground to top of the atmospheric boundary layer (m). This value is disregarded if
bl_height
is provided as prescribed data (see List of supported variables).
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
andspinup_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.31.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.31.1.1.1. Pressure, Humidity and Temperature¶
Name |
Description |
---|---|
|
Air pressure (Pa). |
|
Specific humidity (kg kg-1). |
|
Air temperature (K). |
6.31.1.1.2. Radiation variables¶
The radiation forcing variables can be given in one of four ways:
sw_down
andlw_down
Downward fluxes of short- and longwave radiation are input. This is the preferred option.
rad_net
andsw_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
andsw_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
andsw_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 |
---|---|
|
Net (all wavelength) downward radiation (W m-2). |
|
Net downward longwave radiation (W m-2). |
|
Net downward shortwave radiation (W m-2). |
|
Downward longwave radiation (W m-2). |
|
Downward shortwave radiation (W m-2). |
|
Diffuse radiation (W m-2). |
6.31.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 usingt_for_con_rain
. Convective snowfall is assumed to be zero.tot_rain
andtot_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
andtot_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
andcon_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 |
---|---|
|
Precipitation rate (kg m-2 s-1). |
|
Rainfall rate (kg m-2 s-1). |
|
Snowfall rate (kg m-2 s-1). |
|
Large-scale rainfall rate (kg m-2 s-1). |
|
Convective rainfall rate (kg m-2 s-1). |
|
Large-scale snowfall rate (kg m-2 s-1). |
|
Convective snowfall rate (kg m-2 s-1). |
6.31.1.1.4. Wind variables¶
The wind variables can be given in one of two ways:
wind
The wind speed is input.
u
andv
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 |
---|---|
|
Total wind speed (m s-1). |
|
Zonal component of the wind (m s-1). |
|
Meridional component of the wind (m s-1). |
6.31.1.1.5. Daily disaggregator variables¶
If l_daily_disagg
= TRUE, then the diurnal temperature range is also required:
Name |
Description |
---|---|
|
Diurnal temperature range (K). |
6.31.2. Examples of specifying driving data¶
The examples below illustrate the use of some of the key settings in the namelist; other settings are omitted for clarity.
6.31.2.1. Single point ASCII driving data for one year¶
&JULES_DRIVE
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',
diff_frac_const = 0.1,
t_for_con_rain = 293.15
/
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. t_for_con_rain
= 293.15K means that rainfall is treated as convective in nature for temperatures at or above that threshold (not used if l_point_data
= TRUE).
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.31.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',
diff_frac_const = 0.1,
t_for_con_rain = 293.15
/
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.