source: BOL/script_install/install_lmdz.sh @ 3735

Last change on this file since 3735 was 3735, checked in by idelkadi, 4 years ago

Updating install_lmdz.sh in order to run with Cospv2
Cospv2 only runs with XIOS.
To run with Cospv2 :
./install_lmdz.sh -parallel mpi_omp -xios -cospv2

File size: 42.2 KB
Line 
1#!/bin/bash
2
3###########################################################################
4# Author : Laurent Fairhead et Frédéric Hourdin
5# Usage  : install_lmdz.sh -help
6#
7# bash installation script of the LMDZ model on a Linux PC.
8# the model is downloaded in the following direcory tree
9# $MODEL/modipsl/modeles/...
10# using the "modipsl" infrastructure created by the "IPSL"
11# for coupled (atmosphere/ocean/vegetation/chemistry) climate modeling
12# activities.
13# Here we only download atmospheric (LMDZ) and vegetation (ORCHIDEE)
14# components.
15#
16# The sources of the models can be found in the "modeles" directory.
17# In the present case, LMDZ5, ORCHIDEE and IOIPSL (handling of input-outputs
18# using the NetCDF library.
19#
20# The script downloads various source files (including a version of NetCDF)
21# and utilities, compiles the model, and runs a test simulation in a
22# munimal configuration.
23#
24# Prerequisites : pgf90/gfortran, ksh, wget , gunzip, tar, ...
25#
26# Modif 18/11/2011
27#    changes for option real 8.
28#      We comopile with -r8 (or equivalent) and -DNC_DOUBLE for the GCM
29#      but with -r4 for netcdf. Variable real must be set to
30#      r4 or r8 at the beginning of the script below.
31#
32###########################################################################
33
34echo install.sh DEBUT `date`
35
36set -e
37
38################################################################
39# Choice of installation options
40################################################################
41
42# A function to fetch files either locally or on the internet
43function myget { #1st and only argument should be file name
44  # Path on local computer where to look for the datafile
45  if [ -f /u/lmdz/WWW/LMDZ/pub/$1 ] ; then
46    \cp -f -p /u/lmdz/WWW/LMDZ/pub/$1 .
47  elif [ -f ~/LMDZ/pub/$1 ] ; then
48    \cp -f -p ~/LMDZ/pub/$1 .
49  else
50    wget -nv http://www.lmd.jussieu.fr/~lmdz/pub/$1
51    #dir=~/LMDZ/pub/`dirname $1` ; mkdir -p $dir ; cp -r `basename $1` $dir
52  fi
53}
54
55
56#real=r4
57real=r8
58
59# WARNING !!!! For versions before october 2009, use
60# install.v2.sh instead of install.sh
61
62#########################################################################
63# Valeur par défaut des parametres
64#########################################################################
65svn=""
66version=trunk
67getlmdzor=1
68netcdf=1   #  1 for automatic installation
69           #  0 for no installation
70           #  /.../../netcdf-4.0.1 if wanting to link with an already
71           #  compiled netcdf library (implies to check option compatibility)
72check_linux=1
73ioipsl=1
74veget=0
75orchidee_rev=""  # default revision of ORCHIDEE
76bench=1
77pclinux=1
78pcmac=0 # default: not on a Mac
79compiler=gfortran
80SCM=0
81# use the old orchidee interface without the calculation of z0h
82no_z0h_orc=1
83# orchidee_version: defined to use the CMIP6 version of ORCHIDEE
84#                   (and eventually anyother)
85#                   values=CMIP6
86orchidee_version=""
87# choose the resolution for the bench runs
88# grid_resolution= 32x24x11 or 48x36x19 for tests (test without ORCHIDEE)
89#                  96x71x19  standard configuration
90grid_resolution=144x142x79
91grid_resolution=96x95x39
92grid_resolution=48x36x19
93grid_resolution=32x32x39
94# choose the physiq version you want to test
95#physiq=NPv6.0.14splith
96physiq=
97
98## parallel can take the values none/mpi/omp/mpi_omp
99parallel=mpi_omp
100idris_acct=lmd
101parallel=none
102OPT_GPROF=""
103OPT_MAKELMDZ=""
104MODEL=""
105
106## also compile XIOS? (and more recent NetCDF/HDF5 libraries) Default=no
107with_xios="n"
108opt_makelmdz_xios=""
109
110## compile_with_fcm=1 : use makelmdz_fcm (1) or makelmdz (0)
111compile_with_fcm=1
112cosp=0 ; opt_cosp1=""
113cosp=0 ; opt_cosp2=""
114cosp=0 ; opt_cospv2=""
115opt_cosp=""
116
117# Check if on a Mac
118if [ `uname` = "Darwin" ]
119then
120    pcmac=1
121    export MAKE=make
122fi
123#echo "pcmac="$pcmac
124
125env_file=""
126
127#########################################################################
128#  Options interactives
129#########################################################################
130while (($# > 0))
131   do
132   case $1 in
133     "-h") cat <<........fin
134    $0 [ -v version ] [ -r svn_release ]
135           [ -parallel PARA ] [ -d GRID_RESOLUTION ] [ -bench 0/1 ]
136           [-name LOCAL_MODEL_NAME] [-gprof] [-opt_makelmdz]
137
138    -v       "version" like 20150828.trunk
139             see http://www.lmd.jussieu.fr/~lmdz/Distrib/LISMOI.trunk
140
141    -r       "svn_release" : either the svn release number or "last"
142   
143    -compiler gfortran|ifort|pgf90 (default: gfortran)
144
145    -parallel PARA : can be mpi_omp (mpi with openMP) or none (for sequential)
146
147    -d        GRID_RESOLUTION should be among the available benchs if -bench 1
148              among which : 48x36x19, 48x36x39
149              if wanting to run a bench simulation in addition to compilation
150              default : 48x36x19
151
152    -bench     activating the bench or not (0/1). Default 1
153
154    -name      LOCAL_MODEL_NAME : default = LMDZversion.release
155
156    -netcdf    PATH : full path to an existing installed NetCDF library
157               (without -netcdf: also download and install the NetCDF library) 
158   
159    -xios      also download and compile the XIOS library
160               (requires the NetCDF4-HDF5 library, also installed by default)
161               (requires to also have -parallel mpi_omp)
162
163    -gprof     to compile with -pg to enable profiling with gprof
164
165    -orchidee_rev "svn_release" : upgrade included ORCHIDEE model to
166               given svn release number (default: $orchidee_rev)
167               (only valid for orchidee2.0 and later)
168
169    -cosp      to compile with cosp(v1)
170 
171    -cosp2      to compile with cosp(1v2)
172
173    -cospv2      to compile with cosp(v2)
174
175    -nofcm     to compile without fcm
176
177    -SCM        install 1D version automatically
178
179    -debug      compile everything in debug mode
180
181    -opt_makelmdz     to call makelmdz or makelmdz_fcm with additional options
182
183    -physiq    to choose which physics package to use
184
185    -env_file  specify an arch.env file to overwrite the existing one
186
187    -orc_version      to chose some tagged ORCHIDEE version (CMIP6 only for the present)
188
189........fin
190     exit ;;
191     "-v") version=$2 ; shift ; shift ;;
192     "-r") svn=$2 ; shift ; shift ;;
193     "-compiler") compiler=$2
194                  case $compiler in
195                    "gfortran"|"ifort"|"pgf90") compiler=$2 ; shift ; shift ;;
196                    *) echo "Only gfortran , ifort or pgf90 for the compiler option" ; exit
197                  esac ;;
198     "-d") grid_resolution=$2 ; shift ; shift ;;
199     "-gprof") OPT_GPROF="-pg" ; shift ;;
200     "-cosp") cosp=1 ; opt_cosp1="-cosp true" ; shift ;;
201     "-cosp2") cosp2=1 ; opt_cosp2="-cosp2 true" ; shift ;;
202     "-cospv2") cospv2=1 ; opt_cospv2="-cospv2 true" ; shift ;;
203     "-orchidee_rev") orchidee_rev=$2 ; shift ; shift ;;
204     "-nofcm") compile_with_fcm=0 ; shift ;;
205     "-SCM") SCM=1 ; shift ;;
206     "-opt_makelmdz") OPT_MAKELMDZ="$2" ; shift ; shift ;;
207     "-parallel") parallel=$2
208                  case $parallel in
209                    "none"|"mpi"|"omp"|"mpi_omp") parallel=$2 ; shift ; shift ;;
210                    *) echo Only none mpi omp mpi_omp for the parallel option ; exit
211                  esac ;;
212     "-bench") bench=$2 ; shift ; shift ;;
213     "-debug") optim=-debug ; shift ;;
214     "-name") MODEL=$2 ; shift ; shift ;;
215     "-netcdf") netcdf=$2 ; shift ; shift ;;
216     "-physiq") physiq=$2 ; shift ; shift ;;
217     "-xios") with_xios="y" ; shift ;;
218     "-env_file") env_file=$2 ; shift ; shift ;;
219     "-orc_version") orchidee_version=$2 ; shift ; shift ;;
220     *) ./install_lmdz.sh -h ; exit
221   esac
222done
223
224if [ $parallel = none ] ; then sequential=1 ; else sequential=0 ; fi 
225
226#Chemin pour placer le modele
227if [ "$MODEL" = "" ] ; then MODEL=./LMDZ$version$svn$optim ; fi
228
229
230arch=local
231
232
233if [ $compiler = g95 ] ; then echo g95 is not supported anymore ; exit ; fi
234
235################################################################
236# Specificite des machines
237################################################################
238
239hostname=`hostname`
240if [ "$pclinux" = 1 ] ; then o_ins_make="-t g95" ; else o_ins_make="" ; fi
241
242case ${hostname:0:5} in
243
244   jean-)   compiler="mpiifort" ;
245            par_comp="mpiifort" ;
246            o_ins_make="-t jeanzay" ;
247            make=gmake ;
248            module purge
249            module load intel-compilers/19.0.4 ;
250            #module load intel-mpi/19.0.4 ;
251            #module load intel-mkl/19.0.4 ;
252            module load hdf5/1.10.5-mpi ;
253            module load netcdf/4.7.2-mpi ;
254            module load netcdf-fortran/4.5.2-mpi ;
255            module load subversion/1.9.7 ;
256            export NETCDF_LIBDIR=./
257            export NETCDFFORTRAN_INCDIR=./
258            export NETCDFFORTRAN_LIBDIR=./
259            arch=X64_JEANZAY ;;
260
261   cicla|camel)   compiler="gfortran" ;
262            if [ $parallel != none ] ; then
263              module load openmpi/1.6.5-gfortran ;
264              root_mpi=$MPI_HOME ;
265              path_mpi=$root_mpi/bin ;
266              par_comp=${path_mpi}/mpif90 ;
267              mpirun=${path_mpi}/mpirun ;
268            fi ;
269            arch=local  ;
270            make=make ;
271            o_ins_make="-t g95" ;;
272           
273   *)       if [ $parallel = none -o -f /usr/bin/mpif90 ] ; then
274                path_mpi=`which mpif90 | sed -e s:/mpif90::` ;
275                if [ -d /usr/lib64/openmpi ] ; then
276                  root_mpi="/usr/lib64/openmpi"
277                else
278                  root_mpi="/usr"
279                fi
280            # For Scientifique Linux with gfortran at LMD :
281            elif [ -f /usr/lib64/openmpi/1.4.5-gfortran/bin/mpif90 -a $compiler = "gfortran" ] ; then
282                path_mpi=/usr/lib64/openmpi/1.4.5-gfortran/bin ;
283                root_mpi=/usr/lib64/openmpi/1.4.5-gfortran ;
284                export LD_LIBRARY_PATH=${root_mpi}/lib:$LD_LIBRARY_PATH
285            # For Scientifique Linux with ifort at LMD :
286            elif [ -f /usr/lib64/openmpi/1.4.5-ifort/bin/mpif90 -a $compiler = "ifort" ] ; then
287                path_mpi=/usr/lib64/openmpi/1.4.5-ifort/bin ;
288                root_mpi=/usr/lib64/openmpi/1.4.5-ifort ;
289                export LD_LIBRARY_PATH=${root_mpi}/lib:$LD_LIBRARY_PATH
290            # For Scientifique Linux with pgf90 at LMD :
291            elif [ -f /usr/lib64/openmpi/1.4.5-ifort/bin/mpif90 -a $compiler = "pgf90" ] ; then
292                path_mpi=/usr/lib64/openmpi/1.4.5-pgf/bin ;
293                root_mpi=/usr/lib64/openmpi/1.4.5-pgf ;
294                export LD_LIBRARY_PATH=${root_mpi}/lib:$LD_LIBRARY_PATH
295            else
296               echo "Cannot find mpif90" ;
297               if [ $parallel = none ] ; then exit ; fi ;
298            fi ;
299            par_comp=${path_mpi}/mpif90 ;
300            mpirun=${path_mpi}/mpirun ;
301            arch=local  ;
302            make=make ;
303            o_ins_make="-t g95"
304esac
305
306# Flags for parallelism:
307if [ $parallel != none ] ; then
308  # MPI_LD are the flags needed for linking with MPI
309  MPI_LD="-L${root_mpi}/lib -lmpi"
310  if [ "$compiler" = "gfortran" ] ; then
311    # MPI_FLAGS are the flags needed for compilation with MPI
312    MPI_FLAGS="-fcray-pointer"
313    # OMP_FLAGS are the flags needed for compilation with OpenMP
314    OMP_FLAGS="-fopenmp -fcray-pointer"
315    # OMP_LD are the flags needed for linking with OpenMP
316    OMP_LD="-fopenmp"
317  elif [ "$compiler" = "ifort" ] ; then
318    MPI_FLAGS=""
319    OMP_FLAGS="-openmp"
320    OMP_LD="-openmp"
321  else # pgf90
322    MPI_FLAGS=""
323    OMP_FLAGS="-mp"
324    OMP_LD="-mp"
325  fi
326fi
327
328#####################################################################
329# Test for old gfortran compilers
330# If the compiler is too old (older than 4.3.x) we test if the
331# temporary gfortran44 patch is available on the computer in which
332# case the compiler is changed from gfortran to gfortran44
333# Must be aware than parallelism can not be activated in this case
334#####################################################################
335
336if [ "$compiler" = "gfortran" ] ; then
337   gfortran=gfortran
338   gfortranv=`gfortran --version | \
339   head -1 | awk ' { print $NF } ' | awk -F. ' { print $1 * 10 + $2 } '`
340   if [ $gfortranv -le 43 ] ; then
341       echo ERROR : Your gfortran compiler is too old
342       echo 'Please choose a new one (ifort) and change the line'
343       echo compiler=xxx
344       echo in the install.sh script and rerun it
345       if [ `which gfortran44 | wc -w` -ne 0 ] ; then
346          gfortran=gfortran44
347       else
348          echo gfotran trop vieux ; exit
349       fi
350   fi
351   compiler=$gfortran
352fi
353#####################################################################
354
355## if also compiling XIOS, parallel must be mpi_omp
356if [ "$with_xios" = "y" -a "$parallel" != "mpi_omp" ] ; then 
357  echo "Error, you must set -parallel mpi_omp if you want XIOS"
358  exit
359fi
360
361## We can't compile with -cosp and -cosp2
362if [ "$cosp" = 1 -a "$cosp2" = 1 ] ; then
363   echo "Error, you can't run with cosp1 and cosp2"
364   exit
365fi
366if [ "$cosp" = 1 ] ; then
367   opt_cosp="$opt_cosp1"
368fi
369if [ "$cosp2" = 1 ] ; then
370   opt_cosp="$opt_cosp2"
371fi
372if [ "$cospv2" = 1 ] ; then
373   opt_cosp="$opt_cospv2"
374fi
375
376## if also compiling XIOS, cosp must be activate to define axis in *.xml
377if [ "$with_xios" = "y" ] ; then
378  if [ "$cosp" = 0 -a  "$cosp2" = 0 -a "$cospv2" = 0 ] ; then
379   echo "Error, you must use -cosp option when compiling with -xios"
380   echo "You need to call Cosp in physical first step to define axis variables"
381   exit
382  fi
383  opt_makelmdz_xios="-io xios"
384fi
385
386if [ "$cospv2" = 1 -a "$with_xios" = "n" ] ; then
387  echo "Error, Cospv2 cannot run without Xios"
388  exit
389fi
390
391echo '################################################################'
392echo  Choix des options de compilation
393echo '################################################################'
394
395export FC=$compiler
396export F90=$compiler
397export F77=$compiler
398export CPPFLAGS=
399OPTIMNC=$OPTIM
400BASE_LD="$OPT_GPROF"
401OPTPREC="$OPT_GPROF"
402ARFLAGS="rs" ; if [ -f /etc/issue ] ; then if [ "`grep -i ubuntu /etc/issue`" != "" ] ; then if [ "`grep -i ubuntu /etc/issue | awk ' { print $2 } ' | cut -d. -f1`" -ge 16 ] ; then ARFLAGS="rU" ; fi ; fi ; fi
403
404
405
406if [ "$compiler" = "$gfortran" ] ; then
407   OPTIM='-O3'
408   OPTDEB="-g3 -Wall -fbounds-check -ffpe-trap=invalid,zero,overflow -O0 -fstack-protector-all -fbacktrace -finit-real=nan"
409   OPTDEV="-Wall -fbounds-check"
410   fmod='I '
411   OPTPREC="$OPTPREC -cpp -ffree-line-length-0"
412   if [ $real = r8 ] ; then OPTPREC="$OPTPREC -fdefault-real-8 -DNC_DOUBLE" ; fi
413   export F90FLAGS=" -ffree-form $OPTIMNC"
414   export FFLAGS=" $OPTIMNC"
415   export CC=gcc
416   export CXX=g++
417   export fpp_flags="-P -C -traditional -ffreestanding"
418
419elif [ $compiler = mpif90 ] ; then
420   OPTIM='-O3'
421   OPTDEB="-g3 -Wall -fbounds-check -ffpe-trap=invalid,zero,overflow -O0 -fstack-protector-all"
422   OPTDEV="-Wall -fbounds-check"
423   BASE_LD="$BASE_LD -lblas"
424   fmod='I '
425   if [ $real = r8 ] ; then OPTPREC="$OPTPREC -fdefault-real-8 -DNC_DOUBLE -fcray-pointer" ; fi
426   export F90FLAGS=" -ffree-form $OPTIMNC"
427   export FFLAGS=" $OPTIMNC"
428   export CC=gcc
429   export CXX=g++
430
431elif [ $compiler = pgf90 ] ; then
432   OPTIM='-O2 -Mipa -Munroll -Mnoframe -Mautoinline -Mcache_align'
433   OPTDEB='-g -Mdclchk -Mbounds -Mchkfpstk -Mchkptr -Minform=inform -Mstandard -Ktrap=fp -traceback'
434   OPTDEV='-g -Mbounds -Ktrap=fp -traceback'
435   fmod='module '
436   if [ $real = r8 ] ; then OPTPREC="$OPTPREC -r8 -DNC_DOUBLE" ; fi
437   export CPPFLAGS="-DpgiFortran"
438   export CC=pgcc
439   export CFLAGS="-O2 -Msignextend"
440   export CXX=pgCC
441   export CXXFLAGS="-O2 -Msignextend"
442   export FFLAGS="-O2 $OPTIMNC"
443   export F90FLAGS="-O2 $OPTIMNC"
444   compile_with_fcm=1
445
446elif [ $compiler = ifort ] ; then
447   OPTIM="-O2 -fp-model strict -ip -align all "
448   OPTDEV="-p -g -O2 -traceback -fp-stack-check -ftrapuv -check"
449   OPTDEB="-g -no-ftz -traceback -ftrapuv -fp-stack-check -check"
450   fmod='module '
451   if [ $real = r8 ] ; then OPTPREC="$OPTPREC -real-size 64 -DNC_DOUBLE" ; fi
452   export CPP="icc -E"
453   export FFLAGS="-O2 -ip -fpic -mcmodel=large"
454   export FCFLAGS="-O2 -ip -fpic -mcmodel=large"
455   export CC=icc
456   export CFLAGS="-O2 -ip -fpic -mcmodel=large"
457   export CXX=icpc
458   export CXXFLAGS="-O2 -ip -fpic -mcmodel=large"
459   export fpp_flags="-P -traditional"
460   # Pourquoi forcer la compilation fcm. Marche mieux sans
461   #compile_with_fcm=1
462
463elif [ $compiler = mpiifort ] ; then
464   echo on ne fait rien la
465   # Pourquoi forcer la compilation fcm. Marche mieux sans
466   #compile_with_fcm=1
467
468else
469   echo unexpected compiler $compiler ; exit
470fi
471
472OPTIMGCM="$OPTIM $OPTPREC"
473
474hostname=`hostname`
475
476##########################################################################
477# If installing on know machines such as IBM x3750 (Ada)
478# at IDRIS, don't check for available software and don"t install netcdf
479if [ ${hostname:0:5} = jean- ] ; then
480  netcdf=0 # no need to recompile netcdf, alreday available
481  check_linux=0
482  pclinux=0
483  ioipsl=0 # no need to recompile ioipsl, already available
484  #netcdf="/smplocal/pub/NetCDF/4.1.3"
485  compiler="mpiifort"
486  fmod='module '
487  if [ $real = r8 ] ; then OPTPREC="$OPTPREC -i4 -r8 -DNC_DOUBLE" ; fi
488  OPTIM="-auto -align all -O2 -fp-model strict -xHost "
489  OPTIMGCM="$OPTIM $OPTPREC"
490fi
491##########################################################################
492
493
494
495mkdir -p $MODEL
496echo $MODEL
497MODEL=`( cd $MODEL ; pwd )` # to get absolute path, if necessary
498
499
500
501# Option -fendian=big is only to be used with ARPEGE1D.
502# The -r8 should probably be avoided if running on 32 bit machines
503# Option r8 is not mandatory and generates larger executables.
504# It is however mandatory if using ARPEGE1D
505# Better optimization options might be a better choice (e.g. -O3)
506
507
508echo '################################################################'
509if [ "$check_linux" = 1 ] ; then
510echo   Check if required software is available
511echo '################################################################'
512
513#### Ehouarn: test if ksh and/or bash are available
514use_shell="ksh" # default: use ksh
515if [ "`which ksh`" = "" ] ; then
516  echo "no ksh ... we will use bash"
517  use_shell="bash"
518  if [ "`which bash`" = "" ] ; then
519    echo "ksh (or bash) needed!! Install it!"
520  fi
521fi
522
523
524for logiciel in wget tar gzip make $compiler gcc ; do
525if [ "`which $logiciel`" = "" ] ; then
526echo You must first install $logiciel on your system
527exit
528fi
529done
530
531if [ $pclinux = 1 ] ; then
532cd $MODEL
533cat <<eod > tt.f90
534print*,'coucou'
535end
536eod
537$compiler tt.f90 -o a.out
538./a.out >| tt
539if [ "`cat tt | sed -e 's/ //g' `" != "coucou" ] ; then
540echo problem installing with compiler $compiler ; exit ; fi
541\rm tt a.out tt.f90
542fi
543fi
544
545###########################################################################
546if [ $getlmdzor = 1 ] ; then
547echo '##########################################################'
548echo  Download a slightly modified version of  LMDZ
549echo '##########################################################'
550cd $MODEL
551myget src/modipsl.$version.tar.gz
552echo install.sh wget_OK `date`
553gunzip modipsl.$version.tar.gz
554tar xvf modipsl.$version.tar
555\rm modipsl.$version.tar
556
557fi
558
559echo OK1
560
561if [ $netcdf = 1 ] ; then
562cd $MODEL
563netcdflog=`pwd`/netcdf.log
564echo '##########################################################'
565echo Compiling the Netcdf library
566echo '##########################################################'
567echo log file : $netcdflog
568if [ "$with_xios" = "n" ] ; then
569  # keep it simple
570  #wget http://www.lmd.jussieu.fr/~lmdz/Distrib/netcdf-4.0.1.tar.gz
571  myget import/netcdf-4.0.1.tar.gz
572  gunzip netcdf-4.0.1.tar.gz
573  tar xvf netcdf-4.0.1.tar
574  \rm -f netcdf-4.0.1.tar
575
576  cd netcdf-4.0.1
577
578  # seds to possibly use gfortran44 obsolete nowdays (Ehouarn: 10/2017)
579  #sed -e 's/gfortran/'$gfortran'/g' configure >| tmp ; mv -f tmp configure ; chmod +x configure
580  localdir=`pwd -P`
581  ./configure --prefix=$localdir --enable-shared --disable-cxx
582  #sed -e 's/gfortran/'$gfortran'/g' Makefile >| tmp ; mv -f tmp Makefile
583  $make check > $netcdflog 2>&1
584  $make install >> $netcdflog 2>&1
585else
586  # download and compile hdf5 and netcdf, etc. using the install_netcdf4_hdf5.bash script
587  #wget http://www.lmd.jussieu.fr/~lmdz/Distrib/install_netcdf4_hdf5.bash
588  myget import/install_netcdf4_hdf5.bash
589  chmod u=rwx install_netcdf4_hdf5.bash
590  if [ "$compiler" = "gfortran" ] ; then
591  ./install_netcdf4_hdf5.bash -prefix $MODEL/netcdf4_hdf5 -CC gcc -FC gfortran -CXX g++ -MPI $root_mpi  > $netcdflog 2>&1
592  elif [ "$compiler" = "ifort" ] ; then
593  ./install_netcdf4_hdf5.bash -prefix $MODEL/netcdf4_hdf5 -CC icc -FC ifort -CXX icpc -MPI $root_mpi  > $netcdflog 2>&1
594  elif [ "$compiler" = "pgf90" ] ; then
595  ./install_netcdf4_hdf5.bash -prefix $MODEL/netcdf4_hdf5 -CC pgcc -FC pgf90 -CXX pgCC -MPI $root_mpi  > $netcdflog 2>&1
596  else
597    echo "unexpected compiler $compiler" ; exit
598  fi
599fi  # of if [ "$with_xios" = "n" ]
600echo install.sh netcdf_OK `date`
601fi # of if [ $netcdf = 1 ]
602
603
604#=======================================================================================
605echo OK2 ioipsl=$ioipsl
606echo '##########################################################'
607echo 'Installing MODIPSL, the installation package manager for the '
608echo 'IPSL models and tools'
609echo '##########################################################'
610
611if [ $netcdf = 0 -o $netcdf = 1 ] ; then
612  if [ "$with_xios" = "y" ] ; then
613  ncdfdir=$MODEL/netcdf4_hdf5
614  else
615  ncdfdir=$MODEL/netcdf-4.0.1
616  fi
617else
618  ncdfdir=$netcdf
619fi
620
621if [ $ioipsl = 1 ] ; then
622  cd $MODEL/modipsl
623  \rm -rf lib/*
624
625  cd util
626
627  cp AA_make.gdef AA_make.orig
628  F_C="$compiler -c " ; if [ "$compiler" = "$gfortran" -o "$compiler" = "mpif90" ] ; then F_C="$compiler -c -cpp " ; fi
629  if [ "$compiler" = "pgf90" ] ; then F_C="$compiler -c -Mpreprocess" ; fi
630  sed -e 's/^\#.*.g95.*.\#.*.$/\#/' AA_make.gdef > tmp
631  sed -e "s:F_L = g95:F_L = $compiler:" -e "s:F_C = g95 -c -cpp:F_C = $F_C": \
632  -e 's/g95.*.w_w.*.(F_D)/g95      w_w = '"$OPTIMGCM"'/' \
633  -e 's:g95.*.NCDF_INC.*.$:g95      NCDF_INC= '"$ncdfdir"'/include:' \
634  -e 's:g95.*.NCDF_LIB.*.$:g95      NCDF_LIB= -L'"$ncdfdir"'/lib -lnetcdff -lnetcdf:' \
635  -e 's:g95      L_O =:g95      L_O = -Wl,-rpath='"$ncdfdir"'/lib:' \
636  -e "s:-fmod=:-$fmod:" -e 's/-fno-second-underscore//' \
637  -e 's:#-Q- g95      M_K = gmake:#-Q- g95      M_K = make:' \
638  tmp >| AA_make.gdef
639
640  if [ $pcmac == 1 ]
641  then
642      cp AA_make.gdef tmp
643      sed -e 's/rpath=/rpath,/g' tmp > AA_make.gdef
644  fi
645 
646
647# We use lines for g95 even for the other compilers to run ins_make
648  if [ "$use_shell" = "ksh" ] ; then
649    ./ins_make $o_ins_make
650  else # bash
651    sed -e s:/bin/ksh:/bin/bash:g ins_make > ins_make.bash
652    #if [ "`grep ada AA_make.gdef`" = "" ] ; then # Bidouille pour compiler sur ada des vieux modipsl.tar
653    #    \cp -f ~rdzt401/bin/AA_make.gdef .
654    #fi
655    if [ "`grep jeanzay AA_make.gdef`" = "" ] ; then # Bidouille pour compiler sur ada des vieux modipsl.tar
656        echo 'Warning jean-zay not in AA_make.gdef'
657        echo 'Think about updating'
658        exit 1
659    fi
660   
661    chmod u=rwx ins_make.bash
662    ./ins_make.bash $o_ins_make
663  fi # of if [ "$use_shell" = "ksh" ]
664
665#=======================================================================================
666  cd $MODEL/modipsl/modeles/IOIPSL/src
667  ioipsllog=`pwd`/ioipsl.log
668  echo '##########################################################'
669  echo 'Compiling IOIPSL, the interface library with Netcdf'
670  echo '##########################################################'
671  echo log file : $ioipsllog
672
673  if [ "$use_shell" = "bash" ] ; then
674    cp Makefile Makefile.ksh
675    sed -e s:/bin/ksh:/bin/bash:g Makefile.ksh > Makefile
676  fi
677# if [ "$pclinux" = 1 ] ; then
678    # Build IOIPSL modules and library
679    $make clean
680    $make > $ioipsllog 2>&1
681    if [ "$compiler" = "$gfortran" -o "$compiler" = "mpif90" ] ; then # copy module files to lib
682      cp -f *.mod ../../../lib
683    fi
684    # Build IOIPSL tools (ie: "rebuild", if present)
685    if [ -f $MODEL/modipsl/modeles/IOIPSL/tools/rebuild ] ; then
686      cd $MODEL/modipsl/modeles/IOIPSL/tools
687      # adapt Makefile & rebuild script if in bash
688      if [ "$use_shell" = "bash" ] ; then
689        cp Makefile Makefile.ksh
690        sed -e s:/bin/ksh:/bin/bash:g Makefile.ksh > Makefile
691        cp rebuild rebuild.ksh
692        sed -e 's:/bin/ksh:/bin/bash:g' \
693            -e 's:print -u2:echo:g' \
694            -e 's:print:echo:g' rebuild.ksh > rebuild
695      fi
696      $make clean
697      $make > $ioipsllog 2>&1
698    fi
699# fi # of if [ "$pclinux" = 1 ]
700
701else # of if [ $ioipsl = 1 ]
702  if [ ${hostname:0:5} = jean- ] ; then
703     cd $MODEL/modipsl
704     cd util
705       if [ "`grep jeanzay AA_make.gdef`" = "" ] ; then
706        echo 'Warning jean-zay not in AA_make.gdef'
707        echo 'Think about updating'
708        exit 1
709       fi
710       ./ins_make $o_ins_make
711# Compile IOIPSL on jean-zay
712       cd $MODEL/modipsl/modeles/IOIPSL/src
713       gmake > ioipsl.log
714       cd $MODEL/modipsl/modeles/IOIPSL/tools
715       gmake > ioipsl.log
716   
717  fi
718  echo install.sh ioipsl_OK `date`
719fi # of if [ $ioipsl = 1 ]
720# Saving ioipsl lib for possible parallel compile
721  cd $MODEL/modipsl
722  tar cf ioipsl.tar lib/ bin/
723
724#===========================================================================
725if [ "$with_xios" = "y" ] ; then
726  echo '##########################################################'
727  echo 'Compiling XIOS'
728  echo '##########################################################'
729  cd $MODEL/modipsl/modeles
730  xioslog=`pwd`/xios.log
731  echo "log file: $xioslog"
732  #wget http://www.lmd.jussieu.fr/~lmdz/Distrib/install_xios.bash
733  myget import/install_xios.bash
734  chmod u=rwx install_xios.bash
735   if [ ${hostname:0:5} = jean- ] ; then
736    echo 'Need to work on install_xios implementation for jean-zay'
737    exit
738   else
739     ./install_xios.bash -prefix $MODEL/modipsl/modeles \
740                      -netcdf ${ncdfdir} -hdf5 ${ncdfdir} \
741                      -MPI $root_mpi -arch $arch > xios.log 2>&1
742   fi
743   if [ -f XIOS/lib/libxios.a ] ; then
744     echo "OK, XIOS library successfully generated"
745   fi
746fi
747
748#============================================================================
749veget_version=false
750if [ "$veget" = 1 ] ; then
751  cd $MODEL/modipsl/modeles/ORCHIDEE
752  if [ "$orchidee_version" = "CMIP6" ] ; then
753    set +e
754    svn upgrade
755    svn switch -r 5661 --accept theirs-full svn://forge.ipsl.jussieu.fr/orchidee/tags/ORCHIDEE_2_0/ORCHIDEE
756    orchidee_rev=5661
757    veget_version=orchidee2.0
758    no_z0h_orc=0
759    set -e
760  fi
761  # Correctif suite debug Jean-Zay
762  sed -i -e 's/9010  FORMAT(A52,F17.14)/9010  FORMAT(A52,F20.14)/' src_stomate/stomate.f90
763  opt_orc="-prod" ; if [ "$optim" = "-debug" ] ; then opt_orc="-debug" ; fi
764
765  orchideelog=`pwd`/orchidee.log
766  echo '########################################################'
767  echo 'Compiling ORCHIDEE, the continental surfaces model '
768  echo '########################################################'
769  echo log file : $orchideelog
770  export ORCHPATH=`pwd`
771  if [ -d tools ] ; then
772###################################################################
773# Pour les experts qui voudraient changer de version d'orchidee.
774# Attention : necessite d'avoir le password pour orchidee
775      set +e ; svn upgrade ; set -e
776      if [ "$orchidee_rev" != "" ] ; then
777          # test qu'on est sur la bonne branche pour faire le update
778          set +e
779          svn log -r $orchidee_rev | grep  $orchidee_rev
780          if [  $? -gt 0 ] ; then
781              echo 'Cannot update ORCHIDEE as not on the right branch for ORCHIDEE'
782              exit
783          fi
784          set -e
785          set +e ; svn update -r $orchidee_rev ; set -e
786      fi
787      # Correctif suite debug Jean-Zay
788      if [ -f src_global/time.f90 ] ; then sed -i -e 's/CALL tlen2itau/\!CALL tlen2itau/' src_global/time.f90 ; fi
789###################################################################
790     if [ "$veget_version" == "false" ] ; then veget_version=orchidee2.0 ; fi
791      cd arch
792      sed -e s:"%COMPILER        .*.$":"%COMPILER            $compiler":1 \
793     -e s:"%LINK            .*.$":"%LINK                $compiler":1 \
794     -e s:"%FPP_FLAGS       .*.$":"%FPP_FLAGS           $fpp_flags":1 \
795     -e s:"%PROD_FFLAGS     .*.$":"%PROD_FFLAGS         $OPTIM":1 \
796     -e s:"%DEV_FFLAGS      .*.$":"%DEV_FFLAGS          $OPTDEV":1 \
797     -e s:"%DEBUG_FFLAGS    .*.$":"%DEBUG_FFLAGS        $OPTDEB":1 \
798     -e s:"%BASE_FFLAGS     .*.$":"%BASE_FFLAGS         $OPTPREC":1 \
799     -e s:"%BASE_LD         .*.$":"%BASE_LD             $BASE_LD":1 \
800     -e s:"%ARFLAGS         .*.$":"%ARFLAGS             $ARFLAGS":1 \
801     arch-gfortran.fcm > arch-local.fcm
802     echo "NETCDF_LIBDIR=\"-L${ncdfdir}/lib -lnetcdff -lnetcdf\"" > arch-local.path
803     echo "NETCDF_INCDIR=${ncdfdir}/include" >> arch-local.path
804     echo "IOIPSL_INCDIR=$ORCHPATH/../../lib" >> arch-local.path
805     echo "IOIPSL_LIBDIR=$ORCHPATH/../../lib" >> arch-local.path
806     echo 'XIOS_INCDIR=${ORCHDIR}/../XIOS/inc' >> arch-local.path
807     echo 'XIOS_LIBDIR="${ORCHDIR}/../XIOS/lib -lxios"' >> arch-local.path
808     cd ../
809# compiling ORCHIDEE sequential mode
810     ./makeorchidee_fcm -j 8 -noxios $opt_orc -parallel none -arch $arch > $orchideelog 2>&1
811     echo ./makeorchidee_fcm -j 8 -noxios $opt_orc -parallel none -arch $arch
812     echo End of the first compilation of orchidee ; pwd
813  else
814     if [ -d src_parallel ] ; then
815       liste_src="parallel parameters global stomate sechiba driver"
816       if [ "$veget_version" == "false" ] ; then veget_version=orchidee2.0 ; fi
817     else
818       # Obsolete, for ORCHIDEE_beton only
819       liste_src="parameters stomate sechiba "
820       # A trick to compile ORCHIDEE depending on if we are using real*4 or real*8
821       cd src_parameters ; \cp reqdprec.$real reqdprec.f90 ; cd ..
822       if [ "$veget_version" == "false" ] ; then veget_version=orchidee1.9 ; fi
823     fi
824     for d in $liste_src ; do src_d=src_$d
825        echo src_d $src_d
826        echo ls ; ls
827        if [ ! -d $src_d ] ; then echo Problem orchidee : no $src_d ; exit ; fi
828        cd $src_d ; \rm -f *.mod make ; $make clean
829        $make > $orchideelog 2>&1 ; if [ "$compiler" = "$gfortran" -o "$compiler" = "mpif90" ] ; then cp -f *.mod ../../../lib ; fi
830        cd ..
831     done
832  fi
833  echo install.sh orchidee_OK `date`
834fi # of if [ "$veget" = 1 ]
835
836
837#============================================================================
838# Ehouarn: it may be directory LMDZ4 or LMDZ5 depending on tar file...
839if [ -d $MODEL/modipsl/modeles/LMD* ] ; then
840  echo '##########################################################'
841  echo 'Compiling LMDZ'
842  echo '##########################################################'
843  cd $MODEL/modipsl/modeles/LMD*
844  LMDZPATH=`pwd`
845else
846  echo "ERROR: No LMD* directory !!!"
847  exit
848fi
849
850###########################################################
851# For those who want to use fcm to compile via :
852#  makelmdz_fcm -arch local .....
853############################################################
854
855if [ "$pclinux" = "1" ] ; then
856
857# create local 'arch' files (if on Linux PC):
858cd arch
859# arch-local.path file
860echo "NETCDF_LIBDIR=\"-L${ncdfdir}/lib -lnetcdff -lnetcdf\"" > arch-local.path
861echo "NETCDF_INCDIR=-I${ncdfdir}/include" >> arch-local.path
862echo 'IOIPSL_INCDIR=$LMDGCM/../../lib' >> arch-local.path
863echo 'IOIPSL_LIBDIR=$LMDGCM/../../lib' >> arch-local.path
864echo 'XIOS_INCDIR=$LMDGCM/../XIOS/inc' >> arch-local.path
865echo 'XIOS_LIBDIR=$LMDGCM/../XIOS/lib' >> arch-local.path
866echo 'ORCH_INCDIR=$LMDGCM/../../lib' >> arch-local.path
867echo 'ORCH_LIBDIR=$LMDGCM/../../lib' >> arch-local.path
868
869if [ $pcmac == 1 ] ; then
870    BASE_LD="$BASE_LD -Wl,-rpath,${ncdfdir}/lib"
871else
872    BASE_LD="$BASE_LD -Wl,-rpath=${ncdfdir}/lib"
873fi
874# Arch-local.fcm file (adapted from arch-linux-32bit.fcm)
875
876if [ $real = r8 ] ; then FPP_DEF=NC_DOUBLE ; else FPP_DEF="" ; fi
877sed -e s:"%COMPILER        .*.$":"%COMPILER            $compiler":1 \
878    -e s:"%LINK            .*.$":"%LINK                $compiler":1 \
879    -e s:"%PROD_FFLAGS     .*.$":"%PROD_FFLAGS         $OPTIM":1 \
880    -e s:"%DEV_FFLAGS      .*.$":"%DEV_FFLAGS          $OPTDEV":1 \
881    -e s:"%DEBUG_FFLAGS    .*.$":"%DEBUG_FFLAGS        $OPTDEB":1 \
882    -e s:"%BASE_FFLAGS     .*.$":"%BASE_FFLAGS         $OPTPREC":1 \
883    -e s:"%FPP_DEF         .*.$":"%FPP_DEF             $FPP_DEF":1 \
884    -e s:"%BASE_LD         .*.$":"%BASE_LD             $BASE_LD":1 \
885    -e s:"%ARFLAGS         .*.$":"%ARFLAGS             $ARFLAGS":1 \
886    arch-linux-32bit.fcm > arch-local.fcm
887
888cd ..
889### Adapt "bld.cfg" (add the shell):
890whereisthatshell=$(which ${use_shell})
891echo "bld::tool::SHELL   $whereisthatshell" >> bld.cfg
892
893fi # of if [ "$pclinux" = 1 ]
894
895
896cd $MODEL/modipsl/modeles/LMDZ*
897lmdzlog=`pwd`/lmdz.log
898
899##################################################################
900# Possibly update LMDZ if a specific svn release is requested
901##################################################################
902
903set +e ; svn upgrade ; set -e
904if [ "$svn" = "last" ] ; then svnopt="" ; else svnopt="-r $svn" ; fi
905if [ "$svn" != "" ] ; then svn update $svnopt ; fi
906
907echo '##################################################################'
908echo Compile LMDZ
909echo '##################################################################'
910echo log file : $lmdzlog
911
912if [ "$env_file" != "" ] ; then mv arch/arch-${arch}.env arch/arch-${arch}.orig ; \cp -f $env_file arch/arch-${arch}.env ; fi
913
914echo install.sh avant_compilation `date`
915if [ $compile_with_fcm = 1 ] ; then makelmdz="makelmdz_fcm $optim -arch $arch -j 8 " ; else makelmdz="makelmdz $optim -arch $arch" ; fi
916
917# use the orchidee interface that has no z0h
918if [ "$no_z0h_orc" = 1 ] ; then
919veget_version="$veget_version -cpp ORCHIDEE_NOZ0H"
920fi
921
922# sequential compilation and bench
923if [ "$sequential" = 1 ] ; then
924echo "./$makelmdz $optim $OPT_MAKELMDZ $optim -rrtm true $opt_cosp -d ${grid_resolution} -v $veget_version gcm " >> compile.sh
925chmod +x ./compile.sh
926if [ $bench != 0 ] ; then ./compile.sh > $lmdzlog 2>&1 ; fi
927echo install.sh apres_compilation `date`
928
929
930fi # fin sequential
931
932
933
934# compiling in parallel mode
935if [ $parallel != "none" ] ; then
936  echo '##########################################################'
937  echo ' Parallel compile '
938  echo '##########################################################'
939  # saving the sequential libs and binaries
940  cd $MODEL/modipsl
941  tar cf sequential.tar bin/ lib/
942  \rm -rf bin/ lib/
943  tar xf ioipsl.tar
944  #
945  # Orchidee
946  #
947  cd $ORCHPATH
948  if [ -d src_parallel -a $veget = 1 ] ; then
949     cd arch
950     sed  \
951     -e s:"%COMPILER.*.$":"%COMPILER            $par_comp":1 \
952     -e s:"%LINK.*.$":"%LINK                $par_comp":1 \
953     -e s:"%MPI_FFLAG.*.$":"%MPI_FFLAGS          $MPI_FLAGS":1 \
954     -e s:"%OMP_FFLAG.*.$":"%OMP_FFLAGS          $OMP_FLAGS":1 \
955     -e s:"%MPI_LD.*.$":"%MPI_LD              $MPI_LD":1 \
956     -e s:"%OMP_LD.*.$":"%OMP_LD              $OMP_LD":1 \
957     arch-local.fcm > tmp.fcm
958
959     mv tmp.fcm arch-local.fcm
960     cd ../
961     echo compiling ORCHIDEE parallel mode
962     echo logfile $orchideelog
963     ./makeorchidee_fcm -j 8 -clean -noxios $opt_orc -parallel $parallel -arch $arch > $orchideelog 2>&1
964     ./makeorchidee_fcm -j 8 -noxios $opt_orc -parallel $parallel -arch $arch >> $orchideelog 2>&1
965     echo ./makeorchidee_fcm -j 8 -clean -noxios $opt_orc -parallel $parallel -arch $arch
966     echo ./makeorchidee_fcm -j 8 -noxios $opt_orc -parallel $parallel -arch $arch
967  elif [ $veget = 1 ] ; then
968    echo '##########################################################'
969    echo ' Orchidee version too old                                 '
970    echo ' Please update to new version                             '
971    echo '##########################################################'
972    exit
973  fi # of if [ -d src_parallel ]
974  # LMDZ
975  cd $LMDZPATH
976  if [ $arch = local ] ; then
977    cd arch
978    sed -e s:"%COMPILER.*.$":"%COMPILER            $par_comp":1 \
979    -e s:"%LINK.*.$":"%LINK                $par_comp":1 \
980    -e s:"%MPI_FFLAG.*.$":"%MPI_FFLAGS          $MPI_FLAGS":1 \
981    -e s:"%OMP_FFLAG.*.$":"%OMP_FFLAGS          $OMP_FLAGS":1 \
982    -e s:"%ARFLAGS.*.$":"%ARFLAGS          $ARFLAGS":1 \
983    -e s@"%BASE_LD.*.$"@"%BASE_LD             -Wl,-rpath=${root_mpi}/lib:${ncdfdir}/lib"@1 \
984    -e s:"%MPI_LD.*.$":"%MPI_LD              $MPI_LD":1 \
985    -e s:"%OMP_LD.*.$":"%OMP_LD              $OMP_LD":1 \
986    arch-local.fcm > tmp.fcm
987    mv tmp.fcm arch-local.fcm
988    cd ../
989  fi
990  rm -f compile.sh
991  echo resol=${grid_resolution} >> compile.sh
992  echo ./$makelmdz $optim $OPT_MAKELMDZ -rrtm true $opt_cosp $opt_makelmdz_xios -d \$resol -v $veget_version -mem -parallel $parallel gcm >> compile.sh
993  echo ./$makelmdz $optim $OPT_MAKELMDZ -rrtm true $opt_cosp $opt_makelmdz_xios -d \$resol -v $veget_version -mem -parallel $parallel gcm
994  chmod +x ./compile.sh
995  if [ $bench != 0 ] ; then ./compile.sh > $lmdzlog 2>&1 ; fi
996
997  echo "Compilation finished"
998 
999fi # of if [ $parallel != "none" ]
1000
1001#echo LLLLLLLLLLLLLLLLLLLLLLLLLLL
1002if [ "$gfortran" = "gfortran44" ] ; then
1003    echo Your gfortran compiler was too old so that the model was automatically
1004    echo compiled with gfortran44 instead. It can not be used in parallel mode.
1005    echo You can change the compiler at the begining of the install.sh
1006    echo script and reinstall.
1007fi
1008
1009##################################################################
1010# Verification du succes de la compilation
1011##################################################################
1012
1013# Recherche de l'executable dont le nom a change au fil du temps ...
1014gcm=""
1015for exe in gcm.e bin/gcm_${grid_resolution}_phylmd_seq_orch.e bin/gcm_${grid_resolution}_phylmd_seq.e bin/gcm_${grid_resolution}_phylmd_para_mem.e bin/gcm_${grid_resolution}_phylmd_para_mem_orch.e ; do
1016   if [ -f $exe ] ; then gcm=$exe ; fi
1017done
1018
1019if [ "$gcm" = "" ] ; then
1020  if [ $bench != 0 ] ; then
1021    echo 'Compilation failed !! Cannot run the benchmark;'
1022    exit
1023  else
1024    echo 'Compilation not done (only done when bench=1)'
1025  fi
1026else
1027   echo '##########################################################'
1028   echo 'Compilation successfull !! '
1029   echo '##########################################################'
1030   echo The executable is $gcm
1031fi
1032
1033##################################################################
1034# Below, we run a benchmark test (if bench=0)
1035##################################################################
1036
1037if [ $bench != 0 ] ; then
1038
1039echo '##########################################################'
1040echo ' Running a test run '
1041echo '##########################################################'
1042
1043\rm -rf BENCH${grid_resolution}
1044bench=bench_lmdz_${grid_resolution}
1045echo install.sh before bench download  `date`
1046#wget http://www.lmd.jussieu.fr/~lmdz/Distrib/$bench.tar.gz
1047myget 3DBenchs/$bench.tar.gz
1048echo install.sh after bench download  `date`
1049tar xvf $bench.tar.gz
1050
1051if [ "$cosp" = 1 -o "$cosp2" = 1 -o "$cospv2" = 1 ] ; then
1052  cd BENCH${grid_resolution}
1053# copier les fichiers namelist input et output our COSP
1054  cp ../DefLists/cosp*_input_nl.txt .
1055  cp ../DefLists/cosp*_output_nl.txt .
1056# Activer la cles ok_cosp pour tourner avec COSP
1057  sed -e 's@ok_cosp=n@ok_cosp=y@' config.def > tmp
1058   \mv -f tmp config.def
1059  cd ..
1060fi 
1061
1062if [ -n "$physiq" ]; then
1063  cd BENCH${grid_resolution}
1064  if [ -f physiq.def_${physiq} ]; then
1065    cp physiq.def_${physiq} physiq.def
1066    echo using physiq.def_${physiq}
1067  else
1068    echo using standard physiq.def
1069  fi
1070  cd ..
1071else
1072  echo using standard physiq.def
1073fi
1074
1075if [ "$with_xios" = "y" ] ; then
1076  cd BENCH${grid_resolution}
1077  cp ../DefLists/iodef.xml .
1078  cp ../DefLists/context_lmdz.xml .
1079  cp ../DefLists/field_def_lmdz.xml .
1080  cp ../DefLists/field_def_cosp*.xml .
1081  cp ../DefLists/file_def_hist*xml .
1082  # adapt iodef.xml to use attached mode
1083  sed -e 's@"using_server" type="bool">true@"using_server" type="bool">false@' iodef.xml > tmp
1084  \mv -f tmp iodef.xml
1085
1086  # and convert all the enabled="_AUTO_" (for libIGCM) to enabled=.FALSE.
1087  # except for histday
1088  for histfile in file_def_hist*xml
1089  do
1090    if [ "$histfile" = "file_def_histday_lmdz.xml" ] ; then
1091    sed -e 's@enabled="_AUTO_"@type="one_file" enabled=".TRUE."@' $histfile > tmp ; \mv -f tmp $histfile
1092    sed -e 's@output_level="_AUTO_"@output_level="5"@' $histfile > tmp ; \mv -f tmp $histfile
1093    sed -e 's@compression_level="2"@compression_level="0"@' $histfile > tmp ; \mv -f tmp $histfile
1094    else
1095    sed -e 's@enabled="_AUTO_"@type="one_file" enabled=".FALSE."@' $histfile > tmp ; \mv -f tmp $histfile
1096    fi
1097  done
1098  # and add option "ok_all_xml=y" in config.def
1099  echo "### XIOS outputs" >> config.def
1100  echo 'ok_all_xml=.true.' >> config.def
1101
1102  #activer les sorties pour Cosp
1103  if [ "$cosp" = 1 -o "$cosp2" = 1 ] ; then 
1104   histfile=file_def_histdayCOSP_lmdz.xml
1105   sed -e 's@enabled=".FALSE."@enabled=".TRUE."@' $histfile > tmp ; \mv -f tmp $histfile
1106   sed -e 's@output_level="_AUTO_"@output_level="5"@' $histfile > tmp ; \mv -f tmp $histfile
1107   sed -e 's@compression_level="2"@compression_level="0"@' $histfile > tmp ; \mv -f tmp $histfile
1108  fi
1109  if [ "$cospv2" = 1 ] ; then
1110   histfile=file_def_histdayCOSPv2_lmdz.xml
1111   sed -e 's@compression_level="2"@compression_level="0"@' $histfile > tmp ; \mv -f tmp $histfile
1112   contextfile=context_lmdz.xml
1113   sed -e 's@src="./file_def_histdayCOSP_lmdz.xml"@src="./file_def_histdayCOSPv2_lmdz.xml"@' $contextfile > tmp ; \mv -f tmp $contextfile
1114   fieldfile=field_def_lmdz.xml
1115   sed -e 's@field_def_cosp1.xml@field_def_cospv2.xml@' $fieldfile > tmp ; \mv -f tmp $fieldfile
1116  fi
1117
1118  cd ..
1119fi
1120
1121cp $gcm BENCH${grid_resolution}/gcm.e
1122
1123cd BENCH${grid_resolution}
1124# On cree le fichier bench.sh au besoin
1125# Dans le cas 48x36x39 le bench.sh existe deja en parallele
1126
1127if [ "$grid_resolution" = "48x36x39" ] ; then
1128   echo On ne touche pas au bench.sh
1129   # But we have to adapt "run_local.sh" for $mpirun
1130   sed -e "s@mpirun@$mpirun@g" run_local.sh > tmp
1131   mv -f tmp run_local.sh
1132   chmod u=rwx run_local.sh
1133elif [ "${parallel:0:3}" = "mpi" ] ; then
1134   # Lancement avec deux procs mpi et 2 openMP
1135   echo "export OMP_STACKSIZE=800M" > bench.sh
1136   if [ "${parallel:4:3}" = "omp" ] ; then
1137     echo "export OMP_NUM_THREADS=2" >> bench.sh
1138   fi
1139   if [ "$cospv2" = 1 -o "$cosp" = 1 -o "$cosp2" = 1 ] ; then 
1140      echo "ulimit -s 200000" >> bench.sh
1141   else
1142      echo "ulimit -s unlimited" >> bench.sh
1143   fi
1144   if [ ${hostname:0:5} = jean- ] ; then
1145     echo "srun -n 2 -A $idris_acct@cpu gcm.e > listing  2>&1" >> bench.sh
1146   else
1147     echo "$mpirun -np 2 gcm.e > listing  2>&1" >> bench.sh
1148   fi
1149else
1150   echo "./gcm.e > listing  2>&1" > bench.sh
1151fi
1152echo EXECUTION DU BENCH
1153set +e
1154date ; ./bench.sh > out.bench 2>&1 ; date
1155set -e
1156tail listing
1157
1158
1159echo '##########################################################'
1160echo 'Simulation finished in' `pwd`
1161   echo 'You have compiled with:'
1162   cat ../compile.sh
1163if [ $parallel = "none" ] ; then
1164  echo 'You may re-run it with : cd ' `pwd` ' ; gcm.e'
1165  echo 'or ./bench.sh'
1166else
1167  echo 'You may re-run it with : '
1168  echo 'cd ' `pwd` '; ./bench.sh'
1169#  echo 'ulimit -s unlimited'
1170#  echo 'export OMP_NUM_THREADS=2'
1171#  echo 'export OMP_STACKSIZE=800M'
1172#  echo "$mpirun -np 2 gcm.e "
1173fi
1174echo '##########################################################'
1175
1176fi
1177
1178
1179#################################################################
1180# Installation eventuelle du 1D
1181#################################################################
1182
1183if [ $SCM = 1 ] ; then
1184cd $MODEL
1185#wget http://www.lmd.jussieu.fr/~lmdz/Distrib/1D.tar.gz
1186myget 1D/1D.tar.gz
1187tar xvf 1D.tar.gz
1188cd 1D
1189./run.sh
1190fi
Note: See TracBrowser for help on using the repository browser.