<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://r-ford.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://r-ford.github.io/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-06-30T21:53:06+00:00</updated><id>https://r-ford.github.io/feed.xml</id><title type="html">Robert R. Ford</title><subtitle> </subtitle><author><name>Robert R. Ford</name></author><entry><title type="html">Running CESM2 on Burst-DAES</title><link href="https://r-ford.github.io/running-cesm2-burstdaes/" rel="alternate" type="text/html" title="Running CESM2 on Burst-DAES" /><published>2025-03-02T00:00:00+00:00</published><updated>2025-03-02T00:00:00+00:00</updated><id>https://r-ford.github.io/running-cesm2-burstdaes</id><content type="html" xml:base="https://r-ford.github.io/running-cesm2-burstdaes/"><![CDATA[<p>CESM2.1.5 was ported onto a DAES server thanks to the work of Li Zhuo, Kevin Tyle, and others. The following is a short step-by-step guide to running the model.</p>

<h2 id="log-in-and-environment">Log in and environment</h2>

<p>Log in:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh &lt;NetID&gt;@head.its.albany.edu
</code></pre></div></div>

<p>In your home directory, add the following lines to <code class="language-plaintext highlighter-rouge">.bashrc</code>. This is only done once.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>source /network/rit/lab/snowclus/modules/intel24.bash
source /network/rit/lab/snowclus/bin/conda_python_only.bash
ulimit -s unlimited
</code></pre></div></div>

<p>Run <code class="language-plaintext highlighter-rouge">. ~/.bashrc</code> once per session.</p>

<h2 id="create-and-set-up-new-case">Create and set up new case</h2>

<p>The model code and scripts are stored in the directory <code class="language-plaintext highlighter-rouge">/zhoulab_rit/lzhuo/my_cesm_sandbox/</code>. Create a new case with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/network/rit/lab/zhoulab_rit/lzhuo/my_cesm_sandbox/cime/scripts/create_newcase --compset &lt;compset&gt; --res &lt;res&gt; --machine burst-daes --case &lt;case-name&gt; --run-unsupported
</code></pre></div></div>

<p>The flag <code class="language-plaintext highlighter-rouge">--run-unsupported</code> is optional, depending on whether you are running an “unsupported” compset/res combination. The script will tell you if you are trying to run unsupported options.</p>

<p>Next, change the PE layout in <code class="language-plaintext highlighter-rouge">env_mach_pes.xml</code>. Since there are a few things that need to be changed, I just copy the file from a previous run. 
If you want to run your case on 4 nodes (the maximum suggested), you can just copy this file over from the one in <code class="language-plaintext highlighter-rouge">/roselab_rit/rford/cesm2/</code> 
or change the <code class="language-plaintext highlighter-rouge">NTASKS</code> for each component to 128 (see my previous post for syntax). You can preview the PE layout with <code class="language-plaintext highlighter-rouge">./pelayout</code>.</p>

<p>The case setup script we are about to run creates the <code class="language-plaintext highlighter-rouge">bld</code> and <code class="language-plaintext highlighter-rouge">run</code> directories. By default, the script will try to create folders in a directory that you will not have write access to, 
so you will need to change it. For me, this looks like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange CIME_OUTPUT_ROOT=/network/rit/lab/roselab_rit/rford/cesm2
</code></pre></div></div>

<p>Finally, you can run <code class="language-plaintext highlighter-rouge">case.setup</code>.</p>

<h2 id="changing-more-directories">Changing more directories</h2>

<p>For the same reason as above, we need to change the archive directory. This is the directory where you will access the netCDF output files. For me, this looks like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange DOUT_S_ROOT=/network/rit/lab/roselab_rit/rford/cesm2_archive/&lt;case-name&gt;
</code></pre></div></div>

<p>I’m not sure if there is a way to get the case name without typing it out. Replacing <code class="language-plaintext highlighter-rouge">&lt;case-name&gt;</code> with <code class="language-plaintext highlighter-rouge">$CASE</code> does not seem to work for me, but there might be another way.</p>

