source: LMDZ.3.3/branches/rel-LF/makegcm @ 201

Last change on this file since 201 was 179, checked in by lmdzadmin, 23 years ago

Synchronisation avec version MAFO:

ajout sortie netcdf des champs echanges avec le coupleur
quelques save sur les variables (pb stack/static sur le nec)

LF

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