source: trunk/LMDZ.COMMON/makelmdz_fcm @ 1403

Last change on this file since 1403 was 1403, checked in by emillour, 10 years ago

All models: Reorganizing the physics/dynamics interface.

  • makelmdz and makelmdz_fcm scripts adapted to handle the new directory settings
  • misc: (replaces what was the "bibio" directory)
  • Should only contain extremely generic (and non physics or dynamics-specific) routines
  • Therefore moved initdynav.F90, initfluxsto.F, inithist.F, writedynav.F90, write_field.F90, writehist.F to "dyn3d_common"
  • dynlonlat_phylonlat: (new interface directory)
  • This directory contains routines relevent to physics/dynamics grid interactions, e.g. routines gr_dyn_fi or gr_fi_dyn and calfis
  • Moreover the dynlonlat_phylonlat contains directories "phy*" corresponding to each physics package "phy*" to be used. These subdirectories should only contain specific interfaces (e.g. iniphysiq) or main programs (e.g. newstart)
  • phy*/dyn1d: this subdirectory contains the 1D model using physics from phy*

EM

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