source: trunk/WRF.COMMON/WRFV2/mars_lmd/makegcm_gnu @ 2756

Last change on this file since 2756 was 331, checked in by aslmd, 13 years ago

MESOSCALE: minor changes in scripts following tests on new machines and tests with g95 and gfortran. problems reported in NOTES.txt.

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