Tools for interacting with the General Lake Model (GLM) in R
Clone or download
jread-usgs Merge pull request #240 from wdwatkins/master
accept RDS files in read_field_obs
Latest commit d162009 Feb 9, 2018


Build status Build Status Coverage Status

Tools for interacting with the General Lake Model (GLM) in R. glmtools includes some basic functions for calculating physical derivatives and thermal properties of model output, and some plotting functionality (see example image below).

glmtools Functions (as of v0.2.5.2)

Package Topic Title
glmtools compare_to_field compare metric for GLM vs field observations
glmtools convert_sim_var convert an existing simulation variable into a different one
glmtools epi.temperature Get volumetrically averaged epilimnion temp
glmtools from.glm_boolean go from glm2.nml logical vectors to R logicals
glmtools get_evaporation get evaporation from GLM simulation
glmtools get_hypsography retrieve hypsography information
glmtools get_ice get ice depth from GLM simulation
glmtools get_nml_value gets a nml value according to an arg_name
glmtools get_raw get raw data from GLM simulation
glmtools get_surface_height get surface height from GLM simulation
glmtools get_temp get water temperatures from a GLM simulation
glmtools get_var get variable from a GLM simulation
glmtools get_wind get wind speed from GLM simulation
glmtools hypo.temperature Get volumetrically averaged hypolimnion temp
glmtools plot_compare_stage Plot simulated and observed stage data
glmtools plot_meteo Plot meterological drivers from a csv file
glmtools plot_temp Plot water temperatures from a GLM simulation
glmtools plot_temp_compare Plot matching heatmaps for modeled and observed temp
glmtools plot_validate_profiles Plot validation and model temperature profiles
glmtools plot_var Plot variables from a GLM simulation
glmtools plot_var_compare Plot matching heatmaps for modeled and observed temp
glmtools read_field_obs Read in field data into a data.frame
glmtools read_field_stage Read in a field stage file
glmtools read_nml read in a GLM simulation *.nml file
glmtools resample_sim get subset of time from a generic timeseries data.frame
glmtools resample_to_field Match GLM water temperatures with field observations
glmtools run_example_sim Run example simulation
glmtools set_nml sets values in nml object
glmtools sim_metrics get possible metrics for comparing GLM outputs to field
glmtools sim_var_longname Get long name of variable from a GLM simulation
glmtools sim_var_units Get units of variable from a GLM simulation
glmtools sim_vars Get list of variables from a GLM simulation
glmtools summarize_sim Creates GLM simulation summary outputs
glmtools validate_sim Run diagnostics on model results vs observations
glmtools water.temperature Mimic rLakeAnalyzer function
glmtools whole.lake.temperature Get volumetrically averaged whole lake temperature
glmtools write_nml write GLM .nml for a GLM simulation


How do I install glmtools? It isn't on CRAN!

glmtools can be installed from the USGS GRAN repository. To install glmtools and all dependencies, follow the appropriate instructions below:

  1. Setup R to add GRAN using the instructions on the USGS R page.

  2. After GRAN is setup (usually requires a restart of R), then use the following command in R:


What libraries does glmtools need?

This version requires the NetCDF version R library (called ncdf4), and rLakeAnalyzer, and tools if you would like to run all examples.

package version
R >= 3.0
GLMr *
rLakeAnalyzer >= 1.8.3
ncdf4 *
tools *
akima *
lazyeval *
methods *

How do I contribute new code back to the glmtools project?

In order to contribute to this code, we recommend the following workflow:

  1. "fork" this repository to your own personal github account

  2. clone the github repository to your computer:

    $git clone

  3. modify code or add new functionality, save the code

  4. add the repository master to a remote master called "upstream"

    $cd glmtools

    $git remote add upstream

  5. before pushing your changes to your repository, pull in the current version of the GLEON master:

    $git fetch upstream

  6. merge these differences with your own "master" version:

    $git merge upstream/master

  7. push your changes to your github repository, in addition to changes made by pulling in the GLEON master:

    $git push

  8. submit a pull request to GLEON master using your account at