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

Last change on this file since 4457 was 4457, checked in by jgipsl, 5 years ago
  • Added optmode in executable name
  • Added -f to test if file exist
  • Property svn:executable set to *
File size: 8.2 KB
RevLine 
[4268]1#!/bin/bash
2#set -vx
3# Default options
4#
5#
6#
[4409]7date
[4268]8#### 1  Set up the compiling options
9#### Define some directories
10submitdir=$( pwd )
11modipsl=$submitdir/../..
[4275]12arch_path=$submitdir/ARCH
[4268]13
[4278]14#### Set default options
[4268]15# Optimization mode
16# optmode=prod/dev/debug
17optmode=prod
[4411]18# Resolution of LMDZ in regular mode
19regular_latlon=yes
20resol_atm_3d=144x142x79
21
[4268]22# fcm_arch
23fcm_arch=default
24# Default values to be overritten
[4339]25parallel=mpi_omp
[4268]26export fcm_arch parallel xios
27full_flag=""
[4391]28# Default netcdf_lib is used for XIOS but can be change by argument
29netcdf_lib=""
[4268]30
[4408]31# Output text file for compilation of each component
[4411]32outfile=$submitdir/out_compile_lmdzor
[4408]33rm -f $outfile; echo > $outfile
[4411]34echo; echo "Text output from compilation will be stored in file out_compile_lmdzor"; echo 
[4408]35
[4278]36#### Read arguments
[4268]37# Loop over all arguments to modify default set up
38while (($# > 0)) ; do
[4278]39    case $1 in
40        "-h") cat <<fin
[4268]41
42########################################################################
[4411]43# Usage of the script compile_lmdzor.sh
[4268]44#
45########################################################################
46
47./compile_config [Options]
48
[4407]49Options: -full, -regular_latlon, -debug, -dev, -prod(default)
[4268]50
[4411]51Example 1: Default compilation of LMDZ-ORCHIDEE with XIOS and IOIPSL
52./compile_lmdzor.sh
[4268]53
[4407]54Example 2: Compile in debug mode
[4411]55./compile_lmdzor.sh -debug
[4407]56
57Example 3: Default compilation with full recompilation of all components
[4411]58./compile_lmdzor.sh -full
[4268]59
[4411]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
[4268]63
[4278]64fin
65            exit;;
[4268]66
[4278]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 ;;
[4407]78
79        "-debug")
80            optmode=debug ; shift ;;
81
82        "-dev")
83            optmode=dev ; shift ;;
84
85        "-prod")
86            optmode=prod ; shift ;;
87
[4278]88        "-regular_latlon")
89            regular_latlon=yes ;
90            resol_atm_3d=$2 ; shift ; shift ;;
91       
92        "-full")
93            full_flag="-full"; shift ;;
94       
[4391]95        "-netcdf_lib_seq")
96            netcdf_lib="--netcdf_lib netcdf4_seq"; shift ;;
97
[4278]98        *)
99            echo "unknown option "$2" , exiting..."
100            exit
101    esac
102done
[4268]103
[4408]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
[4268]107
[4278]108### Read host dependent default values
109### These variables will not be changed if they were set as argument
[4268]110###./host.sh $host
111# Later : Following lines should be set in host.sh file
112# begin host.sh
113if [ $fcm_arch == default ] ; then
[4278]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*)
[4391]119            fcm_arch=X64_IRENE;;
[4278]120        asterix*|obelix*)
121            fcm_arch=ifort_LSCE;;
[4391]122        ciclad*|climserv*)
123            fcm_arch=ifort_CICLAD;;
[4278]124        *)
[4391]125            echo Current host is not known. You must use option -arch to specify which architecuture files to use.
[4278]126            echo Exit now.
127            exit
128    esac
[4268]129fi
130
[4452]131# Set a link to arch.env if arch-${fcm_arch}.env file exist for current fcm_arch.
[4391]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
[4408]134    echo >> $outfile
[4452]135    echo "The file ARCH/arch-${fcm_arch}.env will be used for the compilation of each component"
[4391]136    rm -f ARCH/arch.env
137    ln -s arch-${fcm_arch}.env ARCH/arch.env
138fi
139
[4268]140#### 2 Do the compilation
141## 2.1 Compile ioipsl
142cd $modipsl/modeles/IOIPSL
[4278]143echo; echo "NOW COMPILE IOIPSL"
[4408]144echo >> $outfile ; echo " NOW COMPILE IOIPSL"   >> $outfile 
145
[4411]146# Check if compilation with fcm is included in IOIPSL
147if [ ! -f makeioipsl_fcm ] ; then
148  echo "The file makeiopsl_fcm do not exist. Probably this is not the right version of IOIPSL."
149  echo "Version of IOIPSL with fcm compilation is needed to compile with this script. Stop now."
150  exit
151fi
152
[4408]153echo ./makeioipsl_fcm -$optmode -parallel -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 
154     ./makeioipsl_fcm -$optmode -parallel -arch ${fcm_arch} -arch_path $arch_path -j 8 $full_flag   >> $outfile 2>&1
[4268]155# Test if compiling succeded
156if [[ $? != 0 ]] ; then
[4278]157    echo "THERE IS A PROBLEM IN IOIPSL COMPILATION - STOP"
158    exit
[4268]159fi
160
161## 2.2 Compile xios
162cd $modipsl/modeles/XIOS
[4278]163echo; echo "NOW COMPILE XIOS"
[4408]164echo >> $outfile ; echo " NOW COMPILE XIOS"   >> $outfile 
165echo ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_flag   >> $outfile 
166     ./make_xios --$optmode --arch $fcm_arch --arch_path $arch_path ${netcdf_lib} --job 4 $full_flag   >> $outfile 2>&1
[4268]167# Test if compiling succeded
168if [[ $? != 0 ]] ; then
[4278]169    echo "THERE IS A PROBLEM IN XIOS COMPILATION - STOP"
170    exit
[4268]171fi
[4391]172# Move executables to modipsl/bin
[4457]173if [ -f $modipsl/modeles/XIOS/bin/xios_server.exe ] ; then
174    mv $modipsl/modeles/XIOS/bin/xios_server.exe $modipsl/bin/xios_server_${optmode}.exe
[4391]175else
176    echo "THERE IS A PROBLEM IN XIOS COMPILATION EXECUTABLE MISSING - STOP"
177    exit
178fi
[4268]179
[4391]180
[4268]181## 2.3 Compile orchidee
182cd $modipsl/modeles/ORCHIDEE
[4278]183echo; echo "NOW COMPILE ORCHIDEE"
[4408]184echo >> $outfile ; echo " NOW COMPILE ORCHIDEE"   >> $outfile 
185
[4452]186echo    ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} -arch_path $arch_path $full_flag -driver   >> $outfile 
187        ./makeorchidee_fcm -j 8 -xios -parallel $parallel -$optmode -arch ${fcm_arch} -arch_path $arch_path $full_flag -driver    >> $outfile 2>&1
[4268]188# Test if compiling finished
189if [[ $? != 0 ]] ; then
190    echo "THERE IS A PROBLEM IN ORCHIDEE COMPILATION - STOP"
191    exit
192fi
193
[4408]194
[4411]195## 2.4 Compile LMDZ for regular latlon configuration
[4278]196if [ $regular_latlon = yes ] ; then
[4268]197
[4278]198    cd $modipsl/modeles/LMDZ
199    # Compile LMDZ regular lat-lon exectuable
200    echo; echo "NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm_3d}"
[4408]201    echo >> $outfile ; echo " NOW COMPILE LMDZ REGULAR LAT-LON MODE. Resolution = ${resol_atm_3d}"   >> $outfile 
202
[4452]203    echo ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_flag gcm    >> $outfile 
204         ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_flag gcm    >> $outfile 2>&1
[4278]205    # Test if compiling finished
206    if [[ $? != 0 ]] ; then
207        echo "THERE IS A PROBLEM IN LMDZ REGULAR LATLON COMPILATION - STOP"
208        exit
209    fi
210
211    # Compile ce0l initialization program for LMDZ regular lat-lon exectuable
212    echo; echo "NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm_3d}"
[4408]213    echo >> $outfile ; echo " NOW COMPILE CE0L OF LMDZ. Resolution = ${resol_atm_3d}"   >> $outfile 
214
[4452]215    echo ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_flag ce0l    >> $outfile 
216         ./makelmdz_fcm -d ${resol_atm_3d} -p lmd -rrtm true -$optmode -mem -parallel $parallel -io xios -v orchidee2.1 -arch $fcm_arch -arch_path $arch_path -j 8 $full_flag ce0l    >> $outfile 2>&1
[4278]217    # Test if compiling finished
218    if [[ $? != 0 ]] ; then
219        echo "THERE IS A PROBLEM IN CE0L (LMDZ) REGULAR LATLON COMPILATION - STOP"
220        exit
221    fi
222
223    # Find executable suffix
224    if [ $parallel == seq ] || [ $parallel == none ] ; then
225        suffix=_${resol_atm_3d}_phylmd_seq_orch
226    else
227        suffix=_${resol_atm_3d}_phylmd_para_mem_orch
228    fi
229    echo suffix = $suffix
[4268]230   
[4278]231    # Move executables to modipsl/bin folder
232    echo "Move gcm.e and ce0l executable to modipsl/bin"
[4457]233    if [ -f $modipsl/modeles/LMDZ/bin/gcm${suffix}.e ] ;  then mv $modipsl/modeles/LMDZ/bin/gcm${suffix}.e $modipsl/bin/gcm_${resol_atm_3d}_${optmode}.e ; fi
234    if [ -f $modipsl/modeles/LMDZ/bin/ce0l${suffix}.e ] ;  then mv $modipsl/modeles/LMDZ/bin/ce0l${suffix}.e $modipsl/bin/ce0l_${resol_atm_3d}_${optmode}.e ; fi
[4268]235
236    # Write .resol file
237    cd $submitdir   
[4278]238    resol2D=$( echo ${resol_atm_3d} | awk '-Fx' '{print $1}' )$( echo ${resol_atm_3d} | awk '-Fx' '{print $2}' )
[4268]239    echo "noORCAxLMD$resol2D" >.resol
[4278]240    echo "RESOL_ATM_3D=${resol_atm_3d}" >>.resol
[4268]241fi
242
[4278]243
[4408]244echo >>$outfile ; echo "ALL COMPILING FINISHED" >> $outfile
245echo; echo "ALL COMPILING FINISHED"
[4278]246
[4409]247date
[4268]248exit
249
250
Note: See TracBrowser for help on using the repository browser.