Configuration reference
A GLM simulation is configured via the main “namelist” (nml) text file
called glm3.nml or glm4.nml. Each block of configuration options and
parameters is summarised below. For a summary of the notation and nomenclature refer to the 2019
GMD paper.
For working examples, visit glm-examples.
No variables match that filter.
Model Configuration
&glm_setup
The first block IS compulsory, with the following variables that may be set :
| Variable Name | Symbol | Description | Type | Units | Options | Default |
|---|---|---|---|---|---|---|
sim_name |
Title of simulation | [string] | 'lake' | |||
max_layers |
$$N_{MAX}$$ | Maximum number of layers | [integer] | - | 500 | |
min_layer_vol |
$$\Delta V_{min}$$ | Minimum layer volume | [real] | $$m^3$$ | ||
min_layer_thick |
$$\Delta z_{min}$$ | Minimum thickness of a layer (m) | [real] | $$m$$ | ||
max_layer_thick |
$$\Delta z_{max}$$ | Maximum thickness of a layer (m) | [real] | $$m$$ | ||
density_model |
$$\Theta_{\rho}$$ | Switch to set the density equation | [integer] | - | $$\rho[T,S] \longleftarrow \left\{ \begin{array}{ll} \textrm{UNESCO(1981): }&\Theta_{\rho}=0 \\ \textrm{TEOS-10: }&\Theta_{\rho}=1 \end{array} \right.$$ | 0 |
non_avg |
$$\Theta_{bc}$$ | Switch to configure flow boundary condition temporal interpolation | [boolean] | - | $$Q_{inf}^{t} = \left\{ \begin{array}{ll} Q_{inf}^{t} & \Theta_{bc}=T \\ (Q_{inf}^{t}+Q_{inf}^{t-1})/2 & \Theta_{bc}=F \end{array} \right.$$ | .false. |
Example
&glm_setup
sim_name = 'Example Simulation #1'
max_layers = 500
min_layer_thick = 0.15
max_layer_thick = 1.50
min_layer_vol = 0.025
density_model = 1
non_avg = .true.
/
&mixing
This configuration block is NOT compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
surface_mixing |
$$\Theta_{mix}$$ | Switch to select the options of the surface mixing model | [integer] | $$ \left\{ \begin{array}{ll} \textrm{No surface mixing }&\Theta_{mix}=0 \\ \textrm{xxxxx }&\Theta_{mix}=1\\ \textrm{xxxxx }&\Theta_{mix}=2 \end{array} \right.$$ | 1 |
coef_mix_conv |
$$C_{K}$$ | Mixing efficiency - convective overturn | [real] | ||
coef_wind_stir |
$$C_{W}$$ | Mixing efficiency - wind stirring | [real] | ||
coef_mix_shear |
$$C_{S}$$ | Mixing efficiency - shear production | [real] | ||
coef_mix_turb |
$$C_{T}$$ | Mixing efficiency - unsteady turbulence effects | [real] | ||
coef_mix_KH |
$$C_{KH}$$ | Mixing efficiency - Kelvin-Helmholtz billowing | [real] | ||
deep_mixing |
$$\Theta_{deep}$$ | Switch to select the options of the deep (hypolimnetic) mixing model | [integer] | $$ \left\{ \begin{array}{ll} \textrm{No deep mixing: }D_z=0&\Theta_{deep}=0 \\ \textrm{Constant diffusivity: }D_z=C_{HYP}&\Theta_{deep}=1\\ \textrm{Weinstock model: }D_z=f(N^2,C_{HYP},...)&\Theta_{deep}=2 \end{array} \right.$$ | ? |
coef_mix_hyp |
$$C_{HYP}$$ | Mixing efficiency - hypolimnetic turbulence | [real] | ||
diff |
$$D_{\epsilon}$$ | Background (molecular) diffusivity in the hypolimnion | [real] |
Example
&mixing
surface_mixing = 1
coef_mix_conv = 0.125
coef_wind_stir = 0.23
coef_mix_shear = 0.2
coef_mix_turb = 0.51
coef_mix_KH = 0.3
deep_mixing = 2
coef_mix_hyp = 0.5
diff = 0.
/
&wq_setup
This configuration block is NOT compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
wq_lib |
$$\Theta_{wq}$$ | Water quality model selection | [string] | $$ \left\{ \begin{array}{ll} \textrm{FABM} & \Theta_{wq}=\textrm{'FABM'} \\ \textrm{AED2} & \Theta_{wq}=\textrm{'AED2'} \\ \end{array} \right.$$ | AED2 |
wq_nml_file |
Filename of WQ configuration file | [string] | add filename in quotes, can include directorys | './aed2.nml' | |
bioshade_feedback |
$$\Theta_{kw}$$ | Switch to enable \(K_{w}\) to be updated by the WQ model | [boolean] | $$K_{w}[t,z] = \left\{ \begin{array}{ll} K_{w} & \Theta_{kw}=F \\ K_{w}+K_{ss}+K_{dom}+K_{pom}+K_{phy} & \Theta_{kw}=T \\ \end{array} \right.$$ | ? |
mobility_off |
Switch to enable settling within the WQ model | [boolean] | .true. & .false. | .false. | |
ode_method |
$$\Theta_{ode}$$ | Method to use for ODE solution of water quality module | [integer] | tbc | 1 |
split_factor |
Factor weighting implicit vs explicit numerical solution of the WQ model | [real] | 0-1 | 1 | |
repair_state |
$$\Theta_{repair}$$ | Switch to correct negative or out of range WQ variables | [boolean] | .true. or .false. | .true. |
Example
&wq_setup
wq_lib = 'aed2'
wq_nml_file = 'aed2/aed2.nml'
ode_method = 1
split_factor = 1
bioshade_feedback = .true.
repair_state = .true.
mobility_off = .false.
/
&morphometry
This configuration block IS compulsory
| Variable Name | Symbol | Description | Type | Units | Options/Comment | Default |
|---|---|---|---|---|---|---|
lake_name |
Site name | [string] | - | - | - | |
latitude |
$$Lat$$ | Latitude, positive North | [real] | $$^{\circ} N$$ | 0 | |
longitude |
$$Long$$ | Longitude, positive East | [real] | $$^{\circ} E$$ | 0 | |
base_elev |
$$H_{0}$$ | Elevation of the bottom-most point of the lake. Deprecated — the value is read but no longer used; \(H[1]\) is assumed instead. GLM prints a note if it is set | [real] | \(m\) above datum | - | - |
crest_elev |
$$H_{crest}$$ | Elevation of a weir crest, where overflow begins | [real] | \(m\) above datum | ||
bsn_len |
$$L_{crest}$$ | Length of the lake basin, at crest height | [real] | $$m$$ | ||
bsn_wid |
$$W_{crest}$$ | Width of the lake basin, at crest height | [real] | $$m$$ | ||
bsn_vals |
$$N_{BSN}$$ | Number of points being provided to described the hyposgraphic details | [real] | - | ||
H |
$$H[b]$$ | Comma-separated list of lake elevations | [array] | \(m\) above datum | ||
A |
$$A[b]$$ | Comma-separated list of lake areas | [array] | $$m^2$$ |
Example
&morphometry
lake_name = 'Example Lake'
latitude = 32
longitude = 35
base_elev = -252.9
crest_elev = -203.9
bsn_len = 21000
bsn_wid = 13000
bsn_vals = 45
! H(m) & A(m2), both have length bsn_vals
H = -252.9, -251.9, -250.9, -249.9, -248.9, -247.9, -246.9, -245.9,
-244.9, -243.9, -242.9, -241.9, -240.9, -239.9, -238.9,
-237.9, -236.9, -235.9, -234.9, -233.9, -232.9, -231.9,
-230.9, -229.9, -228.9, -227.9, -226.9, -225.9, -224.9,
-223.9, -222.9, -221.9, -220.9, -219.9, -218.9, -217.9,
-216.9, -215.9, -214.9, -213.9, -212.9, -211.9, -208.9,
-207.9, -203.9
A = 0, 9250000, 15200000, 17875000, 21975000, 26625000, 31700000, 33950000,
38250000, 41100000, 46800000, 51675000, 55725000, 60200000, 64675000,
69600000, 74475000, 79850000, 85400000, 90975000, 96400000, 102000000,
107000000, 113000000, 118000000, 123000000, 128000000, 132000000, 136000000,
139000000, 143000000, 146000000, 148000000, 150000000, 151000000, 153000000,
155000000, 157000000, 158000000, 160000000, 161000000, 162000000, 167000000,
170000000, 173000000
/
&time
This configuration block IS compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
timefmt |
$$\Theta_{time}$$ | Time configuration switch | [Integer] | $$ \left\{ \begin{array}{ll} t = t_{0} ... t_{N_{\Delta t}};\ N_d = t_{N_{\Delta t}} - t_{0} & \Theta_{time}=2 \\ t = t_{0} ... (t_{0}+N_d);\ t_{N_{\Delta t}} = t_{0}+N_d & \Theta_{time}=3 \\ \end{array} \right.$$ | ? |
start |
$$t_{0}$$ | Start time/date of simulation | [string, format = "yyyy-mm-dd hh:mm:ss"] | Required | - |
stop |
$$t_{N_{\Delta t}}$$ | End time/date of simulation | [string, format = "yyyy-mm-dd hh:mm:ss"] | Used when (\(\Theta_{time}=2\)) | - |
dt |
$$\Delta t$$ | Time step (\(sec\)) | [real] | Required | 3600 |
num_days |
$$N_d$$ | Number of days to simulate | [integer] | Used when (\(\Theta_{time}=3\)) | - |
timezone |
$$TZ$$ | UTC time zone | [real] | +0 |
Example
&time
timefmt = 3 ! Choose 2 (start/stop) or 3 (num_days)
start = '1997-01-01 00:00:00'
stop = '1999-01-01 00:00:00'
dt = 3600.0
num_days = 730
!timezone = 7.0
/
&output
This configuration block is NOT compulsory
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
out_dir |
Directory to write the output files | [string] | ./ | |
out_fn |
Filename of the main NetCDF output file | [string] | output | |
nsave |
Frequency to write to the NetCDF and CSV point files | [integer] | 1 | |
csv_lake_fname |
Filename for the daily summary file | [string] | lake | |
csv_point_nlevs |
Number of specific level/depth csv files to be created | [real] | 0 | |
csv_point_fname |
Name to be appended to specified depth CSV files | [string] | 'WQ_' | |
csv_point_frombot |
Comma separated list identify whether each output point listed in csv_point_at is relative to the bottom (ie heights) or the surface (ie depths) | [real] | .true. | |
csv_point_at |
Height or Depth of points to output at (comma separated list) | [real] | 0 | |
csv_point_nvars |
Number of variables to output into the csv files | [integer] | ||
csv_point_vars |
Comma separated list of variable names | [string] | temp; salt; ... | |
csv_outlet_allinone |
Switch to create an optional outlet file combining all outlets | [boolean] | .true. & .false. | .false. |
csv_outlet_fname |
Name to be appended to each of the outlet CSV files | [string] | ||
csv_outlet_nvars |
Number of variables to be written into the outlet file(s) | [integer] | 0 | |
csv_outlet_vars |
Comma separated list of variable names to be included in the output file(s) | [string] | ||
csv_ovrflw_fname |
Filename to be used for recording the overflow details | [string] |
Example
&output
out_dir = 'output'
out_fn = 'output'
nsave = 6
!-- General summary file
csv_lake_fname = 'lake'
!-- Depth specific outputs
csv_point_nlevs = 2
csv_point_fname = 'WQ_'
csv_point_at = 5,30 ! a file will be produced for 5m and 30m heights from bottom
csv_point_nvars = 7
csv_point_vars = 'temp',
'salt',
'OXY_oxy',
'SIL_rsi',
'NIT_amm',
'NIT_nit',
'PHS_frp'
!-- Combined outlet file & overflow
csv_outlet_allinone = .false.
csv_outlet_fname = 'outlet_'
csv_outlet_nvars = 4
csv_outlet_vars = 'flow',
'temp',
'salt',
'OXY_oxy',
csv_ovrflw_fname = "overflow"
/
&init_profiles
This configuration block IS compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
lake_depth |
$$h_S[t=0]$$ | Initial lake height/depth (m) | [real] | ||
num_depths |
Number of depths provided for initial profiles | [integer] | |||
the_depths |
The depths of the initial profile points (m) as a comma-separated list | [real] | |||
the_temps |
$$T[t=0,z]$$ | The temperature (C) at each of the initial profile points (comma-separated list) | [real] | ||
the_sals |
$$S[t=0,z]$$ | The salinity (ppt) at each of the initial profile points (comma-separated list) | [real] | ||
num_wq_vars |
Number of non GLM (ie FABM or AED2) variables to be initialised | [integer] | Note these values override initialisations done by FABM or AED2 | 0 | |
wq_names |
Names of non GLM (ie FABM or AED2) variables to be initialised (comma-separated list) | [string] | - | ||
wq_init_vals |
$$C[t=0,z,\mathbb{C}]$$ | Array of WQ variable initial data (rows = vars; cols = depths) | [real] | 0 |
Example
&init_profiles
lake_depth = 43
num_depths = 3
the_depths = 1, 20, 40
!-- GLM
the_temps = 18.0, 18.0, 18.0
the_sals = 0.5, 0.5, 0.5
!-- WQ
num_wq_vars = 6
wq_names = 'OGM_don',
'OGM_pon',
'OGM_dop',
'OGM_pop',
'OGM_doc',
'OGM_poc'
wq_init_vals = 1.1, 1.2, 1.3, 1.2, 1.3,
2.1, 2.2, 2.3, 1.2, 1.3,
3.1, 3.2, 3.3, 1.2, 1.3,
4.1, 4.2, 4.3, 1.2, 1.3,
5.1, 5.2, 5.3, 1.2, 1.3,
6.1, 6.2, 6.3, 1.2, 1.3
/
&light
This configuration block is NOT compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
light_mode |
$$\Theta_{light}$$ | Switch to configure the approach to light penetration | [integer] | 1 | |
Kw |
$$K_w$$ | Light extinction coefficient (\(m^{-1}\)) | [real] | Used when \(\Theta_{light}=0\) | |
Kw_file |
- | Name of file with Kw time-series included | [string] | - | |
n_bands |
$$N_{SW}$$ | Number of light bandwidths to simulate | [integer] | Used when \(\Theta_{light}=1\) | 2 |
light_extc |
$$K_w_l$$ | Comma-separated list of light extinction coefficients for each waveband | [real] | ||
energy_frac |
$$f_l$$ | Comma-separated list of energy fraction captured by each waveband | [real] | ||
Benthic_Imin |
$$f_{BEN}_{crit}$$ | Critical fraction of incident light reaching the benthos | [real] |
Example
&light
light_mode = 0
Kw = 0.57
n_bands = 4
light_extc = 1.0, 0.5, 2.0, 4.0
energy_frac = 0.51, 0.45, 0.035, 0.005
Benthic_Imin = 10
/
&bird_model
This configuration block is NOT compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
AP |
$$p$$ | Atmospheric pressure (hPa) | [real] | ||
Oz |
$$Oz$$ | Ozone concentration (atm-cm) | [real] | ||
WatVap |
$$W$$ | Total Precipitable water vapor (atm-cm) | [real] | ||
AOD500 |
$$AOD_{500}$$ | Dimensionless Aerosol Optical Depth at wavelength 500 nm | [real] | ||
AOD380 |
$$AOD_{380}$$ | Dimensionless Aerosol Optical Depth at wavelength 380 nm | [real] | ||
Albedo |
$$\alpha_{SW}$$ | Albedo of the surface used for Bird Model insolation calculation | [real] | 0.2 |
Example
&bird_model
AP = 973
Oz = 0.279
WatVap = 1.1
AOD500 = 0.033
AOD380 = 0.038
Albedo = 0.2
/
&sediment
This configuration block is NOT compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
sed_heat_Ksoil |
$$K_{soil}$$ | heat conductivity of soil/sediment | [real] | - | |
sed_temp_depth |
$$\delta z_{soil}$$ | Depth of soil/sediment layer below the lake bottom, used for heat flux calculation | [real] | ||
sed_temp_mean |
$$T_{z_{mean}}$$ | Annual mean sediment temperature | [real] | comma-separated list if \(N_{SZ}>1\) | |
sed_temp_amplitude |
$$\delta T_z$$ | Amplitude of temperature variation experienced in the sediment over one year | [real] | comma-separated list if \(N_{SZ}>1\) | |
sed_temp_peak_doy |
$$d_{T_{z}}$$ | Day of the year where the sediment temperature peaks | [integer] | comma-separated list if \(N_{SZ}>1\) | |
benthic_mode |
$$\Theta_{benthic}$$ | Switch to configure which mode of benthic interaction to apply | [integer] | $$ \left\{ \begin{array}{ll} \textrm{Bottom layer only } & \Theta_{benthic}=0 \\ \textrm{Bottom layer & layer flanks } & \Theta_{benthic}=1 \\ \textrm{Sediment zones } & \Theta_{benthic}=2 \\ \textrm{tbc} & \Theta_{benthic}=3 \end{array} \right.$$ | |
n_zones |
$$N_{SZ}$$ | Number of sediment zones to simulate | [integer] | Required for benthic_mode (\(\Theta_{benthic}\)) \(= 2\) or \(3\) | 0 |
zone_heights |
$$h_z[1 ... N_{SZ}]$$ | Upper height of zone boundary | [real] | Required for benthic_mode (\(\Theta_{benthic}\)) \(= 2\) or \(3\) | |
sed_reflectivity |
$$\alpha_{sed}$$ | Sediment reflectivity | [real] | 0 | |
sed_roughness |
$$d_{SS_{z}}$$ | TBC | [real] |
Example
&sediment
sed_heat_Ksoil = 0.0
sed_temp_depth = 0.2
sed_temp_mean = 5,10,20
sed_temp_amplitude = 6,8,10
sed_temp_peak_doy = 80, 70, 60
benthic_mode = 1
n_zones = 3
zone_heights = 10., 20., 50.
sed_reflectivity = 0.1, 0.01, 0.01
sed_roughness = 0.1, 0.01, 0.01
/
&snowice
This configuration block is NOT compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
snow_albedo_factor |
$$f_{\alpha}$$ | Scaling factor used to as a multiplier to scale the snow/ice albedo estimate | [real] | 1 | |
snow_rho_min |
$$\rho_{s,min}$$ | Minimum snow density allowable (\(kg\ m^{-3}\)) | [real] | 50 | |
snow_rho_max |
$$\rho_{s,max}$$ | Maximum snow density allowable (\(kg\ m^{-3}\)) | [real] | 300 |
Example
&snowice
snow_albedo_factor = 1.0
snow_rho_min = 50
snow_rho_max = 300
/
&particles
Configures the Particle Tracking Model (PTM), which advects
Lagrangian particles through the layer structure. This block is optional; if it
is absent GLM reports “No 'particles' config, assuming no
particles” and continues. Particles are only stepped when
ptm_sw is .true.
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
ptm_sw |
$$\Theta_{ptm}$$ | Switch to enable the particle tracking model | [boolean] | .true. OR .false. | .false. |
num_particle_grp |
$$N_{grp}$$ | Number of particle groups. Accepted by the reader; planned for future update — the group count applied internally is fixed at 1 | [integer] | - | 1 |
max_particle_num |
$$N_{max}$$ | Maximum number of particles that may exist at any one time. This sizes the particle arrays, so raising it raises the memory footprint | [integer] | \(\le 10000\) | 10000 |
init_particle_num |
$$N_{init}$$ | Number of particles seeded at the start of the simulation | [integer] | \(\le\) max_particle_num |
10 |
init_depth_min |
$$z_{min}$$ | Shallowest depth of the band the initial particles are seeded into, measured down from the water surface (\(m\)) | [real] | - | 0.0 |
init_depth_max |
$$z_{max}$$ | Deepest depth of the band the initial particles are seeded into, measured down from the water surface (\(m\)) | [real] | \(>\) init_depth_min |
2.0 |
inflow_conc |
$$C_{ptm}[1...N_{inflow}]$$ | Particle concentration carried by each inflow
(\(\#\;m^{-3}\)). One value per inflow, in the order the inflows are declared
in &inflow |
[array] | comma-separated list | 0 |
ptm_diffusivity |
$$K_{ptm}$$ | Floor applied to the vertical diffusivity used in the particle random walk (\(m^{2}\,s^{-1}\)). Where the resolved \(K_z\) falls below this value, this value is used instead | [real] | - | 1e-6 |
ptm_time_step |
$$\Delta t_{ptm}$$ | Sub time step for particle motion. Accepted by the reader;
planned for future update. Note the source initialiser is
written
1/60, which is integer division in C and therefore evaluates to
\(0\), not one minute |
[real] | - | 0 |
particle_density |
$$\rho_{p}$$ | Density assigned to each particle (\(kg\;m^{-3}\)), used in the settling calculation | [real] | - | 1000.0 |
particle_diameter |
$$d_{p}$$ | Diameter assigned to each particle (\(m\)), used in the settling calculation | [real] | - | 1e-6 |
settling_velocity |
$$v_{s}$$ | Prescribed particle settling velocity (\(m\;s^{-1}\)). Negative values sink | [real] | - | 0.0 |
settling_efficiency |
$$\eta_{s}$$ | Scales the probability that a particle reaching the bottom layer is retained by the sediment. \(1\) retains every particle that arrives | [real] | \(0 \le \eta_{s} \le 1\) | 1.0 |
sed_deactivation |
$$\Theta_{sed_{ptm}}$$ | Switch to deactivate particles once they settle to the sediment, rather than leaving them available for resuspension | [boolean] | .true. OR .false. | .false. |
do_particle_bgc |
$$\Theta_{bgc_{ptm}}$$ | Switch to enable particle-attached biogeochemistry. The flag is passed through to AED, so it only has an effect when a water quality model is active | [boolean] | .true. OR .false. | .false. |
Example
&particles
ptm_sw = .true.
max_particle_num = 10000
init_particle_num = 1000
init_depth_min = 0.0
init_depth_max = 2.0
ptm_diffusivity = 1e-6
particle_density = 1000.0
particle_diameter = 1e-6
settling_velocity = 0.0
/
Model Boundary Conditions
&meteorology
This configuration block is NOT compulsory
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
met_sw |
$$\Theta_{met}$$ | Switch to enable the surface heating module | [boolean] | .true. OR .false. | .false. |
| Input meterological data | |||||
meteo_fl |
- | Filename of the meterological file | [string] | Include path and filename | - |
subdaily |
$$\Theta_{subdaily}$$ | Switch to indicate the meteorological data is provided with sub-daily resolution, at an interval equivalent to \(\Delta t\) | [boolean] | .true. OR .false. | |
time_fmt |
- | Time format of the 1st column in the inflow_fl | [string] | 'YYYY-MM-DD hh:mm:ss' | |
| SW & LW radiation | |||||
rad_mode |
$$\Theta_{rad}$$ | Switch to configure which incoming radiation option to use | [integer] | $$ \left\{ \begin{array}{ll} \textrm{1 } & \Theta_{rad}=1 \\ \textrm{1 } & \Theta_{rad}=2 \\ \textrm{1 } & \Theta_{rad}=3 \\ \textrm{1 } & \Theta_{rad}=4 \\ \textrm{1 } & \Theta_{rad}=5 \end{array} \right.$$ | |
albedo_mode |
$$\Theta_{\alpha}$$ | Switch to configure which albedo calculation option is used | [integer] | $$ \left\{ \begin{array}{ll} \textrm{Hamilton & Schladow } & \Theta_{\alpha}=1 \\ \textrm{Briegleb et al } & \Theta_{\alpha}=2 \\ \textrm{Yajima & Yamamoto } & \Theta_{\alpha}=3 \end{array} \right.$$ | |
sw_factor |
$$f_{SW}$$ | Scaling factor to adjust the shortwave radiation data provided in the meteo_fl (\(\phi_{SW_x}\)) | [real] | 1 | |
lw_type |
$$\Theta_{lw}$$ | Switch to configure which input approach is being used for longwave/cloud data in the meteo_fl | [string] | $$ \left\{ \begin{array}{ll} \textrm{Incident longwave } & \Theta_{lw}=\textrm{'LW_IN'} \\ \textrm{Net longwave } & \Theta_{lw}=\textrm{'LW_NET'} \\ \textrm{Cloud cover} & \Theta_{lw}=\textrm{'LW_CC'} \end{array} \right.$$ | |
cloud_mode |
$$\Theta_{cloud}$$ | Switch to configure which atmospheric emmissivity calculation option is used | [integer] | $$ \left\{ \begin{array}{ll} \textrm{Idso and Jackson } & \Theta_{cloud}=1 \\ \textrm{Swinbank } & \Theta_{cloud}=2 \\ \textrm{Brutsaert } & \Theta_{cloud}=3 \\ \textrm{Yajima & Yamamoto} & \Theta_{cloud}=4 \end{array} \right.$$ | |
lw_factor |
$$f_{LW}$$ | Scaling factor to adjust the longwave (or cloud) data provided in the meteo_fl (\(C_x\)) | [real] | 1 | |
| Sensible & latent heat | |||||
atm_stab |
$$\Theta_{atmstab}$$ | Switch to configure which approach to atmospheric stability is used | [integer] | $$ \left\{ \begin{array}{ll} \textrm{Neutral conditions } & \Theta_{atmstab}=0 \\ \textrm{1 } & \Theta_{atmstab}=1 \\ \textrm{1 } & \Theta_{atmstab}=2 \end{array} \right.$$ | |
rh_factor |
$$f_{RH}$$ | Scaling factor to adjust the relative humidity data provided in the meteo_fl (\(RH_x\)) | [real] | 1 | |
at_factor |
$$f_{AT}$$ | Scaling factor to adjust the air temperature data provided in the meteo_fl (\(AT_x\)) | [real] | 1 | |
ce |
$$C_E$$ | Bulk aerodynamic transfer coefficient for latent heat flux | [real] | 0.0013 | |
ch |
$$C_H$$ | Bulk aerodynamic transfer coefficient for sensible heat flux | [real] | 0.0013 | |
| Rainfall & local runoff ("run-in") | |||||
rain_sw |
$$\Theta_{rain}$$ | Switch to configure rainfall input concentrations | [boolean] | .true. OR .false. | |
rain_factor |
$$f_R$$ | Scaling factor to adjust the rainfall data provided in the meteo_fl (\(R_x\)) | [real] | 1 | |
catchrain |
$$\Theta_{runin}$$ | Switch that configures runoff from exposed banks of lake area | [boolean] | .true. OR .false. | .false. |
rain_threshold |
$$R_L$$ | Daily rainfall amount (m) required before runoff from exposed banks occurs | [real] | ||
runoff_coef |
$$f_{ro}$$ | Conversion fraction of infiltration excess rainfall to runoff in exposed lake banks | [real] | ||
| Wind & wind-sheltering | |||||
cd |
$$C_D$$ | Bulk aerodynamic transfer coefficient for momentum | [real] | 0.0013 | |
wind_factor |
$$f_U$$ | Scaling factor to adjust the windspeed data provided in the meteo_fl (\(U_x\)) | [real] | 1 | |
fetch_mode |
$$\Theta_{fetch}$$ | Switch to configure which wind-sheltering/fetch option to use.
Modes 2 and 3 read a wind-direction column from the meteo_fl and
require the &fetch block |
[integer] | $$ \left\{ \begin{array}{ll} \textrm{No sheltering } & \Theta_{fetch}=0 \\ \textrm{Area-based scaling } & \Theta_{fetch}=1 \\ \textrm{Markfort length-scale } & \Theta_{fetch}=2 \\ \textrm{User input scaling table } & \Theta_{fetch}=3 \end{array} \right.$$ | 0 |
Aws |
$$A_{WS}$$ | Area scale controlling the effective-area sheltering relationship, \(A_{eff} = A\tanh(A/A_{WS})\) | [real] | Required for fetch_mode (\(\Theta_{fetch}\)) \(= 1\) | 0 |
Xws |
$$x_{WS}$$ | Accepted by the reader; planned for future update and not
yet applied by any fetch_mode. Modes 2 and 3 take their sheltering
from the &fetch block |
[real] | - | 0 |
Fws |
$$f_{WS}$$ | Accepted by the reader; planned for future update and not
yet applied by any fetch_mode |
[string] | - | - |
Example
&meteorology
!-- Met forcing options
met_sw = .true.
lw_type = 'LW_IN'
rain_sw = .false.
atm_stab = 0
fetch_mode = 0
!rad_mode = 1
albedo_mode = 1
cloud_mode = 4
!-- BC file details
subdaily = .true.
meteo_fl = 'bcs/met_hourly.csv'
wind_factor = 0.9
!-- Parameters
ce = 0.0013
ch = 0.0013
cd = 0.0013
!catchrain = .true.
!rain_threshold = 0.001
!runoff_coef = 0.0
/
&fetch
Direction-dependent wind sheltering. This block is optional, and
supplies the scaling table used by fetch_mode \(= 2\) and \(= 3\)
in &meteorology. The scaling is
linearly interpolated between the supplied directions and wraps at
\(360^{\circ}\).
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
fetch_sw |
$$\Theta_{fetch_{sw}}$$ | Switch to enable direction-dependent sheltering. Note that GLM sets this
from the presence of the &fetch block, so a value
given here is overwritten |
[boolean] | .true. OR .false. | .false. |
num_dir |
$$N_{\Phi}$$ | Number of wind direction reference points being read in | [integer] | Length of wind_dir and fetch_scale |
0 |
wind_dir |
$$\Phi_{wind}[1...N_{\Phi}]$$ | Wind directions at which the sheltering scale is specified (\(^{\circ}\)) | [array] | comma-separated list of \(N_{\Phi}\) values | - |
fetch_scale |
$$f_{WS}[\Phi_{wind}]$$ | Direction-specific sheltering scale. For \(\Theta_{fetch}=3\) this multiplies the wind speed directly; for \(\Theta_{fetch}=2\) it is the fetch length used by the Markfort et al. (2009) effective-area calculation | [array] | comma-separated list of \(N_{\Phi}\) values | - |
edge_height |
$$h_{edge}$$ | Height of the vegetation or obstruction at the lake edge (\(m\)). Accepted by the reader; planned for future update | [real] | - | 0 |
edge_porosity |
$$\phi_{edge}$$ | Porosity of the vegetation or obstruction at the lake edge. Accepted by the reader; planned for future update | [real] | - | 1 |
Example
&fetch
num_dir = 4
wind_dir = 0.0, 90.0, 180.0, 270.0
fetch_scale = 1.0, 0.7, 0.4, 0.7
/
&inflow
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
num_inflows |
$$N_{INF}$$ | Number of inflows to be simulated in this simulation | [integer] | 0 | |
names_of_strms |
- | Names of each inflow | [string] | comma-separated list if \(N_{INF}>1\) | - |
subm_flag |
$$\Theta_{subm_I}$$ | Switch indicating if the inflow I is entering as a submerged input | [boolean] | .true. OR .false. comma-separated list if \(N_{INTF}>1\) |
.false. |
subm_height |
$$h_{subm_I}$$ | Height above the bottom at which a submerged inflow enters (\(m\)).
Required when subm_flag is .true. |
[real] | comma-separated list if \(N_{INTF}>1\) | 0 |
subm_elev |
- | Deprecated alias for subm_height. Still
accepted when subm_height is absent, but GLM emits a warning
asking for it to be renamed |
[real] | Ignored if subm_height is set |
- |
strm_hf_angle |
$$\alpha{inf}$$ | Angle describing the width of an inflow river channel ("half angle") | [real] | comma-separated list if \(N_{INF}>1\) | |
strmbd_slope |
$$\Phi_{inf}$$ | Slope of the streambed / river thalweg for each river (degrees) | [real] | comma-separated list if \(N_{INF}>1\) | |
strmbd_drag |
$$C_{D_{inf}}$$ | Drag coefficient of the river inflow thalweg, to calculate entrainment during insertion | [real] | comma-separated list if \(N_{INF}>1\) | |
coef_inf_entrain |
$$C_{entrain}$$ | - | [real] | comma-separated list if \(N_{INF}>1\) | |
inflow_factor |
$$f_{inf_{I}}$$ | Scaling factor that can be applied to adjust the provided input data | [real] | comma-separated list if \(N_{INF}>1\) | 1 |
inflow_fl |
- | Filename(s) of the inflow CSV boundary condition files | [string] | comma-separated list if \(N_{INF}>1\) | - |
inflow_varnum |
- | Number of variables being listed in the columns of inflow_fl (comma-separated list) | [integer] | Can include GLM variables including flow, temp and salt, plus WQ variables. | 0 |
inflow_vars |
- | Names of the variables in the inflow_fl | [string] | Provide variables in the order as they are in the file. | |
time_fmt |
- | Time format of the 1st column in the inflow_fl | [string] | 'YYYY-MM-DD hh:mm:ss' |
Example
&inflow
num_inflows = 6
names_of_strms = 'Inflow1','Inflow2','Inflow3','Inflow4','Inflow5','Inflow6'
subm_flag = .false.,.false.,.false.,.true.,.false.,.false.
strm_hf_angle = 85.0, 85.0, 85.0, 85.0, 85.0, 85.0
strmbd_slope = 4., 4., 4., 4., 4., 4.
strmbd_drag = 0.0160, 0.0160, 0.0160, 0.0160, 0.0160, 0.0160,
inflow_factor = 1.0,1.0,1.0,1.0,1.0,1.0
inflow_fl = 'bcs/inflow_1.csv',
'bcs/inflow_2.csv',
'bcs/inflow_3.csv',
'bcs/inflow_4.csv',
'bcs/inflow_5.csv',
'bcs/inflow_6.csv'
inflow_varnum = 3
inflow_vars = 'FLOW','TEMP','SALT'
coef_inf_entrain = 0.
!time_fmt = 'YYYY-MM-DD hh:mm:ss'
/
&outflow
| Variable Name | Symbol | Description | Type | Options | Default |
|---|---|---|---|---|---|
num_outlet |
$$N_{OUTF}$$ | Number of outflows (including withdrawals, outlets or offtakes) to be included in this simulation | [integer] | - | 0 |
outflow_fl |
- | Filename of the file containing the outflow time-series, \(Q_{outf_x}\) | [string] | - | - |
time_fmt |
- | Time format of the 1st column in the outflow_fl | [string] | 'YYYY-MM-DD hh:mm:ss' | |
outflow_factor |
$$f_{outf}$$ | Scaling factor used as a multiplier for outflows, such that: \(Q_{outf}=f_{outf}Q_{outf_x}\) | [real] | comma-separated list if \(N_{OUTF}>1\) | 1 |
outflow_thick_limit |
$$\delta_{outf_{max}}$$ | Maximum vertical limit of withdrawal entrainment | [real] | comma-separated list if \(N_{OUTF}>1\) | - |
single_layer_draw |
$$\Theta_{outf_{single}}$$ | Switch to only limit withdrawal entrainment and force outflows from layer at the outlet elevation height | [boolean] | .true. OR .false. comma-separated list if \(N_{OUTF}>1\) |
.false. |
flt_off_sw |
$$\Theta_{flt_O}$$ | Switch to indicate if the outflows are floating offtakes (taking water from near the surface) | [boolean] | .true. OR .false. comma-separated list if \(N_{OUTF}>1\) |
- |
outlet_type |
$$\Theta_{outf}$$ | Switch to configure approach of each withdrawal (comma-separated list if \(N_{OUTF}>1\)) | [integer] | $$ \left\{ \begin{array}{ll} \textrm{Fixed outlet height } & \Theta_{outf}=1 \\ \textrm{Floating offtake} & \Theta_{outf}=2 \\ \textrm{Adaptive offtake, low oxy avoidance } & \Theta_{outf}=3 \\ \textrm{Adaptive offtake, isotherm following } & \Theta_{outf}=4 \\ \textrm{Adaptive offtake, temp time-series } & \Theta_{outf}=5 \\ \end{array} \right.$$ | 1 |
| Normal Withdrawals | |||||
outl_elvs |
$$h_{outf_O}$$ | Outlet elevations (\(m\)) | [real] | comma-separated list if \(N_{OUTF}>1\) | 0 |
bsn_len_outl |
$$L_{outf_O}$$ | Basin length at the outlet height(s) (\(m\)) | [real] | comma-separated list if \(N_{OUTF}>1\) | |
bsn_wid_outl |
$$W_{outf_O}$$ | Basin width at the outlet heights (\(m\)) | [real] | comma-separated list if \(N_{OUTF}>1\) | |
| Adaptive withdrawals | |||||
crit_varname |
- | Name of the water quality variable monitored to trigger the adaptive
withdrawal, resolved against the active WQ library (renamed from O2name) |
[string] | comma-separated list if \(N_{OUTF}>1\) | - |
crit_idx |
- | Index of the monitored water quality variable, used when
crit_varname is not supplied (renamed from O2idx) |
[integer] | Ignored if crit_varname is set |
0 |
crit_dep |
$$h_{crit}$$ | Elevation at which the monitored variable is sampled (\(m\) above datum)
(renamed from crit_O2_dep) |
[real] | Must be \(\ge\) the lowest elevation, \(H[1]\) | -1 |
crit_val |
$$C_{crit}$$ | Threshold value of the monitored variable that triggers the switch to the
alternate outlet (renamed from crit_O2) |
[real] | Must be \(\ge 0\) when outlet_crit is set |
-1 |
crit_above |
- | Direction of the threshold test: trigger when the monitored value rises
above crit_val rather than falling below it |
[boolean] | .true. OR .false. | .false. |
crit_days |
$$N_{crit}$$ | Number of days the alternate outlet remains engaged once triggered
(renamed from crit_O2_days) |
[integer] | Must be \(\ge 1\) when outlet_crit is set |
-1 |
outlet_crit |
$$h_{outf_{crit}}$$ | Elevation of the alternate outlet to draw from while the criterion is met (\(m\) above datum). Setting this activates the criterion check | [real] | comma-separated list if \(N_{OUTF}>1\) | - |
withdrTemp_fl |
- | Filename of the file containing the temperature time-series the adaptive withdrawal is targeting | [string] | Required if outlet_type (\(\Theta_{outf}\)) \(=5\) | - |
| Seepage | |||||
seepage |
$$\Theta_{seep}$$ | Switch to enable the seepage of water from the lake bottom | [boolean] | .true. OR .false. | .false. |
seepage_rate |
\(G\) or \(K_{seep}\) | Seepage rate of water, or, soil hydraulic conductivity (\(m\ day^{-1}\)) | [real] | -ve seepage_rate is taken as \(G\); +ve seepage_rate is taken as \(K_{seep}\) |
0 |
| Weir overflow | |||||
crest_width |
$$W_{weir}$$ | Width of weir (at crest height) where lake overflows (\(m\)) | [real] | - | 6.0 |
crest_factor |
$$C_{D_{weir}}$$ | Drag coefficient associated with the weir crest, used to compute the overflow discharge rate, \(Q_{weir}\) | [real] | Applies only when the crest elevation is configured to be less than the maximum elevation of the domain (\(H_{crest} < H_{max}\)) |
0.61 |
Example
&outflow
num_outlet = 1
!flt_off_sw = .false.
outlet_type = 1
outl_elvs = -215.5
bsn_len_outl = 18000
bsn_wid_outl = 11000
outflow_fl = 'bcs/outflow.csv'
outflow_factor = 1.0
!seepage = .true.
!seepage_rate = 0.01
/
&evaporation
Supplies a measured evaporation time series in place of the rate
GLM computes from the surface energy budget. This block is optional; if it is
absent, or if evap_file is left unset, GLM computes evaporation
internally.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
evap_file |
Name of the CSV file supplying measured evaporation. The file must contain
a time column and a column named Evap; GLM stops with an error if
either is missing |
[string] | - | |
time_fmt |
Format of the time column in evap_file, in the same notation
used by the inflow and outflow blocks |
[string] | e.g. YYYY-MM-DD hh:mm:ss |
- |
timezone |
Timezone offset of the evaporation file. Accepted by the reader; planned for future update — the value is not passed to the file reader | [real] | - | - |
Example
&evaporation
evap_file = 'bcs/evap.csv'
time_fmt = 'YYYY-MM-DD hh:mm:ss'
/
&groundwater
This block is read by GLM but is planned for
future update — it is not active yet. The values are parsed into
their variables, but the routine
that would apply a groundwater flux (read_daily_gw) is commented
out in glm_model.c, and the setup loop in glm_init.c
only runs when the block is absent. For seepage losses use
seepage and seepage_rate in
&outflow instead. It is documented here
so that keys found in older nml files can be recognised.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
gw_mode |
Number of groundwater inflows to append to the inflow list. The total of
num_inflows and gw_mode must not exceed the compiled
inflow limit |
[integer] | - | 0 |
gw_file |
Name of the groundwater forcing file | [string] | - | |
K_gw |
Hydraulic conductivity of the sediment, one value per groundwater inflow | [array] | comma-separated list | - |
L_gw |
Characteristic flow path length, one value per groundwater inflow | [array] | comma-separated list | - |
Engineering Options
&oxygenation
Configures artificial oxygenation, either by direct injection of oxygen at one or more fixed heights, or by a hypolimnetic recirculation system that withdraws water from one height and returns oxygenated water at another. The block requires an active water quality model, because the oxygen is added to a named AED variable; GLM stops with an error if that variable cannot be resolved.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
oxygenation_mode |
Operating mode of the oxygenation system | [integer] | 0 = off 1 = direct addition, constant rates 2 = direct addition, rates read from file 3 = recirculation |
0 |
oxy_name |
Name of the AED dissolved oxygen variable that the added oxygen is applied to | [string] | Must match a variable defined by the active WQ model | OXY_oxy |
oxy_max |
Optional cap on the resulting oxygen concentration. Values \(\le 0\) disable the cap | [real] | - | 0.0 |
num_oxy |
Number of direct-addition devices. Used by modes 1 and 2; the arrays below must each supply this many values | [integer] | - | 0 |
oxy_input_type |
How the load of each device is specified: as a mass rate, or as a flow multiplied by a concentration | [array] | 1 = mass rate (oxy_load)2 = flow × concentration ( oxy_flow, oxy_conc) |
- |
oxy_height |
Height above the lake bottom at which each device adds oxygen (\(m\)). The oxygen is added to the layer containing that height | [array] | comma-separated list of num_oxy values |
0.0 |
oxy_load |
Oxygen mass loading rate of each device, per day. Used where
oxy_input_type is 1 |
[array] | comma-separated list of num_oxy values |
0.0 |
oxy_flow |
Flow rate through each device (\(m^{3}\;day^{-1}\)). Used with
oxy_conc where oxy_input_type is 2 |
[array] | comma-separated list of num_oxy values |
0.0 |
oxy_conc |
Oxygen concentration of the flow through each device. Used with
oxy_flow where oxy_input_type is 2 |
[array] | comma-separated list of num_oxy values |
0.0 |
oxy_fl |
CSV files supplying time-varying data. In mode 2 one file is opened per device; in mode 3 only the first entry is used, and it supplies the recirculation flow and load | [array] | comma-separated list of filenames | - |
oxy_recirc_withdraw_height |
Height above the lake bottom that water is withdrawn from, in mode 3 (\(m\)) | [real] | Must be \(\ge 0\) | 0.0 |
oxy_recirc_return_height |
Height above the lake bottom that the oxygenated water is returned to, in mode 3 (\(m\)) | [real] | Must be \(\ge 0\) | 0.0 |
oxy_recirc_flow |
Recirculation flow rate (\(m^{3}\;s^{-1}\)). Overwritten each day from
oxy_fl where that file is supplied |
[real] | - | 0.0 |
oxy_recirc_add |
Oxygen mass added to the recirculated water, per day. Overwritten each day
from oxy_fl where that file is supplied |
[real] | - | 0.0 |
time_fmt |
Format of the time column in the oxy_fl files |
[string] | e.g. YYYY-MM-DD hh:mm:ss |
- |
Example
&oxygenation
oxygenation_mode = 1
oxy_name = 'OXY_oxy'
num_oxy = 2
oxy_input_type = 1, 1
oxy_height = 2.0, 5.0
oxy_load = 500.0, 250.0
/
&bubbler
Configures a destratification bubble plume (aeration diffuser
line). Note that the keys in this block are unprefixed — on,
aflow and so on — so they are easily confused with keys of
other blocks if a / terminator is missed.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
on |
Switch to enable the bubble plume | [boolean] | .true. OR .false. | .false. |
aflow |
Air flow rate delivered to the diffuser line. The plume is switched off for any step where this is \(\le 0\) | [real] | - | 0.0 |
nports |
Number of release ports along the diffuser line | [integer] | - | 0 |
bublen |
Length of the diffuser line (\(m\)) | [real] | - | 0.0 |
bdepth |
Height above the lake bottom at which the diffuser line sits (\(m\)). This selects the layer the plume is released from | [real] | - | 0.0 |
start |
Date the operating period begins. Outside the
start–stop window the plume is off |
[string] | e.g. 2020-01-01 00:00:00 |
- |
stop |
Date the operating period ends | [string] | e.g. 2020-12-31 00:00:00 |
- |
opopt |
Switch to run the plume on a temperature-difference trigger rather than
continuously through the operating window. When .false. the plume
runs whenever the date falls inside the window |
[boolean] | .true. OR .false. | .false. |
ton |
Surface-to-release-layer temperature difference that switches the plume on
(\(^{\circ}C\)). Only used when opopt is .true. |
[real] | - | 0.0 |
toff |
Temperature difference below which the plume switches off
(\(^{\circ}C\)). Only used when opopt is .true. |
[real] | \(<\) ton |
0.0 |
intopt |
Selects the plume integration option used by the bubble rise calculation | [boolean] | .true. OR .false. | .false. |
data_file |
CSV file supplying time-varying settings, overriding the constants above
each day. Must contain a time column plus aFlow,
nPorts, bDepth and bLength |
[string] | - | |
eff |
Switch to write a plume efficiency diagnostic file | [boolean] | .true. OR .false. | .false. |
eff_file |
Name of the efficiency diagnostic file written when eff is
.true. |
[string] | - |
Example
&bubbler
on = .true.
aflow = 0.05
nports = 20
bublen = 250.0
bdepth = 1.0
start = '2020-10-01 00:00:00'
stop = '2021-04-30 00:00:00'
opopt = .true.
ton = 3.0
toff = 1.0
/
&heat_pump
Configures a heat pump that draws water from a nominated
outflow, changes its temperature, and returns it through a nominated inflow.
The referenced inflow and outflow must already be declared in
&inflow and
&outflow; GLM stops with an error if
heat_pump_inflow_idx is out of range.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
heat_pump_switch |
Operating mode of the heat pump | [integer] | 0 = off 1 = prescribed temperature change 2 = prescribed heat flux |
0 |
heat_pump_inflow_idx |
Index of the inflow the heat pump returns water through. The return height
is taken from that inflow's subm_height. Zero-based
— the first inflow is 0 |
[integer] | \(0 \le i < \) number of inflows | 0 |
heat_pump_outflow_idx |
Index of the outflow the heat pump withdraws water from. Zero-based — the first outflow is 0 | [integer] | \(0 \le i < \) number of outflows | 0 |
heat_pump_temp_change |
Temperature change applied to the water passing through the pump (\(^{\circ}C\)). Used in mode 1 | [real] | - | 0.0 |
heat_pump_heat_flux |
Heat flux added to (positive) or removed from (negative) the water (\(W\)). Used in mode 2, and may be overridden day by day from a CSV column | [real] | - | 0.0 |
Example
&heat_pump
heat_pump_switch = 1
heat_pump_inflow_idx = 0
heat_pump_outflow_idx = 0
heat_pump_temp_change = -3.0
/
Diagnostics
&mass_balance
Writes a per-timestep mass balance file for nominated water quality variables, accounting for the mass entering and leaving through each flux term. This block is optional, and is only processed after the water quality model has been initialised.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
balance_file |
Name of the mass balance output file, written into
out_dir |
[string] | - | |
balance_varnum |
Number of variables listed in balance_vars |
[integer] | Length of balance_vars |
- |
balance_vars |
Names of the water quality variables to track | [array] | comma-separated list of balance_varnum names |
- |
time_fmt |
Format of the time column written to the balance file | [string] | e.g. YYYY-MM-DD hh:mm:ss |
- |
timezone |
Timezone offset of the balance file. Accepted by the reader; planned for future update — the value is not passed to the writer | [real] | - | - |
Example
&mass_balance
balance_file = 'balance.csv'
balance_varnum = 2
balance_vars = 'OXY_oxy', 'NIT_nit'
/
&debugging
Developer switches. These change model behaviour and should not be left set in a production configuration.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
debug_mixer |
Switch to write diagnostic output from the surface mixing routine | [boolean] | .true. OR .false. | .false. |
disable_evap |
Switch to turn evaporation off entirely. Intended for isolating the water balance during testing | [boolean] | .true. OR .false. | .false. |
Plotting
The three blocks below are not read from
glm3.nml. They are read from a separate file, plots.nml
in the working directory, and only apply to builds compiled with on-screen
plotting support. A different filename can be given on the GLM command line. If
the file cannot be opened, or a block within it cannot be read, GLM prints a
warning and falls back to the built-in defaults shown below.
&plots_window
Size of the window that holds the plot panels.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
width |
Width of the plot window, in pixels | [integer] | - | 1000 |
height |
Height of the plot window, in pixels | [integer] | - | 300 |
&plots
Defines the contour panels drawn during the run. The list variables each supply one entry per panel.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
nplots |
Number of plot panels to draw | [integer] | Length of vars |
2 |
plot_width |
Width of an individual panel, in pixels | [integer] | - | 400 |
plot_height |
Height of an individual panel, in pixels | [integer] | - | 200 |
vars |
Names of the variables to plot, one per panel | [array] | comma-separated list of nplots names |
temp, salt |
title |
Title displayed above each panel | [array] | comma-separated list of nplots strings |
Temperature, Salinity |
title_font |
Font used for the panel titles | [string] | - | |
title_size |
Point size of the panel titles | [integer] | - | - |
label_font |
Font used for the axis labels | [string] | - | |
label_size |
Point size of the axis labels | [integer] | - | - |
min_z |
Lower limit of the colour scale for each panel | [array] | comma-separated list of nplots values |
-1.0, 0.0 |
max_z |
Upper limit of the colour scale for each panel | [array] | comma-separated list of nplots values |
30.0, 0.6 |
min_y |
Lower limit of the vertical axis for each panel. Negative values leave the axis to be scaled automatically | [array] | comma-separated list of nplots values |
-1 |
max_y |
Upper limit of the vertical axis for each panel. Negative values leave the axis to be scaled automatically | [array] | comma-separated list of nplots values |
-1 |
Example
&plots_window
width = 1000
height = 300
/
&plots
nplots = 2
plot_width = 400
plot_height = 200
title = 'Temperature', 'Salinity'
vars = 'temp', 'salt'
min_z = -1.0, 0.0
max_z = 30.0, 0.6
/
&animate
Writes the plot panels out as an image sequence so the run can be replayed as an animation.
| Variable Name | Description | Type | Options | Default |
|---|---|---|---|---|
nanim |
Number of variables to animate | [integer] | Length of vars |
- |
vars |
Names of the variables to animate | [array] | comma-separated list of nanim names |
- |
fnames |
Output filename for each animated variable | [array] | comma-separated list of nanim filenames |
- |
anim_delay |
Delay between successive frames | [integer] | - | - |