source: trunk/LMDZ.GENERIC/makegcm @ 372

Last change on this file since 372 was 371, checked in by emillour, 14 years ago

Generic model: updated makegcm(s) so that default behaviour is to set LMDGCM env variable to be the directory in which the makegcm script is. Removed files tmp77, tmp90, liste_des_sources_f90, liste_des_sources_f77 and makefile from the svn repository since these are (re-)created by makegcm.
EM

  • Property svn:executable set to *
File size: 25.0 KB
Line 
1#!/bin/csh -f
2# $Header: /users/lmdz/cvsroot/LMDZ.3.3/makegcm,v 1.21 2001/07/04 08:41:44 lmdz Exp $
3#set verbose echo
4########################################################################
5# options par defaut pour la commande make
6########################################################################
7set dim="64x48x32"
8set physique=std
9set phys="PHYS=$physique"
10set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I.'
11set ntrac = 1
12set filtre=filtrez
13set grille=reg
14set dyntype="dyn"
15set bands="32x36"
16########################################################################
17# path a changer contenant les sources et les objets du modele
18########################################################################
19
20#### If you want you can set environment variables here
21# default LMDGCM is where the makegcm script is:
22#setenv LMDGCM `pwd`"/"`dirname $0` # only works for relative paths
23setenv LMDGCM `readlink -f $0`
24#setenv LMDGCM "/san/home/rdword/gcm/LMDZ.GENERIC"
25setenv LIBOGCM $LMDGCM/libo
26# NetCDF, what is below is OK on Gnome
27setenv NCDFLIB /usr/local/lib
28setenv NCDFINC /usr/local/include
29# NetCDF, on LMD farm:
30#setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_ifort/lib
31#setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_ifort/include
32####
33
34setenv localdir "`pwd`"
35set MODIPSL=0
36echo $localdir | grep modipsl >& /dev/null
37if ( ! $status ) then
38  set MODIPSL=1
39  setenv LMDGCM $localdir
40  cd ../..
41  setenv LIBOGCM "`pwd`/lib"
42  cd $localdir
43  if ( `hostname` == rhodes ) then
44    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
45    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
46  else
47    if ( `hostname` == nymphea0 ) then
48      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
49      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
50    else
51      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
52    endif
53  endif
54else
55  if ( ! $?LMDGCM ) then
56    echo You must initialize the variable LMDGCM in your environnement
57    echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc
58    exit
59  endif
60  if ( ! $?LIBOGCM ) then
61    set LIBOGCM=$LMDGCM/libo
62  endif
63  if ( ! $?NCDFLIB ) then
64    echo You must initialize the variable NCDFLIB in your environnement
65    echo for instance: "setenv NCDFLIB /usr/myself/netcdf" in .cshrc
66    exit
67  endif
68  if ( ! $?NCDFINC ) then
69    echo You must initialize the variable NCDFINC in your environnement
70    echo for instance: "setenv NCDFINC /usr/myself/netcdf" in .cshrc
71    exit
72  endif
73endif
74set model=$LMDGCM
75set libo=$LIBOGCM
76
77########################################################################
78#  Les differentes platformes reconnues
79########################################################################
80
81set HP=0
82set IBM=0
83set SUN=0
84set VPP=0
85set CRAY=0
86set DEC=0
87set LINUX=0
88set NEC=0
89set XNEC=0
90if ( `uname` == HP-UX ) then
91   set machine=HP
92   set HP=1
93else if (`uname` == UNIX_System_V ) then
94   set machine=VPP
95   set VPP=1
96else if (`uname` == SunOS ) then
97   set machine=SUN
98   set SUN=1
99else if ( `uname` == AIX ) then
100   set machine=IBM
101   set IBM=1
102else if ( `uname` == OSF1 ) then
103   set machine=ALPHA
104   set DEC=1
105else if ( `uname` == Linux ) then
106   set machine=LINUX
107   set LINUX=1
108else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
109   set machine=CRAY
110   set CRAY=1
111else if ( `uname` == SUPER-UX ) then
112   set machine=NEC
113   set NEC=1
114else if ( `hostname` == rhodes) then
115   set machine=XNEC
116   set XNEC=1
117else
118   echo Vous travaillez sur une machine non prevue par le reglement
119   exit
120endif
121
122# create $libo directory if it doesn't exist
123if ( ! -d $libo )  then
124   mkdir $libo
125endif
126
127if $VPP then
128set netcdf=netcdf_v
129else
130set netcdf=netcdf
131endif
132########################################################################
133#  Quelques initialisations de variables du shell.
134########################################################################
135
136set dyn=
137set opt_link=""
138set adjnt=""
139set opt_dep=""
140
141set optim90=""
142set oplink=""
143
144########################################################################
145#  Optimisations par defaut suivant les machines
146########################################################################
147
148echo "Optimisations par defaut suivant les machines"
149set libf=$model/libf
150#setenv localdir "LOCAL_DIR=`pwd`"
151#setenv localdir "`pwd`"
152cd $model
153if $CRAY then
154   set optim90="-Wp'-P' -DCRAY "'-p$(LIBO) -eiv '
155   set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdf "
156   set mod_loc_dir=" "
157   set mod_suffix=" "
158else if $SUN then
159   set optim90=" -fast"
160   set optimtru90=" -fast -free"
161   set opt_link="-L$NCDFLIB -lnetcdf"
162   set mod_loc_dir=$localdir
163   set mod_suffix=mod
164else if $HP then
165else if $IBM then
166else if $VPP then
167   set optim90="$optim -X9 -w"
168   if $COUPLE then
169     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"
170     set oplink="-Wl,-t,-P,-dy "
171   else
172     set opt_link="-Wg,-c /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
173     set oplink="-Wl,-t,-dy "
174   endif
175   set mod_loc_dir=$IOIPSLDIR
176   set mod_suffix=mod
177else if $DEC then
178else if $LINUX then
179   #NB: on gnome -O3 ==> NaNs ...
180   set optim=" -O2 -ip -mkl=sequential -align all -static "
181   set optim90=" -O2 -ip -mkl=sequential -align all -static "
182   set optimtru90=" -O2 -ip -mkl=sequential -align all -static "
183   set mod_loc_dir=$LIBOGCM
184   set mod_suffix=mod
185else if $NEC then
186   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
187   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
188###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
189   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
190   set mod_loc_dir="."
191   set mod_suffix="mod"
192else if $XNEC then
193   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
194   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
195   if $MODIPSL then
196     if $COUPLE then
197       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
198     else
199       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
200     endif
201     set mod_loc_dir="./"
202   else
203####     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"
204     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
205     set mod_loc_dir="."
206   endif
207   set mod_suffix="mod"
208
209endif
210
211set nomlib=$machine
212
213# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
214if (`uname` == Linux && `uname -m` == "x86_64") then
215  set nomlib=${machine}64
216endif
217
218########################################################################
219# lecture des options de mymake
220########################################################################
221
222top:
223if ($#argv > 0) then
224    switch ($1:q)
225
226    case -h:
227
228########################################################################
229# Manuel en ligne
230########################################################################
231more <<eod
232
233
234makegcm [Options] prog
235
236
237
238
239Par default, la commande makegcm:
240---------------------------------
241
2421. compile une serie de sous programmes se trouvant dans des sous-repertoires
243de $LMDGCM/libf.
244Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
245sur $LIBOGCM.
246
2472. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
248$LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
249
250La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
251dans la comande makegcm.
252
253La commande makegcm est faite pour permettre de gerer en parallele des
254versions differentes du modele, compilees avec des options de compilation
255et des dimensions differentes sans avoir a chaque fois a recompiler tout
256le modele.
257
258Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
259
260
261OPTIONS:
262--------
263
264Les options suivantes peuvent etre definies soit par defaut en editant le
265"script" makegcm, soit en interactif:
266
267-d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
268             et couches verticales.
269
270-t ntrac   selectionne le nombre de traceur advectes par la dynamique.
271           Dans les versions courantes du modele terrestre on a par exemple
272           ntrac=2 pour l'eau vapeur et liquide
273
274             L'effet des options -d et -t est d'ecraser le fichier
275             $LMDGCM/libf/grid/dimensions.h
276             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
277             de la grille horizontale im, jm, lm plus le nombre de traceurs
278             advectes passivement par la dynamique ntrac, par un nouveu fichier
279             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
280             Si ce fichier n'existe pas encore, il est cree par le script
281             $LMDGCM/libf/grid/dimension/makdim
282
283-p PHYS    pour selectionner le jeu de parametrisations physiques avec
284           lequel on veut compiler le modele.
285           Le modele sera alors compile en prenant les sources des
286           parametrisations physiques dans le repertoire:
287            $LMDGCM/libf/phyPHYS
288
289-g grille  selectionne le type de grille qu'on veut utiliser.
290           L'effet de cette option est d'ecraser le fichier
291           $LMDGCM/libf/grid/fxyprim.h
292           avec le fichier
293           $LMDGCM/libf/grid/fxy_grille.h
294           grille peut prendre les valeurs:
295           1. reg pour la grille reguliere
296           2. sin pour avoir des points equidistants en sinus de la latitude
297           3. new pour pouvoir zoomer sur une partie du globe
298
299-O "optimisation fortran" ou les optimisations fortran sont les options de la
300            commande f77
301
302-include path
303           Dans le cas ou on a dans des sous programmes des fichiers
304           #include (cpp) qui se trouve sur des repertoires non references
305           par defaut
306
307-adjnt     Pour compiler la l'adjoint du code dynamique
308
309-olddyn    To compile GCM with "old dynamics"
310
311-filtre  filtre
312           Pour choisir le filtre en longitude dans les regions polaires.
313           "filtre" correspond au nom d'un repertoire se trouvant sur
314           $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
315           etre utilise aussi bien pour une grille reguliere que pour une
316           grille zoomee en longitude.
317
318-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
319          Pour rajouter un lien avec les librairies FORTRAN
320          libfile1.a, libfile2.a ... se trouvant respectivement sur les
321          repertoires dir1, dir2 ...
322          Si dirn est un repertoire dont le chemin est automatique (comme
323          par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
324
325Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
326eod
327exit
328
329########################################################################
330# Lecture des differentes options
331########################################################################
332
333    case -d
334        set dim=$2 ; shift ; shift ; goto top
335                       
336    case -O:
337        set optim90="$2" ; set optim="$2" ; set optimtru90="$2" ; shift ; shift ; goto top
338
339     case -p
340        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
341
342     case -g
343        set grille="$2" ; shift ; shift ; goto top
344
345    case -b
346        set bands=$2 ; shift ; shift ; goto top
347           
348     case -t
349        set ntrac=$2 ; shift ; shift ; goto top
350
351     case -include
352        set include="$include -I$2" ; shift ; shift ; goto top
353
354     case -adjnt
355        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
356
357     case -olddyn
358        set dyntype="olddyn" ; shift; goto top
359
360     case -filtre
361        set filtre=$2 ; shift ; shift ; goto top
362
363     case -link
364        set opt_link="$opt_link $2" ; shift ; shift ; goto top
365
366     case -debug
367        if $HP then
368           set optim90=" -g "
369        else if $SUN then
370           setenv PARALLEL 4
371           set optim90=" -g -C "
372           set optimtru90=" -g -C "
373        else if $CRAY then
374           set optim90="$optim90"" -G1 "
375        else if $LINUX then
376           set optim=" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"
377           set optim90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"
378           set optimtru90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"
379        else
380           echo "pas d option debug predefinie pour cette machine"
381           exit
382        endif
383        shift ; goto top
384
385     default
386        set code="$1" ; shift ; goto top
387
388   endsw
389endif
390
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
425\rm tmp ; touch tmp
426\rm tmp90 ; touch tmp90
427foreach i ( $optim90 )
428   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
429end
430set suf=
431foreach i ( `sort tmp | uniq ` )
432   set suf=$suf$i
433end
434if ( ! $IBM ) then
435   set nomlib="$nomlib$suf"
436endif
437if ( $DEC ) then
438   set nomlib=DEC
439endif
440
441# dimension
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 -e 's/[^0-9]/ /g'`
451     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
452endif
453
454# bands
455echo "bands avant sed $bands"
456if ( $IBM ) then
457   set bands=`echo $bands | sed -en 's/[^0-9]/ /g'`
458   set bands_=`echo $bands | sed -en 's/[^0-9]/_/g'`
459else if ( $SUN || $XNEC ) then
460   set bands=`echo $bands | sed -e 's/[^0-9]/ /g'` 
461   set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
462else
463     set bands=`echo $bands | sed -e 's/[^0-9]/ /g'`
464     set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
465endif
466
467
468# build final name of libraries directory:
469if ( "$dyntype" == "olddyn" ) then
470  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
471else
472  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
473endif
474
475# Append number of bands to nomlib (new for universal model)
476set nomlib=${nomlib}_${bands_}
477
478# Append 'physique' type, if it is not mars, to nomlib
479if ( "$physique" != "mars" ) then
480  set nomlib=${nomlib}_${physique}
481endif
482
483## M-A-F nomlib trop long sur CRAY pour ar
484if ( $CRAY ) then
485    set nomlib=F90_${dim_}_t${ntrac}
486endif
487if ( $NEC || $XNEC ) then
488    set nomlib=F90_${dim_}_t${ntrac}
489endif
490
491echo "calcul de la dimension"
492set dimc=`echo $dim | wc -w`
493
494if ( "$dimc" == "2" ) then
495  set include="$include "'-I$(LIBF)/dyn2d '
496  set dimh=$dim
497else
498  if ( "$dyntype" == "olddyn" ) then
499    set include="$include "'-I$(LIBF)/olddyn3d '
500  else
501    set include="$include "'-I$(LIBF)/dyn3d '
502  endif
503  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
504endif
505echo "dimc is $dimc"
506
507########################################################################
508# path pour les #include
509########################################################################
510
511set include="$include -I$NCDFINC "
512echo $include
513
514########################################################################
515# Gestion des dimensions du modele.
516# on cree ou remplace le fichier des dimensions/nombre de traceur
517########################################################################
518
519cd $libf/grid
520if ( -f dimensions.h ) then
521  echo "WARNING: you are already compiling the model somewhere else"
522  echo "Wait until the first compilation is finished before starting."
523  echo "If you are sure that you are not compiling elsewhere, you can"
524  echo "type [yes] to continue."
525  echo "Do you want to continue?"
526#  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
527#  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
528#  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
529#  echo "vous pouvez continuer en repondant oui."
530#  echo "Voulez-vous vraiment continuer?"
531  if ( $< == "yes" ) then
532    #remove old dimensions.h file
533    \rm $libf/grid/dimensions.h
534    \rm $libf/grid/bands.h
535  else
536    exit
537  endif
538endif
539
540# Build the appropriate 'dimensions.h' file
541cd dimension
542makdim $ntrac $dim
543# echo contents of dimensions.h to standard output
544cat $libf/grid/dimensions.h
545
546# Build the appropriate 'bands.h' file
547makbands $bands
548# echo contents of bands.h to standard output
549cat $libf/grid/bands.h
550
551cd $LMDGCM
552# set path to objects directory
553set libo=$libo/$nomlib
554# create objects directory, if it doesn't exist
555if ( ! -d $libo )  then
556   mkdir $libo
557   cd $model
558endif
559
560########################################################################
561# Differentes dynamiques (3d, 2d, 1d)
562########################################################################
563
564set dimension=`echo $dim | wc -w`
565echo dimension $dimension dim $dim
566if ( $dimension == 1 ) then
567  echo pas de dynamique
568  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
569endif
570endif
571
572cd $model
573if ( $dimension == 3 ) then
574  cd libf/grid
575  \rm fxyprim.h
576  cp -p fxy_${grille}.h fxyprim.h
577endif
578
579######################################################################
580#   Traitement special pour le nouveau rayonnement de Laurent Li.
581######################################################################
582#if ( -f $libf/phy$physique/raddim.h ) then
583#  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
584#    \rm $libf/phy$physique/raddim.h
585#    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
586#    echo $libf/phy$physique/raddim.$dimh.h
587#    cat $libf/phy$physique/raddim.$dimh.h
588#    cat $libf/phy$physique/raddim.h
589#  else
590#    echo On peut diminuer la taille de l executable en creant
591#    echo le fichier $libf/phy$physique/raddim.$dimh.h
592#    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
593#  endif
594#endif
595
596######################################################################
597# Gestion du filtre qui n'existe qu'en 3d.
598######################################################################
599
600# set filtre to 'oldfiltrez' if using -olddyn option
601if ( "$dyntype" == "olddyn" ) then
602  set filtre="oldfiltrez"
603endif
604
605if ( `expr $dimc \> 2` == 1 ) then
606   set filtre="FILTRE=$filtre"
607else
608   set filtre="FILTRE= L_FILTRE= "
609endif
610echo "MACRO FILTRE $filtre"
611
612echo "dimc $dimc"
613
614########################################################################
615#  Avant de lancer le make, on recree le makefile si necessaire
616########################################################################
617# c'est a dire dans 3 cas:
618# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
619#    derniere creation du makefile
620# 2. si le fichier contenant cette liste "liste_des_sources"
621#    n'existe pas.
622# 3. Si le makefile n'existe pas.
623########################################################################
624
625cd $model
626find libf -name '*.[Fh]' -print >! tmp77
627#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
628find libf -name '*.[Fh]90' -print >> tmp90
629
630if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
631     || `diff tmp90 liste_des_sources_f90 | wc -w` \
632     || ! -f makefile \
633     || ! -f liste_des_sources_f90 \
634     || ! -f liste_des_sources_f77 ) then
635        echo "les fichiers suivants ont ete crees ou detruits"
636        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
637        diff liste_des_sources_f77 tmp77
638        diff liste_des_sources_f90 tmp90
639        \cp tmp77 liste_des_sources_f77
640        \cp tmp90 liste_des_sources_f90
641        echo "Remaking the makefile!"
642        if ("$dyntype" == "olddyn") then
643          ./create_make_gcm olddyn3d grid bibio phy$physique >! tmp
644        else
645          ./create_make_gcm dyn3d grid bibio phy$physique >! tmp
646        endif
647        \mv tmp makefile
648        echo "New makefile created."
649endif
650
651########################################################################
652#  Execution de la comande make
653########################################################################
654
655
656echo PHYSIQUE $phys
657echo dynamique $dyn $dimension
658echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
659echo PATH pour les fichiers INCLUDE $include
660echo OPLINK="$oplink"
661
662if $HP then
663   set f77='fort77 +OP'
664   set f90='jensaisrien'
665   set opt_link="$opt_link -lm"
666else  if $VPP then
667   set f77=frt
668   set f90=$f77
669else if $CRAY then
670   set f77=f90
671   set f90=f90
672else if $LINUX then
673   set f77=ifort
674   set f90=ifort
675   set opt_link=" -L$LIBOGCM -L$NCDFLIB -lnetcdf "
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 optim="$optim -module $libo"
772 set optim90="$optim90 -module $libo"
773 set optimtru90="$optimtru90 -module $libo"
774# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
775# set mod_loc_dir=$libo
776endif
777
778set link="$f90 $optim90"
779
780set ar=ar
781
782if $XNEC then
783  set link="sxld $opt_link"
784  set link="$f90 "
785#  set ar=sxar
786endif
787
788cd $localdir
789
790set source_code=${code}.F
791if (-f $LMDGCM/libf/phystd/${code}.F90) then
792  set source_code=${code}.F90
793endif
794
795echo $make -f $LMDGCM/makefile \
796OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
797OPTIM="$optim" \
798OPTIM90="$optim90" \
799OPTIMTRU90="$optimtru90" \
800INCLUDE="$include" \
801$filtre \
802LIBO=$libo \
803$dyn \
804$phys \
805DIM=$dimc \
806DYNTYPE="$dyntype" \
807L_ADJNT="$adjnt" \
808LOCAL_DIR="$localdir"  \
809F77="$f77" \
810F90="$f90" \
811OPLINK="$oplink" \
812LINK="$link" \
813GCM="$LMDGCM" \
814MOD_LOC_DIR=$mod_loc_dir \
815MOD_SUFFIX=$mod_suffix \
816AR=$ar \
817SOURCE=$source_code \
818PROG=$code
819
820$make -f $LMDGCM/makefile \
821OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
822OPTIM="$optim" \
823OPTIM90="$optim90" \
824OPTIMTRU90="$optimtru90" \
825INCLUDE="$include" \
826$filtre \
827LIBO=$libo \
828$dyn \
829$phys \
830DIM=$dimc \
831DYNTYPE="$dyntype" \
832L_ADJNT="$adjnt" \
833LOCAL_DIR="$localdir"  \
834F77="$f77" \
835F90="$f90" \
836OPLINK="$oplink" \
837LINK="$link" \
838GCM="$LMDGCM" \
839MOD_LOC_DIR=$mod_loc_dir \
840MOD_SUFFIX=$mod_suffix \
841AR=$ar \
842SOURCE=$source_code \
843PROG=$code
844
845\rm $libf/grid/dimensions.h
846\rm $libf/grid/bands.h
Note: See TracBrowser for help on using the repository browser.