Skip to content

Running ELM for NGEE Arctic Field Sites using OLMT

Shawn P. Serbin edited this page Jun 13, 2023 · 28 revisions

Requirements

In order to be able to run ELM for the NGEE Arctic Field Sites you will need to complete ALL of the homework activities for the NGEE Arctic Modex workshop listed in the Setting up your Docker desktop wiki page.

What are we simulating and how?

This demo illustrates how to execute a single-pixel ELM v2 simulation at each of the four NGEE-Arctic study site (Utqiagvik, Council, Kougarok, Teller). The simulation options include the number of Accelerated Decomposition (AD) spin-up years, standard spin-up years, and finally how many transient years to run each simulation. The default is 200, 600, and 165 years, respectively. The simulations are controlled by a wrapper script that utilizes the Offline Land Model Testbed, developed and maintained by Dan Ricciuto (ricciutodm@ornl.gov). OLMT controls the creation, configuration, and execution each simulation. At the completion of each simulation, the wrapper calls the "ncrcat" command to concatenate all transient simulation years and model variables into a new output file called "ELM_output.nc". This is a netcdf file that we will use Jupyter-Lab notebooks to analyze and explore.

Why are we sharing three options for running a simulation?

When getting geared up to look at a suite of output variables, getting a feel for initial differences across sites, or just figuring out how changes to the model settings/ inputs/ parameters will broadly impact model output it can be extremely useful to do run a "quick" version of a simulation that only takes about 10 minutes to complete but still produces all the output variables (this is option #1). Output values from a quick run will be somewhat reasonable but should not be considered trustworthy: the shorter simulation does not allow enough time for slower model pools (like soil organic matter) to reach a steady state and the shorter simulation only includes a few years of the transient (historical) part of the simulation that we typically want to look at in depth.

If you are wanting to do a serious model run to generate robust model output for in depth analysis, you will need to to perform a "regular" run that includes an extensive spinup period and includes more years of post-spinup data (this is option #2). The longer spinup period allows model pools to reach a steady state prior to the transient (historical) part of the simulation, which is the standard for robust model simulations. The long run also includes a transient simulation that covers the historical period from the starting point of 1850 through 2015. This is the most scientifically accurate version of the simulation to run and what we would want to do for publication and formal presentations.

Sometimes, we want a balance of speed and accuracy, so we are also including the settings for an "intermediate" run (option #3). This produces better quality data than the quick run but doesn't take quite as long as a regular run.

Option 1: Quick Run (~10 mins per site)

  • To perform a quick run for a single site, you can copy and paste the following code in your terminal window
docker run -t -i --hostname=docker --user modeluser -v elmdata:/inputdata -v elmoutput:/output serbinsh/ngeearctic_elm_containers:elm_v2-for-ngee_multiarch /scripts/OLMT_docker_example.sh --site_name=beo --ad_spinup_years=20 --final_spinup_years=30 --transient_years=5 --case_prefix=quick_run

This code is broken down by color below to show what each part is doing and some of the options you can edit
basic run code breakdown_ short

  • When ELM is performing a quick run, you will see code moving through your terminal window with a few stops and starts. When the run is complete the terminal window will say the following:
    image

  • If you want to do quick runs for a site other than beo (Utqiagvik), you need need to edit the above code to include one of the following:
    --site_name=council
    --site_name=kougarok
    --site_name=teller

Option 2: Regular Run (~2+ hours per site)

docker run -t -i --hostname=docker --user modeluser -v elmdata:/inputdata -v elmoutput:/output serbinsh/ngeearctic_elm_containers:elm_v2-for-ngee_multiarch /scripts/OLMT_docker_example.sh --site_name=beo --ad_spinup_years=200 --final_spinup_years=600

This slightly modified version of the code is broken down by color below to show what each part is doing and highlight changes made here to make the run longer and output more robust.
basic run code breakdown_ LONG

  • When ELM is performing a long run, you will see code moving through your terminal window with a few stops and starts. Similar to the quick run above, when the run is complete the terminal window will say:
    image

Option 3: Intermediate Run (~20 mins per site)

docker run -t -i --hostname=docker --user modeluser -v elmdata:/inputdata -v elmoutput:/output serbinsh/ngeearctic_elm_containers:elm_v2-for-ngee_multiarch /scripts/OLMT_docker_example.sh --site_name=beo --ad_spinup_years=20 --final_spinup_years=30 --transient_years=50 --case_prefix=intermediate_run
  • Scroll through the code above and see if you can piece out how different the ad_spinup, final_spinup, and transient period are for this version of the simulation compared to the quick and regular runs described above.

  • When ELM is performing an intermediate run, you will see code moving through your terminal window with a few stops and starts. Similar to the quick run above, when the run is complete the terminal window will say:
    image

What next?

You scan see that each simulation run generated its own volume in your docker desktop. Next, we will want to look at model output from these runs using Jupyter Lab notebooks
Click here to open the tutorial on using Jupyter notebooks with ELM output