<p>The model uses various input files which are automatically downloaded by the model as needed and stored for future use. This requires write permissions to the default <code class="language-plaintext highlighter-rouge">input_data</code> folder. 
This time, there are two directories to change, which for me look like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange DIN_LOC_ROOT=/network/rit/lab/roselab_rit/rford/cesm2/input_data
./xmlchange DIN_LOC_ROOT_CLMFORC=/network/rit/lab/roselab_rit/rford/cesm2/input_data
</code></pre></div></div>

<h2 id="case-specific-changes">Case-specific changes</h2>

<p>Now is the time to make other changes relevant to your experiment: run length, namelist changes, forcing files, output frequency, etc.</p>

<h2 id="build-and-submit">Build and submit</h2>

<p>Run <code class="language-plaintext highlighter-rouge">case.build</code>, which will take some time. Then submit your job to the cluster with <code class="language-plaintext highlighter-rouge">case.submit</code>.</p>

<h2 id="benchmarking">Benchmarking</h2>

<table>
  <thead>
    <tr>
      <th>Compset</th>
      <th>Grid</th>
      <th>Nodes</th>
      <th>Sim length</th>
      <th>Run time (s)</th>
      <th>Cost* (wall hrs/sim year)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>B1850 (CAM6, POP2)</td>
      <td>f09_g17</td>
      <td>4</td>
      <td>3 m</td>
      <td>~16,580</td>
      <td>~18.42</td>
    </tr>
    <tr>
      <td>B1850 (CAM6, POP2)</td>
      <td>f19_g16</td>
      <td>4</td>
      <td>1 y</td>
      <td>~21,432</td>
      <td>~5.95</td>
    </tr>
    <tr>
      <td>B1850C4L45BGCBPRP (CAM4, POP2)</td>
      <td>f09_g16</td>
      <td>4</td>
      <td>1 y</td>
      <td>~23,150</td>
      <td>~6.34</td>
    </tr>
    <tr>
      <td>B1850C4L45BGCBPRP (CAM4, POP2)</td>
      <td>f19_g16</td>
      <td>4</td>
      <td>1 y</td>
      <td>~12,029</td>
      <td>~3.34</td>
    </tr>
  </tbody>
</table>

