source: trunk/LMDZ.GENERIC/makegcm_gfortran @ 357

Last change on this file since 357 was 253, checked in by emillour, 13 years ago

Generic GCM

  • Massive update to version 0.7

EM+RW

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