source: trunk/LMDZ.GENERIC/makegcm_pgf90 @ 372

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

Generic model: updated makegcm(s) so that default behaviour is to set LMDGCM env variable to be the directory in which the makegcm script is. Removed files tmp77, tmp90, liste_des_sources_f90, liste_des_sources_f77 and makefile from the svn repository since these are (re-)created by makegcm.
EM

  • Property svn:executable set to *
File size: 25.4 KB
Line 
1#!/bin/csh -f
2# $Header: /users/lmdz/cvsroot/LMDZ.3.3/makegcm,v 1.21 2001/07/04 08:41:44 lmdz Exp $
3#set verbose echo
4########################################################################
5# options par defaut pour la commande make
6########################################################################
7set dim="64x48x32"
8set physique=std
9set phys="PHYS=$physique"
10set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I.'
11set ntrac = 1
12set filtre=filtrez
13set grille=reg
14set dyntype="dyn"
15set bands="32x36"
16########################################################################
17# path a changer contenant les sources et les objets du modele
18########################################################################
19
20#### If you want you can set environment variables here
21# default LMDGCM is where the makegcm script is:
22#setenv LMDGCM `pwd`"/"`dirname $0` # only works for relative paths
23setenv LMDGCM `readlink -f $0`
24#setenv LMDGCM "/san/home/rdword/gcm/LMDZ.GENERIC"
25setenv LIBOGCM $LMDGCM/libo
26# NetCDF, on LMD 64 bit machines
27setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_pgi/lib
28setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_pgi/include
29####
30
31setenv localdir "`pwd`"
32set MODIPSL=0
33echo $localdir | grep modipsl >& /dev/null
34if ( ! $status ) then
35  set MODIPSL=1
36  setenv LMDGCM $localdir
37  cd ../..
38  setenv LIBOGCM "`pwd`/lib"
39  cd $localdir
40  if ( `hostname` == rhodes ) then
41    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
42    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
43  else
44    if ( `hostname` == nymphea0 ) then
45      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
46      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
47    else
48      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
49    endif
50  endif
51else
52  if ( ! $?LMDGCM ) then
53    echo You must initialize the variable LMDGCM in your environnement
54    echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc
55    exit
56  endif
57  if ( ! $?LIBOGCM ) then
58    set LIBOGCM=$LMDGCM/libo
59  endif
60  if ( ! $?NCDFLIB ) then
61    echo You must initialize the variable NCDFLIB in your environnement
62    echo for instance: "setenv NCDFLIB /usr/myself/netcdf" in .cshrc
63    exit
64  endif
65  if ( ! $?NCDFINC ) then
66    echo You must initialize the variable NCDFINC in your environnement
67    echo for instance: "setenv NCDFINC /usr/myself/netcdf" in .cshrc
68    exit
69  endif
70endif
71set model=$LMDGCM
72set libo=$LIBOGCM
73
74########################################################################
75#  Les differentes platformes reconnues
76########################################################################
77
78set HP=0
79set IBM=0
80set SUN=0
81set VPP=0
82set CRAY=0
83set DEC=0
84set LINUX=0
85set NEC=0
86set XNEC=0
87if ( `uname` == HP-UX ) then
88   set machine=HP
89   set HP=1
90else if (`uname` == UNIX_System_V ) then
91   set machine=VPP
92   set VPP=1
93else if (`uname` == SunOS ) then
94   set machine=SUN
95   set SUN=1
96else if ( `uname` == AIX ) then
97   set machine=IBM
98   set IBM=1
99else if ( `uname` == OSF1 ) then
100   set machine=ALPHA
101   set DEC=1
102else if ( `uname` == Linux ) then
103   set machine=LINUX
104   set LINUX=1
105else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
106   set machine=CRAY
107   set CRAY=1
108else if ( `uname` == SUPER-UX ) then
109   set machine=NEC
110   set NEC=1
111else if ( `hostname` == rhodes) then
112   set machine=XNEC
113   set XNEC=1
114else
115   echo Vous travaillez sur une machine non prevue par le reglement
116   exit
117endif
118
119# create $libo directory if it doesn't exist
120if ( ! -d $libo )  then
121   mkdir $libo
122endif
123
124if $VPP then
125set netcdf=netcdf_v
126else
127set netcdf=netcdf
128endif
129########################################################################
130#  Quelques initialisations de variables du shell.
131########################################################################
132
133set dyn=
134set opt_link=""
135set adjnt=""
136set opt_dep=""
137
138set optim90=""
139set oplink=""
140
141########################################################################
142#  Optimisations par defaut suivant les machines
143########################################################################
144
145echo "Optimisations par defaut suivant les machines"
146set libf=$model/libf
147#setenv localdir "LOCAL_DIR=`pwd`"
148#setenv localdir "`pwd`"
149cd $model
150if $CRAY then
151   set optim90="-Wp'-P' -DCRAY "'-p$(LIBO) -eiv '
152   set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdf "
153   set mod_loc_dir=" "
154   set mod_suffix=" "
155else if $SUN then
156   set optim90=" -fast"
157   set optimtru90=" -fast -free"
158   set opt_link="-L$NCDFLIB -lnetcdf"
159   set mod_loc_dir=$localdir
160   set mod_suffix=mod
161else if $HP then
162else if $IBM then
163else if $VPP then
164   set optim90="$optim -X9 -w"
165   if $COUPLE then
166     set opt_link="-Wg,-c $IOIPSLDIR/liboasis2.4_mpi2.a /usr/lang/mpi2/lib64/libmpi.a /usr/lang/mpi2/lib64/libmp.a /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
167     set oplink="-Wl,-t,-P,-dy "
168   else
169     set opt_link="-Wg,-c /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
170     set oplink="-Wl,-t,-dy "
171   endif
172   set mod_loc_dir=$IOIPSLDIR
173   set mod_suffix=mod
174else if $DEC then
175else if $LINUX then
176   set optim=" -O2 -Munroll -Mcache_align "
177   set optim90=" -O2 -Munroll -Mcache_align "
178   set optimtru90=" -O2 -Munroll -Mcache_align "
179   set opt_link=" -L$NCDFLIB -lnetcdf"
180   set mod_loc_dir=$localdir
181   set mod_suffix=mod
182# Ehouarn 'ifort' compiler
183#   #NB: on gnome -O3 ==> NaNs ...
184#   set optim=" -O2 -ip -mkl=sequential -align common "
185#   set optim90=" -O2 -ip -mkl=sequential -align common "
186#   set optimtru90=" -O2 -ip -mkl=sequential -align common "
187#   set mod_loc_dir=$LIBOGCM
188#   set mod_suffix=mod
189else if $NEC then
190   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
191   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
192###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
193   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
194   set mod_loc_dir="."
195   set mod_suffix="mod"
196else if $XNEC then
197   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
198   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
199   if $MODIPSL then
200     if $COUPLE then
201       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
202     else
203       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
204     endif
205     set mod_loc_dir="./"
206   else
207####     set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lsxioipsl -L /u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
208     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
209     set mod_loc_dir="."
210   endif
211   set mod_suffix="mod"
212
213endif
214
215set nomlib=$machine
216
217# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
218if (`uname` == Linux && `uname -m` == "x86_64") then
219  set nomlib=${machine}64
220endif
221
222########################################################################
223# lecture des options de mymake
224########################################################################
225
226top:
227if ($#argv > 0) then
228    switch ($1:q)
229
230    case -h:
231
232########################################################################
233# Manuel en ligne
234########################################################################
235more <<eod
236
237
238makegcm [Options] prog
239
240
241
242
243Par default, la commande makegcm:
244---------------------------------
245
2461. compile une serie de sous programmes se trouvant dans des sous-repertoires
247de $LMDGCM/libf.
248Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
249sur $LIBOGCM.
250
2512. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
252$LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
253
254La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
255dans la comande makegcm.
256
257La commande makegcm est faite pour permettre de gerer en parallele des
258versions differentes du modele, compilees avec des options de compilation
259et des dimensions differentes sans avoir a chaque fois a recompiler tout
260le modele.
261
262Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
263
264
265OPTIONS:
266--------
267
268Les options suivantes peuvent etre definies soit par defaut en editant le
269"script" makegcm, soit en interactif:
270
271-d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
272             et couches verticales.
273
274-t ntrac   selectionne le nombre de traceur advectes par la dynamique.
275           Dans les versions courantes du modele terrestre on a par exemple
276           ntrac=2 pour l'eau vapeur et liquide
277
278             L'effet des options -d et -t est d'ecraser le fichier
279             $LMDGCM/libf/grid/dimensions.h
280             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
281             de la grille horizontale im, jm, lm plus le nombre de traceurs
282             advectes passivement par la dynamique ntrac, par un nouveu fichier
283             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
284             Si ce fichier n'existe pas encore, il est cree par le script
285             $LMDGCM/libf/grid/dimension/makdim
286
287-p PHYS    pour selectionner le jeu de parametrisations physiques avec
288           lequel on veut compiler le modele.
289           Le modele sera alors compile en prenant les sources des
290           parametrisations physiques dans le repertoire:
291            $LMDGCM/libf/phyPHYS
292
293-g grille  selectionne le type de grille qu'on veut utiliser.
294           L'effet de cette option est d'ecraser le fichier
295           $LMDGCM/libf/grid/fxyprim.h
296           avec le fichier
297           $LMDGCM/libf/grid/fxy_grille.h
298           grille peut prendre les valeurs:
299           1. reg pour la grille reguliere
300           2. sin pour avoir des points equidistants en sinus de la latitude
301           3. new pour pouvoir zoomer sur une partie du globe
302
303-O "optimisation fortran" ou les optimisations fortran sont les options de la
304            commande f77
305
306-include path
307           Dans le cas ou on a dans des sous programmes des fichiers
308           #include (cpp) qui se trouve sur des repertoires non references
309           par defaut
310
311-adjnt     Pour compiler la l'adjoint du code dynamique
312
313-olddyn    To compile GCM with "old dynamics"
314
315-filtre  filtre
316           Pour choisir le filtre en longitude dans les regions polaires.
317           "filtre" correspond au nom d'un repertoire se trouvant sur
318           $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
319           etre utilise aussi bien pour une grille reguliere que pour une
320           grille zoomee en longitude.
321
322-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
323          Pour rajouter un lien avec les librairies FORTRAN
324          libfile1.a, libfile2.a ... se trouvant respectivement sur les
325          repertoires dir1, dir2 ...
326          Si dirn est un repertoire dont le chemin est automatique (comme
327          par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
328
329Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
330eod
331exit
332
333########################################################################
334# Lecture des differentes options
335########################################################################
336
337    case -d
338        set dim=$2 ; shift ; shift ; goto top
339                       
340    case -O:
341        set optim90="$2" ; set optim="$2" ; set optimtru90="$2" ; shift ; shift ; goto top
342
343     case -p
344        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
345
346     case -g
347        set grille="$2" ; shift ; shift ; goto top
348
349    case -b
350        set bands=$2 ; shift ; shift ; goto top
351           
352     case -t
353        set ntrac=$2 ; shift ; shift ; goto top
354
355     case -include
356        set include="$include -I$2" ; shift ; shift ; goto top
357
358     case -adjnt
359        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
360
361     case -olddyn
362        set dyntype="olddyn" ; shift; goto top
363
364     case -filtre
365        set filtre=$2 ; shift ; shift ; goto top
366
367     case -link
368        set opt_link="$opt_link $2" ; shift ; shift ; goto top
369
370     case -debug
371        if $HP then
372           set optim90=" -g "
373        else if $SUN then
374           setenv PARALLEL 4
375           set optim90=" -g -C "
376           set optimtru90=" -g -C "
377        else if $CRAY then
378           set optim90="$optim90"" -G1 "
379        else if $LINUX then
380           set optim="-g -Mbounds -Kieee -Ktrap=fp -traceback"
381           set optim90="-g -Mbounds -Kieee -Ktrap=fp -traceback"
382           set optimtru90="-g -Mbounds -Kieee -Ktrap=fp -traceback"
383#          set optim=" -g -no-ftz -traceback -ftrapuv -fp-stack-check "
384#           set optim90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check "
385#           set optimtru90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check "
386        else
387           echo "pas d option debug predefinie pour cette machine"
388           exit
389        endif
390        shift ; goto top
391
392     default
393        set code="$1" ; shift ; goto top
394
395   endsw
396endif
397
398
399echo "apres les opts dim $dim"
400
401########################################################################
402# cas special sans physique
403########################################################################
404if ( "$physique" == 'nophys' ) then
405   set phys="L_PHY= LIBPHY="
406endif
407
408########################################################################
409# choix du nombre de traceur par defaut si il n'a pas ete choisi,
410# suivant la physique
411########################################################################
412
413if ( $ntrac == 0  ) then
414    if ( "$physique" == 'nophys' ) then
415        set ntrac=1
416    else if ( "$physique" == 'lmd' ) then
417        set ntrac=2
418    else if ( "$physique" == 'lmd_test_li' ) then
419        set ntrac=2
420    else if ( "$physique" == 'ec' ) then
421        set ntrac=1
422    else
423        set ntrac = 1
424    endif
425endif
426
427########################################################################
428#subtilites sur le nom de la librairie
429########################################################################
430
431
432\rm tmp ; touch tmp
433\rm tmp90 ; touch tmp90
434foreach i ( $optim90 )
435   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
436end
437set suf=
438foreach i ( `sort tmp | uniq ` )
439   set suf=$suf$i
440end
441if ( ! $IBM ) then
442   set nomlib="$nomlib$suf"
443endif
444if ( $DEC ) then
445   set nomlib=DEC
446endif
447
448# dimension
449echo "dimension avant sed $dim"
450if ( $IBM ) then
451   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
452   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
453else if ( $SUN || $XNEC ) then
454   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
455   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
456else
457     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
458     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
459endif
460
461# bands
462echo "bands avant sed $bands"
463if ( $IBM ) then
464   set bands=`echo $bands | sed -en 's/[^0-9]/ /g'`
465   set bands_=`echo $bands | sed -en 's/[^0-9]/_/g'`
466else if ( $SUN || $XNEC ) then
467   set bands=`echo $bands | sed -e 's/[^0-9]/ /g'` 
468   set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
469else
470     set bands=`echo $bands | sed -e 's/[^0-9]/ /g'`
471     set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
472endif
473
474
475# build final name of libraries directory:
476if ( "$dyntype" == "olddyn" ) then
477  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
478else
479  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
480endif
481
482# Append number of bands to nomlib (new for universal model)
483set nomlib=${nomlib}_${bands_}
484
485# Append 'physique' type, if it is not mars, to nomlib
486if ( "$physique" != "mars" ) then
487  set nomlib=${nomlib}_${physique}
488endif
489
490## M-A-F nomlib trop long sur CRAY pour ar
491if ( $CRAY ) then
492    set nomlib=F90_${dim_}_t${ntrac}
493endif
494if ( $NEC || $XNEC ) then
495    set nomlib=F90_${dim_}_t${ntrac}
496endif
497
498echo "calcul de la dimension"
499set dimc=`echo $dim | wc -w`
500
501if ( "$dimc" == "2" ) then
502  set include="$include "'-I$(LIBF)/dyn2d '
503  set dimh=$dim
504else
505  if ( "$dyntype" == "olddyn" ) then
506    set include="$include "'-I$(LIBF)/olddyn3d '
507  else
508    set include="$include "'-I$(LIBF)/dyn3d '
509  endif
510  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
511endif
512echo "dimc is $dimc"
513
514########################################################################
515# path pour les #include
516########################################################################
517
518set include="$include -I$NCDFINC "
519echo $include
520
521########################################################################
522# Gestion des dimensions du modele.
523# on cree ou remplace le fichier des dimensions/nombre de traceur
524########################################################################
525
526cd $libf/grid
527if ( -f dimensions.h ) then
528  echo "WARNING: you are already compiling the model somewhere else"
529  echo "Wait until the first compilation is finished before starting."
530  echo "If you are sure that you are not compiling elsewhere, you can"
531  echo "type [yes] to continue."
532  echo "Do you want to continue?"
533#  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
534#  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
535#  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
536#  echo "vous pouvez continuer en repondant oui."
537#  echo "Voulez-vous vraiment continuer?"
538  if ( $< == "yes" ) then
539    #remove old dimensions.h file
540    \rm $libf/grid/dimensions.h
541    \rm $libf/grid/bands.h
542  else
543    exit
544  endif
545endif
546
547# Build the appropriate 'dimensions.h' file
548cd dimension
549makdim $ntrac $dim
550# echo contents of dimensions.h to standard output
551cat $libf/grid/dimensions.h
552
553# Build the appropriate 'bands.h' file
554makbands $bands
555# echo contents of bands.h to standard output
556cat $libf/grid/bands.h
557
558cd $LMDGCM
559# set path to objects directory
560set libo=$libo/$nomlib
561# create objects directory, if it doesn't exist
562if ( ! -d $libo )  then
563   mkdir $libo
564   cd $model
565endif
566
567########################################################################
568# Differentes dynamiques (3d, 2d, 1d)
569########################################################################
570
571set dimension=`echo $dim | wc -w`
572echo dimension $dimension dim $dim
573if ( $dimension == 1 ) then
574  echo pas de dynamique
575  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
576endif
577endif
578
579cd $model
580if ( $dimension == 3 ) then
581  cd libf/grid
582  \rm fxyprim.h
583  cp -p fxy_${grille}.h fxyprim.h
584endif
585
586######################################################################
587#   Traitement special pour le nouveau rayonnement de Laurent Li.
588######################################################################
589#if ( -f $libf/phy$physique/raddim.h ) then
590#  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
591#    \rm $libf/phy$physique/raddim.h
592#    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
593#    echo $libf/phy$physique/raddim.$dimh.h
594#    cat $libf/phy$physique/raddim.$dimh.h
595#    cat $libf/phy$physique/raddim.h
596#  else
597#    echo On peut diminuer la taille de l executable en creant
598#    echo le fichier $libf/phy$physique/raddim.$dimh.h
599#    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
600#  endif
601#endif
602
603######################################################################
604# Gestion du filtre qui n'existe qu'en 3d.
605######################################################################
606
607# set filtre to 'oldfiltrez' if using -olddyn option
608if ( "$dyntype" == "olddyn" ) then
609  set filtre="oldfiltrez"
610endif
611
612if ( `expr $dimc \> 2` == 1 ) then
613   set filtre="FILTRE=$filtre"
614else
615   set filtre="FILTRE= L_FILTRE= "
616endif
617echo "MACRO FILTRE $filtre"
618
619echo "dimc $dimc"
620
621########################################################################
622#  Avant de lancer le make, on recree le makefile si necessaire
623########################################################################
624# c'est a dire dans 3 cas:
625# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
626#    derniere creation du makefile
627# 2. si le fichier contenant cette liste "liste_des_sources"
628#    n'existe pas.
629# 3. Si le makefile n'existe pas.
630########################################################################
631
632cd $model
633find libf -name '*.[Fh]' -print >! tmp77
634#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
635find libf -name '*.[Fh]90' -print >> tmp90
636
637if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
638     || `diff tmp90 liste_des_sources_f90 | wc -w` \
639     || ! -f makefile \
640     || ! -f liste_des_sources_f90 \
641     || ! -f liste_des_sources_f77 ) then
642        echo "les fichiers suivants ont ete crees ou detruits"
643        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
644        diff liste_des_sources_f77 tmp77
645        diff liste_des_sources_f90 tmp90
646        \cp tmp77 liste_des_sources_f77
647        \cp tmp90 liste_des_sources_f90
648        echo "Remaking the makefile!"
649        if ("$dyntype" == "olddyn") then
650          ./create_make_gcm olddyn3d grid bibio phy$physique >! tmp
651        else
652          ./create_make_gcm dyn3d grid bibio phy$physique >! tmp
653        endif
654        \mv tmp makefile
655        echo "New makefile created."
656endif
657
658########################################################################
659#  Execution de la comande make
660########################################################################
661
662
663echo PHYSIQUE $phys
664echo dynamique $dyn $dimension
665echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
666echo PATH pour les fichiers INCLUDE $include
667echo OPLINK="$oplink"
668
669if $HP then
670   set f77='fort77 +OP'
671   set f90='jensaisrien'
672   set opt_link="$opt_link -lm"
673else  if $VPP then
674   set f77=frt
675   set f90=$f77
676else if $CRAY then
677   set f77=f90
678   set f90=f90
679else if $LINUX then
680#   set f77=ifort
681#   set f90=ifort
682#   set opt_link=" -L$LIBOGCM -L$NCDFLIB -lnetcdf "
683   set f77=pgf90
684   set f90=pgf90
685else if $SUN then
686   set f77=f90
687   set f90=f90
688else if $NEC then
689   set f77=f90
690   set f90=f90
691else if $XNEC then
692   set f77=sxmpif90
693   set f90=sxmpif90
694else
695   set f77=f77
696   set f90=f90
697endif
698
699cd $model
700
701if $VPP then
702  set make="gmake RANLIB=ls"
703else if $CRAY then
704  set make="make RANLIB=ls"
705else if $NEC then
706  set make="make RANLIB=ls"
707else if $LINUX then
708  set make="make -k RANLIB=ranlib"
709else if $XNEC then
710  set make="/usr/local/bin/gmake RANLIB=ls"
711  set make="/usr/freeware/bin/gmake RANLIB=ls"
712else
713  set make="make RANLIB=ranlib"
714endif
715
716
717
718#
719# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
720# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
721#
722#if ($code == 'create_limit' && $SUN) then
723#   set link=f77
724#   set opt_link="-L$NCDFLIB -lnetcdf"
725#endif
726
727#if ($code == 'create_etat0' && $SUN) then
728#   if ( ! -f $libo/libdyn3d.a ) then
729#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
730#     \rm $libf/grid/dimensions.h
731#     exit
732#   endif
733#   set optim90=" -dalign -fixed "
734#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
735#   set link="$f90 $optim90"
736#   touch $LMDGCM/libf/dyn3d/startvar.F
737#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
738#endif
739
740#
741# Encore un test temporaire: probleme de compilation sur VPP
742# l'optimisation de startvar se passe mal
743#
744#if ($code == 'create_etat0' && $VPP) then
745#   if ( ! -f $libo/libdyn3d.a ) then
746#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
747#     \rm $libf/grid/dimensions.h                                             
748#     exit                       
749#   endif
750#   set optim90="$optim90"" -X9 -w"
751#   set opt_link="-L$NCDFLIB -lnetcdf"
752#   touch $LMDGCM/libf/dyn3d/startvar.F
753#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
754#endif
755
756#
757# etat0_netcdf a besoin d'info de la physique
758# A revoir
759set include="$include"" -I$libf/phy$physique"
760
761
762#################################################################
763# Execution de la comande make... ENFIN!
764#################################################################
765
766if $VPP then
767  set optim90=" $optim90 -Am -M$libo"
768  set optimtru90="$optim90"
769else if $SUN then
770 set optim90=" $optim90 -M$libo"
771 set optimtru90=" $optimtru90 "
772else if $NEC then
773 set optim90=" $optim90 -I$libo "
774else if $XNEC then
775 set optim90=" $optim90 -I$libo "
776 set optimtru90=" $optimtru90 -I$libo "
777else if $LINUX then
778# set optim="$optim -I${libo}"
779# set optim90="$optim90 -I${libo}"
780# set optimtru90="$optimtru90 -ffree-form -I${libo}"
781 set optim="$optim -module $libo"
782 set optim90="$optim90 -module $libo"
783 set optimtru90="$optimtru90 -module $libo"
784# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
785# set mod_loc_dir=$libo
786endif
787
788set link="$f90 $optim90"
789
790set ar=ar
791
792if $XNEC then
793  set link="sxld $opt_link"
794  set link="$f90 "
795#  set ar=sxar
796endif
797
798
799cd $localdir
800
801set source_code=${code}.F
802if (-f $LMDGCM/libf/phystd/${code}.F90) then
803  set source_code=${code}.F90
804endif
805
806echo $make -f $LMDGCM/makefile \
807OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
808OPTIM="$optim" \
809OPTIM90="$optim90" \
810OPTIMTRU90="$optimtru90" \
811INCLUDE="$include" \
812$filtre \
813LIBO=$libo \
814$dyn \
815$phys \
816DIM=$dimc \
817DYNTYPE="$dyntype" \
818L_ADJNT="$adjnt" \
819LOCAL_DIR="$localdir"  \
820F77="$f77" \
821F90="$f90" \
822OPLINK="$oplink" \
823LINK="$link" \
824GCM="$LMDGCM" \
825MOD_LOC_DIR=$mod_loc_dir \
826MOD_SUFFIX=$mod_suffix \
827AR=$ar \
828SOURCE=$source_code \
829PROG=$code
830
831
832$make -f $LMDGCM/makefile \
833OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
834OPTIM="$optim" \
835OPTIM90="$optim90" \
836OPTIMTRU90="$optimtru90" \
837INCLUDE="$include" \
838$filtre \
839LIBO=$libo \
840$dyn \
841$phys \
842DIM=$dimc \
843DYNTYPE="$dyntype" \
844L_ADJNT="$adjnt" \
845LOCAL_DIR="$localdir"  \
846F77="$f77" \
847F90="$f90" \
848OPLINK="$oplink" \
849LINK="$link" \
850GCM="$LMDGCM" \
851MOD_LOC_DIR=$mod_loc_dir \
852MOD_SUFFIX=$mod_suffix \
853AR=$ar \
854SOURCE=$source_code \
855PROG=$code
856
857\rm $libf/grid/dimensions.h
858\rm $libf/grid/bands.h
Note: See TracBrowser for help on using the repository browser.