source: trunk/LMDZ.GENERIC/makegcm @ 200

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

CHANGEMENT ARBORESCENCE ETAPE 2 -- NON COMPLET

  • 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###### VERSION LMDZ.3.3
21# set LMDGCM=$HOME/LMDZ.3.3
22#
23
24#### If you want you can set environment variables here
25#setenv LMDGCM /d5/emlmd/test_universal/v0.4/LMDZ.UCM
26#setenv LIBOGCM $LMDGCM/libo
27#if ( `uname -m` == "x86_64" ) then
28## 64 bit machines
29#  setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_pgi/lib
30#  setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_pgi/include
31#else
32#  setenv NCDFLIB /donnees/emlmd/netcdf-4.0.1_pgi/lib
33#  setenv NCDFINC /donnees/emlmd/netcdf-4.0.1_pgi/include
34#endif
35
36####
37
38setenv localdir "`pwd`"
39set MODIPSL=0
40echo $localdir | grep modipsl >& /dev/null
41if ( ! $status ) then
42  set MODIPSL=1
43  setenv LMDGCM $localdir
44  cd ../..
45  setenv LIBOGCM "`pwd`/lib"
46  cd $localdir
47  if ( `hostname` == rhodes ) then
48    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
49    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
50  else
51    if ( `hostname` == nymphea0 ) then
52      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
53      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
54    else
55      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
56    endif
57  endif
58else
59  if ( ! $?LMDGCM ) then
60    echo You must initialize the variable LMDGCM in your environnement
61    echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc
62    exit
63  endif
64  if ( ! $?LIBOGCM ) then
65    set LIBOGCM=$LMDGCM/libo
66  endif
67  if ( ! $?NCDFLIB ) then
68    echo You must initialize the variable NCDFLIB in your environnement
69    echo for instance: "setenv NCDFLIB /usr/myself/netcdf" in .cshrc
70    exit
71  endif
72  if ( ! $?NCDFINC ) then
73    echo You must initialize the variable NCDFINC in your environnement
74    echo for instance: "setenv NCDFINC /usr/myself/netcdf" in .cshrc
75    exit
76  endif
77endif
78set model=$LMDGCM
79set libo=$LIBOGCM
80
81########################################################################
82#  Les differentes platformes reconnues
83########################################################################
84
85set HP=0
86set IBM=0
87set SUN=0
88set VPP=0
89set CRAY=0
90set DEC=0
91set LINUX=0
92set NEC=0
93set XNEC=0
94if ( `uname` == HP-UX ) then
95   set machine=HP
96   set HP=1
97else if (`uname` == UNIX_System_V ) then
98   set machine=VPP
99   set VPP=1
100else if (`uname` == SunOS ) then
101   set machine=SUN
102   set SUN=1
103else if ( `uname` == AIX ) then
104   set machine=IBM
105   set IBM=1
106else if ( `uname` == OSF1 ) then
107   set machine=ALPHA
108   set DEC=1
109else if ( `uname` == Linux ) then
110   set machine=LINUX
111   set LINUX=1
112else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
113   set machine=CRAY
114   set CRAY=1
115else if ( `uname` == SUPER-UX ) then
116   set machine=NEC
117   set NEC=1
118else if ( `hostname` == rhodes) then
119   set machine=XNEC
120   set XNEC=1
121else
122   echo Vous travaillez sur une machine non prevue par le reglement
123   exit
124endif
125
126# create $libo directory if it doesn't exist
127if ( ! -d $libo )  then
128   mkdir $libo
129endif
130
131if $VPP then
132set netcdf=netcdf_v
133else
134set netcdf=netcdf
135endif
136########################################################################
137#  Quelques initialisations de variables du shell.
138########################################################################
139
140set dyn=
141set opt_link=""
142set adjnt=""
143set opt_dep=""
144
145set optim90=""
146set oplink=""
147
148########################################################################
149#  Optimisations par defaut suivant les machines
150########################################################################
151
152echo "Optimisations par defaut suivant les machines"
153set libf=$model/libf
154#setenv localdir "LOCAL_DIR=`pwd`"
155#setenv localdir "`pwd`"
156cd $model
157if $CRAY then
158   set optim90="-Wp'-P' -DCRAY "'-p$(LIBO) -eiv '
159   set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdf "
160   set mod_loc_dir=" "
161   set mod_suffix=" "
162else if $SUN then
163   set optim90=" -fast"
164   set optimtru90=" -fast -free"
165   set opt_link="-L$NCDFLIB -lnetcdf"
166   set mod_loc_dir=$localdir
167   set mod_suffix=mod
168else if $HP then
169else if $IBM then
170else if $VPP then
171   set optim90="$optim -X9 -w"
172   if $COUPLE then
173     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"
174     set oplink="-Wl,-t,-P,-dy "
175   else
176     set opt_link="-Wg,-c /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
177     set oplink="-Wl,-t,-dy "
178   endif
179   set mod_loc_dir=$IOIPSLDIR
180   set mod_suffix=mod
181else if $DEC then
182else if $LINUX then
183   set optim90=" -fast"
184   set optimtru90=" -fast -c -Mfree "
185#   set opt_link=" -Mfree -L/usr/local/pgi/linux86/lib -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Wl,-Bstatic "
186# Ehouarn: there is no /usr/local/pgi/linux86/lib, but it doesn't matter
187#          also changed -Wl,-Bstatic to -Bstatic
188   set opt_link=" -Mfree -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Bstatic "
189   set mod_loc_dir=$localdir
190   set mod_suffix=mod
191else if $NEC then
192   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
193   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
194###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
195   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
196   set mod_loc_dir="."
197   set mod_suffix="mod"
198else if $XNEC then
199   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
200   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
201   if $MODIPSL then
202     if $COUPLE then
203       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
204     else
205       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
206     endif
207     set mod_loc_dir="./"
208   else
209####     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"
210     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
211     set mod_loc_dir="."
212   endif
213   set mod_suffix="mod"
214
215endif
216
217set nomlib=$machine
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
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" ; set optimtru90="$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 -b
352        set bands=$2 ; shift ; shift ; goto top
353           
354     case -t
355        set ntrac=$2 ; shift ; shift ; goto top
356
357     case -include
358        set include="$include -I$2" ; shift ; shift ; goto top
359
360     case -adjnt
361        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
362
363     case -olddyn
364        set dyntype="olddyn" ; shift; goto top
365
366     case -filtre
367        set filtre=$2 ; shift ; shift ; goto top
368
369     case -link
370        set opt_link="$opt_link $2" ; shift ; shift ; goto top
371
372     case -debug
373        if $HP then
374           set optim90=" -g "
375        else if $SUN then
376           setenv PARALLEL 4
377           set optim90=" -g -C "
378           set optimtru90=" -g -C "
379        else if $CRAY then
380           set optim90="$optim90"" -G1 "
381        else if $LINUX then
382           set optim90="-g -Mbounds "
383           set optimtrue90="-g -Mbounds -Mfree"
384        else
385           echo "pas d option debug predefinie pour cette machine"
386           exit
387        endif
388        shift ; goto top
389
390     default
391        set code="$1" ; shift ; goto top
392
393   endsw
394endif
395
396echo "apres les opts dim $dim"
397
398########################################################################
399# cas special sans physique
400########################################################################
401if ( "$physique" == 'nophys' ) then
402   set phys="L_PHY= LIBPHY="
403endif
404
405########################################################################
406# choix du nombre de traceur par defaut si il n'a pas ete choisi,
407# suivant la physique
408########################################################################
409
410if ( $ntrac == 0  ) then
411    if ( "$physique" == 'nophys' ) then
412        set ntrac=1
413    else if ( "$physique" == 'lmd' ) then
414        set ntrac=2
415    else if ( "$physique" == 'lmd_test_li' ) then
416        set ntrac=2
417    else if ( "$physique" == 'ec' ) then
418        set ntrac=1
419    else
420        set ntrac = 1
421    endif
422endif
423
424########################################################################
425#subtilites sur le nom de la librairie
426########################################################################
427
428\rm tmp ; touch tmp
429\rm tmp90 ; touch tmp90
430foreach i ( $optim90 )
431   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
432end
433set suf=
434foreach i ( `sort tmp | uniq ` )
435   set suf=$suf$i
436end
437if ( ! $IBM ) then
438   set nomlib="$nomlib$suf"
439endif
440if ( $DEC ) then
441   set nomlib=DEC
442endif
443
444# dimension
445echo "dimension avant sed $dim"
446if ( $IBM ) then
447   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
448   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
449else if ( $SUN || $XNEC ) then
450   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
451   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
452else
453     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
454     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
455endif
456
457# bands
458echo "bands avant sed $bands"
459if ( $IBM ) then
460   set bands=`echo $bands | sed -en 's/[^0-9]/ /g'`
461   set bands_=`echo $bands | sed -en 's/[^0-9]/_/g'`
462else if ( $SUN || $XNEC ) then
463   set bands=`echo $bands | sed -e 's/[^0-9]/ /g'` 
464   set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
465else
466     set bands=`echo $bands | sed -e 's/[^0-9]/ /g'`
467     set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
468endif
469
470
471# build final name of libraries directory:
472if ( "$dyntype" == "olddyn" ) then
473  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
474else
475  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
476endif
477
478# Append number of bands to nomlib (new for universal model)
479set nomlib=${nomlib}_${bands_}
480
481# Append 'physique' type, if it is not mars, to nomlib
482if ( "$physique" != "mars" ) then
483  set nomlib=${nomlib}_${physique}
484endif
485
486## M-A-F nomlib trop long sur CRAY pour ar
487if ( $CRAY ) then
488    set nomlib=F90_${dim_}_t${ntrac}
489endif
490if ( $NEC || $XNEC ) then
491    set nomlib=F90_${dim_}_t${ntrac}
492endif
493
494echo "calcul de la dimension"
495set dimc=`echo $dim | wc -w`
496
497if ( "$dimc" == "2" ) then
498  set include="$include "'-I$(LIBF)/dyn2d '
499  set dimh=$dim
500else
501  if ( "$dyntype" == "olddyn" ) then
502    set include="$include "'-I$(LIBF)/olddyn3d '
503  else
504    set include="$include "'-I$(LIBF)/dyn3d '
505  endif
506  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
507endif
508echo "dimc is $dimc"
509
510########################################################################
511# path pour les #include
512########################################################################
513
514set include="$include -I$NCDFINC "
515echo $include
516
517########################################################################
518# Gestion des dimensions du modele.
519# on cree ou remplace le fichier des dimensions/nombre de traceur
520########################################################################
521
522cd $libf/grid
523if ( -f dimensions.h ) then
524  echo "WARNING: you are already compiling the model somewhere else"
525  echo "Wait until the first compilation is finished before starting."
526  echo "If you are sure that you are not compiling elsewhere, you can"
527  echo "type [yes] to continue."
528  echo "Do you want to continue?"
529#  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
530#  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
531#  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
532#  echo "vous pouvez continuer en repondant oui."
533#  echo "Voulez-vous vraiment continuer?"
534  if ( $< == "yes" ) then
535    #remove old dimensions.h file
536    \rm $libf/grid/dimensions.h
537    \rm $libf/grid/bands.h
538  else
539    exit
540  endif
541endif
542
543# Build the appropriate 'dimensions.h' file
544cd dimension
545makdim $ntrac $dim
546# echo contents of dimensions.h to standard output
547cat $libf/grid/dimensions.h
548
549# Build the appropriate 'bands.h' file
550cd dimension
551makbands $bands
552# echo contents of bands.h to standard output
553cat $libf/grid/bands.h
554
555cd $LMDGCM
556# set path to objects directory
557set libo=$libo/$nomlib
558# create objects directory, if it doesn't exist
559if ( ! -d $libo )  then
560   mkdir $libo
561   cd $model
562endif
563
564########################################################################
565# Differentes dynamiques (3d, 2d, 1d)
566########################################################################
567
568set dimension=`echo $dim | wc -w`
569echo dimension $dimension dim $dim
570if ( $dimension == 1 ) then
571  echo pas de dynamique
572  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
573endif
574endif
575
576cd $model
577if ( $dimension == 3 ) then
578  cd libf/grid
579  \rm fxyprim.h
580  cp -p fxy_${grille}.h fxyprim.h
581endif
582
583######################################################################
584#   Traitement special pour le nouveau rayonnement de Laurent Li.
585######################################################################
586#if ( -f $libf/phy$physique/raddim.h ) then
587#  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
588#    \rm $libf/phy$physique/raddim.h
589#    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
590#    echo $libf/phy$physique/raddim.$dimh.h
591#    cat $libf/phy$physique/raddim.$dimh.h
592#    cat $libf/phy$physique/raddim.h
593#  else
594#    echo On peut diminuer la taille de l executable en creant
595#    echo le fichier $libf/phy$physique/raddim.$dimh.h
596#    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
597#  endif
598#endif
599
600######################################################################
601# Gestion du filtre qui n'existe qu'en 3d.
602######################################################################
603
604# set filtre to 'oldfiltrez' if using -olddyn option
605if ( "$dyntype" == "olddyn" ) then
606  set filtre="oldfiltrez"
607endif
608
609if ( `expr $dimc \> 2` == 1 ) then
610   set filtre="FILTRE=$filtre"
611else
612   set filtre="FILTRE= L_FILTRE= "
613endif
614echo "MACRO FILTRE $filtre"
615
616echo "dimc $dimc"
617
618########################################################################
619#  Avant de lancer le make, on recree le makefile si necessaire
620########################################################################
621# c'est a dire dans 3 cas:
622# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
623#    derniere creation du makefile
624# 2. si le fichier contenant cette liste "liste_des_sources"
625#    n'existe pas.
626# 3. Si le makefile n'existe pas.
627########################################################################
628
629cd $model
630find libf -name '*.[Fh]' -print >! tmp77
631#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
632find libf -name '*.[Fh]90' -print >> tmp90
633
634if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
635     || `diff tmp90 liste_des_sources_f90 | wc -w` \
636     || ! -f makefile \
637     || ! -f liste_des_sources_f90 \
638     || ! -f liste_des_sources_f77 ) then
639        echo "les fichiers suivants ont ete crees ou detruits"
640        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
641        diff liste_des_sources_f77 tmp77
642        diff liste_des_sources_f90 tmp90
643        \cp tmp77 liste_des_sources_f77
644        \cp tmp90 liste_des_sources_f90
645        echo "Remaking the makefile!"
646        if ("$dyntype" == "olddyn") then
647          ./create_make_gcm olddyn3d grid bibio phy$physique >! tmp
648        else
649          ./create_make_gcm dyn3d grid bibio phy$physique >! tmp
650        endif
651        \mv tmp makefile
652        echo "New makefile created."
653endif
654
655########################################################################
656#  Execution de la comande make
657########################################################################
658
659echo PHYSIQUE $phys
660echo dynamique $dyn $dimension
661echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
662echo PATH pour les fichiers INCLUDE $include
663echo OPLINK="$oplink"
664
665if $HP then
666   set f77='fort77 +OP'
667   set f90='jensaisrien'
668   set opt_link="$opt_link -lm"
669else  if $VPP then
670   set f77=frt
671   set f90=$f77
672else if $CRAY then
673   set f77=f90
674   set f90=f90
675else if $LINUX then
676   set f77=pgf90
677   set f90=pgf90
678else if $SUN then
679   set f77=f90
680   set f90=f90
681else if $NEC then
682   set f77=f90
683   set f90=f90
684else if $XNEC then
685   set f77=sxmpif90
686   set f90=sxmpif90
687else
688   set f77=f77
689   set f90=f90
690endif
691
692cd $model
693
694if $VPP then
695  set make="gmake RANLIB=ls"
696else if $CRAY then
697  set make="make RANLIB=ls"
698else if $NEC then
699  set make="make RANLIB=ls"
700else if $LINUX then
701  set make="make -k RANLIB=ranlib"
702else if $XNEC then
703  set make="/usr/local/bin/gmake RANLIB=ls"
704  set make="/usr/freeware/bin/gmake RANLIB=ls"
705else
706  set make="make RANLIB=ranlib"
707endif
708
709
710
711#
712# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
713# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
714#
715#if ($code == 'create_limit' && $SUN) then
716#   set link=f77
717#   set opt_link="-L$NCDFLIB -lnetcdf"
718#endif
719
720#if ($code == 'create_etat0' && $SUN) then
721#   if ( ! -f $libo/libdyn3d.a ) then
722#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
723#     \rm $libf/grid/dimensions.h
724#     exit
725#   endif
726#   set optim90=" -dalign -fixed "
727#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
728#   set link="$f90 $optim90"
729#   touch $LMDGCM/libf/dyn3d/startvar.F
730#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
731#endif
732
733#
734# Encore un test temporaire: probleme de compilation sur VPP
735# l'optimisation de startvar se passe mal
736#
737#if ($code == 'create_etat0' && $VPP) then
738#   if ( ! -f $libo/libdyn3d.a ) then
739#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
740#     \rm $libf/grid/dimensions.h                                             
741#     exit                       
742#   endif
743#   set optim90="$optim90"" -X9 -w"
744#   set opt_link="-L$NCDFLIB -lnetcdf"
745#   touch $LMDGCM/libf/dyn3d/startvar.F
746#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
747#endif
748
749#
750# etat0_netcdf a besoin d'info de la physique
751# A revoir
752set include="$include"" -I$libf/phy$physique"
753
754
755#################################################################
756# Execution de la comande make... ENFIN!
757#################################################################
758
759if $VPP then
760  set optim90=" $optim90 -Am -M$libo"
761  set optimtru90="$optim90"
762else if $SUN then
763 set optim90=" $optim90 -M$libo"
764 set optimtru90=" $optimtru90 "
765else if $NEC then
766 set optim90=" $optim90 -I$libo "
767else if $XNEC then
768 set optim90=" $optim90 -I$libo "
769 set optimtru90=" $optimtru90 -I$libo "
770else if $LINUX then
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
775endif
776
777set link="$f90 $optim90"
778
779set ar=ar
780
781if $XNEC then
782  set link="sxld $opt_link"
783  set link="$f90 "
784#  set ar=sxar
785endif
786
787
788cd $localdir
789
790echo $make -f $LMDGCM/makefile \
791OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
792OPTIM="$optim90" \
793OPTIM90="$optim90" \
794OPTIMTRU90="$optimtru90" \
795INCLUDE="$include" \
796$filtre \
797LIBO=$libo \
798$dyn \
799$phys \
800DIM=$dimc \
801DYNTYPE="$dyntype" \
802L_ADJNT="$adjnt" \
803LOCAL_DIR="$localdir"  \
804F77="$f77" \
805F90="$f90" \
806OPLINK="$oplink" \
807LINK="$link" \
808GCM="$LMDGCM" \
809MOD_LOC_DIR=$mod_loc_dir \
810MOD_SUFFIX=$mod_suffix \
811AR=$ar \
812PROG=$code
813
814
815$make -f $LMDGCM/makefile \
816OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
817OPTIM="$optim90" \
818OPTIM90="$optim90" \
819OPTIMTRU90="$optimtru90" \
820INCLUDE="$include" \
821$filtre \
822LIBO=$libo \
823$dyn \
824$phys \
825DIM=$dimc \
826DYNTYPE="$dyntype" \
827L_ADJNT="$adjnt" \
828LOCAL_DIR="$localdir"  \
829F77="$f77" \
830F90="$f90" \
831OPLINK="$oplink" \
832LINK="$link" \
833GCM="$LMDGCM" \
834MOD_LOC_DIR=$mod_loc_dir \
835MOD_SUFFIX=$mod_suffix \
836AR=$ar \
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.