source: CONFIG/UNIFORM/v6/NEMO_v6.5/compile_nemo.sh @ 4912

Last change on this file since 4912 was 4912, checked in by cetlod, 4 years ago

Adding new NEMO configuration using NEMO_v4 model

  • Property svn:executable set to *
File size: 7.8 KB
Line 
1#!/bin/bash
2#set -vx
3# Default options
4#
5#
6#
7date
8#### 1  Set up the compiling options
9#### Define some directories
10submitdir=$( pwd )
11modipsl=$submitdir/../..
12arch_path=$submitdir/ARCH
13mysrc_path=$submitdir/SOURCES
14
15#### Set default options
16# Coupled with ocean biogeochemistry (y/n)
17cpltop=WithTOP
18# Coupled with ocean biogeochemistry (y/n)
19cplmode=online
20
21# Optimization mode
22# optmode=prod/dev/debug
23optmode=prod
24# fcm_arch
25fcm_arch=default
26export fcm_arch xios
27full_nemo=n
28full_xios=""
29
30
31# Output text file for compilation of each component
32datestr=`LC_ALL=C date +"%Y%m%dT%H%M"`
33outfile=$submitdir/out_compile_nemo.$datestr
34echo > $outfile
35echo; echo "Text output from compilation will be stored in file out_compile_nemo.$datestr"; echo 
36
37#### Read arguments
38# Loop over all arguments to modify default set up
39while (($# > 0)) ; do
40    case $1 in
41        "-h") cat <<end_help
42########################################################################
43# Usage of the script compile_nemo.sh
44#
45########################################################################
46
47./compile_nemo.sh [Options]
48
49
50Options: [ORCA1 / ORCA2 / ORCA025 ] Model resolution, choose only one. Default: ORCA2
51         [OFFLINE] Compile Coupled NEMO-TOP in offline mode
52         [-full] Full recompilation of all components. This option can be added to all other options.
53         [-cleannemo] Full recompilation of NEMO component  only.
54         [-debug / -dev / -prod] Level of optimization. One of these can be added to all other compile options. Default: -prod.
55
56
57Example 1: Default compilation of ORCA_ICE_TOP
58./compile_nemo.sh
59
60Example 2: Compilation of TOP offline
61./compile_nemo.sh OFFLINE
62
63Example 3: Compilation of ORCA_ICE without passive tracers
64./compile_nemo.sh  NOTOP -cleannemo
65
66
67Example 4: Default resoltuion (LR) compiled in debug mode
68./compile_nemo.sh -debug
69
70Example 5: Default compilation with full recompilation of NEMO and XIOS. No clean is needed.
71./compile_nemo.sh -full
72
73Example 6: Full recompilation in debug mode
74./compile_ipslcm6.sh OFFLINE -debug -full
75
76end_help
77exit;;
78        "NOTOP")       cpltop=WithoutTOP; shift ;;
79        "OFFLINE")     cplmode=offline; shift ;;
80        "-arch")       fcm_arch="$2" ; shift ; shift ;;
81        "-debug")      optmode=debug ; shift ;;
82        "-dev")        optmode=dev ; shift ;;
83        "-prod")       optmode=prod ; shift ;;
84        "-full")       full_nemo=y ; full_xios="--full" ; shift ;;
85        "-full_xios")  full_xios="--full" ; shift ;;  # Note only full_xios is using double dash: --full
86        "-full_nemo")  full_nemo=y ; shift ;;
87        "-cleannemo")  full_nemo=y ; shift ;;
88        *)             echo "unknown option "$1" , exiting..." ; exit
89    esac
90done
91
92echo "Following options are set in current compiling:" >> $outfile
93echo "   WithTracer=${cpltop}, coupled_mode=${cplmode}" >> $outfile 
94echo "   optmode = $optmode, fcm_arch = $fcm_arch " >> $outfile 
95echo "   full_xios=$full_xios, full_nemo=$full_nemo," >> $outfile 
96echo >> $outfile
97
98### Read host dependent default values
99### These variables will not be changed if they were set as argument
100###./host.sh $host
101# Later : Following lines should be set in host.sh file
102# begin host.sh
103if [ $fcm_arch == default ] ; then
104    # Find out current host and source specific paths and commands for the host
105    case $( hostname -s ) in
106        jean-zay*)
107            fcm_arch=X64_JEANZAY;;
108        irene*)
109            fcm_arch=X64_IRENE;;
110        ciclad*|climserv*)
111            fcm_arch=ifort_CICLAD;;
112        *)
113            echo Current host is not known. You must use option -arch to specify which architecuture files to use.
114            echo Exit now.
115            exit
116    esac
117fi
118
119# Set a link to arch.env if arch-${fcm_arch}.env file exist for current fcm_arch.
120# The link arch.env is also set in config.card and will be used by libIGCM to ensure the same running environnement.
121if [ -f ARCH/arch-${fcm_arch}.env ] ; then
122    echo >> $outfile
123    echo "The file ARCH/arch-${fcm_arch}.env will now be sourced with modules needed for compilation for all components"
124    echo "Note that this new environement might be kept after compilation." 
125    echo "If this is the case, source again your personal environment after compilation. "
126    echo " Personal module list before sourcing of ARCH/arch.env file:"    >> $outfile 
127    module list   >> $outfile 2>&1
128
129    # Make a link to this file, to be used also in config.card
130    rm -f ARCH/arch.env
131    ln -s arch-${fcm_arch}.env ARCH/arch.env
132
133    # Source the file
134    source ARCH/arch.env   >> $outfile 2>&1
135    echo >> $outfile 
136    echo " New module list after sourcing of ARCH/arch.env file:"    >> $outfile 
137    module list   >> $outfile 2>&1
138fi
139
140#### 2 Do the compilation
141
142## 2.3 Compile xios
143cd $modipsl/modeles/XIOS
144echo; echo "NOW COMPILE XIOS"
145echo >> $outfile ; echo " NOW COMPILE XIOS"   >> $outfile 
146echo ./make_xios  --$optmode --arch $fcm_arch --arch_path $arch_path --job 4 $full_xios   >> $outfile 
147     ./make_xios  --$optmode --arch $fcm_arch --arch_path $arch_path --job 4 $full_xios   >> $outfile 2>&1
148# Test if compiling succeded
149if [[ $? != 0 ]] ; then
150    echo "THERE IS A PROBLEM IN XIOS COMPILATION - STOP"
151    exit
152fi
153# Move executables to modipsl/bin
154if [ -f $modipsl/modeles/XIOS/bin/xios_server.exe ] ; then
155    mv $modipsl/modeles/XIOS/bin/xios_server.exe $modipsl/bin/xios_server_${optmode}.exe
156else
157    echo "THERE IS A PROBLEM IN XIOS COMPILATION EXECUTABLE MISSING - STOP"
158    exit
159fi
160
161
162## 2.5 Compile NEMO
163nemo_root=$modipsl/modeles/NEMO
164cfg_ref=ORCA2_ICE_PISCES
165cfg_wrk=ORCA_ICE_TRC
166addkeys="key_top key_si3"
167delkeys=""
168
169if [ ${cplmode} == offline ]  ;  then
170   cfg_ref=ORCA2_OFF_TRC
171   cfg_wrk=ORCA_OFF_TRC
172   delkeys="key_si3"
173fi
174if [ ${cpltop} == WithoutTOP ]  ;  then
175   cfg_wrk=ORCA_ICE
176   delkeys="key_top"
177fi
178
179echo >> $outfile ; echo cd $nemo_root  >> $outfile
180echo >> $outfile ; echo cp $mysrc_path/arch-${fcm_arch}.fcm arch/CNRS/.   >> $outfile
181echo >> $outfile
182
183cd $nemo_root ; cp $mysrc_path/arch-${fcm_arch}.fcm arch/CNRS/.
184
185echo >> $outfile
186# creation of config
187echo >> $outfile ; echo cd $nemo_root  >> $outfile
188echo ./makenemo -m ${fcm_arch} -n $cfg_wrk -r $cfg_ref -j0 add_key "$addkeys"  del_key "$delkeys"   >> $outfile
189echo >> $outfile
190cd $nemo_root
191./makenemo -m ${fcm_arch} -n $cfg_wrk -r $cfg_ref -j0  add_key "$addkeys"  del_key "$delkeys"  >> $outfile 2>&1
192
193
194# Copy of specfic source files
195if [ -f $mysrc_path/*.*90 ] ;  then
196   echo >> $outfile ; echo cp $mysrc_path/*.*90  $nemo_root/cfgs/$cfg_wrk/MY_SRC/.   >> $outfile
197   echo >> $outfile
198   cp $mysrc_path/*.*90  $nemo_root/cfgs/$cfg_wrk/MY_SRC/.
199fi
200
201if [ $full_nemo == y ] ; then
202   # To make a full compilation, first make a clean to remove all files produced during previous compilation
203   echo ./makenemo -m ${fcm_arch} -n $cfg_wrk -r $cfg_ref clean   >> $outfile
204   echo >> $outfile
205   ./makenemo -m ${fcm_arch} -n $cfg_wrk -r $cfg_ref clean  >> $outfile 2>&1
206fi
207echo ./makenemo -m ${fcm_arch} -n $cfg_wrk -r $cfg_ref -j8  >> $outfile
208echo >> $outfile
209./makenemo -m ${fcm_arch} -n $cfg_wrk -r $cfg_ref -j8  >> $outfile 2>&1
210
211
212# Test if compiling finished
213if [[ $? != 0 ]] ; then
214    echo "THERE IS A PROBLEM IN NEMO COMPILATION - STOP"
215    exit
216fi
217
218echo >> $outfile
219echo "Move nemo executable to modipsl/bin" >> $outfile
220echo ls -lrt $nemo_root/cfgs/$cfg_wrk/BLD/bin   >> $outfile
221ls -lrt $nemo_root/cfgs/$cfg_wrk/BLD/bin  >> $outfile
222echo >> $outfile
223
224if [ -f $nemo_root/cfgs/$cfg_wrk/BLD/bin/nemo.exe ] ; then
225   mv $nemo_root/cfgs/$cfg_wrk/BLD/bin/nemo.exe $modipsl/bin/opa_${cplmode}_${optmode}.exe
226else
227    echo "ERROR gcm${suffix} executable does not exist."
228    echo "THERE IS A PROBLEM IN NEMO COMPILATION - STOP"
229    exit
230fi
231
232
233echo >>$outfile ; echo "ALL COMPILING FINISHED" >> $outfile
234echo ls -lrt modipsl/bin >> $outfile
235ls -lrt $modipsl/bin >> $outfile
236
237echo; echo "ALL COMPILING FINISHED" ; echo
238echo "Executables are found in modipsl/bin"
239echo "Check that executable names correspond with the name set in config.card before launching the job"
240echo ls -lrt modipsl/bin
241ls -lrt $modipsl/bin
242
243date
244
245exit
246
247
Note: See TracBrowser for help on using the repository browser.