<p>*For a 12-hour time limit per job, the maximum number of years you can run per job is \(\lfloor 12/\mathrm{Cost}\rfloor\). If this is zero, you need to run in monthslong chunks.</p>]]></content><author><name>Robert R. Ford</name></author><summary type="html"><![CDATA[CESM2.1.5 was ported onto a DAES server thanks to the work of Li Zhuo, Kevin Tyle, and others. The following is a short step-by-step guide to running the model. Log in and environment Log in: ssh &lt;NetID&gt;@head.its.albany.edu In your home directory, add the following lines to .bashrc. This is only done once. source /network/rit/lab/snowclus/modules/intel24.bash source /network/rit/lab/snowclus/bin/conda_python_only.bash ulimit -s unlimited Run . ~/.bashrc once per session. Create and set up new case The model code and scripts are stored in the directory /zhoulab_rit/lzhuo/my_cesm_sandbox/. Create a new case with /network/rit/lab/zhoulab_rit/lzhuo/my_cesm_sandbox/cime/scripts/create_newcase --compset &lt;compset&gt; --res &lt;res&gt; --machine burst-daes --case &lt;case-name&gt; --run-unsupported The flag --run-unsupported is optional, depending on whether you are running an “unsupported” compset/res combination. The script will tell you if you are trying to run unsupported options. Next, change the PE layout in env_mach_pes.xml. Since there are a few things that need to be changed, I just copy the file from a previous run. If you want to run your case on 4 nodes (the maximum suggested), you can just copy this file over from the one in /roselab_rit/rford/cesm2/ or change the NTASKS for each component to 128 (see my previous post for syntax). You can preview the PE layout with ./pelayout. The case setup script we are about to run creates the bld and run directories. By default, the script will try to create folders in a directory that you will not have write access to, so you will need to change it. For me, this looks like: ./xmlchange CIME_OUTPUT_ROOT=/network/rit/lab/roselab_rit/rford/cesm2 Finally, you can run case.setup. Changing more directories For the same reason as above, we need to change the archive directory. This is the directory where you will access the netCDF output files. For me, this looks like: ./xmlchange DOUT_S_ROOT=/network/rit/lab/roselab_rit/rford/cesm2_archive/&lt;case-name&gt; I’m not sure if there is a way to get the case name without typing it out. Replacing &lt;case-name&gt; with $CASE does not seem to work for me, but there might be another way. The model uses various input files which are automatically downloaded by the model as needed and stored for future use. This requires write permissions to the default input_data folder. This time, there are two directories to change, which for me look like: ./xmlchange DIN_LOC_ROOT=/network/rit/lab/roselab_rit/rford/cesm2/input_data ./xmlchange DIN_LOC_ROOT_CLMFORC=/network/rit/lab/roselab_rit/rford/cesm2/input_data Case-specific changes Now is the time to make other changes relevant to your experiment: run length, namelist changes, forcing files, output frequency, etc. Build and submit Run case.build, which will take some time. Then submit your job to the cluster with case.submit. Benchmarking Compset Grid Nodes Sim length Run time (s) Cost* (wall hrs/sim year) B1850 (CAM6, POP2) f09_g17 4 3 m ~16,580 ~18.42 B1850 (CAM6, POP2) f19_g16 4 1 y ~21,432 ~5.95 B1850C4L45BGCBPRP (CAM4, POP2) f09_g16 4 1 y ~23,150 ~6.34 B1850C4L45BGCBPRP (CAM4, POP2) f19_g16 4 1 y ~12,029 ~3.34 *For a 12-hour time limit per job, the maximum number of years you can run per job is \(\lfloor 12/\mathrm{Cost}\rfloor\). If this is zero, you need to run in monthslong chunks.]]></summary></entry><entry><title type="html">Running CESM1.2.1 on SNOW at UAlbany</title><link href="https://r-ford.github.io/running-cesm121/" rel="alternate" type="text/html" title="Running CESM1.2.1 on SNOW at UAlbany" /><published>2024-09-23T00:00:00+00:00</published><updated>2024-09-23T00:00:00+00:00</updated><id>https://r-ford.github.io/running-cesm121</id><content type="html" xml:base="https://r-ford.github.io/running-cesm121/"><![CDATA[<p><strong>Note: this is outdated, as the Department has switched to using a different server. I will update the instructions soon.</strong></p>

<p>This is based on <a href="http://www.atmos.albany.edu/facstaff/brose/classes/ATM623_Spring2017/2017/03/16/CESM-tutorial.html">Brian Rose’s tutorial for ATM 623</a>, as well as <a href="https://hackmd.io/@yuanjenlin/CESM_on_SNOW">Yuan-Jen Lin’s notes</a>.</p>

<h2 id="environment-setup">Environment setup</h2>

<p>Log into the head node:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh &lt;NetID&gt;@headnode7.arcc.albany.edu
</code></pre></div></div>

<p>Add the following line to the <code class="language-plaintext highlighter-rouge">.cshrc</code> file in your home directory (if this file does not exist, create it). You will only need to do this once:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>setenv CCSMROOT /network/rit/home/br546577/roselab_rit/cesm/cesm1_2_1
</code></pre></div></div>

<p>The environment variable <code class="language-plaintext highlighter-rouge">$CCSMROOT</code> now points to CESM source code.</p>

<p>Create a directory that will hold the case directories and <code class="language-plaintext highlighter-rouge">cd</code> into it.</p>

<h2 id="case-setup">Case setup</h2>

<p>Running the following line (with a descriptive name replacing <code class="language-plaintext highlighter-rouge">&lt;casename&gt;</code>) will
create the case directory for a CESM run with</p>
<ul>
  <li>the <code class="language-plaintext highlighter-rouge">E_1850_CAM5_CN</code> compset (slab ocean, pre-industrial conditions, CAM5 physics, carbon-nitrogen biogeochemistry) and</li>
  <li>the <code class="language-plaintext highlighter-rouge">f19_g16</code> resolution (2º finite volume for the atmosphere, 1º displaced-pole grid for the ocean and sea ice).</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/network/rit/lab/roselab_rit/cesm/cesm1_2_1/scripts/create_newcase -mach snow -compset E_1850_CAM5_CN -res f19_g16 -case &lt;casename&gt;
