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

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

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