source: LMDZ.3.3/trunk/makegcm @ 211

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

Chgt dans les options de crosscompil sur rhodes
FH/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 -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
216   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 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 -float0 -ew -P stack -I$NCDFINC $NCDFLIB "
222     else
223       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P stack -I$NCDFINC $NCDFLIB "
224     endif
225     set mod_loc_dir="./"
226   else
227     set opt_link=" -C hopt -float0 -ew -P stack -L$IOIPSLDIR -lsxioipsl -L /u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v -I$NCDFINC "
228     set mod_loc_dir="."
229   endif
230   set mod_suffix="mod"
231
232else
233   set optim=""
234   set optimbis=" "
235endif
236
237set nomlib=$machine
238
239########################################################################
240# lecture des options de mymake
241########################################################################
242
243top:
244if ($#argv > 0) then
245    switch ($1:q)
246
247    case -h:
248
249########################################################################
250# Manuel en ligne
251########################################################################
252more <<eod
253
254
255makegcm [Options] prog
256
257
258
259
260Par default, la commande makegcm:
261---------------------------------
262
2631. compile une serie de sous programmes se trouvant dans des sous-repertoires
264de $LMDGCM/libf.
265Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
266sur $LIBOGCM.
267
2682. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
269$LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
270
271La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
272dans la comande makegcm.
273
274La commande makegcm est faite pour permettre de gerer en parallele des
275versions differentes du modele, compilees avec des options de compilation
276et des dimensions differentes sans avoir a chaque fois a recompiler tout
277le modele.
278
279Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
280
281
282OPTIONS:
283--------
284
285Les options suivantes peuvent etre definies soit par defaut en editant le
286"script" makegcm, soit en interactif:
287
288-d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
289             et couches verticales.
290
291-t ntrac   selectionne le nombre de traceur advectes par la dynamique.
292           Dans les versions courantes du modele terrestre on a par exemple
293           ntrac=2 pour l'eau vapeur et liquide
294
295             L'effet des options -d et -t est d'ecraser le fichier
296             $LMDGCM/libf/grid/dimensions.h
297             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
298             de la grille horizontale im, jm, lm plus le nombre de traceurs
299             advectes passivement par la dynamique ntrac, par un nouveu fichier
300             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
301             Si ce fichier n'existe pas encore, il est cree par le script
302             $LMDGCM/libf/grid/dimension/makdim
303
304-p PHYS    pour selectionner le jeu de parametrisations physiques avec
305           lequel on veut compiler le modele.
306           Le modele sera alors compile en prenant les sources des
307           parametrisations physiques dans le repertoire:
308            $LMDGCM/libf/phyPHYS
309
310-g grille  selectionne le type de grille qu'on veut utiliser.
311           L'effet de cette option est d'ecraser le fichier
312           $LMDGCM/libf/grid/fxyprim.h
313           avec le fichier
314           $LMDGCM/libf/grid/fxy_grille.h
315           grille peut prendre les valeurs:
316           1. reg pour la grille reguliere
317           2. sin pour avoir des points equidistants en sinus de la latitude
318           3. new pour pouvoir zoomer sur une partie du globe
319
320-O "optimisation fortran" ou les optimisations fortran sont les options de la
321            commande f77
322
323-include path
324           Dans le cas ou on a dans des sous programmes des fichiers
325           #include (cpp) qui se trouve sur des repertoires non references
326           par defaut
327
328-adjnt     Pour compiler la l'adjoint du code dynamique
329
330-filtre  filtre
331           Pour choisir le filtre en longitude dans les regions polaires.
332           "filtre" correspond au nom d'un repertoire se trouvant sur
333           $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
334           etre utilise aussi bien pour une grille reguliere que pour une
335           grille zoomee en longitude.
336
337-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
338          Pour rajouter un lien avec les librairies FORTRAN
339          libfile1.a, libfile2.a ... se trouvant respectivement sur les
340          repertoires dir1, dir2 ...
341          Si dirn est un repertoire dont le chemin est automatique (comme
342          par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
343
344Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
345eod
346exit
347
348########################################################################
349# Lecture des differentes options
350########################################################################
351
352    case -d:
353        set dim=$2 ; shift ; shift ; goto top
354                       
355    case -O:
356        set optim="$2" ; shift ; shift ; goto top
357
358     case -p
359        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
360
361     case -g
362        set grille="$2" ; shift ; shift ; goto top
363
364     case -t
365        set ntrac=$2 ; shift ; shift ; goto top
366
367     case -include
368        set include="$include -I$2" ; shift ; shift ; goto top
369
370     case -adjnt
371        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
372        set optim="$optim -Dadj" ; shift ; goto top
373
374     case -filtre
375        set filtre=$2 ; shift ; shift ; goto top
376
377     case -link
378        set opt_link="$opt_link $2" ; shift ; shift ; goto top
379
380     case -debug
381        if $HP then
382           set optim=" -g "
383        else if $SUN then
384           setenv PARALLEL 2
385           set optim=" -g -C "
386           set optim90=" -fixed -g "
387           set optimtru90=" -free -g "
388        else if $CRAY then
389           set optim="$optim"" -g "
390           set optim90="$optim90"" -G1 "
391        else if $LINUX then
392           set optim="$optim"" -g -Mbounds "
393           set optim90="$optim90"" -g -Mbounds "
394        else
395           echo pas d option debug predefinie pour cette machine
396           exit
397        endif
398        shift ; goto top
399
400     default
401        set code="$1" ; shift ; goto top
402
403   endsw
404endif
405
406########################################################################
407# cas special sans physique
408########################################################################
409if ( "$physique" == 'nophys' ) then
410   set phys="L_PHY= LIBPHY="
411endif
412
413########################################################################
414# choix du nombre de traceur par defaut si il n'a pas ete choisi,
415# suivant la physique
416########################################################################
417
418if ( $ntrac == 0  ) then
419    if ( "$physique" == 'nophys' ) then
420        set ntrac=1
421    else if ( "$physique" == 'lmd' ) then
422        set ntrac=2
423    else if ( "$physique" == 'lmd_test_li' ) then
424        set ntrac=2
425    else if ( "$physique" == 'ec' ) then
426        set ntrac=1
427    else
428        set ntrac = 1
429    endif
430endif
431
432########################################################################
433#subtilites sur le nom de la librairie
434########################################################################
435
436\rm tmp ; touch tmp
437\rm tmp90 ; touch tmp90
438foreach i ( $optim )
439   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g'  >> tmp
440end
441set suf=
442foreach i ( `sort tmp | uniq ` )
443   set suf=$suf$i
444end
445if ( ! $IBM ) then
446   set nomlib="$nomlib$suf"
447endif
448if ( $DEC ) then
449   set nomlib=DEC
450endif
451if ( $IBM ) then
452   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
453   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
454else if ( $SUN ) then
455   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
456   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
457else
458   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
459   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
460endif
461set nomlib=${nomlib}_${dim_}_t${ntrac}_$grille
462## M-A-F nomlib trop long sur CRAY pour ar
463if ( $CRAY ) then
464    set nomlib=F90_${dim_}_t${ntrac}
465endif
466if ( $NEC || $XNEC ) then
467    set nomlib=F90_${dim_}_t${ntrac}
468endif
469echo calcul de la dimension
470set dimc=`echo $dim | wc -w`
471
472if ( "$dimc" == "2" ) then
473set include="$include "'-I$(LIBF)/dyn2d '
474set dimh=$dim
475else
476set include="$include "'-I$(LIBF)/dyn3d '
477set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
478endif
479echo $dimc
480
481########################################################################
482# path pour les #include
483########################################################################
484
485set include="$include -I$NCDFINC -I$IOIPSLDIR"
486echo $include
487
488########################################################################
489# Gestion des dimensions du modele.
490# on cree ou remplace le fichier des dimensions/nombre de traceur
491########################################################################
492
493cd $libf/grid
494if ( -f dimensions.h ) then
495echo 'ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs'
496echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
497echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
498echo  vous pouvez continuer en repondant oui.
499echo "Voulez-vous vraiment continuer?"
500if ( $< == "oui" ) then
501\rm $libf/grid/dimensions.h
502else
503exit
504endif
505endif
506
507cd dimension
508makdim $ntrac $dim
509cat $libf/grid/dimensions.h
510
511cd $LMDGCM
512set libo=$libo/$nomlib
513if ( ! -d $libo )  then
514   mkdir $libo
515   cd $model
516endif
517
518########################################################################
519# Differentes dynamiques (3d, 2d, 1d)
520########################################################################
521
522set dimension=`echo $dim | wc -w`
523echo dimension $dimension
524if ( $dimension == 1 ) then
525echo pas de dynamique
526set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
527endif
528endif
529cd $model
530if ( $dimension == 3 ) then
531cd libf/grid
532\rm fxyprim.h
533cp -p fxy_${grille}.h fxyprim.h
534endif
535
536######################################################################
537#   Traitement special pour le nouveau rayonnement de Laurent Li.
538######################################################################
539
540if ( -f $libf/phy$physique/raddim.h ) then
541if ( -f $libf/phy$physique/raddim.$dimh.h ) then
542\rm $libf/phy$physique/raddim.h
543cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
544echo $libf/phy$physique/raddim.$dimh.h
545cat $libf/phy$physique/raddim.$dimh.h
546cat $libf/phy$physique/raddim.h
547else
548echo On peut diminuer la taille de l executable en creant
549echo le fichier $libf/phy$physique/raddim.$dimh.h
550\cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
551endif
552endif
553
554######################################################################
555# Gestion du filtre qui n'existe qu'en 3d.
556######################################################################
557
558if ( `expr $dimc \> 2` == 1 ) then
559   set filtre="FILTRE=$filtre"
560else
561   set filtre="FILTRE= L_FILTRE= "
562endif
563echo MACRO FILTRE $filtre
564
565echo $dimc
566
567########################################################################
568#  Avant de lancer le make, on recree le makefile si necessaire
569########################################################################
570# c'est a dire dans 3 cas:
571# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
572#    derniere creation du makefile
573# 2. si le fichier contenant cette liste "liste_des_sources"
574#    n'existe pas.
575# 3. Si le makefile n'existe pas.
576########################################################################
577
578cd $model
579find libf -name '*.[Fh]' -print >! tmp77
580find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
581find libf -name '*.[Fh]90' -print >> tmp90
582
583if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
584     || `diff tmp90 liste_des_sources_f90 | wc -w` \
585     || ! -f makefile \
586     || ! -f liste_des_sources_f90 \
587     || ! -f liste_des_sources_f77 ) then
588        echo les fichiers suivants ont ete crees ou detruits
589        echo ou les fichiers suivants sont passes ou ne sont plus en Fortran 90
590        diff liste_des_sources_f77 tmp77
591        diff liste_des_sources_f90 tmp90
592        \cp tmp77 liste_des_sources_f77
593        \cp tmp90 liste_des_sources_f90
594        echo On recree le makefile
595        ./create_make_gcm >! tmp
596        \mv tmp makefile
597        echo Nouveau makefile cree.
598endif
599
600########################################################################
601#  Execution de la comande make
602########################################################################
603
604echo PHYSIQUE $phys
605echo dynamique $dyn $dimension
606echo OPTIM="$optim" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
607echo PATH pour les fichiers INCLUDE $include
608echo OPLINK="$oplink"
609
610if $HP then
611   set f77='fort77 +OP'
612   set f90='jensaisrien'
613   set opt_link="$opt_link -lm"
614else  if $VPP then
615   set f77=frt
616   set f90=$f77
617else if $CRAY then
618   set f77=f90
619   set f90=f90
620else if $LINUX then
621   set f77=pgf90
622   set f90=pgf90
623else if $SUN then
624   set f77=f90
625   set f90=f90
626else if $NEC then
627   set f77=f90
628   set f90=f90
629else if $XNEC then
630   set f77=sxmpif90
631   set f90=sxmpif90
632else
633   set f77=f77
634   set f90=f90
635endif
636
637cd $model
638
639if $VPP then
640set make="gmake RANLIB=ls"
641else if $CRAY then
642set make="make RANLIB=ls"
643else if $NEC then
644set make="make RANLIB=ls"
645else if $LINUX then
646set make="make -k RANLIB=ranlib"
647else if $XNEC then
648set make="/usr/local/bin/gmake RANLIB=ls"
649set make="/usr/freeware/bin/gmake RANLIB=ls"
650else
651set make="make RANLIB=ranlib"
652endif
653
654
655
656#
657# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
658# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
659#
660#if ($code == 'create_limit' && $SUN) then
661#   set link=f77
662#   set opt_link="-L$NCDFLIB -lnetcdf"
663#endif
664
665#if ($code == 'create_etat0' && $SUN) then
666#   if ( ! -f $libo/libdyn3d.a ) then
667#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
668#     \rm $libf/grid/dimensions.h
669#     exit
670#   endif
671#   set optim=" -dalign "
672#   set optim90=" -dalign -fixed "
673#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
674#   set link="$f90 $optim90"
675#   touch $LMDGCM/libf/dyn3d/startvar.F
676#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
677#endif
678
679#
680# Encore un test temporaire: probleme de compilation sur VPP
681# l'optimisation de startvar se passe mal
682#
683if ($code == 'create_etat0' && $VPP) then
684   if ( ! -f $libo/libdyn3d.a ) then
685     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
686     \rm $libf/grid/dimensions.h                                             
687     exit                       
688   endif
689   set optim=" -Wv,-Of,-ilfunc"
690   set optimbis=" -Psia -Aa -Wv,-m3 -Wp,-DVPP -Z $LMDGCM/listage"
691   set optim90="$optim""$optimbis"" -X9 -w"
692   set opt_link="-L$IOIPSLDIR -lioipsl -L$NCDFLIB -lnetcdf"
693   touch $LMDGCM/libf/dyn3d/startvar.F
694   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
695endif
696
697#
698# etat0_netcdf a besoin d'info de la physique
699# A revoir
700set include="$include"' -I$(LIBF)/phylmd'
701
702
703#################################################################
704# Execution de la comande make... ENFIN!
705#################################################################
706
707if $VPP then
708  set optim90=" $optim90 -Am -M$libo"
709  set optimtru90="$optim90"
710 \cp $IOIPSLDIR/*.mod $libo
711else if $SUN then
712 set optim90=" $optim90 -M$libo "
713 set optimtru90=" $optimtru90 -M$libo "
714 set optim="$optim90"
715 \cp /d3/fairhead/sechiba_sun/parameters/*.mod $libo
716 \cp /d3/fairhead/sechiba_sun/sechiba/*.mod $libo
717 \cp /d3/fairhead/sechiba_sun/stomate/*.mod $libo
718 \cp $IOIPSLDIR/*.mod $libo
719else if $NEC then
720 set optim90=" $optim90 -I$libo "
721else if $XNEC then
722 set optim90=" $optim90 -I$libo "
723 set optimtru90=" $optimtru90 -I$libo "
724else if $LINUX then
725 set optim90=" -fast -module $libo "
726 set optim="$optim90"
727 set mod_loc_dir=$libo
728 \cp /d3/fairhead/sechiba/ioipsl/*.mod $libo
729 \cp $IOIPSLDIR/*.mod $libo
730endif
731
732set link="$f90 $optim90"
733
734set ar=ar
735
736if $XNEC then
737  set link="sxld $opt_link"
738  set link="$f90 "
739#  set ar=sxar
740endif
741
742
743cd $localdir
744
745echo $make -f $LMDGCM/makefile \
746OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
747OPTIM90="$optim90" \
748OPTIMTRU90="$optimtru90" \
749OPTIM="$optim$optimbis" \
750INCLUDE="$include" \
751$filtre \
752LIBO=$libo \
753$dyn \
754$phys \
755DIM=$dimc \
756L_ADJNT="$adjnt" \
757LOCAL_DIR="$localdir"  \
758F77="$f77" \
759F90="$f90" \
760OPLINK="$oplink" \
761LINK="$link" \
762GCM="$LMDGCM" \
763MOD_LOC_DIR=$mod_loc_dir \
764MOD_SUFFIX=$mod_suffix \
765AR=$ar \
766PROG=$code
767
768$make -f $LMDGCM/makefile \
769OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
770OPTIM90="$optim90" \
771OPTIMTRU90="$optimtru90" \
772OPTIM="$optim$optimbis" \
773INCLUDE="$include" \
774$filtre \
775LIBO=$libo \
776$dyn \
777$phys \
778DIM=$dimc \
779L_ADJNT="$adjnt" \
780LOCAL_DIR="$localdir"  \
781F77="$f77" \
782F90="$f90" \
783OPLINK="$oplink" \
784LINK="$link" \
785GCM="$LMDGCM" \
786MOD_LOC_DIR=$mod_loc_dir \
787MOD_SUFFIX=$mod_suffix \
788AR=$ar \
789PROG=$code
790
791\rm $libf/grid/dimensions.h
792if $MODIPSL then
793  \cp libf/phylmd/oasis.F libf/phylmd/oasis.true
794  \cp libf/phylmd/oasis.dummy libf/phylmd/oasis.F
795endif
Note: See TracBrowser for help on using the repository browser.