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

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

Option static pour la compilation Nec
LF

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