source: LMDZ6/trunk/makelmdz_fcm @ 5252

Last change on this file since 5252 was 5252, checked in by abarral, 5 weeks ago

Wrap uses of cpp key REPROBUS and CPP_STRATAER
Add REPROBUS wrapper

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