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

Last change on this file since 161 was 161, checked in by lmdzadmin, 24 years ago

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