source: trunk/MESOSCALE/LMDZ.MARS/makegcm_pgf @ 357

Last change on this file since 357 was 331, checked in by aslmd, 13 years ago

MESOSCALE: minor changes in scripts following tests on new machines and tests with g95 and gfortran. problems reported in NOTES.txt.

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