</code></pre></div></div>

<p>For other configurations, see the lists of supported <a href="https://www.cesm.ucar.edu/models/cesm1.2/cesm/doc/modelnl/compsets.html">compsets</a> and 
<a href="https://www.cesm.ucar.edu/models/cesm1.2/cesm/doc/modelnl/grid.html">grids</a></p>

<p>Now <code class="language-plaintext highlighter-rouge">cd</code> into <code class="language-plaintext highlighter-rouge">&lt;casename&gt;</code>. To change the number of nodes that the job will run on, 
change <code class="language-plaintext highlighter-rouge">NTASKS</code> for each component in <code class="language-plaintext highlighter-rouge">env_mach_pes.xml</code> such that 
\(\mathrm{NTASKS}=32\times\mathrm{NODES}\). For example, if you want to run on 4 nodes, use:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange NTASKS_ATM=128
./xmlchange NTASKS_LND=128
./xmlchange NTASKS_ICE=128
./xmlchange NTASKS_OCN=128
./xmlchange NTASKS_CPL=128
./xmlchange NTASKS_GLC=128
./xmlchange NTASKS_ROF=128
./xmlchange NTASKS_WAV=128
</code></pre></div></div>

<p>The default is 64 (2 nodes). Then run</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./cesm_setup
</code></pre></div></div>

<p>More details on case setup can be found in <a href="https://www2.cesm.ucar.edu/models/cesm1.2/cesm/doc/usersguide/c513.html">chapter 2 of the CESM1.2 User’s Guide</a>.</p>

<h2 id="runtime-options">Runtime options</h2>

<p>The settings that control how the model runs are found in the file <code class="language-plaintext highlighter-rouge">env_run.xml</code>.
You can either edit the file directly or use <code class="language-plaintext highlighter-rouge">./xmlchange</code>. Use <code class="language-plaintext highlighter-rouge">./xmlquery</code> to see 
the current setting.</p>

<p>One common thing to change is the simulation length. For example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange STOP_OPTION=nyears
./xmlchange STOP_N=2
./xmlchange RESUBMIT=9
</code></pre></div></div>

<p>This runs the model for \(\mathrm{STOP\_N}(1+\mathrm{RESUBMIT})=20\) years in 
<code class="language-plaintext highlighter-rouge">STOP_N</code>-year chunks. If the cluster is busy, this allows others to run their jobs
between our resubmissions. SNOW has a 12-hour time limit, so make sure each job does not
go over that. See the benchmarking at the end of this document. 
If you use another compset, you may want to do some benchmarking yourself.</p>

<p>The output files are monthly by default, so running the model for less than a month won’t write any output. To change the 
output frequency, <a href="https://www2.cesm.ucar.edu/models/cesm1.2/cesm/doc/usersguide/x2172.html">see this section of the User’s Guide</a>.</p>

<p>Optionally change CO\(_2\) and other stuff in <code class="language-plaintext highlighter-rouge">user_nl_cam</code> or the other <code class="language-plaintext highlighter-rouge">user_nl</code>
files. For example, add the following line to <code class="language-plaintext highlighter-rouge">user_nl_cam</code> for a 2xCO2 
(from pre-industrial) experiment:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>co2vmr = 569.4e-6
</code></pre></div></div>

<p>You may want to uncomment and edit the email notification lines in <code class="language-plaintext highlighter-rouge">&lt;casename&gt;.run</code>
to be notified when the job ends.</p>

<h3 id="slab-ocean-model">Slab ocean model</h3>

<p>If you are running the SOM (as in compset E), copy the forcing file into <code class="language-plaintext highlighter-rouge">/data/rose_scr/cesm_inputdata/ocn/docn7/SOM</code>,
and back in the case directory run</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange DOCN_SOM_FILENAME=&lt;forcingfilename&gt;.nc
</code></pre></div></div>

<p>There are many SOM forcing files already there, so for example, if you want a piControl run, you can use</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange DOCN_SOM_FILENAME=pop_frc.b.e11.B1850C5CN.f19_g16.130429.nc
</code></pre></div></div>

<h3 id="additional-required-changes">Additional required changes</h3>

