diff --git a/.github/workflows/gh-page_builder.yml b/.github/workflows/gh-page_builder.yml index 500145b8b..096b03893 100644 --- a/.github/workflows/gh-page_builder.yml +++ b/.github/workflows/gh-page_builder.yml @@ -2,7 +2,11 @@ name: JupyterBook #name: Build and Publish JupyterBook to GitHub Pages # on: - [push, workflow_dispatch] + push: + branches: + - main + workflow_dispatch: + pull_request: jobs: build: @@ -14,16 +18,18 @@ jobs: uses: actions/setup-python@v6 with: python-version: 3.9 + cache: 'pip' - name: Install Python dependencies run: | sudo apt-get install python3-pip - pip install ghp-import - pip install "jupyter-book<2" + pip install -r requirements.txt PATH="${PATH}:${HOME}/.local/bin" - name: Build book HTML run: | - jupyter-book build . + jupyter-book build -W --keep-going . - name: Push _build/html to gh-pages + # The below condition allows publication on pushes to main (including PR merges) as well as workflow_dispatch from main. + if: github.ref == 'refs/heads/main' run: | sudo chown -R $(whoami):$(whoami) . git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" diff --git a/_config.yml b/_config.yml index 6731288a5..90b00c7f8 100644 --- a/_config.yml +++ b/_config.yml @@ -8,6 +8,12 @@ logo: images/ncar_logo.png # Removing CESM2 Porting for 2026 tutorial (need to update to CESM3 in future) exclude_patterns: - notebooks/resources/porting.ipynb + - notebooks/challenge/cam/exercice_overview.ipynb + - notebooks/modifications/xml/copying_cases.ipynb + - notebooks/modifications/xml/run_length/number_of_submissions.ipynb + - notebooks/resources/ncar_hpc_login.ipynb + - notebooks/resources/profile.ipynb + - notebooks/resources/tutorial_specific.ipynb sphinx: config: diff --git a/notebooks/challenge/cam-chem_waccm/cam-chem_waccm.ipynb b/notebooks/challenge/cam-chem_waccm/cam-chem_waccm.ipynb index bf416c1c7..7610bc696 100644 --- a/notebooks/challenge/cam-chem_waccm/cam-chem_waccm.ipynb +++ b/notebooks/challenge/cam-chem_waccm/cam-chem_waccm.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "a71d9f66-43a6-4dc7-9252-5b2fb07690e3", "metadata": {}, "source": [ "# Atmospheric chemistry" @@ -9,6 +10,7 @@ }, { "cell_type": "markdown", + "id": "2d89d5b4-5af7-4a24-926d-65d8a997ea55", "metadata": { "tags": [] }, @@ -22,6 +24,7 @@ }, { "cell_type": "markdown", + "id": "f60c6c06-4b10-41a0-b3e8-853a59b93f36", "metadata": {}, "source": [ "## CAM-chem and WACCM component sets\n", @@ -42,6 +45,7 @@ } }, "cell_type": "markdown", + "id": "cf000a8d-c6e3-497f-8646-1e16d8988097", "metadata": {}, "source": [ "## CAM-chem and WACCM F component sets\n", @@ -61,6 +65,7 @@ }, { "cell_type": "markdown", + "id": "fe3ca599-d884-4277-b421-2fbaafe4d93a", "metadata": {}, "source": [ "## Overview of the Challenge Exercises for CAM-chem/WACCM\n", @@ -74,6 +79,7 @@ }, { "cell_type": "markdown", + "id": "7dffcef5-b06d-4143-bab6-29cd90aff98a", "metadata": {}, "source": [ "_______________\n", @@ -94,6 +100,7 @@ { "cell_type": "code", "execution_count": null, + "id": "e60af30a-2425-4412-9a67-40ac6656c186", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/challenge/cam-chem_waccm/exercise_1.ipynb b/notebooks/challenge/cam-chem_waccm/exercise_1.ipynb index b7d247546..a446dd5cc 100644 --- a/notebooks/challenge/cam-chem_waccm/exercise_1.ipynb +++ b/notebooks/challenge/cam-chem_waccm/exercise_1.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "f97c18d1-eee0-4074-96d2-5a62d026ccd7", "metadata": {}, "source": [ "# 1: Control case: running with chemistry" @@ -9,6 +10,7 @@ }, { "cell_type": "markdown", + "id": "4a876c90-5738-47d2-921a-4ba392725130", "metadata": {}, "source": [ "\n", @@ -29,6 +31,7 @@ }, { "cell_type": "markdown", + "id": "a45d3bf8-9b01-4d16-8c7f-36cfad680884", "metadata": {}, "source": [ "\n", @@ -82,6 +85,7 @@ }, { "cell_type": "markdown", + "id": "4226f4d2-98e9-4d4c-8a7e-facb39dac400", "metadata": {}, "source": [ "\n", @@ -227,6 +231,7 @@ { "cell_type": "code", "execution_count": null, + "id": "73087ac0-96a1-4915-a00e-118adab201f7", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/challenge/cam-chem_waccm/exercise_2.ipynb b/notebooks/challenge/cam-chem_waccm/exercise_2.ipynb index e2d71f87c..68a15c58c 100644 --- a/notebooks/challenge/cam-chem_waccm/exercise_2.ipynb +++ b/notebooks/challenge/cam-chem_waccm/exercise_2.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "06e86d57-b628-4ac6-b709-5ce8471e387e", "metadata": {}, "source": [ "# 2: Test case: changing the chemistry" @@ -9,6 +10,7 @@ }, { "cell_type": "markdown", + "id": "9e78e571-ea6c-4017-a309-d880fda4a95c", "metadata": {}, "source": [ "\n", @@ -44,6 +46,7 @@ }, { "cell_type": "markdown", + "id": "0f49fdeb-2f0a-408f-b9ff-ad5e85af714e", "metadata": {}, "source": [ "\n", @@ -84,6 +87,7 @@ }, { "cell_type": "markdown", + "id": "210f69f4-96f6-47ed-b5fc-0422b6996f11", "metadata": {}, "source": [ "\n", @@ -252,6 +256,7 @@ { "cell_type": "code", "execution_count": null, + "id": "1c346bc1-47f4-4bed-b53c-c16d88ee5f00", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/challenge/cam-chem_waccm/exercise_3.ipynb b/notebooks/challenge/cam-chem_waccm/exercise_3.ipynb index 03dc5f985..afe690ab4 100644 --- a/notebooks/challenge/cam-chem_waccm/exercise_3.ipynb +++ b/notebooks/challenge/cam-chem_waccm/exercise_3.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "e516483d-290b-4a13-b3f2-3c36d74ba443", "metadata": {}, "source": [ "# 3: Test case: changing the emissions" @@ -9,6 +10,7 @@ }, { "cell_type": "markdown", + "id": "fa4eb23f-ced7-4c49-b80e-8e11b35e27d5", "metadata": {}, "source": [ "\n", @@ -29,6 +31,7 @@ }, { "cell_type": "markdown", + "id": "37626595-43cf-490a-908b-23f1f5fe8507", "metadata": {}, "source": [ "\n", @@ -58,6 +61,7 @@ }, { "cell_type": "markdown", + "id": "ee1de48c-2096-4274-be27-3670737e2d99", "metadata": {}, "source": [ "\n", @@ -325,6 +329,7 @@ { "cell_type": "code", "execution_count": null, + "id": "8f7ed79f-be6d-44af-9144-b2cece9013c2", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/challenge/cam-chem_waccm/visualization.ipynb b/notebooks/challenge/cam-chem_waccm/visualization.ipynb index 881ee7115..e12017651 100644 --- a/notebooks/challenge/cam-chem_waccm/visualization.ipynb +++ b/notebooks/challenge/cam-chem_waccm/visualization.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "fc8f1fa6-d1ee-4140-ba7a-448d827e4b84", "metadata": {}, "source": [ "# 4: Visualization option with GEOV" @@ -9,6 +10,7 @@ }, { "cell_type": "markdown", + "id": "90c45506-cd94-4c2d-948e-b1d6e5b16719", "metadata": {}, "source": [ "\n", @@ -55,6 +57,7 @@ { "cell_type": "code", "execution_count": null, + "id": "9e3ed3d5-d6c0-4365-9cdb-93b6e7cccb99", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/challenge/cam/exercise_3.ipynb b/notebooks/challenge/cam/exercise_3.ipynb index 210ce7ba4..913103b63 100644 --- a/notebooks/challenge/cam/exercise_3.ipynb +++ b/notebooks/challenge/cam/exercise_3.ipynb @@ -293,7 +293,7 @@ "\n", "___\n", "\n", - "### **Verify the Configuration**\n", + "## **Verify the Configuration**\n", "\n", "**# Check the Run Type**\n", "```\n", @@ -341,7 +341,7 @@ "\n", "___\n", "\n", - "### **Check your solution**\n", + "## **Check your solution**\n", "\n", "When the run is completed, look at the history files into the archive directory. \n", " \n", diff --git a/notebooks/challenge/cice/cice.ipynb b/notebooks/challenge/cice/cice.ipynb index a6388d056..25f725852 100644 --- a/notebooks/challenge/cice/cice.ipynb +++ b/notebooks/challenge/cice/cice.ipynb @@ -120,7 +120,7 @@ "source": [ "
Figure: Plotting solution comparing the two FATES simulations.
*\n", " \n", @@ -603,7 +603,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Questions:\n", + "### Questions:\n", "- What is the primary difference in GPP between the IHIST BGC case and the I2000 SP case?\n", "- Why might this be occuring? " ] diff --git a/notebooks/challenge/clm_ctsm/clm_exercise_5.ipynb b/notebooks/challenge/clm_ctsm/clm_exercise_5.ipynb index c94ad6e76..80f8292e0 100644 --- a/notebooks/challenge/clm_ctsm/clm_exercise_5.ipynb +++ b/notebooks/challenge/clm_ctsm/clm_exercise_5.ipynb @@ -348,7 +348,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Questions: \n", + "### Questions: \n", "\n", " - How do GPP and LAI track each other through the year? Which leads the other in spring, and does that make physical sense?\n", " - Does LAI fall all the way to zero in winter? What does the residual tell you about the mix of plant functional types at this site? (think back to which PFTs grow at BART.)" diff --git a/notebooks/challenge/ml/ml_exercise_1.ipynb b/notebooks/challenge/ml/ml_exercise_1.ipynb index 65f03df87..6f38ed820 100644 --- a/notebooks/challenge/ml/ml_exercise_1.ipynb +++ b/notebooks/challenge/ml/ml_exercise_1.ipynb @@ -7,7 +7,7 @@ "source": [ "# CAMulator Exercises: CESM Tutorial: Summer 2026\n", "\n", - "#### **CAMulator** is a global, machine-learned autoregressive emulator trained with data from the Community Atmosphere Model. See the version 1 publication here: https://arxiv.org/pdf/2504.06007\n", + "**CAMulator** is a global, machine-learned autoregressive emulator trained with data from the Community Atmosphere Model. See the version 1 publication here: https://arxiv.org/pdf/2504.06007\n", "\n", "Camulator was trained and is run using the [CREDIT package](https://github.com/NCAR/miles-credit/tree/main).\n", "\n", @@ -934,7 +934,7 @@ "id": "1b394df9", "metadata": {}, "source": [ - "#### El Niño blob intervention\n", + "### El Niño blob intervention\n", "\n", "Add a Gaussian warm SST anomaly (amplitude `ENSO_AMP` K) centered in the equatorial central-eastern\n", "Pacific — elongated zonally (broad in longitude, narrow in latitude), like a real El Niño — on top of\n", diff --git a/notebooks/challenge/paleo/exercise_2.ipynb b/notebooks/challenge/paleo/exercise_2.ipynb index 696cb074d..b4ffdb6f8 100644 --- a/notebooks/challenge/paleo/exercise_2.ipynb +++ b/notebooks/challenge/paleo/exercise_2.ipynb @@ -264,7 +264,7 @@ }, { "cell_type": "markdown", - "id": "b90d4773-7ca0-4131-ab07-517608a3e976", + "id": "f8bc766b-27eb-4ce3-bf4b-9a0673e6b965", "metadata": {}, "source": [ "\n", @@ -295,7 +295,7 @@ }, { "cell_type": "markdown", - "id": "65b2cbda-2d54-48ee-898b-4c391f16ca79", + "id": "96cc3045-4d2e-4592-a245-925bf3073205", "metadata": {}, "source": [ "\n", @@ -332,7 +332,7 @@ }, { "cell_type": "markdown", - "id": "7dd602b7-372d-4f36-b6d1-df8e22ba1646", + "id": "2de64fb5-a10b-4fe1-a856-9ecc70d11962", "metadata": {}, "source": [ "\n", @@ -452,7 +452,7 @@ }, { "cell_type": "markdown", - "id": "65b2cbda-2d54-48ee-898b-4c391f16ca79", + "id": "1d486a2a-f04a-408f-8116-7765cf92ad7b", "metadata": {}, "source": [ "\n", diff --git a/notebooks/challenge/paleo/paleo.ipynb b/notebooks/challenge/paleo/paleo.ipynb index 71e9a2c77..f7f52d0a0 100644 --- a/notebooks/challenge/paleo/paleo.ipynb +++ b/notebooks/challenge/paleo/paleo.ipynb @@ -43,7 +43,7 @@ }, { "cell_type": "markdown", - "id": "b6f4905b-cd2a-454e-89cf-ccc585c90247", + "id": "5e03df41-d471-4e34-9f23-9a5388a2af10", "metadata": { "tags": [] }, @@ -53,7 +53,7 @@ }, { "cell_type": "markdown", - "id": "346cbd7b-3b8e-41f0-b120-b369ab20f6cc", + "id": "32b4de57-03c7-48f0-9659-c7f183a0e134", "metadata": {}, "source": [ "- This exercise uses the same code base as the rest of the tutorial. \n", @@ -63,7 +63,7 @@ }, { "cell_type": "markdown", - "id": "b6f4905b-cd2a-454e-89cf-ccc585c90247", + "id": "0529a0fa-6b06-40e9-a89b-56a9d99dacd9", "metadata": { "tags": [] }, @@ -73,7 +73,7 @@ }, { "cell_type": "markdown", - "id": "346cbd7b-3b8e-41f0-b120-b369ab20f6cc", + "id": "5e7e1bc0-e7d2-4f31-b7e8-f8ffc47e7a86", "metadata": {}, "source": [ "- This exercise uses a different code base from the rest of the tutorial (isotope-enabled CESM1.3). \n", diff --git a/notebooks/diagnostics/mom/mom.ipynb b/notebooks/diagnostics/mom/mom.ipynb index 34de77c7f..ef2cd82b5 100644 --- a/notebooks/diagnostics/mom/mom.ipynb +++ b/notebooks/diagnostics/mom/mom.ipynb @@ -76,7 +76,9 @@ "source": [ "### Exercise 4: Making a profile\n", "\n", - "Here we learn how to plot a temperature profile at a single point on the ocean grid." + "Here we learn how to plot a temperature profile at a single point on the ocean grid.\n", + "\n", + "_______________" ] }, { @@ -84,9 +86,7 @@ "id": "782bebb4-f00e-4362-8738-736ab39a311d", "metadata": {}, "source": [ - "## Advanced Plotting\n", - "\n", - "_______________" + "## Advanced Plotting" ] }, { diff --git a/notebooks/modifications/xml/modify_run_type/hybrid_branch_restart.ipynb b/notebooks/modifications/xml/modify_run_type/hybrid_branch_restart.ipynb index 04264dfa2..046ba534b 100644 --- a/notebooks/modifications/xml/modify_run_type/hybrid_branch_restart.ipynb +++ b/notebooks/modifications/xml/modify_run_type/hybrid_branch_restart.ipynb @@ -29,13 +29,13 @@ "## 1. The three run types\n", "\n", "\n", - "#### - STARTUP\n", + "### - STARTUP\n", "\n", "- In a startup run (the default), all model components are initialized from the basic **default initial conditions**. The coupler does not need an initial file. \n", "\n", "\n", "\n", - "#### - BRANCH\n", + "### - BRANCH\n", "\n", "- In a branch run, all components are initialized using **a consistent set of restart files from a previous run** (determined by the [`$RUN_REFCASE`](./run_variables.ipynb), [`$RUN_REFDATE`](./run_variables.ipynb), and [`$DRV_RESTART_POINTER`](./run_variables.ipynb) variables in env_run.xml). \n", "- The case name is generally changed for a branch run, although it does not have to be. \n", @@ -44,7 +44,7 @@ "\n", "\n", "\n", - "#### - HYBRID\n", + "### - HYBRID\n", "\n", "- A hybrid run indicates that CESM is initialized more like a startup, but uses initialization datasets from a previous case. This is somewhat analogous to a branch run with relaxed restart constraints. \n", "- A hybrid run allows users to bring together combinations of initial/restart files from a previous case (specified by [`$RUN_REFCASE`](./run_variables.ipynb)) at a given model output date (specified by [`$RUN_REFDATE`](./run_variables.ipynb)). Unlike a branch run, the starting date of a hybrid run (specified by [`$RUN_STARTDATE`](./run_variables.ipynb)) can be modified relative to the reference case. \n", diff --git a/notebooks/namelist/exercises/exercise_tuning_parameter.ipynb b/notebooks/namelist/exercises/exercise_tuning_parameter.ipynb index 049a8991a..7bc94a0f1 100644 --- a/notebooks/namelist/exercises/exercise_tuning_parameter.ipynb +++ b/notebooks/namelist/exercises/exercise_tuning_parameter.ipynb @@ -60,7 +60,7 @@ " \n", "\n", "\n", - "### Where is the Dcs parameter?\n", + "## Where is the Dcs parameter?\n", "\n", "The variable you are looking for is:\n", "\n", @@ -70,13 +70,13 @@ "\n", "It can be modified directly in `user_nl_cam`.\n", "\n", - "### How do I compile?\n", + "## How do I compile?\n", "\n", "```bash\n", "qcmd -- ./case.build\n", "```\n", "\n", - "### Compare this run with the interpolation exercise\n", + "## Compare this run with the interpolation exercise\n", "\n", "Compare this run with the case you created in the previous exercise:\n", "\n", diff --git a/notebooks/resources/ncar_hpc_module.ipynb b/notebooks/resources/ncar_hpc_module.ipynb index 39ccdd142..d4f75ddb7 100644 --- a/notebooks/resources/ncar_hpc_module.ipynb +++ b/notebooks/resources/ncar_hpc_module.ipynb @@ -49,7 +49,7 @@ "id": "33d4014c-bc0f-4ab0-aaf3-cf6cf7572f22", "metadata": {}, "source": [ - "### Checking what modules are loaded in your environment\n", + "## Checking what modules are loaded in your environment\n", "\n", "To check what modules you have loaded in your environment, use the following at the command line:" ] @@ -69,7 +69,7 @@ "id": "2a5ec941-4f4a-4a99-a3a0-6e514c448805", "metadata": {}, "source": [ - "### Checking what modules are available\n", + "## Checking what modules are available\n", "\n", "You can see which modules are available on the HPC resources by using the following at the command line:" ] @@ -119,7 +119,7 @@ "id": "65848ac8-1cad-47bf-b680-8b129ce4e25d", "metadata": {}, "source": [ - "### Loading a new module to your environment\n", + "## Loading a new module to your environment\n", "\n", "You can load one of the available modules (here we show loading ncview) using the following at the command line: " ] diff --git a/notebooks/resources/text_editors.ipynb b/notebooks/resources/text_editors.ipynb index 98e786354..1e24ec9f6 100644 --- a/notebooks/resources/text_editors.ipynb +++ b/notebooks/resources/text_editors.ipynb @@ -25,11 +25,9 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "id": "14daecd3-2958-4925-bc37-e8748db4937b", "metadata": {}, - "outputs": [], "source": [ "Emacs is an extensible, customizable, and self-documenting editor. Emacs opens a GUI to your computer and requires X11 forwarding. Once open, it can be used similar to a normal document including scrolling.\n", "\n", diff --git a/notebooks/resources/tutorial_queue_account.ipynb b/notebooks/resources/tutorial_queue_account.ipynb index 366b0e5ac..afa68006d 100644 --- a/notebooks/resources/tutorial_queue_account.ipynb +++ b/notebooks/resources/tutorial_queue_account.ipynb @@ -13,7 +13,7 @@ "id": "4a6f76fe-9658-443c-89a7-9ede364803e5", "metadata": {}, "source": [ - "### Tutorial Project Account\n", + "## Tutorial Project Account\n", "\n", "