source: LMDZ6/trunk/makelmdz_fcm @ 3247

Last change on this file since 3247 was 3075, checked in by Ehouarn Millour, 7 years ago

On some systems (e.g. Ubuntu), when linking with XIOS the ordering of stdc++ and XIOS libs matters.
EM

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 19.7 KB
RevLine 
[1279]1#!/bin/bash
2# $Id: makelmdz_fcm 3075 2017-11-16 10:05:31Z idelkadi $
3# This is a script in Bash.
4
[2098]5# FH : on ne cr\'ee plus le fichier arch.mk qui est suppos\'e exister par
[783]6# FH : ailleurs.
[2098]7# FH : ulterieurement, ce fichier sera pr\'e-existant pour une s\'erie
8# FH : de configurations en versions optimis\'ees et debug qui seront
9# FH : li\'es (ln -s) avec arch.mk en fonction de l'architecture.
10# FH : Pour le moment, cette version est en test et on peut cr\'eer les
11# FH : arch.mk en lan\c{}cant une premi\`ere fois makegcm.
[783]12#
[1279]13##set -x
[2202]14set -e
[783]15########################################################################
16# options par defaut pour la commande make
17########################################################################
18
[1279]19dim="96x72x19"
20physique=lmd
21filtre=filtrez
22grille=reg
23couple=false
24veget=false
[1865]25sisvat=false
[1990]26rrtm=false
[2631]27dust=false
[2690]28strataer=false
[1279]29chimie=false
30parallel=none
[1680]31paramem="par"
[1279]32compil_mod=prod
33io=ioipsl
34LIBPREFIX=""
35cosp=false
[1802]36job=1
37full=''
[2358]38libphy=false
[783]39
[2743]40arch_defined="FALSE"
41arch_path="arch"
42arch_default_path="arch"
43
[1279]44LMDGCM=`/bin/pwd`
45LIBOGCM=$LMDGCM/libo
46LIBFGCM=$LMDGCM/libf
[2239]47DYN_COMMON_PATH=$LIBFGCM/dyn3d_common
[2084]48# path for optional packages, but default set to ".void_dir"
[2239]49FILTRE_PATH=$LMDGCM/.void_dir
50DYN_PHYS_PATH=$LMDGCM/.void_dir
[2242]51DYN_PHYS_SUB_PATH=$LMDGCM/.void_dir
[2326]52PHY_COMMON_PATH=$LMDGCM/.void_dir
[2084]53RRTM_PATH=$LMDGCM/.void_dir
[2631]54DUST_PATH=$LMDGCM/.void_dir
[2690]55STRATAER_PATH=$LMDGCM/.void_dir
[2084]56SISVAT_PATH=$LMDGCM/.void_dir
[1327]57COSP_PATH=$LMDGCM/.void_dir
[1578]58fcm_path=$LMDGCM/tools/fcm/bin
[783]59
60########################################################################
61#  Quelques initialisations de variables du shell.
62########################################################################
63
[1279]64CPP_KEY="" 
65INCLUDE=""
66LIB=""
67adjnt=""
68COMPIL_FFLAGS="%PROD_FFLAGS"
69PARA_FFLAGS=""
70PARA_LD=""
71EXT_SRC=""
[783]72
73########################################################################
74# lecture des options de mymake
75########################################################################
76
[1279]77while (($# > 0))
78  do
79  case $1 in
80      "-h") cat <<fin
[783]81Usage :
[1772]82makelmdz_fcm [options] -arch nom_arch exec
83[-h]                       : brief help
84[-d [[IMx]JMx]LM]          : IM, JM, LM are the dimensions in x, y, z (default: $dim)
85[-p PHYS]                  : set of physical parametrizations (in libf/phyPHYS), (default: lmd)
86[-prod / -dev / -debug]    : compilation mode production (default) / developement / debug
[1965]87[-c false/MPI1/OMCT]       : coupling with ocean model : MPI1/OMCT/false (default: false)
[1772]88[-v false/orchidee2.0/orchidee1.9/true] : version of the vegetation model to include (default: false)
89          false       : no vegetation model
90          orchidee2.0 : compile using ORCHIDEE 2.0 (or more recent version)
91          orchidee1.9 : compile using ORCHIDEE up to the version including OpenMP in ORCHIDEE : tag 1.9-1.9.5(version AR5)-1.9.6
92          true        : (obsolete; for backward compatibility) use ORCHIDEE tag 1.9-1.9.6
93[-chimie INCA/false]       : with INCA chemistry model or without (default: false)
[2238]94[-cosp true/false]    : compile with/without cosp package (default: false)
95[-sisvat true/false]  : compile with/without sisvat package (default: false)
96[-rrtm true/false]    : compile with/without rrtm package (default: false)
[2631]97[-dust true/false]    : compile with/without the dust package by Boucher and co (default: false)
[2690]98[-strataer true/false]    : compile with/without the strat aer package by Boucher and co (default: false)
[1772]99[-parallel none/mpi/omp/mpi_omp] : parallelism (default: none) : mpi, openmp or mixted mpi_openmp
100[-g GRI]                   : grid configuration in dyn3d/GRI_xy.h  (default: reg, inclues a zoom)
[2097]101[-io ioipsl/mix/xios]                   : Input/Output library (default: ioipsl)
[1772]102[-include INCLUDES]        : extra include path to add
103[-cpp CPP_KEY]             : additional preprocessing definitions
104[-adjnt]                   : adjoint model, not operational ...
105[-mem]                     : reduced memory dynamics (if in parallel mode)
106[-filtre NOMFILTRE]        : use filtre from libf/NOMFILTRE (default: filtrez)
107[-link LINKS]              : additional links with other libraries
[1802]108[-j n]                     : active parallel compiling on ntask
109[-full]                    : full recompiling
[2358]110[-libphy]                  : only compile physics package (no dynamics or main program)
[1772]111[-fcm_path path]           : path to the fcm tool (default: tools/fcm/bin)
112[-ext_src path]            : path to an additional set of routines to compile with the model
[2743]113[-arch_path path]          : path to architecture files (default: $arch_default_path)
[1772]114 -arch nom_arch            : target architecture
115 exec                      : executable to build
[783]116fin
[1279]117          exit;;
[783]118
[1279]119      "-d")
120          dim=$2 ; shift ; shift ;;
121     
122      "-p")
123          physique="$2" ;  shift ; shift ;;
[783]124
[1279]125      "-g")
126          grille="$2" ; shift ; shift ;;
[783]127
[1279]128      "-c")
129          couple="$2" ; shift ; shift ;;
[783]130
[1279]131      "-prod")
132          compil_mod="prod" ; shift ;;
[1002]133
[1279]134      "-dev")
135          compil_mod="dev" ; shift ;;
[1002]136
[1279]137      "-debug")
138          compil_mod="debug" ; shift ;;
[1002]139
[1279]140      "-io")
141          io="$2" ; shift ; shift ;;
[783]142
[1279]143      "-v")
144          veget="$2" ; shift ; shift ;;
[783]145
[1865]146      "-sisvat")
147          sisvat="$2" ; shift ; shift ;;
148
[1990]149      "-rrtm")
150          rrtm="$2" ; shift ; shift ;;
151
[2631]152      "-dust")
153          dust="$2" ; shift ; shift ;;
154
[2690]155      "-strataer")
156          strataer="$2" ; shift ; shift ;;
157
[1279]158      "-chimie")
159          chimie="$2" ; shift ; shift ;;
[783]160
[1279]161      "-parallel")
162          parallel="$2" ; shift ; shift ;;
163     
164      "-include")
165          INCLUDE="$INCLUDE -I$2" ; shift ; shift ;;
[783]166
[1279]167      "-cpp")
168          CPP_KEY="$CPP_KEY $2" ; shift ; shift ;;
[1132]169
[1279]170      "-adjnt")
[1772]171          echo "not operational ... work to be done here ";exit
[1279]172          opt_dep="$opt_dep adjnt" ; adjnt="-ladjnt -ldyn3d "
173          optim="$optim -Dadj" ; shift ;;
[783]174
[1279]175      "-cosp")
176          cosp="$2" ; shift ; shift ;;
[1680]177     
178      "-mem")
179          paramem="mem" ; shift ;;
[783]180
[1279]181      "-filtre")
182          filtre=$2 ; shift ; shift ;;
[783]183
[1279]184      "-link")
185          LIB="$LIB $2" ; shift ; shift ;;
[1136]186
[1279]187      "-fcm_path")
188          fcm_path=$2 ; shift ; shift ;;
[783]189
[1279]190      "-ext_src")
191          EXT_SRC=$2 ; shift ; shift ;;
[2358]192
[1802]193      "-j")
194          job=$2 ; shift ; shift ;;
[2358]195
[1802]196      "-full")
197          full="-full" ; shift ;;
[783]198
[2358]199      "-libphy")
200          libphy="true" ; shift ;;
201
[1279]202      "-arch")
[2743]203          arch=$2 ; arch_defined="TRUE" ; shift ; shift ;;
[783]204
[2743]205      "-arch_path")
206          arch_path=$2 ; arch_path_defined="TRUE"; shift ; shift ;;
207
[1279]208      *)
209          code="$1" ; shift ;;
210  esac
211done
212
[1136]213###############################################################
[1755]214# path to fcm
[1136]215###############################################################
[1755]216# handle case when provided path to fcm was given as a relative
217# path (from makelmdz_fcm script directory) and not an absolute path
218if [[ ${fcm_path:0:1} != "/" ]] ; then
219  # prepend with makelmdz_fcm location
220  fcm_path=$(cd $(dirname $0) ; pwd)"/"${fcm_path}
221fi
[783]222
[1757]223# add fcm_path to PATH
224export PATH=${fcm_path}:${PATH}
225
[1755]226echo "Path to fcm:"
227echo ${fcm_path}
[1136]228
[783]229###############################################################
[2098]230# lecture des chemins propres \`a l'architecture de la machine #
[783]231###############################################################
[1279]232rm -f .void_file
233echo > .void_file
[1327]234rm -rf .void_dir
235mkdir .void_dir
[783]236
[2743]237if [[ "$arch_defined" == "TRUE" ]]
238then
239  rm -f arch.path
240  rm -f arch.fcm
241  rm -f arch.env
242
243  if test -f $arch_path/arch-${arch}.path
244  then
245    ln -s $arch_path/arch-${arch}.path arch.path
246  elif test -f $arch_default_path/arch-${arch}.path
247  then
248    ln -s $arch_default_path/arch-${arch}.path arch.path
249  fi
250       
251  if test -f $arch_path/arch-${arch}.fcm
252  then
253    ln -s $arch_path/arch-${arch}.fcm arch.fcm
254  elif test -f $arch_default_path/arch-${arch}.fcm
255  then
256    ln -s $arch_default_path/arch-${arch}.fcm arch.fcm
257  fi
258
259  if test -f $arch_path/arch-${arch}.env
260  then
261    ln -s $arch_path/arch-${arch}.env arch.env
262  elif test -f $arch_default_path/arch-${arch}.env
263  then
264    ln -s $arch_default_path/arch-${arch}.env arch.env
265  else
266    ln -s .void_file arch.env
267  fi
268  # source architecture PATH and ENV files
269  source arch.env
270  source arch.path
271else
272  echo "You must define a target architecture"
273  exit 1
274fi
275
[783]276########################################################################
277# Definition des clefs CPP, des chemins des includes et modules
278#  et des libraries
279########################################################################
280
[1279]281if [[ "$compil_mod" == "prod" ]]
282then
283  COMPIL_FFLAGS="%PROD_FFLAGS"
284elif [[ "$compil_mod" == "dev" ]]
285then
286  COMPIL_FFLAGS="%DEV_FFLAGS"
287elif [[ "$compil_mod" == "debug" ]]
288then
289  COMPIL_FFLAGS="%DEBUG_FFLAGS"
290fi
[783]291
[2250]292phys_root=$physique
293if [[ "${physique:0:3}" == "lmd" ]] ; then phys_root=lmd ; fi
294if [[ "${physique:0:4}" == "mars" ]] ; then phys_root=mars ; fi
295if [[ "${physique:0:3}" == "std" ]] ; then phys_root=std ; fi
296if [[ "${physique:0:5}" == "venus" ]] ; then phys_root=venus ; fi
297if [[ "${physique:0:5}" == "titan" ]] ; then phys_root=titan ; fi
298if [[ "${physique:0:3}" == "mar" ]] ; then phys_root=mar ; fi
299if [[ "${physique:0:3}" == "dev" ]] ; then phys_root=dev ; fi
300
[1279]301if [[ "$physique" != "nophys" ]]
302then
[1615]303   #We'll use some physics
304   CPP_KEY="$CPP_KEY CPP_PHYS"
[2250]305   if [[ "${phys_root}" == "lmd" ]]
[1615]306   then
307   #For lmd physics, default planet type is Earth
[1279]308   CPP_KEY="$CPP_KEY CPP_EARTH"
[1615]309   fi
[2326]310   # set physics common utilities path
311   PHY_COMMON_PATH="${LIBFGCM}/phy_common"
[2239]312   # set the dyn/phys interface path
[2417]313   DYN_PHYS_PATH="${LIBFGCM}/dynphy_lonlat"
314   DYN_PHYS_SUB_PATH="${LIBFGCM}/dynphy_lonlat/phy${phys_root}"
[1279]315fi
[783]316
[2239]317if [[ "$filtre" == "filtrez" ]]
318then
319   FILTRE_PATH=${LIBFGCM}/$filtre
320fi
321
[1279]322if [[ "$chimie" == "INCA" ]]
323then
324   CPP_KEY="$CPP_KEY INCA"
325   INCLUDE="$INCLUDE -I${INCA_INCDIR}"
326   LIB="$LIB -L${INCA_LIBDIR} -lchimie"
327fi
[783]328
[1279]329if [[ "$couple" != "false" ]]
330then
[1965]331    if [[ "$couple" == "MPI1" ]]
332    then
333        CPP_KEY="$CPP_KEY CPP_COUPLE"
334        export OASIS_INCDIR=$LMDGCM/../../prism/X64/build/lib/psmile.MPI1
335        export OASIS_LIBDIR=$LMDGCM/../../prism/X64/lib
336        INCLUDE="$INCLUDE -I${OASIS_INCDIR}"
337        LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.MPI1 -lmpp_io"
338    else
339        CPP_KEY="$CPP_KEY CPP_COUPLE CPP_OMCT"
340        INCLUDE="$INCLUDE -I${OASIS_INCDIR}"
341        LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.MPI1 -lscrip -lmct -lmpeu"
342    fi
[1279]343fi
[783]344
[1279]345if [[ "$parallel" == "mpi" ]]
346then
347   CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI"
348   PARA_FFLAGS="%MPI_FFLAGS"
349   PARA_LD="%MPI_LD"
350elif [[ "$parallel" == "omp" ]]
351then
352   CPP_KEY="$CPP_KEY CPP_PARA CPP_OMP"
353   PARA_FFLAGS="%OMP_FFLAGS"
354   PARA_LD="%OMP_LD"
355elif [[ "$parallel" == "mpi_omp" ]]
356then
357   CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI CPP_OMP"
358   PARA_FFLAGS="%MPI_FFLAGS %OMP_FFLAGS"
359   PARA_LD="%MPI_LD %OMP_LD"
360fi
[783]361
[1279]362if [[ ( "$parallel" == "omp" || "$parallel" == "mpi_omp" ) \
363   && "$compil_mod" == "debug" ]]
364then
365    echo "Usually, parallelization with OpenMP requires some optimization."
366    echo "We suggest switching to \"-dev\"."
367fi
[783]368
[1811]369if [ "$veget" = "true" -o "$veget" = "orchidee1.9" -o "$veget" = "orchidee2.0" ]
[1279]370then
[1811]371#NB: option 'true': for backward compatibility. To be used with ORCHIDEE tag 1.9-1.9.6
372#    For this case, cpp flag ORCHIDEE_NOOPENMP must be added to the makelmdz_fcm arguments
373#    option orchidee1.9 : Compile with ORCHIDEE version up to the inclusion of OpenMP in ORCHIDEE : tag 1.9-1.9.5(version AR5)-1.9.6
[1279]374   INCLUDE="${INCLUDE} -I${ORCH_INCDIR}"
[1772]375   CPP_KEY="$CPP_KEY CPP_VEGET"
[1811]376# temporary, for Orchidee versions 1.9.* (before openmp activation)
377   if [[ "$veget" == "orchidee1.9" ]] ; then
378      CPP_KEY="$CPP_KEY ORCHIDEE_NOOPENMP"
379   fi
380   if [[ "$veget" == "orchidee2.0" ]] ; then
[1854]381      orch_libs="sechiba parameters stomate parallel orglob orchidee"
[1811]382   else
383      orch_libs="sechiba parameters stomate parallel orglob"
384   fi
385   LIB="${LIB} -L${ORCH_LIBDIR}"
386   for lib in ${orch_libs} ; do
387      if [ -f ${ORCH_LIBDIR}/lib${LIBPREFIX}$lib.a ] ; then
388         LIB="${LIB} -l${LIBPREFIX}$lib "
389      fi
390   done
391elif [[ "$veget" != "false" ]] ; then
[1772]392   echo "Option -v $veget does not exist"
393   echo "Use ./makelmdz_fcm -h for more information"
394   exit 
[1279]395fi
[783]396
[1865]397if [[ "$sisvat" == "true" ]]
398then
399   CPP_KEY="$CPP_KEY CPP_SISVAT"
[2084]400   SISVAT_PATH="$LIBFGCM/%PHYS/sisvat"
[1865]401fi
402
[1990]403if [[ "$rrtm" == "true" ]]
404then
405   CPP_KEY="$CPP_KEY CPP_RRTM"
[2084]406   RRTM_PATH="$LIBFGCM/%PHYS/rrtm"
[1990]407fi
408
[2631]409if [[ "$dust" == "true" ]]
410then
411   CPP_KEY="$CPP_KEY CPP_Dust"
412   DUST_PATH="$LIBFGCM/%PHYS/Dust"
413fi
414
[2690]415if [[ "$strataer" == "true" ]]
416then
417   CPP_KEY="$CPP_KEY CPP_StratAer"
418   STRATAER_PATH="$LIBFGCM/%PHYS/StratAer"
419fi
420
[1279]421if [[ $io == ioipsl ]]
422then
423   CPP_KEY="$CPP_KEY CPP_IOIPSL"
424   INCLUDE="$INCLUDE -I${IOIPSL_INCDIR}"
425   LIB="$LIB -L${IOIPSL_LIBDIR} -l${LIBPREFIX}ioipsl"
[2097]426elif [[ $io == mix ]]
[1897]427then
428   # For now, xios implies also using ioipsl
429   CPP_KEY="$CPP_KEY CPP_IOIPSL CPP_XIOS"
430   INCLUDE="$INCLUDE -I${IOIPSL_INCDIR} -I${XIOS_INCDIR}"
[3075]431   LIB="$LIB -L${IOIPSL_LIBDIR} -l${LIBPREFIX}ioipsl -L${XIOS_LIBDIR} -l${LIBPREFIX}stdc++ -l${LIBPREFIX}xios -l${LIBPREFIX}stdc++"
[2097]432elif [[ $io == xios ]]
433then
434   # For now, xios implies also using ioipsl
435   CPP_KEY="$CPP_KEY CPP_IOIPSL CPP_XIOS CPP_IOIPSL_NO_OUTPUT"
436   INCLUDE="$INCLUDE -I${IOIPSL_INCDIR} -I${XIOS_INCDIR}"
[3075]437   LIB="$LIB -L${IOIPSL_LIBDIR} -l${LIBPREFIX}ioipsl -L${XIOS_LIBDIR} -l${LIBPREFIX}stdc++ -l${LIBPREFIX}xios -l${LIBPREFIX}stdc++"
[1279]438fi
[1897]439
[1279]440if [[ "$cosp" == "true" ]]
441then
442   CPP_KEY="$CPP_KEY CPP_COSP"
[2239]443   COSP_PATH="$LIBFGCM/phylmd/cosp"
[1279]444#   LIB="${LIB} -l${LIBPREFIX}cosp"
445fi
[783]446
[1551]447INCLUDE="$INCLUDE ${NETCDF_INCDIR}"
448LIB="$LIB ${NETCDF_LIBDIR}"
449
[783]450########################################################################
451# calcul du nombre de dimensions
452########################################################################
453
454
[1279]455dim_full=$dim
456dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
457set $dim
458dimc=$#
[783]459echo calcul de la dimension
460echo dim $dim
461echo dimc $dimc
462
463
464########################################################################
465# Gestion des dimensions du modele.
[1114]466# on cree ou remplace le fichier des dimensions
[783]467########################################################################
468
[1695]469cd $LIBFGCM/grid
470if [[ -f dimensions.h ]]
471then
472  echo 'ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs'
473  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
474  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
475  echo  vous pouvez continuer en repondant oui.
476  echo "Voulez-vous vraiment continuer?"
[1755]477  echo ""
478  echo "WARNING: you are probably already compiling the model somewhere else."
479  echo "Wait until the first compilation is finished before launching this one."
480  echo "If you are sure that you are not compiling elsewhere, just answer "
481  echo "yes (or 'oui') to the question below to proceed."
482  echo "Do you wish to continue?"
[1695]483  read reponse
[1755]484  if [[ $reponse == "oui" || $reponse == "yes" ]]
[1695]485  then
[1696]486    \rm -f $LIBFGCM/grid/dimensions.h
[1695]487  else
488    exit
489  fi
490fi
491
492
[783]493cd $LIBFGCM/grid/dimension
[1114]494./makdim $dim
[783]495cat $LIBFGCM/grid/dimensions.h
496cd $LMDGCM
497
498
499########################################################################
500# Differentes dynamiques (3d, 2d, 1d)
501########################################################################
502
[1279]503dimension=`echo $dim | wc -w`
[783]504echo dimension $dimension
505
[1279]506if (( $dimension == 3 ))
507then
[783]508  cd $LIBFGCM/grid
509  \rm fxyprim.h
510  cp -p fxy_${grille}.h fxyprim.h
[2239]511#else
512#  echo "Probleme dans les dimensions de la dynamique !!"
513#  echo "Non reactive pour l'instant !!!"
[1279]514fi
[783]515
[2239]516if (( $dimension == 1 ))
517then
518  CPP_KEY="$CPP_KEY CPP_1D"
519##in 1D, add dyn3d to include path (because main prog is in physics)
520  INCLUDE="$INCLUDE -Ilibf/dyn3d -Ilibf/dyn3d_common"
521## no filtre in 1d:
522  FILTRE_PATH=$LMDGCM/.void_dir
523## no need to compile all routines in dyn3d_common either:
524  DYN_COMMON_PATH=$LMDGCM/.void_dir
525## no need to compile all routines in dynlmdz_phy... ;
526## (because key ones are included in 1D main program)
527  DYN_PHYS_PATH=$LMDGCM/.void_dir
[2242]528  DYN_PHYS_SUB_PATH=$LMDGCM/.void_dir
[2239]529fi
530
[783]531######################################################################
532#   Traitement special pour le nouveau rayonnement de Laurent Li.
533#   ---> YM desactive pour le traitemement en parallele
534######################################################################
535
[1279]536#if [[ -f $libf/phy$physique/raddim.h ]]
537#then
538# if [[ -f $libf/phy$physique/raddim.$dimh.h ]]
539#then
[783]540#  \rm -f $libf/phy$physique/raddim.h
541#  cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
542#  echo $libf/phy$physique/raddim.$dimh.h
543#  cat $libf/phy$physique/raddim.h
544# else
545#  echo On peut diminuer la taille de l executable en creant
546#  echo le fichier $libf/phy$physique/raddim.$dimh.h
547#  \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
[1279]548# fi
549#fi
[783]550
551######################################################################
552# Gestion du filtre qui n'existe qu'en 3d.
553######################################################################
554
[1279]555if (( `expr $dimc \> 2` == 1 ))
556then
557   filtre="FILTRE=$filtre"
[783]558else
[1279]559   filtre="FILTRE= L_FILTRE= "
560fi
[783]561echo MACRO FILTRE $filtre
562
563echo $dimc
564
565
566
567######################################################################
568# Creation du suffixe de la configuration
569######################################################################
570
571
[1279]572SUFF_NAME=_${dim_full}
573SUFF_NAME=${SUFF_NAME}_phy${physique}
[783]574
[1279]575if [[ "$parallel" != "none" ]]
576then
577  SUFF_NAME=${SUFF_NAME}_para
[1680]578  DYN=dyn${dimc}d${paramem}
579  if [[ "$paramem" == "mem" ]]
580  then
[2202]581      SUFF_NAME=${SUFF_NAME}_${paramem}
582  else
583      echo "The version of the dynamics in dyn3dpar is no longer updated."
584      echo "You should use option \"-mem\"."
585      exit 1
[1680]586  fi
[783]587else
[1279]588  SUFF_NAME=${SUFF_NAME}_seq
[2239]589  if (( $dimension == 1 ))
590  then
591    # dynamics-related routines in"dyn1d" subdirectory of phy${physique}
592    DYN=phy${physique}/dyn1d
593  else
594    DYN=dyn${dimc}d
595  fi
[1279]596fi
[783]597
[1772]598if [[ $veget != "false" ]]
[1279]599then
600  SUFF_NAME=${SUFF_NAME}_orch
601fi
[783]602
[1279]603if [[ $couple != "false" ]]
604then
605  SUFF_NAME=${SUFF_NAME}_couple
606fi
[783]607
[1279]608if [[ $chimie == "INCA" ]]
609then
610  SUFF_NAME=${SUFF_NAME}_inca
611fi
[783]612
[2358]613if [[ $libphy == "true" ]]
614then
615  # special case where we compile only the physics
616  DYN=$LMDGCM/.void_dir
617  DYN_COMMON_PATH=$LMDGCM/.void_dir
618  FILTRE_PATH=$LMDGCM/.void_dir
619  DYN_PHYS_PATH=$LMDGCM/.void_dir
620  DYN_PHYS_SUB_PATH=$LMDGCM/.void_dir
621  #and there is no main program to generate
622  code=""
623  SUFF_NAME=""
624else
625  SUFF_NAME=${SUFF_NAME}.e
626fi
627
[783]628cd $LMDGCM
[1279]629config_fcm="config.fcm"
[783]630rm -f $config_fcm
631touch $config_fcm
632rm -f bin/${code}${SUFF_NAME}.e
633rm -f arch.fcm
[1279]634rm -f arch.opt
[783]635
636echo "%ARCH          $arch"          >> $config_fcm
637echo "%INCDIR        $INCLUDE"       >> $config_fcm 
638echo "%LIB           $LIB"           >> $config_fcm
639echo "%ROOT_PATH     $PWD"           >> $config_fcm
640echo "%LIBF          $LIBFGCM"       >> $config_fcm
641echo "%LIBO          $LIBOGCM"       >> $config_fcm
642echo "%DYN           $DYN"           >> $config_fcm
[2239]643echo "%DYN_COMMON    $DYN_COMMON_PATH" >> $config_fcm
[2326]644echo "%PHY_COMMON    $PHY_COMMON_PATH" >> $config_fcm
[2239]645echo "%FILTRE        $FILTRE_PATH"   >> $config_fcm
[783]646echo "%PHYS          phy${physique}" >> $config_fcm
[2239]647echo "%DYN_PHYS      $DYN_PHYS_PATH" >> $config_fcm
[2242]648echo "%DYN_PHYS_SUB  $DYN_PHYS_SUB_PATH" >> $config_fcm
[2084]649echo "%RRTM          $RRTM_PATH"     >> $config_fcm
[2631]650echo "%DUST          $DUST_PATH"     >> $config_fcm
[2690]651echo "%STRATAER      $STRATAER_PATH" >> $config_fcm
[2084]652echo "%SISVAT        $SISVAT_PATH"   >> $config_fcm
[1327]653echo "%COSP          $COSP_PATH"     >> $config_fcm
[783]654echo "%CPP_KEY       $CPP_KEY"       >> $config_fcm
655echo "%EXEC          $code"          >> $config_fcm
656echo "%SUFF_NAME     $SUFF_NAME"     >> $config_fcm
[1002]657echo "%COMPIL_FFLAGS $COMPIL_FFLAGS" >> $config_fcm
658echo "%PARA_FFLAGS   $PARA_FFLAGS"   >> $config_fcm
659echo "%PARA_LD       $PARA_LD"       >> $config_fcm
[1279]660echo "%EXT_SRC       $EXT_SRC"       >> $config_fcm
[783]661
[1002]662
663
[1137]664ln -s arch/arch-${arch}.fcm arch.fcm
[1279]665if test -f arch/arch-${arch}.opt &&  [ $compil_mod = "prod" ]
666  then
667  ln -s arch/arch-${arch}.opt arch.opt
668else
669  ln -s .void_file arch.opt
670fi
671
[1002]672rm -f $LIBOGCM/${arch}${SUFF_NAME}/.config/fcm.bld.lock
[1802]673./build_gcm ${fcm_path} -j $job $full
[783]674
[1279]675rm -rf tmp_src
676rm -rf config
[783]677ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config config
[2358]678ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/ppsrc tmp_src
[1695]679
[1869]680
[1696]681if [[ -r $LIBFGCM/grid/dimensions.h ]]
[1695]682then
683  # Cleanup: remove dimension.h file
[1696]684  \rm -f $LIBFGCM/grid/dimensions.h
[1695]685fi
Note: See TracBrowser for help on using the repository browser.