source: trunk/LMDZ.GENERIC/makegcm @ 301

Last change on this file since 301 was 301, checked in by rwordsworth, 13 years ago

svn commit test

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