-
Notifications
You must be signed in to change notification settings - Fork 4
AK K64G OLMT Meteorology Scaling Demo
DRAFT
ELM requires a set of forcing timeseries in order to run. In most E3SM simulations, ELM will be given forcing timeseries of variables such as temperature, humidity, precipitation rate, and nutrient deposition from the atmospheric model, EAM. When running ELM alone, however, these time series must be provided by the user. OLMT has several options that take care of specifying and altering the input data to ELM. Here, we will go through a single-pixel OLMT ELM simulation example for the Kougarok Mile 64 study site that uses OLMT options to alter temperature and precipitation (summer precipitation/winter precipitation as snow) separately and together (temperature+summer/winter precipitation changes). We analyze output against a base case to look at how these changes in scaling meteorological data will change the model output.
First, we will run the model scenarios for different iterations of temperature and rain/snow changes.
Mean annual temperature is projected to shift by up to +8.5°C at the NGEE sites by CMIP6 models, downscaled using a 13 member ensemble from CMIP6, calculated based on ClimateNA data (https://climatena.ca/). Precipitation in summer and winter precipitation as snow changes are based on percent differences from a climate normal (1971-2000). Temperature changes are the °C differences from this normal.
| Site | Temperature change (°C) | Summer precipitation change (%) | Winter precipitation Change |
|---|---|---|---|
| Council | 5.0/8.4 | 17/28 | 11/-29 |
| Kougarok | 5.4/5.6 | 21/20 | 11/12 |
| Teller | 5.2/8.5 | 21/32 | -1/-36 |
| Utqiagvik | X.X/X.X | YY/YY | ZZ/ZZ |
We can use options in OLMT as to see how ELM simulations would change under using these different temperature and precipitation conditions.
First, we run a case with no changes to the forcing data to use as a comparison with the other cases. If you have already run a case for Kougarok using these instructions. If you're not sure if you've run this case, you could always run the following to ensure you have the control case:
docker run -t -i --hostname=docker --user modeluser -v elmdata:/inputdata -v elmoutput:/output fasstsimulation/elm-builds:elm_v2-for-ngee_multiarch /scripts/OLMT_docker_example.sh --site_name=kougarok --ad_spinup_years=20 --final_spinup_years=30 --transient_years=10 --case_prefix=base
This first case adds 5.6°C to the forcing temperature input files, starting on 1855-01-01. The --case_prefix flag here is important - if we did not supply it, running this case would overwrite the values from case 0! As we have specified 10 transient years in the simulation, our transient simulation will run from 1/1/1850 to 1/1/1860:
docker run -t -i --hostname=docker --user modeluser -v elmdata:/inputdata -v elmoutput:/output fasstsimulation/elm-builds:elm_v2-for-ngee_multiarch /scripts/OLMT_docker_example.sh --site_name=kougarok --ad_spinup_years=20 --final_spinup_years=30 --transient_years=10 --add_temperature=5.6 --startdate_add_temperature=18550101 --case_prefix=future_T
In the second case, we scale only precipitation and leave temperature unchanged. Rain and snowfall amounts are projected to change differently; in this case, we increase snowfall by 12% and rainfall by 20% in 1855. These are applied by multiplying the forcing data by a scaling factor (1.12 for snow, 1.20 for rain), instead of adding a constant as we did for temperature:
docker run -t -i --hostname=docker --user modeluser -v elmdata:/inputdata -v elmoutput:/output fasstsimulation/elm-builds:elm_v2-for-ngee_multiarch /scripts/OLMT_docker_example.sh --site_name=kougarok --ad_spinup_years=20 --final_spinup_years=30 --transient_years=10 --scale_snow=1.12 --startdate_scale_snow=18550101 --scale_rain=1.20 --startdate_scale_rain=18550101 --case_prefix=future_P
In the third case, we make changes to both temperature and precipitation, using the same values as above. This case will show us the combined impact of future precipitation and temperature changes. As above, the perturbations start in 1855 and continue 5 years until the end of the run:
docker run -t -i --hostname=docker --user modeluser -v elmdata:/inputdata -v elmoutput:/output fasstsimulation/elm-builds:elm_v2-for-ngee_multiarch /scripts/OLMT_docker_example.sh --site_name=kougarok --ad_spinup_years=20 --final_spinup_years=30 --transient_years=10 --scale_snow=1.12 --startdate_scale_snow=18550101 --scale_rain=1.20 --startdate_scale_rain=18550101 --add_temperature=5.6 --startdate_add_temperature=18550101 --case_prefix=future_TP
In the elmlab_3.3.2 docker image, there is a script that allows us to compare results from two different simulations: compare_cases_variable.ipynb. You'll need an elmlab_3.3.2 container running; you may already have one (check in docker desktop). If there isn't one running, you can start one using the instructions here: Analyzing ELM Output in Jupyter Lab.
Let's take a look at the impact that the temperature change had on soil temperature. In the second cell of the compare_cases_variable_v2.ipynb notebook, you'll see there is a place to select the cases we'd like to compare. Let's choose the base case (either OLMT_AK-K64G* or base_AK-K64G if you ran case 0 above) and the future temperature case (future_T_AK-K64G*):
In the next cell, we select the variable and time period we wish to look at across the two cases. Select TSOI for soil temperature, a start year of 1850, and an end year of 1860:
In the last cell, you should get a plot that looks like this:

This plot shows the soil temperature by depth for the control case (top row), the perturbed/experimental case (middle row), and the difference between the experimental and control cases (bottom row). The cases are identical until 1855, when the temperature perturbation is applied. After 1855, soil temperature is usually higher in the experimental case than the control case, with the largest changes seen at shallow depths.
What about soil temperature for the case where we change the precipitation only, leaving temperature the same (case 2)?