source: trunk/LMDZ.GENERIC/makegcm_ifort @ 579

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

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