source: LMDZ.3.3/trunk/makegcm @ 170

Last change on this file since 170 was 170, checked in by lmdz, 24 years ago

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