Getting Started

Downloading

The model is available pre-compiled for windows, linux and macintosh operating systems with several test-cases available from the Downloads tab. Source code and compilation instructions are available, accesible via our GitHub repository.

Installation

No specific installation steps are needed if you are using the precompiled binaries. Simply ensure the glm executable program file is in an accessible folder and the provided support dll’s are co-located in this folder.

Overview of Model Operation

The GLM simulation requires several “namelist” (nml) text files that described the model as outlined in the below figure. The model requires csv files for boundary conditions of meteorology and inflow/outflows

Model Operation

The model comes with a built-in plotting library that works on both windows and linux versions in addition to detailed outputs provided in NetCDF format, and the option to create custom csv output files. When the model is invoked with the plotting library called then a window will open and plot the model outputs in real-time as the model is running. For more info on plotting, see below.

Model Configuration

A GLM simulation is configured via the main “namelist” (nml) text file called glm3.nml. The key elements of this file are depicted as "blocks" in the above image and each block of configuration options & parameters is summarised in detail in the below table.

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{TEOS-10: }&\Theta_{\rho}=1 \\ \textrm{UNESCO(1981): }&\Theta_{\rho}=2\\ \textrm{custom: }&\Theta_{\rho}=3+ \end{array} \right.$$ 1
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.$$ .true.

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. /

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. /

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. /

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 [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 /

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 /

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" /

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 /

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\) 4
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 /

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 /

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 /

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 /

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. .true.
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 [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}$$ ... [real] Required for fetch_mode (\(\Theta_{fetch}\)) \(= 1\) ?
Xws $$x_{WS}$$ ... [real] Required for fetch_mode (\(\Theta_{fetch}\)) \(= 2\) ?
num_dir - Number of wind direction reference points being read in [integer] Required for fetch_mode (\(\Theta_{fetch}\)) \(= 2\) or \(3\) -
wind_dir $$\Phi_{wind}[1...]$$ Wind directions used for wind-sheltering effects [real] Required for fetch_mode (\(\Theta_{fetch}\)) \(= 2\) or \(3\) -
fetch_scale $$f_{WS}[\Phi_{wind}]$$ Direction specific wind-sheltering scaling factors [real] Required for fetch_mode (\(\Theta_{fetch}\)) \(= 2\) or \(3\) 1

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 /
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.
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' /
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_O2 - TBC [integer] - -
crit_O2_dep - [integer] - -
crit_O2_days - [integer] - -
outlet_crit - [integer] - -
O2name - [string] - -
O2idx - [string] - -
target_temp - [real] - -
min_lake_temp - [real] - -
fac_range_upper - [real] - -
fac_range_lower - [real] - -
mix_withdraw - [boolean] - -
coupl_oxy_sw - [boolean] - -
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] - 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

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 /

Example glm2.nml file configured to run a variety of GLM model setups is available on the examples page.

An example glm.nml file configured to run a simple GLM model setup (v1.4) is available below:

GLM control file -> (English version, please rename to glm.nml for use).

GLM control file -> (Español version, please rename to glm.nml for use).



Running the model on windows:

To run the model on windows you can make use of a file called “glm32.bat" or "glm64.bat” in the simulation directory to automate the running command. Within the bat file, make sure is setup correctly and points to the appropriate “bin” folder where the exe and dlls are located on your system. For example:

..\bin\glm32\glm.exe

or if the in built plotting library is to be used then invoke the xdisp command line argument:

..\bin\glm32\glm.exe --xdisp



Running the model on linux:

To run the model on linux simply call the executable form your working simulation directoty. For example:

../bin/glm

or if the in built plotting library is to be used then invoke the xdisp command line argument:

../bin/glm --xdisp


A simple tutorial on running GLM with the example simulations is available:

Remember to watch out the date format when you create or re-save a meteorological or inflow boundary condition csv file from Excel. Excel changes the date format to be its preferred style instead of the style that GLM requires YYYY-MM-DD so you must be sure to set that manually in the cell format properties of Excel before saving csv files.

Style Switcher

Predefined Colors

Layout Style

Background Image

Background Color