source: trunk/LMDZ.GENERIC/makegcm_g95 @ 471

Last change on this file since 471 was 373, checked in by emillour, 13 years ago

Generic GCM: Ooops, forgot something.
EM

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