source: trunk/makelmdz_fcm @ 37

Last change on this file since 37 was 37, checked in by emillour, 14 years ago

Remise en route chantier compilation -- Ehouarn

  • Modifs et corrections pour pouvoir compiler le gcm (en séentiel, avec

makelmdz_fcm pour l'instant):

  • ajout de fichiers 'arch' pour linux-64 (pour Bellonzi, avec ioipsl et en r8)
  • modification de makelmdz_fcm, ajout de la cléPP_PHYS si on compile avec une physique
  • correction de quelques typos/bugs réléàa compilation:
  • infotrac.F90 : supression des appels àlnblnk' (remplacépar len_trim)
  • bilan_dyn.F : déaration des variables znom3,znom3l,zunites3, planet_type
  • cpdet.F : "use control_mod, ONLY: planet_type" mis aux bons endroits

(idem sur cpdet.F dans dyn3dpar)

  • leapfrog.F : declaration de ztetaec(), dtec, cpdet , itau_w, duspg()
  • diagedyn.F : correction typo; attention dans diagedyn.F il y a du

include "../phylmd/YOMCST.h"
Ca va poser problè qd on change de physique....

  • Avec ces modifs, la compilation marche sans physque, avec ou sans ioipsl et avec la physique terrestre phylmd.
File size: 11.0 KB
Line 
1#!/bin/bash
2# $Id: makelmdz_fcm 1327 2010-03-16 10:23:17Z ymeurdesoif $
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
24chimie=false
25parallel=none
26compil_mod=prod
27io=ioipsl
28LIBPREFIX=""
29fcm_path=none
30cosp=false
31
32LMDGCM=`/bin/pwd`
33LIBOGCM=$LMDGCM/libo
34LIBFGCM=$LMDGCM/libf
35COSP_PATH=$LMDGCM/.void_dir
36
37########################################################################
38#  Quelques initialisations de variables du shell.
39########################################################################
40
41CPP_KEY="" 
42INCLUDE=""
43LIB=""
44adjnt=""
45COMPIL_FFLAGS="%PROD_FFLAGS"
46PARA_FFLAGS=""
47PARA_LD=""
48EXT_SRC=""
49
50########################################################################
51# lecture des options de mymake
52########################################################################
53
54while (($# > 0))
55  do
56  case $1 in
57      "-h") cat <<fin
58manuel complet sur http://...
59Usage :
60makegcm [options] -m arch exec
61[-h]                       : manuel abrégé
62[-d [[IMx]JMx]LM]          : IM, JM, LM sont les dims en x, y, z (def: $dim)
63[-p PHYS]                  : compilation avec la physique libf/phyPHYS, (def: lmd)
64[-prod / -dev / -debug]    : compilation en mode production (default) / developpement / debug .
65[-c false/MPI1/MPI2]       : couplé océan : MPI1/MPI2/false (def: false)
66[-v false/true]            : avec ou sans végétation (def: false)
67[-chimie INCA/false]       : avec ou sans model de chimie INCA (def: false)
68[-parallel none/mpi/omp/mpi_omp] : parallelisation (default: none) : mpi, openmp ou mixte mpi_openmp
69[-g GRI]                   : conf. grille dans dyn3d/GRI_xy.h  (def: reg inclue un zoom)
70[-io IO]                   : choix d'une librairie I/O, experts (def: ioipsl)
71[-include INCLUDES]        : variables supplementaires pour include
72[-cpp CPP_KEY]             : cle cpp supplementaires
73[-adjnt]                   : adjoint, a remettre en route ...
74[-filtre NOMFILTRE]        : prend le filtre dans libf/NOMFILTRE (def: filtrez)
75[-link LINKS]              : liens optionels avec d'autres librairies
76[-fcm_path path]           : chemin pour fcm (def: le chemin est suppose deja exister dans le PATH)
77[-ext_src path]            : chemin d'un repertoire source avec des sources externe a compiler avec le modele
78 -arch nom_arch            : nom de l'architecture cible
79 exec                      : exécutable généré
80fin
81          exit;;
82
83      "-d")
84          dim=$2 ; shift ; shift ;;
85     
86      "-O")
87          echo "option obsolete dans cette version intermediaire de makegcm"
88          exit;;
89
90      "-p")
91          physique="$2" ;  shift ; shift ;;
92
93      "-g")
94          grille="$2" ; shift ; shift ;;
95
96      "-c")
97          couple="$2" ; shift ; shift ;;
98
99      "-prod")
100          compil_mod="prod" ; shift ;;
101
102      "-dev")
103          compil_mod="dev" ; shift ;;
104
105      "-debug")
106          compil_mod="debug" ; shift ;;
107
108      "-io")
109          io="$2" ; shift ; shift ;;
110
111      "-v")
112          veget="$2" ; shift ; shift ;;
113
114      "-chimie")
115          chimie="$2" ; shift ; shift ;;
116
117      "-parallel")
118          parallel="$2" ; shift ; shift ;;
119     
120      "-include")
121          INCLUDE="$INCLUDE -I$2" ; shift ; shift ;;
122
123      "-cpp")
124          CPP_KEY="$CPP_KEY $2" ; shift ; shift ;;
125
126      "-adjnt")
127          echo "otpion a reactiver ";exit
128          opt_dep="$opt_dep adjnt" ; adjnt="-ladjnt -ldyn3d "
129          optim="$optim -Dadj" ; shift ;;
130
131      "-cosp")
132          cosp="$2" ; shift ; shift ;;
133
134
135      "-filtre")
136          filtre=$2 ; shift ; shift ;;
137
138      "-link")
139          LIB="$LIB $2" ; shift ; shift ;;
140
141      "-fcm_path")
142          fcm_path=$2 ; shift ; shift ;;
143
144      "-ext_src")
145          EXT_SRC=$2 ; shift ; shift ;;
146
147      "-arch")
148          arch=$2 ; shift ; shift ;;
149
150      *)
151          code="$1" ; shift ;;
152  esac
153done
154
155###############################################################
156# mettre le chemin du fcm dans le path
157###############################################################
158if  [[ "$fcm_path" != "none" ]]
159then
160    export PATH=${fcm_path}:${PATH}
161fi
162
163echo "Chemin du fcm utlise :" 
164which fcm
165
166###############################################################
167# lecture des chemins propres à l'architecture de la machine #
168###############################################################
169rm -f .void_file
170echo > .void_file
171rm -rf .void_dir
172mkdir .void_dir
173rm -f arch.path
174ln -s arch/arch-${arch}.path ./arch.path
175source arch.path
176
177########################################################################
178# Definition des clefs CPP, des chemins des includes et modules
179#  et des libraries
180########################################################################
181
182if [[ "$compil_mod" == "prod" ]]
183then
184  COMPIL_FFLAGS="%PROD_FFLAGS"
185elif [[ "$compil_mod" == "dev" ]]
186then
187  COMPIL_FFLAGS="%DEV_FFLAGS"
188elif [[ "$compil_mod" == "debug" ]]
189then
190  COMPIL_FFLAGS="%DEBUG_FFLAGS"
191fi
192
193if [[ "$physique" != "nophys" ]]
194then
195   # then we wil use some physics:
196   CPP_KEY="$CPP_KEY CPP_PHYS"
197   #Default planet type is Earth
198   CPP_KEY="$CPP_KEY CPP_EARTH"
199fi
200
201if [[ "$chimie" == "INCA" ]]
202then
203   CPP_KEY="$CPP_KEY INCA"
204   INCLUDE="$INCLUDE -I${INCA_INCDIR}"
205   LIB="$LIB -L${INCA_LIBDIR} -lchimie"
206fi
207
208if [[ "$couple" != "false" ]]
209then
210   CPP_KEY="$CPP_KEY CPP_COUPLE"
211   INCLUDE="$INCLUDE -I${OASIS_INCDIR}"
212   LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.${couple} -lmpp_io"
213fi
214
215if [[ "$parallel" == "mpi" ]]
216then
217   CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI"
218   PARA_FFLAGS="%MPI_FFLAGS"
219   PARA_LD="%MPI_LD"
220elif [[ "$parallel" == "omp" ]]
221then
222   CPP_KEY="$CPP_KEY CPP_PARA CPP_OMP"
223   PARA_FFLAGS="%OMP_FFLAGS"
224   PARA_LD="%OMP_LD"
225elif [[ "$parallel" == "mpi_omp" ]]
226then
227   CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI CPP_OMP"
228   PARA_FFLAGS="%MPI_FFLAGS %OMP_FFLAGS"
229   PARA_LD="%MPI_LD %OMP_LD"
230fi
231
232if [[ ( "$parallel" == "omp" || "$parallel" == "mpi_omp" ) \
233   && "$compil_mod" == "debug" ]]
234then
235    echo "Usually, parallelization with OpenMP requires some optimization."
236    echo "We suggest switching to \"-dev\"."
237fi
238
239if [[ "$veget" == "true" ]]
240then
241   CPP_KEY="$CPP_KEY CPP_VEGET"
242   INCLUDE="${INCLUDE} -I${ORCH_INCDIR}"
243   LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}sechiba -l${LIBPREFIX}parameters -l${LIBPREFIX}stomate -l${LIBPREFIX}parallel -l${LIBPREFIX}orglob"
244fi
245
246if [[ $io == ioipsl ]]
247then
248   CPP_KEY="$CPP_KEY CPP_IOIPSL"
249   INCLUDE="$INCLUDE -I${IOIPSL_INCDIR}"
250   LIB="$LIB -L${IOIPSL_LIBDIR} -l${LIBPREFIX}ioipsl"
251fi
252if [[ "$cosp" == "true" ]]
253then
254   CPP_KEY="$CPP_KEY CPP_COSP"
255   COSP_PATH="$LIBFGCM/cosp"
256#   LIB="${LIB} -l${LIBPREFIX}cosp"
257fi
258INCLUDE="$INCLUDE -I${NETCDF_INCDIR}"
259LIB="$LIB -L${NETCDF_LIBDIR} -lnetcdf"
260
261########################################################################
262# calcul du nombre de dimensions
263########################################################################
264
265
266dim_full=$dim
267dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
268set $dim
269dimc=$#
270echo calcul de la dimension
271echo dim $dim
272echo dimc $dimc
273
274
275########################################################################
276# Gestion des dimensions du modele.
277# on cree ou remplace le fichier des dimensions
278########################################################################
279
280cd $LIBFGCM/grid/dimension
281./makdim $dim
282cat $LIBFGCM/grid/dimensions.h
283cd $LMDGCM
284
285
286########################################################################
287# Differentes dynamiques (3d, 2d, 1d)
288########################################################################
289
290dimension=`echo $dim | wc -w`
291echo dimension $dimension
292
293if (( $dimension == 3 ))
294then
295  cd $LIBFGCM/grid
296  \rm fxyprim.h
297  cp -p fxy_${grille}.h fxyprim.h
298else
299  echo "Probleme dans les dimensions de la dynamique !!"
300  echo "Non reactive pour l'instant !!!"
301fi
302
303######################################################################
304#   Traitement special pour le nouveau rayonnement de Laurent Li.
305#   ---> YM desactive pour le traitemement en parallele
306######################################################################
307
308#if [[ -f $libf/phy$physique/raddim.h ]]
309#then
310# if [[ -f $libf/phy$physique/raddim.$dimh.h ]]
311#then
312#  \rm -f $libf/phy$physique/raddim.h
313#  cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
314#  echo $libf/phy$physique/raddim.$dimh.h
315#  cat $libf/phy$physique/raddim.h
316# else
317#  echo On peut diminuer la taille de l executable en creant
318#  echo le fichier $libf/phy$physique/raddim.$dimh.h
319#  \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
320# fi
321#fi
322
323######################################################################
324# Gestion du filtre qui n'existe qu'en 3d.
325######################################################################
326
327if (( `expr $dimc \> 2` == 1 ))
328then
329   filtre="FILTRE=$filtre"
330else
331   filtre="FILTRE= L_FILTRE= "
332fi
333echo MACRO FILTRE $filtre
334
335echo $dimc
336
337
338
339######################################################################
340# Creation du suffixe de la configuration
341######################################################################
342
343
344SUFF_NAME=_${dim_full}
345SUFF_NAME=${SUFF_NAME}_phy${physique}
346
347if [[ "$parallel" != "none" ]]
348then
349  SUFF_NAME=${SUFF_NAME}_para
350  DYN=dyn${dimc}dpar
351else
352  SUFF_NAME=${SUFF_NAME}_seq
353  DYN=dyn${dimc}d
354fi
355
356if [[ $veget == "true" ]]
357then
358  SUFF_NAME=${SUFF_NAME}_orch
359fi
360
361if [[ $couple != "false" ]]
362then
363  SUFF_NAME=${SUFF_NAME}_couple
364fi
365
366if [[ $chimie == "INCA" ]]
367then
368  SUFF_NAME=${SUFF_NAME}_inca
369fi
370
371cd $LMDGCM
372config_fcm="config.fcm"
373rm -f $config_fcm
374touch $config_fcm
375rm -f bin/${code}${SUFF_NAME}.e
376rm -f arch.fcm
377rm -f arch.opt
378
379echo "%ARCH          $arch"          >> $config_fcm
380echo "%INCDIR        $INCLUDE"       >> $config_fcm 
381echo "%LIB           $LIB"           >> $config_fcm
382echo "%ROOT_PATH     $PWD"           >> $config_fcm
383echo "%LIBF          $LIBFGCM"       >> $config_fcm
384echo "%LIBO          $LIBOGCM"       >> $config_fcm
385echo "%DYN           $DYN"           >> $config_fcm
386echo "%PHYS          phy${physique}" >> $config_fcm
387echo "%COSP          $COSP_PATH"     >> $config_fcm
388echo "%CPP_KEY       $CPP_KEY"       >> $config_fcm
389echo "%EXEC          $code"          >> $config_fcm
390echo "%SUFF_NAME     $SUFF_NAME"     >> $config_fcm
391echo "%COMPIL_FFLAGS $COMPIL_FFLAGS" >> $config_fcm
392echo "%PARA_FFLAGS   $PARA_FFLAGS"   >> $config_fcm
393echo "%PARA_LD       $PARA_LD"       >> $config_fcm
394echo "%EXT_SRC       $EXT_SRC"       >> $config_fcm
395
396
397
398ln -s arch/arch-${arch}.fcm arch.fcm
399if test -f arch/arch-${arch}.opt &&  [ $compil_mod = "prod" ]
400  then
401  ln -s arch/arch-${arch}.opt arch.opt
402else
403  ln -s .void_file arch.opt
404fi
405
406
407rm -f $LIBOGCM/${arch}${SUFF_NAME}/.config/fcm.bld.lock
408./build_gcm
409
410rm -rf tmp_src
411rm -rf config
412ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config config
413ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/tmp tmp_src
Note: See TracBrowser for help on using the repository browser.