source: CONFIG/UNIFORM/v6/LMDZOR_v6.2/compile_lmdzor.sh @ 4411

Last change on this file since 4411 was 4411, checked in by jgipsl, 5 years ago

Copied script for compilation from ICOLMDZOR_v7 and adapt it to compile LMDZOR configuration. Version of IOIPSL with compilation with fcm is needed for this script.

  • Property svn:executable set to *
File size: 8.6 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
19regular_latlon=yes
20resol_atm_3d=144x142x79
21
22# fcm_arch
23fcm_arch=default
24# Default values to be overritten
25parallel=mpi_omp
26export fcm_arch parallel xios
27full_flag=""
28# Default netcdf_lib is used for XIOS but can be change by argument
29netcdf_lib=""
30
31# Output text file for compilation of each component
32outfile=$submitdir/out_compile_lmdzor
33rm -f $outfile; echo > $outfile
34echo; echo "Text output from compilation will be stored in file out_compile_lmdzor"; echo 
35
36#### Read arguments
37# Loop over all arguments to modify default set up
38while (($# > 0)) ; do
39    case $1 in
40        "-h") cat <<fin
41
42########################################################################
43# Usage of the script compile_lmdzor.sh
44#
45########################################################################
46
47./compile_config [Options]
48
49Options: -full, -regular_latlon, -debug, -dev, -prod(default)
50
51Example 1: Default compilation of LMDZ-ORCHIDEE with XIOS and IOIPSL
52./compile_lmdzor.sh
53
54Example 2: Compile in debug mode
55./compile_lmdzor.sh -debug
56
57Example 3: Default compilation with full recompilation of all components
58./compile_lmdzor.sh -full
59
60Example 4: Compilation of LMDZ in regular lat-lon for other dimensions (default: 144x142x79)
61The dimension can be changed to any other 3d dimension.
62./compile_lmdzor.sh -regular_latlon 96x95x79
63
64fin
65            exit;;
66
67        "-parallel")
68            parallel=$2 ; shift ; shift ;;
69       
70        "-arch")
71            fcm_arch="$2" ; shift ; shift ;;
72       
73        "-xios")
74            xios="$2" ; shift ; shift ;;
75       
76        "-optmode")
77            optmode=$2 ; shift ; shift ;;
78
79        "-debug")
80            optmode=debug ; shift ;;
81
82        "-dev")
83            optmode=dev ; shift ;;
84
85        "-prod")
86            optmode=prod ; shift ;;
87
88        "-regular_latlon")
89            regular_latlon=yes ;
90            resol_atm_3d=$2 ; shift ; shift ;;
91       
92        "-full")
93            full_flag="-full"; shift ;;
94       
95        "-netcdf_lib_seq")
96            netcdf_lib="--netcdf_lib netcdf4_seq"; shift ;;
97
98        *)
99            echo "unknown option "$2" , exiting..."
100            exit
101    esac
102done
103
104echo "Following arguments are set in current compiling:" >> $outfile 
105echo "   optmode = $optmode, parallel = $parallel, fcm_arch = $fcm_arch, full_flag=$full_flag regular_latlon=$regular_latlon" >> $outfile 
106echo >> $outfile
107
108### Read host dependent default values
109### These variables will not be changed if they were set as argument
110###./host.sh $host
111# Later : Following lines should be set in host.sh file
112# begin host.sh
113if [ $fcm_arch == default ] ; then
114    # Find out current host and source specific paths and commands for the host
115    case $( hostname -s ) in
116        ada*)
117            fcm_arch=X64_ADA;;
118        irene*)
119            fcm_arch=X64_IRENE;;
120        asterix*|obelix*)
121            fcm_arch=ifort_LSCE;;
122        ciclad*|climserv*)
123            fcm_arch=ifort_CICLAD;;
124        *)
125            echo Current host is not known. You must use option -arch to specify which architecuture files to use.
126            echo Exit now.
127            exit
128    esac
129fi
130
131# Set a link to arch.env and source the file if arch-${fcm_arch}.env file exist for current fcm_arch.
132# The link arch.env is also set in config.card and will be used by libIGCM to ensure the same running environnement.
133if [ -f ARCH/arch-${fcm_arch}.env ] ; then
134    echo >> $outfile
135    echo "The file ARCH/arch-${fcm_arch}.env will now be sourced with modules needed for compilation."
136    echo "Note that this new environement will be kept after compilation."
137    echo "You might want to source again your personal environment after compilation. This must be done manually or by reconnection."
138    echo " Personal module list before sourcing of ARCH/arch.env file:"    >> $outfile 
139    module list   >> $outfile 2>&1
140
141    rm -f ARCH/arch.env
142    ln -s arch-${fcm_arch}.env ARCH/arch.env
143    source ARCH/arch.env   >> $outfile 2>&1
144
145    echo >> $outfile
146    echo " New module list after sourcing of ARCH/arch.env file:"    >> $outfile 
147    module list   >> $outfile 2>&1
148fi
149
150#### 2 Do the compilation
151## 2.1 Compile ioipsl
152cd $modipsl/modeles/IOIPSL
153echo; echo "NOW COMPILE IOIPSL"
154echo >> $outfile ; echo " NOW COMPILE IOIPSL"   >> $outfile 
155
156# Check if compilation with fcm is included in IOIPSL
157if [ ! -f makeioipsl_fcm ] ; then
158  echo "The file makeiopsl_fcm do not exist. Probably this is not the right version of IOIPSL."
159  echo "Version of IOIPSL with fcm compilation is needed to compile with this script. Stop now."
160  exit
161fi
162
163echo ./makeioipsl_fcm -$optmode -parallel -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 
164     ./makeioipsl_fcm -$optmode -parallel -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 2>&1
165# Test if compiling succeded
166if [[ $? != 0 ]] ; then
167    echo "THERE IS A PROBLEM IN IOIPSL COMPILATION - STOP"
168    exit
169fi
170
171## 2.2 Compile xios
172cd $modipsl/modeles/XIOS
173echo; echo "NOW COMPILE XIOS"
174echo >> $outfile ; echo " NOW COMPILE XIOS"   >> $outfile 
175echo ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_flag   >> $outfile 
176     ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_flag   >> $outfile 2>&1
177# Test if compiling succeded
178if [[ $? != 0 ]] ; then
179    echo "THERE IS A PROBLEM IN XIOS COMPILATION - STOP"
180    exit
181fi
182# Move executables to modipsl/bin
183if [ $modipsl/modeles/XIOS/bin/xios_server.exe ] ; then
184    mv $modipsl/modeles/XIOS/bin/xios_server.exe $modipsl/bin/.
185else
186    echo "THERE IS A PROBLEM IN XIOS COMPILATION EXECUTABLE MISSING - STOP"
187    exit
188fi
189
190
191## 2.3 Compile orchidee
192cd $modipsl/modeles/ORCHIDEE
193echo; echo "NOW COMPILE ORCHIDEE"
194echo >> $outfile ; echo " NOW COMPILE ORCHIDEE"   >> $outfile 
195
196echo    ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} $full_flag    >> $outfile 
197        ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} $full_flag    >> $outfile 2>&1
198# Test if compiling finished
199if [[ $? != 0 ]] ; then
200    echo "THERE IS A PROBLEM IN ORCHIDEE COMPILATION - STOP"
201    exit
202fi
203
204
205## 2.4 Compile LMDZ for regular latlon configuration
206if [ $regular_latlon = yes ] ; then
207
208    cd $modipsl/modeles/LMDZ
209    # Compile LMDZ regular lat-lon exectuable
210    echo; echo "NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm_3d}"
211    echo >> $outfile ; echo " NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm_3d}"   >> $outfile 
212
213    echo ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -j 8 $full_flag gcm    >> $outfile 
214         ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -j 8 $full_flag gcm    >> $outfile 2>&1
215    # Test if compiling finished
216    if [[ $? != 0 ]] ; then
217        echo "THERE IS A PROBLEM IN LMDZ REGULAR LATLON COMPILATION - STOP"
218        exit
219    fi
220
221    # Compile ce0l initialization program for LMDZ regular lat-lon exectuable
222    echo; echo "NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm_3d}"
223    echo >> $outfile ; echo " NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm_3d}"   >> $outfile 
224
225    echo ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -j 8 $full_flag ce0l    >> $outfile 
226         ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -j 8 $full_flag ce0l    >> $outfile 2>&1
227    # Test if compiling finished
228    if [[ $? != 0 ]] ; then
229        echo "THERE IS A PROBLEM IN CE0L (LMDZ) REGULAR LATLON COMPILATION - STOP"
230        exit
231    fi
232
233    # Find executable suffix
234    if [ $parallel == seq ] || [ $parallel == none ] ; then
235        suffix=_${resol_atm_3d}_phylmd_seq_orch
236    else
237        suffix=_${resol_atm_3d}_phylmd_para_mem_orch
238    fi
239    echo suffix = $suffix
240   
241    # Move executables to modipsl/bin folder
242    echo "Move gcm.e and ce0l executable to modipsl/bin"
243    if [ $modipsl/modeles/LMDZ/bin/gcm${suffix}.e ] ;  then mv $modipsl/modeles/LMDZ/bin/gcm${suffix}.e $modipsl/bin/gcm_${resol_atm_3d}.e ; fi
244    if [ $modipsl/modeles/LMDZ/bin/ce0l${suffix}.e ] ;  then mv $modipsl/modeles/LMDZ/bin/ce0l${suffix}.e $modipsl/bin/ce0l_${resol_atm_3d}.e ; fi
245
246    # Write .resol file
247    cd $submitdir   
248    resol2D=$( echo ${resol_atm_3d} | awk '-Fx' '{print $1}' )$( echo ${resol_atm_3d} | awk '-Fx' '{print $2}' )
249    echo "noORCAxLMD$resol2D" >.resol
250    echo "RESOL_ATM_3D=${resol_atm_3d}" >>.resol
251fi
252
253
254echo >>$outfile ; echo "ALL COMPILING FINISHED" >> $outfile
255echo; echo "ALL COMPILING FINISHED"
256
257date
258exit
259
260
Note: See TracBrowser for help on using the repository browser.