source: LMDZ.3.3/trunk/makegcm @ 522

Last change on this file since 522 was 333, checked in by lmdz, 23 years ago

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