source: trunk/WRF.COMMON/WRFV2/mars_lmd/makegcm_pgf @ 3094

Last change on this file since 3094 was 335, checked in by aslmd, 13 years ago

MESOSCALE: notes about trying to compile on the new planeto farm. in a nutshell, sequential runs are OK but not parallel runs.

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