source: CONFIG/UNIFORM/v7/ICOLMDZOR_v7/compile_icolmdzor.sh @ 4337

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

Source env file in ARCH folder before compilation.

  • Property svn:executable set to *
File size: 7.8 KB
Line 
1#!/bin/bash
2#set -vx
3# Default options
4#
5#
6#
7#### 1  Set up the compiling options
8#### Define some directories
9submitdir=$( pwd )
10modipsl=$submitdir/../..
11echo modipsl=$modipsl 
12echo submitdir=$submitdir
13arch_path=$submitdir/ARCH
14export ROOT=$modipsl/modeles/DYNAMICO
15
16#### Set default options
17# Optimization mode
18# optmode=prod/dev/debug
19optmode=prod
20# Resolution if compiling LMDZ in regular mode without DYNAMICO
21# Use for example following "./compile_icolmdzor.sh -regular_lonlat 144x142x79"
22regular_latlon=no
23# fcm_arch
24fcm_arch=default
25# Default values to be overritten
26parallel=mpi
27export fcm_arch parallel xios
28full_flag=""
29
30#### Read arguments
31# Loop over all arguments to modify default set up
32while (($# > 0)) ; do
33    case $1 in
34        "-h") cat <<fin
35
36########################################################################
37# Usage of the script compile_icolmdzor.sh
38#
39########################################################################
40
41./compile_config [Options]
42
43Options: -full, -regular_latlon
44
45Example 1: Default compilation of DYNAMICO-LMDZ-ORCHIDEE with XIOS and IOIPSL
46./compile_icolmdzor.sh
47
48Example 2: Default compilation with full recompilation of all components
49./compile_icolmdzor.sh -full
50
51Example 3: Compilation of LMDZ in regular lat-lon for dimension 144x142x79.
52The dimension can be changed to any other 3d dimension. DYNAMICO is also compiled as default.
53./compile_icolmdzor.sh -regular_latlon 144x142x79
54
55fin
56            exit;;
57
58        "-parallel")
59            parallel=$2 ; shift ; shift ;;
60       
61        "-arch")
62            fcm_arch="$2" ; shift ; shift ;;
63       
64        "-xios")
65            xios="$2" ; shift ; shift ;;
66       
67        "-optmode")
68            optmode=$2 ; shift ; shift ;;
69       
70        "-regular_latlon")
71            regular_latlon=yes ;
72            resol_atm_3d=$2 ; shift ; shift ;;
73       
74        "-full")
75            full_flag="-full"; shift ;;
76       
77        *)
78            echo "unknown option "$2" , exiting..."
79            exit
80    esac
81done
82
83
84### Read host dependent default values
85### These variables will not be changed if they were set as argument
86###./host.sh $host
87# Later : Following lines should be set in host.sh file
88# begin host.sh
89if [ $fcm_arch == default ] ; then
90    # Find out current host and source specific paths and commands for the host
91    case $( hostname -s ) in
92        ada*)
93            fcm_arch=X64_ADA;;
94        irene*)
95            fcm_arch=X64_IRENE;
96            source ARCH/arch-${fcm_arch}.env ;;
97        asterix*|obelix*)
98            fcm_arch=ifort_LSCE;;
99        *)
100            echo Current host is not known. You must use option -fcm_arch to specify which architecuture files to use.
101            echo Exit now.
102            exit
103    esac
104fi
105
106##### End host.sh
107echo
108echo "Following arguments are set in current compiling:"
109echo "   optmode = $optmode, parallel = $parallel, fcm_arch = $fcm_arch, full_flag=$full_flag regular_latlon=$regular_latlon"
110
111#### 2 Do the compilation
112## 2.1 Compile ioipsl
113cd $modipsl/modeles/IOIPSL
114echo; echo "NOW COMPILE IOIPSL"
115echo ./makeioipsl_fcm -$optmode -parallel -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag
116./makeioipsl_fcm -$optmode -parallel -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag
117# Test if compiling succeded
118if [[ $? != 0 ]] ; then
119    echo "THERE IS A PROBLEM IN IOIPSL COMPILATION - STOP"
120    exit
121fi
122
123## 2.2 Compile xios
124cd $modipsl/modeles/XIOS
125echo; echo "NOW COMPILE XIOS"
126echo ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path --job 4 $full_flag
127./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path --job 4 $full_flag
128# Test if compiling succeded
129if [[ $? != 0 ]] ; then
130    echo "THERE IS A PROBLEM IN XIOS COMPILATION - STOP"
131    exit
132fi
133
134## 2.3 Compile orchidee
135cd $modipsl/modeles/ORCHIDEE
136echo; echo "NOW COMPILE ORCHIDEE"
137echo    ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} $full_flag
138./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} $full_flag
139# Test if compiling finished
140if [[ $? != 0 ]] ; then
141    echo "THERE IS A PROBLEM IN ORCHIDEE COMPILATION - STOP"
142    exit
143fi
144
145## 2.4 Compile lmdz
146cd $modipsl/modeles/LMDZ
147# Compile LMDZ as library to couple to DYNAMICO
148echo; echo "NOW COMPILE LMDZ FOR COUPLING TO DYNAMICO"
149echo ./makelmdz_fcm -p lmd -rrtm true -$optmode -mem -parallel $parallel -libphy -v orchidee2.1 -io xios -arch $fcm_arch -j 8 $full_flag
150./makelmdz_fcm -p lmd -rrtm true -$optmode -mem -parallel $parallel -libphy -v orchidee2.1 -io xios -arch $fcm_arch -j 8 $full_flag
151# Test if compiling finished
152if [[ $? != 0 ]] ; then
153    echo "THERE IS A PROBLEM IN LMDZ PHYSICS COMPILATION - STOP"
154    exit
155fi
156
157
158## 2.5 Compile DYNAMICO
159echo; echo "NOW COMPILE DYNAMICO "
160cd $modipsl/modeles/DYNAMICO
161echo ./make_icosa -$optmode -parallel $parallel -external_ioipsl -with_xios -arch $fcm_arch -arch_path $arch_path -job 8 $full_flag
162./make_icosa -$optmode -parallel $parallel -external_ioipsl -with_xios -arch $fcm_arch -arch_path $arch_path -job 8 $full_flag
163# Test if compiling finished
164if [[ $? != 0 ]] ; then
165    echo "THERE IS A PROBLEM IN DYNAMICO COMPILATION - STOP"
166    exit
167fi
168
169## 2.6 Compile interface ICOSA_LMDZ
170echo; echo "NOW COMPILE ICOSA_LMDZ "
171cd $modipsl/modeles/ICOSA_LMDZ
172echo ./make_icosa_lmdz -nodeps -p lmd -$optmode -parallel $parallel -with_orchidee -arch ${fcm_arch} -arch_path ${arch_path} -job 8 $full_flag
173
174./make_icosa_lmdz -nodeps -p lmd -$optmode -parallel $parallel -with_orchidee -arch ${fcm_arch} -arch_path ${arch_path} -job 8 $full_flag
175# Test if compiling finished
176if [[ $? != 0 ]] ; then
177    echo "THERE IS A PROBLEM IN ICOSA_LMDZ COMPILATION - STOP"
178    exit
179fi
180
181
182## 2.7 Compile LMDZ for regular latlon configuration
183if [ $regular_latlon = yes ] ; then
184
185    cd $modipsl/modeles/LMDZ
186    # Compile LMDZ regular lat-lon exectuable
187    echo; echo "NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm_3d}"
188    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
189    ./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
190    # Test if compiling finished
191    if [[ $? != 0 ]] ; then
192        echo "THERE IS A PROBLEM IN LMDZ REGULAR LATLON COMPILATION - STOP"
193        exit
194    fi
195
196    # Compile ce0l initialization program for LMDZ regular lat-lon exectuable
197    echo; echo "NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm_3d}"
198    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
199    ./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
200    # Test if compiling finished
201    if [[ $? != 0 ]] ; then
202        echo "THERE IS A PROBLEM IN CE0L (LMDZ) REGULAR LATLON COMPILATION - STOP"
203        exit
204    fi
205
206    # Find executable suffix
207    if [ $parallel == seq ] || [ $parallel == none ] ; then
208        suffix=_${resol_atm_3d}_phylmd_seq_orch
209    else
210        suffix=_${resol_atm_3d}_phylmd_para_mem_orch
211    fi
212    echo suffix = $suffix
213   
214    # Move executables to modipsl/bin folder
215    echo "Move gcm.e and ce0l executable to modipsl/bin"
216    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
217    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
218
219    # Write .resol file
220    cd $submitdir   
221    resol2D=$( echo ${resol_atm_3d} | awk '-Fx' '{print $1}' )$( echo ${resol_atm_3d} | awk '-Fx' '{print $2}' )
222    echo "noORCAxLMD$resol2D" >.resol
223    echo "RESOL_ATM_3D=${resol_atm_3d}" >>.resol
224fi
225
226
227##  Move executables to modipsl/bin folder
228echo "Move executables to modipsl/bin"
229if [ $modipsl/modeles/ICOSA_LMDZ/bin/icosa_lmdz.exe ] ; then mv $modipsl/modeles/ICOSA_LMDZ/bin/icosa_lmdz.exe $modipsl/bin/. ; fi
230if [ $modipsl/modeles/XIOS/bin/xios_server.exe ] ; then mv $modipsl/modeles/XIOS/bin/xios_server.exe $modipsl/bin/. ; fi
231
232
233echo
234echo "ALL COMPILING FINISHED"
235echo
236
237exit
238
239
Note: See TracBrowser for help on using the repository browser.