Notes on the Oct-2013 CODE.tar Version
These are notes on building and running the version of NEMO configured for the Salish Sea as received in the CODE.tar archive prepared by J-P Paquin and downloaded at UBC on 2-Oct-2013.
The “Notes on NEMO/OPA Usage” document in the DOCUMENTATION.tar archive provided guidance for the creation of the notes below.
Todo
Add links to “Notes on NEMO/OPA Usage” .doc and PDF
What’s in CODE.tar
The CODE.tar tarball unpacks to a directory called CONCEPTS110_WCSD_OW_NOBC_tide which apparently indicates:
CONCEPTS110: Canadian Operational Network of Coupled Environmental PredicTion Systems model at the version 110 level
WCSD: MEOPAR West Coast Sub-Domain configuration
OW: Open West boundary
NOBC: ?? maybe refers to reading OBC file data instead of initial conditions ??
tide: focus of the model runs is to calculate tides in the domain
CONCEPTS110_WCSD_OW_NOBC_tide contains jcompile.sh,
as bash script that runs the build tool chain described below,
and the modipsl/ directory.
modipsl
(http://forge.ipsl.fr/igcmg/wiki/platform/en/documentation/J_outils#modipsl)
is the framework that was used to obtain and build the NEMO code prior to NEMO up to v3.2.
modipsl is available via anonymous svn checkout from
http://forge.ipsl.fr/igcmg/svn/modipsl/.
However,
it is unclear what revision/tag of modipsl the tarball contains.
The documented
(in “Notes on NEMO/OPA Usage” and in the “NEMO Quick Start Guide”:
https://www.nemo-ocean.eu/Using-NEMO/User-Guides/Basics/NEMO-Quick-Start-Guide)
means of obtaining the NEMO code is to run:
cd modipsl/util
model NEMO
which automates the process of doing checkouts of code from a collection of cvs and svn repositories.
Examination of the modipsl/util/log file that the modipsl/util/model script creates and the the modipsl/util/mod.def definitions file for the script indicate that model was run on 18-Mar-2010 and that the nemo_v3_1 tag was used to obtain the NEMO code.
Build Notes
Note
The build process described here was attempted on several platforms with the following results:
MacBook running OS/X 10.8.5 with Xcode installed:
fait_AA_makereported sed: RE error: illegal byte sequence numerous times,salish:
fait_AA_makefailed because ksh was not installedjasper: build was successful
The build NEMO 3.1 for a new configuration the following steps are required:
modeles/NEMO/OPA_SRC/par_oce.F90must be edited to set the number of processors to be used, and include configuration parameters via a.h90file. The edits are done in C-preprocessor (CPP) blocks. J-P Paquin did this, using the CPP key key_wc3 to specify an 8x8 processor layout and parameters inpar_WC3.h90. The edits are flagged with comments that start with !JPP.Based on
modeles/NEMO/OPA_SRC/par_ORCA_R2.h90, create the configuration parameters header file included via the new CPP key inmodeles/NEMO/OPA_SRC/par_oce.F90. The file created by J-P Paquin ispar_WC3.h90.Edit
modeles/UTIL/fait_configto define the NEMO source files that are required for the build. The configuration name, WC3 in the present case, must be added to the LIST shell variable, a newline-separated list of configuration names. A set -A statement must also be added to the collection that follows the LIST. The configuration is referenced in the set -A statement as DIR_configname; i.e. DIR_WC3 for the present case. The set -A statement lists the source code directories that are to be included in the build. Those edits are present infait_configin theCODE.tartarball.Run:
cd modeles/UTIL ./fait_config WC3
That results in the creation of the
modeles/NEMO/WORK/directory in which the source files from the directories given in the set -A DRI_WC3 ... statement infait_configare symlinked so as to appear to be all in the same directory. Themodipsl/config/WC3/directory is also created. Itsscripts/directory contains theBB_makeandBB_make.ldeffiles.Edit
BB_make.ldefto activate/deactivate CPP keys for the configuration. The keys are listed in a single, space-separated line as the value of the P_P variable.modipsl/config/WC3/scripts/BB_make.ldefinCODE.tarcontains three P_P lists identified with #-- JPP comments. The uncommented one (and so presumably most recently used) is:#-- JPP 20130717 Run compilation keys for TEST1 P_P = key_wc3 key_dtatem key_dtasal key_flx_core key_vvl key_zrefsurf key_zdftke key_traldf_c2d key_dynldf_c3d key_mpp_mpi key_ldfslp key_dynspg_ts2 key_dtatem_month key_dtasal_month key_obc_mer key_tide key_diaharm
Also ensure that there is a prefix for preprocessing line for the build/run target, for example:
#-Q- jasper prefix = -DEnsure that there is an appropriate set of definitions in
modipsl/util/AA_make.gdeffor the build/run target, for example:#-Q- jasper #- Global definitions for jasper.westgrid.ca using Linux Compiler Intel v8 #-Q- jasper LIB_MPI = MPI2 #-Q- jasper LIB_MPI_BIS = #-Q- jasper M_K = make #-Q- jasper P_C = cpp #-Q- jasper P_O = -P -C -traditional $(P_P) #-Q- jasper F_C = mpiifort -c -fpp #-Q- jasper #-D- MD F_D = -g #-Q- jasper #-D- MN F_D = #-Q- jasper #-P- I4R4 F_P = -i4 #-Q- jasper #-P- I4R8 F_P = -i4 -r8 #-Q- jasper #-P- I8R8 F_P = -i8 -r8 #-Q- jasper #-P- ?? F_P = -i4 -r8 #-Q- jasper F_O = -O3 $(F_P) -I$(MODDIR) -I$(MODDIR)/oce -module $(MODDIR) -assume byterecl -convert big_endian -I $(NCDF_INC) #-Q- jasper F_F = $(F_O) -extend_source #-Q- jasper F_L = mpiifort #-Q- jasper L_O = #-Q- jasper A_C = ar -r #-Q- jasper A_G = ar -x #-Q- jasper C_C = gcc -c #-Q- jasper C_O = #-Q- jasper C_L = gcc #-Q- jasper #- #-Q- jasper NCDF_INC = -I/lustre/jasper/software/netcdf/netcdf-4.1.3/include -lhdf5_hl -lhdf5 -lz -lsz #-Q- jasper NCDF_LIB = -L/lustre/jasper/software/netcdf/netcdf-4.1.3/lib -lnetcdf -lnetcdff -lhdf5_hl -lhdf5 -lz -lsz
Run:
cd modeles/NEMO ../UTIL/fait_AA_make
to calculate compilation rules, options, and build dependencies so as to create
NEMO/WORK/AA_make(which is symlinked tomodipsl/config/WC3/scripts/BB_make)Note
fait_AA_makemust be run from themodeles/NEMO/directory.Run:
cd modipsl/util ./clr_make ./ins_make -t target
to remove existing
Makefilesand create new ones. The target argument toins_makespecifies a compiler or host name defined inmodipsl/util/AA_make.gdefandmodipsl/config/WC3/scripts/BB_make.ldef.Run:
cd modipsl/config/WC3 make clean make
to compile and link the code.
The results of a successful build are:
a
../../bin/opaexecutablea
../../lib/libioipsl.alibrarya
../../lib/oce/libopa.alibrary
Problems
With the CPP keys above in BB_make.ldef the make command on jasper completes with these messages:
dynadv_ppm.F90(76): warning #6843: A dummy argument with an explicit INTENT(OUT) declaration is not given an explicit value. [PHTRA_ADV]
SUBROUTINE adv_ppm_hor ( kt, pun, pvn, tra, traa, phtra_adv, z2, sort )
-----------------------------------------------------^
./ldfdyn_c3d.h90(148): remark #8291: Recommended relationship between field width 'W' and the number of fractional digits 'D' in this edit descriptor is 'W>=D+7'.
IF(lwp) WRITE(numout,'(34x,E7.2,8x,i3)') zcoef(jk) * ahm0, jk
-------------------------------------------^
dynzdf_imp.F90(20): remark #6536: All symbols from this module are already visible due to another USE; the ONLY clause will have no effect. Rename clauses, if any, will be honored. [OCE]
USE oce ! ocean dynamics and tracers
-------^
The library is up-to-date
mpiifort -o ../../../bin/opa model.o ../../../lib/oce/libopa.a ../../../lib/libioipsl.a -L/lustre/jasper/software/netcdf/netcdf-4.1.3/lib -lnetcdf -lnetcdff -lhdf5_hl -lhdf5 -lz -lsz
/lustre/jasper/software/intel/l_ics_2012.0.032/composer_xe_2011_sp1.10.319/compiler/lib/intel64/libimf.so: warning: warning: feupdateenv is not implemented and will always fail
OPA model is OK
Run Notes
The WCSD_RUN_tide_M2_OW_ON_file_DAMP_ANALY.tar tarball contain the namelist and scripts to setup and run on the BIO HPC cluster:
linkfile.shlinks the intial conditions, forcing, etc. files into the run directory with the file names that NEMO expectsnamelistis the NEMO namelist for the runsubmit_64.shis the file containing PBS directives and shell commands that is submitted to the TORQUE resource manager via qsub
The meaning of WCSD_RUN_tide_M2_OW_ON_file_DAMP_ANALY
(from J-P’s README.txt) is:
WCSD : West Coast Sub Domain (398x345)
M2 : Run with only M2 tides from WebTide
OW_ON : Open West & OpenNorth boundaries
file : reading OBC file (not initial conditions)
DAMP : increased horizontal eddy viscosity
ANALY : Analytical forcing (namsbc_ana) - no atm-ocean fluxes
or atmospheric forcing
The WCSD_PREP.tar tarball contains the intial conditions,
forcing,
etc.
files for the WCSD_RUN_tide_M2_OW_ON_file_DAMP_ANALY case.
With those two tarballs unpacked beside each other one the dirPREP variable in linkfile.sh need to be set to:
dirPREP=../WCSD_PREP
and linkfile.sh run in WCSD_RUN_tide_M2_OW_ON_file_DAMP_ANALY to prepare for the run.
submit_64.sh is tailored to the BIO HPC cluster.
To run on jasper,
the following script was used:
#!/bin/bash
#PBS -N WCSD_RUN_tide_M2_OW_ON_file_DAMP_ANALY
#PBS -S /bin/bash
#PBS -l procs=64
# memory per processor
#PBS -l pmem=2gb
#PBS -l walltime=1:00:00
# email when the job [b]egins and [e]nds, or is [a]borted
#PBS -m bea
#PBS -M dlatornell@eos.ubc.ca
#PBS -o OPA.output
#PBS -e OPA.output.error
cd $PBS_O_WORKDIR
echo working dir: $(pwd)
module load compiler/intel/12.1
module load library/intelmpi/4.0.3.008
module load library/netcdf/4.1.3
module load library/szip/2.1
mpiexec ./opa
If that script is stored as jasper.pbs,
a run is submitted with the command:
qsub jasper.pbs
As an initial test, the run duration was set to 720 time steps via the &namrun.nitend namelist item. The run completed in just over 2 minutes. A subsequent 4320 time step run took about 17 minutes.
Post-Processing
The results of the runs described above are groups of 64 netCDF files (one for each processor) for each of the calculated quantities:
U, V, W, and T
output.init: initial time step output ??restart and open boundary condition restart
2D slice timeseries results
tidal harmonics disagnostic results
NOCSCOMBINE
Google lead to the NOCSCOMBINE tool at ftp://ftp.soc.soton.ac.uk/omfftp/NEMO/NOCSCOMBINE.tar.
Building it on jasper required creation of a new makefile with NCHOME and LIBS variable set to:
NCHOME = /lustre/jasper/software/netcdf/netcdf-4.1.3
LIBS = -L$(NCHOME)/lib -I$(NCHOME)/include -lnetcdf -lnetcdff -lhdf5_hl -lhdf5 -lz -lsz
Commands like:
cd WCSD_RUN_tide_M2_OW_ON_file_DAMP_ANALY/
../../NOCSCOMBINE/nocscombine -f WC3_CU60_20020102_20020104_grid_U_0000.nc
result in the 64 pre-processor files of u velocity results being combined into a single WC3_CU60_20020102_20020104_grid_U.nc file.
The process takes over 10 minutes per quantity for
U, V, and T
for the 72 hour run,
and nearly 30 minutes for W.