<p>In <code class="language-plaintext highlighter-rouge">&lt;casename&gt;.run</code>, change the value of <code class="language-plaintext highlighter-rouge">--mem</code> from <code class="language-plaintext highlighter-rouge">MaxMemPerNode</code> to some value
(the max seems to be 128G).</p>

<p>If you did not change <code class="language-plaintext highlighter-rouge">NTASKS</code> (because you wanted to use 2 nodes), 
you may notice in <code class="language-plaintext highlighter-rouge">&lt;casename&gt;.run</code> that <code class="language-plaintext highlighter-rouge">--nodes=1</code>. Change it to 2 and remove the
<code class="language-plaintext highlighter-rouge">-O</code> option that should be under the two <code class="language-plaintext highlighter-rouge">--mail</code> lines. As far as I know,
that enables <a href="https://en.wikipedia.org/wiki/Hyper-threading">hyper-threading</a>,
allowing one node (core) to be treated as two. I don’t recommend this (see below)
unless you do some benchmarking and find that it works better for you.</p>

<p>For now, you also need to add the following line to <code class="language-plaintext highlighter-rouge">env_mach_specific</code> for the Intel
compiler to work:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>source /network/rit/lab/snowclus/modules/latest.csh
</code></pre></div></div>

<h2 id="building-the-model">Building the model</h2>

<h3 id="users-outside-the-rose-group">Users outside the Rose group</h3>

<p>First you need to decide where to keep the executable files. 
If you look in <code class="language-plaintext highlighter-rouge">env_build.xml</code>, you will find the following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;entry id="EXEROOT"   value="/data/rose_scr/$CCSMUSER/cesmruns/$CASE/bld"  /&gt;
</code></pre></div></div>

<p>This variable <code class="language-plaintext highlighter-rouge">EXEROOT</code> determines where the model will be built. 
By default it will look for a directory within <code class="language-plaintext highlighter-rouge">/data/rose_scr/</code>. 
This will only work if you have write access to <code class="language-plaintext highlighter-rouge">/data/rose_scr/</code>, 
which is probably only true if you are part of the Rose research group. 
If not, you will need to set this to somewhere within your own group’s scratch
space.</p>

<p>For example, if you are part of the Zhou group, you could do this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange EXEROOT=/data/zhou_scr/$CCSMUSER/cesmruns/$CASE/bld
</code></pre></div></div>

<p>At the same time you should also set the run directory <code class="language-plaintext highlighter-rouge">RUNDIR</code> (where the output
files will be written). Usually this would be another subdirectory alongside the
build:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange RUNDIR=/data/zhou_scr/$CCSMUSER/cesmruns/$CASE/run
</code></pre></div></div>

<h3 id="all-users">All users</h3>

<p>Change the short-term archive directory (in <code class="language-plaintext highlighter-rouge">env_run.xml</code>) to somewhere 
you know you have write permissions with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./xmlchange DOUT_S_ROOT=&lt;directory&gt;
</code></pre></div></div>

<p>This is where you will access the output. By default, the directory is</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/network/rit/lab/roselab_rit/cesm_archive/&lt;casename&gt;
</code></pre></div></div>

<p>but, for example, I did not have write permissions there and had to change it to
somewhere I did:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/network/rit/lab/roselab_rit/rford/cesm_archive/&lt;casename&gt;
</code></pre></div></div>

<p>Then build the model with the following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>srun -p snow ./&lt;casename&gt;.build
</code></pre></div></div>

<p>This will take some time: about 20 and 30 minutes for the E and B compsets I ran. 
If the build time is very quick (i.e. a few seconds), then the run 
configuration is probably messed up, and the job will not be able to be submitted.</p>

<h2 id="submit-the-job">Submit the job</h2>

<p>Finally, submit the job with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./&lt;casename&gt;.submit
</code></pre></div></div>

<p>You can check the queue, see node info, or cancel the job with</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>squeue
sinfo
scancel &lt;JOBID&gt;
</code></pre></div></div>

<h2 id="benchmarking">Benchmarking</h2>

