Table of Contents | ||
---|---|---|
|
...
Edit ~/.bashrc to include following lines (**updated June 2023 for rocky8**):
module load intel/23.0.0-fasrc01 intelmpi/2021.8.0-fasrc01
module load netcdf-fortran/4.6.0-fasrc03
module load netcdf-c/4.9.2-fasrc02
module load ncf/1.0.0-fasrc01 perl_modules/5.10.1-ncf
export UCX_TLS=ib
export I_MPI_HYDRA_IFACE="ib0"
If you never use cpan (package manager for Perl) before, after loading perl-modules, enter cpan
, respond: yes, blank, yes.., then exit cpan. (takes several minutes)
If you need POP2 (e.g. compset B), enter cpan
, key in: install Switch
, then exit cpan.
cp /n/home05/pchan/spcam2_0-cesm1_1_1/scripts/create_new_build.sh ~/ #please copy a newer version after May 2018 (the CentOS7 update)
...
** Cluster update May 2024: CESM1 had compilation issues. If you need to run CESM1, please email sweidman at g dot harvard dot edu for instructions (until I update this wiki page). **
**Rocky8 update**
The netcdf software is now in two locations (netcdf-c and netcdf-fortran). CESM will break unless you put them in the same folder. One option is to copy the files for netcdf-c and netcdf-fortran in /n/sw/ into one folder in your home directory and combine the files in bin, lib, and include into the same folder. You can also copy
/n/home04/sweidman/netcdffolder into your home directory.
Then, edit your .bashrc file to include the lines:
export NETCDF_HOME='/n/home04/sweidman/netcdffolder/' (replace with the location of your combined netcdf folder)
export NETCDF=${NETCDF_HOME}
** **
cp /n/home05/pchan/spcam2_0-cesm1_1_1/scripts/create_new_build.sh ~/ #please copy a newer version after May 2018 (the CentOS7 update)
2. Edit create_new_build.sh
Edit ~/create_new_build.sh # look at TODO’s. For details, see "about create_new_build.sh".
Partition should default to be huce_cascade or huce_ice. (huce_amd was decomissioned, 2/3/2020.) For more about HUCE's partitions, see Harvard cluster job queues.
3. (Advanced user): prepare namelist and SourceMods
If you already know what namelist (user_nl_*) or SourceMods you are going to use, cd to the directory with user_nl_* and/or SourceMods. create_new_build.sh
...
Edit ~/should be run in this directory.
4. Run create_new_build.sh
...
(~12 mins)
Make sure you have modules loaded as step 1.
~/create_new_build.sh ".
Partition should default to be huce_intel. (huce_amd was decomissioned, 2/3/2020.) For more about HUCE's partitions, see Harvard cluster job queues.
3. (Advanced user): prepare namelist and SourceMods
If you already know what namelist (user_nl_*) or SourceMods you are going to use, cd to the directory with user_nl_* and/or SourceMods. create_new_build.sh should be run in this directory.
4. Run create_new_build.sh (~12 mins)
Make sure you have modules loaded as step 1.
~/create_new_build.sh CASENAME RESOLUTION COMPSET NCORES
E.g. ~/create_new_build.sh c1test f19_f19 F_2000 64
...
CASENAME RESOLUTION COMPSET NCORES
E.g. ~/create_new_build.sh c1test f19_f19 F_2000 64
5. Final check
**Update Rocky 8**
Open your $case.run file and comment out the line that looks like "srun --mpi=pmi2 --ntasks=64 --cpu_bind=sockets --cpu_bind=verbose --kill-on-bad-exit $EXEROOT/cesm.exe >&! ccsm.log.$LID"
Instead, uncomment the line that looks like "mpirun -np 64 $EXEROOT/cesm.exe >&! ccsm.log.$LID" just above it.
** **
You can modify SourceMods here, but if you do so, you will have to do $CASE.clean_build and rebuild the model with
...
How namelists are built in CESM?
$RUNDIR/*_in are namelists directly read by Fortran program. They are recommended NOT to be edited directly, but instead, indirectly through user_nl_* and env_*.xml. The processes of indirectly creating namelists are as follows:
...
- preview_namelists
- calls Buildconf/$comp.buildnml.csh
- copies *_in to CaseDocs/
- Buildconf/$comp.buildnml.csh
- call $CCSMROOT/models/**/bld/build-namelist, which create namelist Buildconf/*conf/*_in
- copy *_in to $RUNDIR (overwrite)
- build-namelist
- takes “infile” from user_nl_*
- writes out Buildconf/*conf/*_in and Buildconf/*.input_data_list
When job is submitted:
- $CASE.submit submits $CASE.run
- $CASE.run calls preview_namelists
- Same things happen again.
...
How to modify namelists in CESM?
If possible, always use user_nl_* and env_*.xml.
E.g. Change the path to an input data file: ./xmlchange SSTICE_DATA_FILENAME=/path/to/new_sst.nc (this can also be listed as a line in user_nl_cam).
...
If impossible, manually change $RUNDIR/*_in, and disable copying (overwriting) in Buildconf/$comp.buildnml.csh
...
grep -Ev '^\s*$|^\s*!' user_nl_*
can display all non-empty uncommented lines in user_nl_*./preview_namelists can update namelists (and input_data_list)
- grep '' Buildconf/*.input_data_list
can list out all input data. DIN_LOC_ROOT=`./xmlquery -valonly -silent DIN_LOC_ROOT`
./check_input_data -inputdata $DIN_LOC_ROOT -check
can check input dataSection &seq_infodata_inparm in drv_in can be checked in $RUNDIR/cpl.log.$LID
Always compare default namelist and new namelist
Sometimes, user_nl_* are not interpreted literally. E.g. specifying prescribed_ozone_file could remove lines for prescribed_ozone_cycle_yr, prescribed_ozone_name, etc.
Never edit namelist in CaseDocs/ or Buildconf/, they are overwritten every time and NOT read by Fortran program.
References:
http://jules-lsm.github.io/vn4.2/namelists/intro.html
http://www.lahey.com/docs/lfpro73help/f95arnameliststmt.htm
http://www.codezone.co.uk/fortran/namelist.shtml
http://www.cesm.ucar.edu/models/cesm1.1/cesm/doc/usersguide/c1128.html
http://www.cesm.ucar.edu/events/tutorials/2016/practical4-hannay.pdf
Compset
Compset is a short form for "component set", which specifies component models, forcing scenarios and physics options for those models.
...