source: CONFIG/UNIFORM/v6/LMDZOR_v6.4/compile_lmdzor.sh @ 5036

Last change on this file since 5036 was 5036, checked in by jgipsl, 4 years ago

Liée a la compilation sur obelix/LSCE:

  • Revert back [4972] pour ne plus faire bash -l qui peut etre interpreté tres different selon les machines.
  • ajoute source de init ksh pour que le command module soit connue sous bash sur obelix/LSCE. Certe un peu bizarre de source un fichier dites ksh mais des tests ont montres que ca marche.
  • Property svn:executable set to *
File size: 12.0 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
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        irene170|irene171|irene190|irene191|irene192|irene193)
106            fcm_arch=X64_IRENE;;
107        irene172|irene173|irene194|irene195)
108            fcm_arch=X64_IRENE-AMD;;
109        asterix*|obelix*)
110            fcm_arch=ifort_LSCE
111            if [ "${parallel}" == "mpi_omp" ] ; then
112               echo "Warning!! Currently at Obelix hybrid mode is not possible."
113               echo "          Option -parallel mpi_omp is now changed to -parallel mpi"
114               echo ""
115               parallel=mpi
116            else
117               echo "You used -parallel" $parallel
118            fi ;;
119        ciclad*|climserv*|loholt*|camelot*)
120            fcm_arch=ifort_CICLAD;;
121        *)
122            echo Current host is not known. You must use option -arch to specify which architecuture files to use.
123            echo Exit now.
124            exit
125    esac
126fi
127
128# Set a link to arch.env if arch-${fcm_arch}.env file exist for current fcm_arch.
129# The link arch.env is also set in config.card and will be used by libIGCM to ensure the same running environnement.
130if [ -f ARCH/arch-${fcm_arch}.env ] ; then
131    echo >> $outfile
132    echo "The file ARCH/arch-${fcm_arch}.env will now be sourced with modules needed for compilation for all components."
133    echo "Note that this new environement might be kept after compilation." 
134    echo "If this is the case, source again your personal environment after compilation. "
135    echo " Personal module list before sourcing of ARCH/arch.env file:"    >> $outfile 
136    module list   >> $outfile 2>&1
137
138    # Make a link to this file, to be used also in config.card
139    rm -f ARCH/arch.env
140    ln -s arch-${fcm_arch}.env ARCH/arch.env
141
142    # Source the file
143    source ARCH/arch.env   >> $outfile 2>&1
144    echo >> $outfile 
145    echo " New module list after sourcing of ARCH/arch.env file:"    >> $outfile 
146    module list   >> $outfile 2>&1
147fi
148
149#### 2 Do the compilation
150## 2.1 Compile ioipsl
151cd $modipsl/modeles/IOIPSL
152echo; echo "NOW COMPILE IOIPSL"
153echo >> $outfile ; echo " NOW COMPILE IOIPSL"   >> $outfile 
154
155# Check if compilation with fcm is included in IOIPSL
156if [ ! -f makeioipsl_fcm ] ; then
157  echo "The file makeiopsl_fcm do not exist. Probably this is not the right version of IOIPSL."
158  echo "Version of IOIPSL with fcm compilation is needed to compile with this script. Stop now."
159  exit
160fi
161
162echo ./makeioipsl_fcm -$optmode -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 
163     ./makeioipsl_fcm -$optmode -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 2>&1
164# Test if compiling succeded
165if [[ $? != 0 ]] ; then
166    echo "THERE IS A PROBLEM IN IOIPSL COMPILATION - STOP"
167    exit
168fi
169
170## 2.2 Compile xios
171cd $modipsl/modeles/XIOS
172echo; echo "NOW COMPILE XIOS"
173echo >> $outfile ; echo " NOW COMPILE XIOS"   >> $outfile 
174echo ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_xios   >> $outfile 
175     ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_xios   >> $outfile 2>&1
176# Test if compiling succeded
177if [[ $? != 0 ]] ; then
178    echo "THERE IS A PROBLEM IN XIOS COMPILATION - STOP"
179    exit
180fi
181# Move executables to modipsl/bin
182if [ -f $modipsl/modeles/XIOS/bin/xios_server.exe ] ; then
183    mv $modipsl/modeles/XIOS/bin/xios_server.exe $modipsl/bin/xios_server_${optmode}.exe
184else
185    echo "THERE IS A PROBLEM IN XIOS COMPILATION EXECUTABLE MISSING - STOP"
186    exit
187fi
188
189
190## 2.3 Compile orchidee
191cd $modipsl/modeles/ORCHIDEE
192echo; echo "NOW COMPILE ORCHIDEE"
193echo >> $outfile ; echo " NOW COMPILE ORCHIDEE"   >> $outfile 
194
195# Check if the compilation of ORCHIDEE was previsouly interupted prematured.
196# In that case, the files fcm.bld.lock exist. If the file exist, it is here removed to avoid makeorchidee_fcm
197# to ask question and wait for interactivly answer from the user.
198if [ -f build/fcm.bld.lock ] ; then
199    echo >> $outfile
200    echo " WARNING!! The file ORCHIDEE/build/fcm.bld.lock exist. "   >> $outfile
201    echo "           This means that the compilation is either currently on going in another terminal was previous interupted before the end."   >> $outfile
202    echo "           The file will now be removed. "   >> $outfile
203    echo >> $outfile
204    rm -f build/fcm.bld.lock
205fi
206
207echo    ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} -arch_path $arch_path $full_orch -driver   >> $outfile 
208        ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} -arch_path $arch_path $full_orch -driver    >> $outfile 2>&1
209# Test if compiling finished
210if [[ $? != 0 ]] ; then
211    echo "THERE IS A PROBLEM IN ORCHIDEE COMPILATION - STOP"
212    exit
213fi
214
215# Rename executables to contain $optmode
216if [ -f $modipsl/bin/orchidee_ol ] ; then mv $modipsl/bin/orchidee_ol  $modipsl/bin/orchidee_ol_${optmode} ; fi
217if [ -f $modipsl/bin/orchideedriver ] ; then mv $modipsl/bin/orchideedriver  $modipsl/bin/orchideedriver_${optmode} ; fi
218
219
220## 2.4 Compile LMDZ for regular latlon configuration
221cd $modipsl/modeles/LMDZ
222# Compile LMDZ regular lat-lon executable
223echo; echo "NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm}"
224echo >> $outfile ; echo " NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm}"   >> $outfile 
225
226# Check if the compilation of LMDZ was previsouly interupted prematured.
227# In that case, the files dimension.h and .lock exist. If the files exist, they are here removed to avoid makelmdz_fcm
228# to ask question and wait for interactivly answer from the user.
229if [ -f libf/grid/dimensions.h ] || [ -f .lock ] ; then
230  echo >> $outfile
231  echo " WARNING!! The file LMDZ/libf/grid/dimension.h and/or the LMDZ/.lock exist. "   >> $outfile
232  echo "           This means that the compilation is either currently on going in another terminal was previous interupted before the end."   >> $outfile
233  echo "           The files dimension.h and .lock will now be removed. "   >> $outfile
234  echo >> $outfile
235  rm -f libf/grid/dimensions.h
236  rm -f .lock
237fi
238
239echo ./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 
240./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
241# Test if compiling finished
242if [[ $? != 0 ]] ; then
243    echo "THERE IS A PROBLEM IN LMDZ REGULAR LATLON COMPILATION - STOP"
244    exit
245fi
246
247# Move executables to modipsl/bin folder
248echo >> $outfile
249echo "Move gcm.e executable to modipsl/bin" >> $outfile
250echo ls -lrt $modipsl/modeles/LMDZ/bin   >> $outfile
251ls -lrt $modipsl/modeles/LMDZ/bin  >> $outfile
252echo >> $outfile
253
254# Find executable suffix
255if [ $parallel == seq ] || [ $parallel == none ] ; then
256    suffix=_${resol_atm}_phylmd_seq_orch.e
257else
258    suffix=_${resol_atm}_phylmd_para_mem_orch.e
259fi
260echo gcm suffix = $suffix
261
262if [ -f $modipsl/modeles/LMDZ/bin/gcm${suffix} ] ;  then
263    mv $modipsl/modeles/LMDZ/bin/gcm${suffix} $modipsl/bin/gcm_${resol_atm}_${optmode}.e
264else
265    echo "ERROR gcm${suffix} executable does not exist." 
266    echo "THERE IS A PROBLEM IN LMDZ REGULAR LATLON COMPILATION - STOP"
267    exit
268fi 
269
270
271# Compile ce0l initialization program for LMDZ regular lat-lon exectuable
272if [ $ce0l == y ] ; then
273    echo; echo "NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm}"
274    echo >> $outfile ; echo " NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm}"   >> $outfile 
275   
276    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 
277    ./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
278    # Test if compiling finished
279    if [[ $? != 0 ]] ; then
280        echo "THERE IS A PROBLEM IN CE0L (LMDZ) REGULAR LATLON COMPILATION - STOP"
281        exit
282    fi
283
284   
285    # Move executables to modipsl/bin folder
286    echo >> $outfile
287    echo "Move ce0l.e executable to modipsl/bin" >> $outfile
288    echo ls -lrt $modipsl/modeles/LMDZ/bin   >> $outfile
289    ls -lrt $modipsl/modeles/LMDZ/bin  >> $outfile
290    echo >> $outfile
291    echo ce0l suffix = $suffix
292
293    if [ -f $modipsl/modeles/LMDZ/bin/ce0l${suffix} ] ;  then
294        mv $modipsl/modeles/LMDZ/bin/ce0l${suffix} $modipsl/bin/ce0l_${resol_atm}_${optmode}.e
295    else
296        echo "ERROR ce0l${suffix} executable does not exist." 
297        echo "THERE IS A PROBLEM IN CE0L (LMDZ) REGULAR LATLON COMPILATION - STOP"
298        exit
299    fi 
300fi
301
302
303echo >>$outfile ; echo "ALL COMPILING FINISHED" >> $outfile
304echo ls -lrt modipsl/bin >> $outfile
305ls -lrt $modipsl/bin >> $outfile
306
307echo; echo "ALL COMPILING FINISHED" ; echo
308echo "Executables are found in modipsl/bin"
309echo "Check that executable names correspond with the name set in config.card before launching the job"
310echo ls -lrt modipsl/bin
311ls -lrt $modipsl/bin
312
313date
314
315exit
Note: See TracBrowser for help on using the repository browser.