source: trunk/LMDZ.GENERIC/makegcm_g95 @ 371

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