Using namelists

Many JULES users still prefer to run the model using namelists rather than Rose suites. Although using Rose suites is now the recommended way of running JULES (and has been since JULESvn4.0), using namelists is still possible and these steps provide a worked example for JULESvn5.2 based on the Loobos example data.


STEP 1: The first step is to get hold of the appropriate namelists. For this example, download them from here:
          Loobos example filesPackage icon (updated to vn5.2 and slightly modified by me for this example)
Download and unzip these to your system: please create a directory at ~/roses/ (your output files are going to go in here) and unzip the download to there (i.e. you want a directory ~/roses/Loobos_orig_nmls/ containing file/ (driving and ancillary data) and nmls/ (the namelist files)).


STEP 2: Next, set up an environment variables to point to your JULES installation ($JULES_ROOT), the location of the namelist files ($NAMELIST) and the location we want to use for the output ($OUTPUT):
   export JULES_ROOT=$HOME/MODELS/jules-vn5.2
   export NAMELIST=$HOME/roses/Loobos_orig_nmls/nmls
   export OUTPUT=$HOME/roses

Let’s also check that the output directory exists and that we're not going to overwrite output files we need to keep from a previous run:
   ls $OUTPUT


STEP 3: Compile JULES and make sure there is an executable at $JULES_ROOT/build/bin/jules.exe (when you run JULES using Rose, the executable instead appears at $CSUITE/share/fcm_make/build/bin/jules.exe so we can't use that here). Follow STEP 4 here (only that STEP) to achieve this.


STEP 4: Running the model is now just a single command:
   $JULES_ROOT/build/bin/jules.exe $NAMELIST
(or the following on Monsoon:
   module swap PrgEnv-cray PrgEnv-cray/5.2.40
   module load cray-netcdf-hdf5parallel/4.3.2
   module load cray-snplauncher/7.0.4
   mpiexec $JULES_ROOT/build/bin/jules.exe $NAMELIST , which should be equivalent).

You should start to see a lot of [INFO] lines appearing as the JULES model runs (alternatively, you can add ">job.out" to the end of that command to divert all the screen output to a file):
   $JULES_ROOT/build/bin/jules.exe $NAMELIST >job.out
After a few seconds it should finish and you can check the output has appeared in $OUTPUT/:
   more job.out
   ls $OUTPUT


  • There are still advantages to running JULES this way: if you are not modifying the JULES code then you avoid the compilation step fcm_make in a suite run, which can take some time (even though fcm_make only compiles the elements that are changed from the last compile, it still seems to take up to 10 sec each time to check this, which can be significant if you are continually running and rerunning JULES).
  • Running this way, the output simply appears on the screen and you don't need to open any separate 'out' or 'err' files (either through the menus of the Cylc GUI, which may be difficult if the job has frozen, or through Rose Bush, which is very slow over a remote connection).
  • Using this method means you can use batch scripts, which in many ways are still more flexible than using Cylc.
  • HOW TO CONVERT NAMELISTS → ROSE SUITE: The python script create_rose_app (provided with JULES) can generate a Rose suite from a set of namelists using a command like (see ss.3.5.1 here):

   $JULES_ROOT/bin/create_rose_app vn5.2 vn5.2 $NAMELIST ~/roses/new_suite

  • HOW TO CONVERT ROSE SUITE → NAMELISTS: If you run a Rose suite, say one called "u-am539", then the equivalent set of namelists are actually generated by JULES just before it runs and saved at $HOME/cylc-run/u-am539/work/1/jules .
  • If you have inherited a set of namelists (perhaps from a previous version of JULES) and want to update them, then the process is very similar to modifying a suite so please look there, but you can ignore the platform-related steps because namelists are platform-independent (when Rose suites are not).