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

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

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