<table>
  <thead>
    <tr>
      <th>Compset</th>
      <th>Grid</th>
      <th>NTASKS</th>
      <th>Nodes</th>
      <th>Sim length</th>
      <th>Run time (h:mm)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>E_1850_CAM5_CN</td>
      <td>f19_g16</td>
      <td>64</td>
      <td>2</td>
      <td>1 year</td>
      <td>5:13</td>
    </tr>
    <tr>
      <td>E_1850_CAM5_CN</td>
      <td>f19_g16</td>
      <td>128</td>
      <td>4</td>
      <td>1 year</td>
      <td>3:24</td>
    </tr>
    <tr>
      <td>E_1850_CAM5_CN</td>
      <td>f19_g16</td>
      <td>256</td>
      <td>8</td>
      <td>1 year</td>
      <td>2:10</td>
    </tr>
    <tr>
      <td>B_1850</td>
      <td>f19_g16</td>
      <td>64</td>
      <td>1 (HT)</td>
      <td>1 month</td>
      <td>7:46 (!)</td>
    </tr>
    <tr>
      <td>B_1850</td>
      <td>f19_g16</td>
      <td>64</td>
      <td>2</td>
      <td>1 month</td>
      <td>0:14</td>
    </tr>
    <tr>
      <td>B_1850</td>
      <td>f19_g16</td>
      <td>128</td>
      <td>4</td>
      <td>1 month</td>
      <td>0:11</td>
    </tr>
  </tbody>
</table>

