source: trunk/LMDZ.COMMON/makelmdz_fcm @ 1661

Last change on this file since 1661 was 1661, checked in by slebonnois, 8 years ago

SL: Cloud model for Venus. Not validated yet.

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