source: CONFIG/UNIFORM/v6/LMDZOR_v6.3/compile_lmdzor.sh @ 5027

Last change on this file since 5027 was 4973, checked in by jgipsl, 4 years ago
  • Change automatiquement -parallel mpi_omp vers -parallel mpi sur obelix
  • Ajoute test si le fichier fcm.bld.lock dans la compilatiation d'ORCHIDEE et efface le s'il existe
  • Property svn:executable set to *
File size: 11.9 KB
Line 
1#!/bin/bash -l
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
13
14#### Set default options
15# Optimization mode
16# optmode=prod/dev/debug
17optmode=prod
18# Resolution of LMDZ in regular mode
19resol_atm=144x142x79
20# Also compile ce0l subprogram to LMDZ (y/n)
21ce0l=y
22
23# fcm_arch
24fcm_arch=default
25# Default values to be overritten
26parallel=mpi_omp
27export fcm_arch parallel xios
28full_flag=""
29full_xios=""
30full_lmdz=""
31full_orch=""
32
33# Default netcdf_lib is used for XIOS but can be change by argument
34netcdf_lib=""
35
36# Output text file for compilation of each component
37datestr=`LC_ALL=C date +"%Y%m%dT%H%M"`
38outfile=$submitdir/out_compile_lmdzor.$datestr
39echo > $outfile
40echo; echo "Text output from compilation will be stored in file out_compile_lmdzor.$datestr"; echo 
41
42#### Read arguments
43# Loop over all arguments to modify default set up
44while (($# > 0)) ; do
45    case $1 in
46        "-h") cat <<end_help
47########################################################################
48# Usage of the script compile_lmdzor.sh
49#
50########################################################################
51
52./compile_config [Options]
53
54Options: -full, -resol_atm, -debug, -dev, -prod(default)
55
56Example 1: Default compilation of LMDZ-ORCHIDEE with XIOS and IOIPSL
57./compile_lmdzor.sh
58
59Example 2: Compile in debug mode
60./compile_lmdzor.sh -debug
61
62Example 3: Default compilation with full recompilation of all components
63./compile_lmdzor.sh -full
64
65Example 4: Compilation of LMDZ in regular lat-lon for other dimensions (default: 144x142x79)
66The dimension can be changed to any other 3d dimension.
67./compile_lmdzor.sh -resol_atm 96x95x79
68
69end_help
70exit;;
71        "-parallel")        parallel=$2 ; shift ; shift ;;
72        "-arch")            fcm_arch="$2" ; shift ; shift ;;
73        "-xios")            xios="$2" ; shift ; shift ;;
74        "-debug")           optmode=debug ; shift ;;
75        "-dev")             optmode=dev ; shift ;;
76        "-prod")            optmode=prod ; shift ;;
77        "-resol_atm")       resol_atm=$2 ; shift ; shift ;;
78        "CE0L")             ce0l=y ; shift ;;
79        "-full")            full_flag="-full"; full_xios="--full" ; full_lmdz="-full" ; full_orch="-full" ; shift ;;
80        "-full_xios")       full_xios="--full" ; shift ;;  # Note only full_xios is using double dash: --full
81        "-full_lmdz")       full_lmdz="-full"  ; shift ;;
82        "-full_orch")       full_orch="-full"  ; shift ;;
83        "-netcdf_lib_seq")  netcdf_lib="--netcdf_lib netcdf4_seq"; shift ;;
84        *)                  echo "unknown option "$1" , exiting..." ; exit
85    esac
86done
87
88echo "Following options are set in current compiling:" >> $outfile 
89echo "   resol_atm=${resol_atm}" >> $outfile 
90echo "   ce0l=${ce0l}" >> $outfile 
91echo "   optmode = $optmode, parallel = $parallel, fcm_arch = $fcm_arch " >> $outfile 
92echo "   full_flag=$full_flag, full_xios=$full_xios, full_lmdz=$full_lmdz, full_orch=$full_orch" >> $outfile 
93echo >> $outfile
94
95### Read host dependent default values
96### These variables will not be changed if they were set as argument
97###./host.sh $host
98# Later : Following lines should be set in host.sh file
99# begin host.sh
100if [ $fcm_arch == default ] ; then
101    # Find out current host and source specific paths and commands for the host
102    case $( hostname -s ) in
103        jean-zay*)
104            fcm_arch=X64_JEANZAY;;
105        irene*)
106            fcm_arch=X64_IRENE;;
107        asterix*|obelix*)
108            fcm_arch=ifort_LSCE
109            if [ "${parallel}" == "mpi_omp" ] ; then
110               echo "Warning!! Currently at Obelix hybrid mode is not possible."
111               echo "          Option -parallel mpi_omp is now changed to -parallel mpi"
112               echo ""
113               parallel=mpi
114            else
115               echo "You used -parallel" $parallel
116            fi ;;
117        ciclad*|climserv*|loholt*|camelot*)
118            fcm_arch=ifort_CICLAD;;
119        *)
120            echo Current host is not known. You must use option -arch to specify which architecuture files to use.
121            echo Exit now.
122            exit
123    esac
124fi
125
126# Set a link to arch.env if arch-${fcm_arch}.env file exist for current fcm_arch.
127# The link arch.env is also set in config.card and will be used by libIGCM to ensure the same running environnement.
128if [ -f ARCH/arch-${fcm_arch}.env ] ; then
129    echo >> $outfile
130    echo "The file ARCH/arch-${fcm_arch}.env will now be sourced with modules needed for compilation for all components."
131    echo "Note that this new environement might be kept after compilation." 
132    echo "If this is the case, source again your personal environment after compilation. "
133    echo " Personal module list before sourcing of ARCH/arch.env file:"    >> $outfile 
134    module list   >> $outfile 2>&1
135
136    # Make a link to this file, to be used also in config.card
137    rm -f ARCH/arch.env
138    ln -s arch-${fcm_arch}.env ARCH/arch.env
139
140    # Source the file
141    source ARCH/arch.env   >> $outfile 2>&1
142    echo >> $outfile 
143    echo " New module list after sourcing of ARCH/arch.env file:"    >> $outfile 
144    module list   >> $outfile 2>&1
145fi
146
147#### 2 Do the compilation
148## 2.1 Compile ioipsl
149cd $modipsl/modeles/IOIPSL
150echo; echo "NOW COMPILE IOIPSL"
151echo >> $outfile ; echo " NOW COMPILE IOIPSL"   >> $outfile 
152
153# Check if compilation with fcm is included in IOIPSL
154if [ ! -f makeioipsl_fcm ] ; then
155  echo "The file makeiopsl_fcm do not exist. Probably this is not the right version of IOIPSL."
156  echo "Version of IOIPSL with fcm compilation is needed to compile with this script. Stop now."
157  exit
158fi
159
160echo ./makeioipsl_fcm -$optmode -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 
161     ./makeioipsl_fcm -$optmode -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 2>&1
162# Test if compiling succeded
163if [[ $? != 0 ]] ; then
164    echo "THERE IS A PROBLEM IN IOIPSL COMPILATION - STOP"
165    exit
166fi
167
168## 2.2 Compile xios
169cd $modipsl/modeles/XIOS
170echo; echo "NOW COMPILE XIOS"
171echo >> $outfile ; echo " NOW COMPILE XIOS"   >> $outfile 
172echo ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_xios   >> $outfile 
173     ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_xios   >> $outfile 2>&1
174# Test if compiling succeded
175if [[ $? != 0 ]] ; then
176    echo "THERE IS A PROBLEM IN XIOS COMPILATION - STOP"
177    exit
178fi
179# Move executables to modipsl/bin
180if [ -f $modipsl/modeles/XIOS/bin/xios_server.exe ] ; then
181    mv $modipsl/modeles/XIOS/bin/xios_server.exe $modipsl/bin/xios_server_${optmode}.exe
182else
183    echo "THERE IS A PROBLEM IN XIOS COMPILATION EXECUTABLE MISSING - STOP"
184    exit
185fi
186
187
188## 2.3 Compile orchidee
189cd $modipsl/modeles/ORCHIDEE
190echo; echo "NOW COMPILE ORCHIDEE"
191echo >> $outfile ; echo " NOW COMPILE ORCHIDEE"   >> $outfile 
192
193# Check if the compilation of ORCHIDEE was previsouly interupted prematured.
194# In that case, the files fcm.bld.lock exist. If the file exist, it is here removed to avoid makeorchidee_fcm
195# to ask question and wait for interactivly answer from the user.
196if [ -f build/fcm.bld.lock ] ; then
197    echo >> $outfile
198    echo " WARNING!! The file ORCHIDEE/build/fcm.bld.lock exist. "   >> $outfile
199    echo "           This means that the compilation is either currently on going in another terminal was previous interupted before the end."   >> $outfile
200    echo "           The file will now be removed. "   >> $outfile
201    echo >> $outfile
202    rm -f build/fcm.bld.lock
203fi
204
205echo    ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} -arch_path $arch_path $full_orch -driver   >> $outfile 
206        ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} -arch_path $arch_path $full_orch -driver    >> $outfile 2>&1
207# Test if compiling finished
208if [[ $? != 0 ]] ; then
209    echo "THERE IS A PROBLEM IN ORCHIDEE COMPILATION - STOP"
210    exit
211fi
212
213# Rename executables to contain $optmode
214if [ -f $modipsl/bin/orchidee_ol ] ; then mv $modipsl/bin/orchidee_ol  $modipsl/bin/orchidee_ol_${optmode} ; fi
215if [ -f $modipsl/bin/orchideedriver ] ; then mv $modipsl/bin/orchideedriver  $modipsl/bin/orchideedriver_${optmode} ; fi
216
217
218## 2.4 Compile LMDZ for regular latlon configuration
219cd $modipsl/modeles/LMDZ
220# Compile LMDZ regular lat-lon executable
221echo; echo "NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm}"
222echo >> $outfile ; echo " NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm}"   >> $outfile 
223
224# Check if the compilation of LMDZ was previsouly interupted prematured.
225# In that case, the files dimension.h and .lock exist. If the files exist, they are here removed to avoid makelmdz_fcm
226# to ask question and wait for interactivly answer from the user.
227if [ -f libf/grid/dimensions.h ] || [ -f .lock ] ; then
228  echo >> $outfile
229  echo " WARNING!! The file LMDZ/libf/grid/dimension.h and/or the LMDZ/.lock exist. "   >> $outfile
230  echo "           This means that the compilation is either currently on going in another terminal was previous interupted before the end."   >> $outfile
231  echo "           The files dimension.h and .lock will now be removed. "   >> $outfile
232  echo >> $outfile
233  rm -f libf/grid/dimensions.h
234  rm -f .lock
235fi
236
237echo ./makelmdz_fcm -d ${resol_atm} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_lmdz gcm    >> $outfile 
238./makelmdz_fcm -d ${resol_atm} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_lmdz gcm    >> $outfile 2>&1
239# Test if compiling finished
240if [[ $? != 0 ]] ; then
241    echo "THERE IS A PROBLEM IN LMDZ REGULAR LATLON COMPILATION - STOP"
242    exit
243fi
244
245# Move executables to modipsl/bin folder
246echo >> $outfile
247echo "Move gcm.e executable to modipsl/bin" >> $outfile
248echo ls -lrt $modipsl/modeles/LMDZ/bin   >> $outfile
249ls -lrt $modipsl/modeles/LMDZ/bin  >> $outfile
250echo >> $outfile
251
252# Find executable suffix
253if [ $parallel == seq ] || [ $parallel == none ] ; then
254    suffix=_${resol_atm}_phylmd_seq_orch.e
255else
256    suffix=_${resol_atm}_phylmd_para_mem_orch.e
257fi
258echo gcm suffix = $suffix
259
260if [ -f $modipsl/modeles/LMDZ/bin/gcm${suffix} ] ;  then
261    mv $modipsl/modeles/LMDZ/bin/gcm${suffix} $modipsl/bin/gcm_${resol_atm}_${optmode}.e
262else
263    echo "ERROR gcm${suffix} executable does not exist." 
264    echo "THERE IS A PROBLEM IN LMDZ REGULAR LATLON COMPILATION - STOP"
265    exit
266fi 
267
268
269# Compile ce0l initialization program for LMDZ regular lat-lon exectuable
270if [ $ce0l == y ] ; then
271    echo; echo "NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm}"
272    echo >> $outfile ; echo " NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm}"   >> $outfile 
273   
274    echo ./makelmdz_fcm -d ${resol_atm} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_lmdz ce0l    >> $outfile 
275    ./makelmdz_fcm -d ${resol_atm} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_lmdz ce0l    >> $outfile 2>&1
276    # Test if compiling finished
277    if [[ $? != 0 ]] ; then
278        echo "THERE IS A PROBLEM IN CE0L (LMDZ) REGULAR LATLON COMPILATION - STOP"
279        exit
280    fi
281
282   
283    # Move executables to modipsl/bin folder
284    echo >> $outfile
285    echo "Move ce0l.e executable to modipsl/bin" >> $outfile
286    echo ls -lrt $modipsl/modeles/LMDZ/bin   >> $outfile
287    ls -lrt $modipsl/modeles/LMDZ/bin  >> $outfile
288    echo >> $outfile
289    echo ce0l suffix = $suffix
290
291    if [ -f $modipsl/modeles/LMDZ/bin/ce0l${suffix} ] ;  then
292        mv $modipsl/modeles/LMDZ/bin/ce0l${suffix} $modipsl/bin/ce0l_${resol_atm}_${optmode}.e
293    else
294        echo "ERROR ce0l${suffix} executable does not exist." 
295        echo "THERE IS A PROBLEM IN CE0L (LMDZ) REGULAR LATLON COMPILATION - STOP"
296        exit
297    fi 
298fi
299
300
301echo >>$outfile ; echo "ALL COMPILING FINISHED" >> $outfile
302echo ls -lrt modipsl/bin >> $outfile
303ls -lrt $modipsl/bin >> $outfile
304
305echo; echo "ALL COMPILING FINISHED" ; echo
306echo "Executables are found in modipsl/bin"
307echo "Check that executable names correspond with the name set in config.card before launching the job"
308echo ls -lrt modipsl/bin
309ls -lrt $modipsl/bin
310
311date
312
313exit
Note: See TracBrowser for help on using the repository browser.