<p>Run times vary for each resubmission, though not by much. 
The times in this table are generally the maximum.
I’m pretty sure run time is proportional to simulation length,
so to compare runs of different length, multiply accordingly.</p>]]></content><author><name>Robert R. Ford</name></author><summary type="html"><![CDATA[Note: this is outdated, as the Department has switched to using a different server. I will update the instructions soon. This is based on Brian Rose’s tutorial for ATM 623, as well as Yuan-Jen Lin’s notes. Environment setup Log into the head node: ssh &lt;NetID&gt;@headnode7.arcc.albany.edu Add the following line to the .cshrc file in your home directory (if this file does not exist, create it). You will only need to do this once: setenv CCSMROOT /network/rit/home/br546577/roselab_rit/cesm/cesm1_2_1 The environment variable $CCSMROOT now points to CESM source code. Create a directory that will hold the case directories and cd into it. Case setup Running the following line (with a descriptive name replacing &lt;casename&gt;) will create the case directory for a CESM run with the E_1850_CAM5_CN compset (slab ocean, pre-industrial conditions, CAM5 physics, carbon-nitrogen biogeochemistry) and the f19_g16 resolution (2º finite volume for the atmosphere, 1º displaced-pole grid for the ocean and sea ice). /network/rit/lab/roselab_rit/cesm/cesm1_2_1/scripts/create_newcase -mach snow -compset E_1850_CAM5_CN -res f19_g16 -case &lt;casename&gt; For other configurations, see the lists of supported compsets and grids Now cd into &lt;casename&gt;. To change the number of nodes that the job will run on, change NTASKS for each component in env_mach_pes.xml such that \(\mathrm{NTASKS}=32\times\mathrm{NODES}\). For example, if you want to run on 4 nodes, use: ./xmlchange NTASKS_ATM=128 ./xmlchange NTASKS_LND=128 ./xmlchange NTASKS_ICE=128 ./xmlchange NTASKS_OCN=128 ./xmlchange NTASKS_CPL=128 ./xmlchange NTASKS_GLC=128 ./xmlchange NTASKS_ROF=128 ./xmlchange NTASKS_WAV=128 The default is 64 (2 nodes). Then run ./cesm_setup More details on case setup can be found in chapter 2 of the CESM1.2 User’s Guide. Runtime options The settings that control how the model runs are found in the file env_run.xml. You can either edit the file directly or use ./xmlchange. Use ./xmlquery to see the current setting. One common thing to change is the simulation length. For example: ./xmlchange STOP_OPTION=nyears ./xmlchange STOP_N=2 ./xmlchange RESUBMIT=9 This runs the model for \(\mathrm{STOP\_N}(1+\mathrm{RESUBMIT})=20\) years in STOP_N-year chunks. If the cluster is busy, this allows others to run their jobs between our resubmissions. SNOW has a 12-hour time limit, so make sure each job does not go over that. See the benchmarking at the end of this document. If you use another compset, you may want to do some benchmarking yourself. The output files are monthly by default, so running the model for less than a month won’t write any output. To change the output frequency, see this section of the User’s Guide. Optionally change CO\(_2\) and other stuff in user_nl_cam or the other user_nl files. For example, add the following line to user_nl_cam for a 2xCO2 (from pre-industrial) experiment: co2vmr = 569.4e-6 You may want to uncomment and edit the email notification lines in &lt;casename&gt;.run to be notified when the job ends. Slab ocean model If you are running the SOM (as in compset E), copy the forcing file into /data/rose_scr/cesm_inputdata/ocn/docn7/SOM, and back in the case directory run ./xmlchange DOCN_SOM_FILENAME=&lt;forcingfilename&gt;.nc There are many SOM forcing files already there, so for example, if you want a piControl run, you can use ./xmlchange DOCN_SOM_FILENAME=pop_frc.b.e11.B1850C5CN.f19_g16.130429.nc Additional required changes In &lt;casename&gt;.run, change the value of --mem from MaxMemPerNode to some value (the max seems to be 128G). If you did not change NTASKS (because you wanted to use 2 nodes), you may notice in &lt;casename&gt;.run that --nodes=1. Change it to 2 and remove the -O option that should be under the two --mail lines. As far as I know, that enables hyper-threading, allowing one node (core) to be treated as two. I don’t recommend this (see below) unless you do some benchmarking and find that it works better for you. For now, you also need to add the following line to env_mach_specific for the Intel compiler to work: source /network/rit/lab/snowclus/modules/latest.csh Building the model Users outside the Rose group First you need to decide where to keep the executable files. If you look in env_build.xml, you will find the following line: &lt;entry id="EXEROOT" value="/data/rose_scr/$CCSMUSER/cesmruns/$CASE/bld" /&gt; This variable EXEROOT determines where the model will be built. By default it will look for a directory within /data/rose_scr/. This will only work if you have write access to /data/rose_scr/, which is probably only true if you are part of the Rose research group. If not, you will need to set this to somewhere within your own group’s scratch space. For example, if you are part of the Zhou group, you could do this: ./xmlchange EXEROOT=/data/zhou_scr/$CCSMUSER/cesmruns/$CASE/bld At the same time you should also set the run directory RUNDIR (where the output files will be written). Usually this would be another subdirectory alongside the build: ./xmlchange RUNDIR=/data/zhou_scr/$CCSMUSER/cesmruns/$CASE/run All users Change the short-term archive directory (in env_run.xml) to somewhere you know you have write permissions with ./xmlchange DOUT_S_ROOT=&lt;directory&gt; This is where you will access the output. By default, the directory is /network/rit/lab/roselab_rit/cesm_archive/&lt;casename&gt; but, for example, I did not have write permissions there and had to change it to somewhere I did: /network/rit/lab/roselab_rit/rford/cesm_archive/&lt;casename&gt; Then build the model with the following line: srun -p snow ./&lt;casename&gt;.build This will take some time: about 20 and 30 minutes for the E and B compsets I ran. If the build time is very quick (i.e. a few seconds), then the run configuration is probably messed up, and the job will not be able to be submitted. Submit the job Finally, submit the job with ./&lt;casename&gt;.submit You can check the queue, see node info, or cancel the job with squeue sinfo scancel &lt;JOBID&gt; Benchmarking Compset Grid NTASKS Nodes Sim length Run time (h:mm) E_1850_CAM5_CN f19_g16 64 2 1 year 5:13 E_1850_CAM5_CN f19_g16 128 4 1 year 3:24 E_1850_CAM5_CN f19_g16 256 8 1 year 2:10 B_1850 f19_g16 64 1 (HT) 1 month 7:46 (!) B_1850 f19_g16 64 2 1 month 0:14 B_1850 f19_g16 128 4 1 month 0:11 Run times vary for each resubmission, though not by much. The times in this table are generally the maximum. I’m pretty sure run time is proportional to simulation length, so to compare runs of different length, multiply accordingly.]]></summary></entry></feed>