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_make
reported sed: RE error: illegal byte sequence numerous times,salish:
fait_AA_make
failed 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.F90
must be edited to set the number of processors to be used, and include configuration parameters via a.h90
file. 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_config
to 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_config
in theCODE.tar
tarball.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_config
are symlinked so as to appear to be all in the same directory. Themodipsl/config/WC3/
directory is also created. Itsscripts/
directory contains theBB_make
andBB_make.ldef
files.Edit
BB_make.ldef
to 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.ldef
inCODE.tar
contains 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 = -D
Ensure that there is an appropriate set of definitions in
modipsl/util/AA_make.gdef
for 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_make
must be run from themodeles/NEMO/
directory.Run:
cd modipsl/util ./clr_make ./ins_make -t target
to remove existing
Makefiles
and create new ones. The target argument toins_make
specifies a compiler or host name defined inmodipsl/util/AA_make.gdef
andmodipsl/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/opa
executablea
../../lib/libioipsl.a
librarya
../../lib/oce/libopa.a
library
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.sh
links the intial conditions, forcing, etc. files into the run directory with the file names that NEMO expectsnamelist
is the NEMO namelist for the runsubmit_64.sh
is 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.