source: trunk/LMDZ.GENERIC/makegcm_ifort @ 157

Last change on this file since 157 was 135, checked in by aslmd, 14 years ago

CHANGEMENT ARBORESCENCE ETAPE 2 -- NON COMPLET

  • Property svn:executable set to *
File size: 24.6 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="8x7"
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 optimtru90="$2" ; shift ; shift ; goto top
331        set optim90="$2" ; optim="$2" ; optimtru90="$2" ; shift ; shift ; goto top
332
333     case -p
334        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
335
336     case -g
337        set grille="$2" ; shift ; shift ; goto top
338
339    case -b
340        set bands=$2 ; shift ; shift ; goto top
341           
342     case -t
343        set ntrac=$2 ; shift ; shift ; goto top
344
345     case -include
346        set include="$include -I$2" ; shift ; shift ; goto top
347
348     case -adjnt
349        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
350
351     case -olddyn
352        set dyntype="olddyn" ; shift; goto top
353
354     case -filtre
355        set filtre=$2 ; shift ; shift ; goto top
356
357     case -link
358        set opt_link="$opt_link $2" ; shift ; shift ; goto top
359
360     case -debug
361        if $HP then
362           set optim90=" -g "
363        else if $SUN then
364           setenv PARALLEL 4
365           set optim90=" -g -C "
366           set optimtru90=" -g -C "
367        else if $CRAY then
368           set optim90="$optim90"" -G1 "
369        else if $LINUX then
370           set optim=" -g -no-ftz -traceback -ftrapuv -fp-stack-check "
371           set optim90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check "
372           set optimtru90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check "
373        else
374           echo "pas d option debug predefinie pour cette machine"
375           exit
376        endif
377        shift ; goto top
378
379     default
380        set code="$1" ; shift ; goto top
381
382   endsw
383endif
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\rm tmp ; touch tmp
418\rm tmp90 ; touch tmp90
419foreach i ( $optim90 )
420   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
421end
422set suf=
423foreach i ( `sort tmp | uniq ` )
424   set suf=$suf$i
425end
426if ( ! $IBM ) then
427   set nomlib="$nomlib$suf"
428endif
429if ( $DEC ) then
430   set nomlib=DEC
431endif
432
433# dimension
434echo "dimension avant sed $dim"
435if ( $IBM ) then
436   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
437   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
438else if ( $SUN || $XNEC ) then
439   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
440   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
441else
442     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
443     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
444endif
445
446# bands
447echo "bands avant sed $bands"
448if ( $IBM ) then
449   set bands=`echo $bands | sed -en 's/[^0-9]/ /g'`
450   set bands_=`echo $bands | sed -en 's/[^0-9]/_/g'`
451else if ( $SUN || $XNEC ) then
452   set bands=`echo $bands | sed -e 's/[^0-9]/ /g'` 
453   set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
454else
455     set bands=`echo $bands | sed -e 's/[^0-9]/ /g'`
456     set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
457endif
458
459
460# build final name of libraries directory:
461if ( "$dyntype" == "olddyn" ) then
462  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
463else
464  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
465endif
466
467# Append number of bands to nomlib (new for universal model)
468set nomlib=${nomlib}_${bands_}
469
470# Append 'physique' type, if it is not mars, to nomlib
471if ( "$physique" != "mars" ) then
472  set nomlib=${nomlib}_${physique}
473endif
474
475## M-A-F nomlib trop long sur CRAY pour ar
476if ( $CRAY ) then
477    set nomlib=F90_${dim_}_t${ntrac}
478endif
479if ( $NEC || $XNEC ) then
480    set nomlib=F90_${dim_}_t${ntrac}
481endif
482
483echo "calcul de la dimension"
484set dimc=`echo $dim | wc -w`
485
486if ( "$dimc" == "2" ) then
487  set include="$include "'-I$(LIBF)/dyn2d '
488  set dimh=$dim
489else
490  if ( "$dyntype" == "olddyn" ) then
491    set include="$include "'-I$(LIBF)/olddyn3d '
492  else
493    set include="$include "'-I$(LIBF)/dyn3d '
494  endif
495  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
496endif
497echo "dimc is $dimc"
498
499########################################################################
500# path pour les #include
501########################################################################
502
503set include="$include -I$NCDFINC "
504echo $include
505
506########################################################################
507# Gestion des dimensions du modele.
508# on cree ou remplace le fichier des dimensions/nombre de traceur
509########################################################################
510
511cd $libf/grid
512if ( -f dimensions.h ) then
513  echo "WARNING: you are already compiling the model somewhere else"
514  echo "Wait until the first compilation is finished before starting."
515  echo "If you are sure that you are not compiling elsewhere, you can"
516  echo "type [yes] to continue."
517  echo "Do you want to continue?"
518#  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
519#  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
520#  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
521#  echo "vous pouvez continuer en repondant oui."
522#  echo "Voulez-vous vraiment continuer?"
523  if ( $< == "yes" ) then
524    #remove old dimensions.h file
525    \rm $libf/grid/dimensions.h
526    \rm $libf/grid/bands.h
527  else
528    exit
529  endif
530endif
531
532# Build the appropriate 'dimensions.h' file
533cd dimension
534makdim $ntrac $dim
535# echo contents of dimensions.h to standard output
536cat $libf/grid/dimensions.h
537
538# Build the appropriate 'bands.h' file
539makbands $bands
540# echo contents of bands.h to standard output
541cat $libf/grid/bands.h
542
543cd $LMDGCM
544# set path to objects directory
545set libo=$libo/$nomlib
546# create objects directory, if it doesn't exist
547if ( ! -d $libo )  then
548   mkdir $libo
549   cd $model
550endif
551
552########################################################################
553# Differentes dynamiques (3d, 2d, 1d)
554########################################################################
555
556set dimension=`echo $dim | wc -w`
557echo dimension $dimension dim $dim
558if ( $dimension == 1 ) then
559  echo pas de dynamique
560  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
561endif
562endif
563
564cd $model
565if ( $dimension == 3 ) then
566  cd libf/grid
567  \rm fxyprim.h
568  cp -p fxy_${grille}.h fxyprim.h
569endif
570
571######################################################################
572#   Traitement special pour le nouveau rayonnement de Laurent Li.
573######################################################################
574#if ( -f $libf/phy$physique/raddim.h ) then
575#  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
576#    \rm $libf/phy$physique/raddim.h
577#    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
578#    echo $libf/phy$physique/raddim.$dimh.h
579#    cat $libf/phy$physique/raddim.$dimh.h
580#    cat $libf/phy$physique/raddim.h
581#  else
582#    echo On peut diminuer la taille de l executable en creant
583#    echo le fichier $libf/phy$physique/raddim.$dimh.h
584#    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
585#  endif
586#endif
587
588######################################################################
589# Gestion du filtre qui n'existe qu'en 3d.
590######################################################################
591
592# set filtre to 'oldfiltrez' if using -olddyn option
593if ( "$dyntype" == "olddyn" ) then
594  set filtre="oldfiltrez"
595endif
596
597if ( `expr $dimc \> 2` == 1 ) then
598   set filtre="FILTRE=$filtre"
599else
600   set filtre="FILTRE= L_FILTRE= "
601endif
602echo "MACRO FILTRE $filtre"
603
604echo "dimc $dimc"
605
606########################################################################
607#  Avant de lancer le make, on recree le makefile si necessaire
608########################################################################
609# c'est a dire dans 3 cas:
610# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
611#    derniere creation du makefile
612# 2. si le fichier contenant cette liste "liste_des_sources"
613#    n'existe pas.
614# 3. Si le makefile n'existe pas.
615########################################################################
616
617cd $model
618find libf -name '*.[Fh]' -print >! tmp77
619#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
620find libf -name '*.[Fh]90' -print >> tmp90
621
622if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
623     || `diff tmp90 liste_des_sources_f90 | wc -w` \
624     || ! -f makefile \
625     || ! -f liste_des_sources_f90 \
626     || ! -f liste_des_sources_f77 ) then
627        echo "les fichiers suivants ont ete crees ou detruits"
628        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
629        diff liste_des_sources_f77 tmp77
630        diff liste_des_sources_f90 tmp90
631        \cp tmp77 liste_des_sources_f77
632        \cp tmp90 liste_des_sources_f90
633        echo "Remaking the makefile!"
634        if ("$dyntype" == "olddyn") then
635          ./create_make_gcm olddyn3d grid bibio phy$physique >! tmp
636        else
637          ./create_make_gcm dyn3d grid bibio phy$physique >! tmp
638        endif
639        \mv tmp makefile
640        echo "New makefile created."
641endif
642
643########################################################################
644#  Execution de la comande make
645########################################################################
646
647echo PHYSIQUE $phys
648echo dynamique $dyn $dimension
649echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
650echo PATH pour les fichiers INCLUDE $include
651echo OPLINK="$oplink"
652
653if $HP then
654   set f77='fort77 +OP'
655   set f90='jensaisrien'
656   set opt_link="$opt_link -lm"
657else  if $VPP then
658   set f77=frt
659   set f90=$f77
660else if $CRAY then
661   set f77=f90
662   set f90=f90
663else if $LINUX then
664   set f77=ifort
665   set f90=ifort
666   set opt_link=" -L$LIBOGCM -L$NCDFLIB -lnetcdf "
667#   set f77=pgf90
668#   set f90=pgf90
669else if $SUN then
670   set f77=f90
671   set f90=f90
672else if $NEC then
673   set f77=f90
674   set f90=f90
675else if $XNEC then
676   set f77=sxmpif90
677   set f90=sxmpif90
678else
679   set f77=f77
680   set f90=f90
681endif
682
683cd $model
684
685if $VPP then
686  set make="gmake RANLIB=ls"
687else if $CRAY then
688  set make="make RANLIB=ls"
689else if $NEC then
690  set make="make RANLIB=ls"
691else if $LINUX then
692  set make="make -k RANLIB=ranlib"
693else if $XNEC then
694  set make="/usr/local/bin/gmake RANLIB=ls"
695  set make="/usr/freeware/bin/gmake RANLIB=ls"
696else
697  set make="make RANLIB=ranlib"
698endif
699
700
701
702#
703# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
704# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
705#
706#if ($code == 'create_limit' && $SUN) then
707#   set link=f77
708#   set opt_link="-L$NCDFLIB -lnetcdf"
709#endif
710
711#if ($code == 'create_etat0' && $SUN) then
712#   if ( ! -f $libo/libdyn3d.a ) then
713#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
714#     \rm $libf/grid/dimensions.h
715#     exit
716#   endif
717#   set optim90=" -dalign -fixed "
718#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
719#   set link="$f90 $optim90"
720#   touch $LMDGCM/libf/dyn3d/startvar.F
721#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
722#endif
723
724#
725# Encore un test temporaire: probleme de compilation sur VPP
726# l'optimisation de startvar se passe mal
727#
728#if ($code == 'create_etat0' && $VPP) then
729#   if ( ! -f $libo/libdyn3d.a ) then
730#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
731#     \rm $libf/grid/dimensions.h                                             
732#     exit                       
733#   endif
734#   set optim90="$optim90"" -X9 -w"
735#   set opt_link="-L$NCDFLIB -lnetcdf"
736#   touch $LMDGCM/libf/dyn3d/startvar.F
737#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
738#endif
739
740#
741# etat0_netcdf a besoin d'info de la physique
742# A revoir
743set include="$include"" -I$libf/phy$physique"
744
745
746#################################################################
747# Execution de la comande make... ENFIN!
748#################################################################
749
750if $VPP then
751  set optim90=" $optim90 -Am -M$libo"
752  set optimtru90="$optim90"
753else if $SUN then
754 set optim90=" $optim90 -M$libo"
755 set optimtru90=" $optimtru90 "
756else if $NEC then
757 set optim90=" $optim90 -I$libo "
758else if $XNEC then
759 set optim90=" $optim90 -I$libo "
760 set optimtru90=" $optimtru90 -I$libo "
761else if $LINUX then
762 set optim="$optim -module $libo"
763 set optim90="$optim90 -module $libo"
764 set optimtru90="$optimtru90 -module $libo"
765# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
766# set mod_loc_dir=$libo
767endif
768
769set link="$f90 $optim90"
770
771set ar=ar
772
773if $XNEC then
774  set link="sxld $opt_link"
775  set link="$f90 "
776#  set ar=sxar
777endif
778
779
780cd $localdir
781
782echo $make -f $LMDGCM/makefile \
783OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
784OPTIM="$optim" \
785OPTIM90="$optim90" \
786OPTIMTRU90="$optimtru90" \
787INCLUDE="$include" \
788$filtre \
789LIBO=$libo \
790$dyn \
791$phys \
792DIM=$dimc \
793DYNTYPE="$dyntype" \
794L_ADJNT="$adjnt" \
795LOCAL_DIR="$localdir"  \
796F77="$f77" \
797F90="$f90" \
798OPLINK="$oplink" \
799LINK="$link" \
800GCM="$LMDGCM" \
801MOD_LOC_DIR=$mod_loc_dir \
802MOD_SUFFIX=$mod_suffix \
803AR=$ar \
804PROG=$code
805
806
807$make -f $LMDGCM/makefile \
808OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
809OPTIM="$optim" \
810OPTIM90="$optim90" \
811OPTIMTRU90="$optimtru90" \
812INCLUDE="$include" \
813$filtre \
814LIBO=$libo \
815$dyn \
816$phys \
817DIM=$dimc \
818DYNTYPE="$dyntype" \
819L_ADJNT="$adjnt" \
820LOCAL_DIR="$localdir"  \
821F77="$f77" \
822F90="$f90" \
823OPLINK="$oplink" \
824LINK="$link" \
825GCM="$LMDGCM" \
826MOD_LOC_DIR=$mod_loc_dir \
827MOD_SUFFIX=$mod_suffix \
828AR=$ar \
829PROG=$code
830
831\rm $libf/grid/dimensions.h
832\rm $libf/grid/bands.h
Note: See TracBrowser for help on using the repository browser.