source: trunk/WRF.COMMON/WRFV2/mars_lmd_new/makegcm

Last change on this file was 1038, checked in by aslmd, 11 years ago

MESOSCALE
LMDZ.MARS

--> Performed the necessary modifications for dynamic tracers

to work with the mesoscale model (new physics).

--> Added precompiling flag MESOSCALE around pressure modifications

done in revision 883. This makes the mesoscale model become crazy.

--> Added an option -e in makemeso to erase a configuration and start over.

NOTE
--> not sure recent versions (rev>1000) are compliant with nesting compilation.
--> use mesoscale model + new physics with caution. still not stabilized.

  • Property svn:executable set to *
File size: 23.2 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
14set dyntype="dyn"
15########################################################################
16# path a changer contenant les sources et les objets du modele
17########################################################################
18
19###### VERSION LMDZ.3.3
20# set LMDGCM=$HOME/LMDZ.3.3
21#
22
23#### If you want you can set environment variables here
24#setenv LMDGCM /u/emlmd/LMDZ.MARS
25#setenv LIBOGCM /tmp15/emlmd/libo
26#if ( `uname -m` == "x86_64" ) then
27## 64 bit machines
28#  setenv NCDFLIB /donnees/emlmd/netcdf64/netcdf-3.6.1/lib
29#  setenv NCDFINC /donnees/emlmd/netcdf64/netcdf-3.6.1/include
30#else
31#  setenv NCDFLIB /distrib/local/netcdf/pgi_32bits/lib
32#  setenv NCDFINC /distrib/local/netcdf/pgi_32bits/include
33#endif
34####
35
36setenv localdir "`pwd`"
37set MODIPSL=0
38echo $localdir | grep modipsl >& /dev/null
39if ( ! $status ) then
40  set MODIPSL=1
41  setenv LMDGCM $localdir
42  cd ../..
43  setenv LIBOGCM "`pwd`/lib"
44  cd $localdir
45  if ( `hostname` == rhodes ) then
46    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
47    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
48  else
49    if ( `hostname` == nymphea0 ) then
50      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
51      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
52    else
53      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
54    endif
55  endif
56else
57  if ( ! $?LMDGCM ) then
58    echo You must initialize the variable LMDGCM in your environnement
59    echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc
60    exit
61  endif
62  if ( ! $?LIBOGCM ) then
63    set LIBOGCM=$LMDGCM/libo
64  endif
65  if ( ! $?NCDFLIB ) then
66    echo You must initialize the variable NCDFLIB in your environnement
67    echo for instance: "setenv NCDFLIB /usr/myself/netcdf" in .cshrc
68    exit
69  endif
70  if ( ! $?NCDFINC ) then
71    echo You must initialize the variable NCDFINC in your environnement
72    echo for instance: "setenv NCDFINC /usr/myself/netcdf" in .cshrc
73    exit
74  endif
75endif
76set model=$LMDGCM
77set libo=$LIBOGCM
78
79########################################################################
80#  Les differentes platformes reconnues
81########################################################################
82
83set HP=0
84set IBM=0
85set SUN=0
86set VPP=0
87set CRAY=0
88set DEC=0
89set LINUX=0
90set NEC=0
91set XNEC=0
92if ( `uname` == HP-UX ) then
93   set machine=HP
94   set HP=1
95else if (`uname` == UNIX_System_V ) then
96   set machine=VPP
97   set VPP=1
98else if (`uname` == SunOS ) then
99   set machine=SUN
100   set SUN=1
101else if ( `uname` == AIX ) then
102   set machine=IBM
103   set IBM=1
104else if ( `uname` == OSF1 ) then
105   set machine=ALPHA
106   set DEC=1
107else if ( `uname` == Linux ) then
108   set machine=LINUX
109   set LINUX=1
110else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
111   set machine=CRAY
112   set CRAY=1
113else if ( `uname` == SUPER-UX ) then
114   set machine=NEC
115   set NEC=1
116else if ( `hostname` == rhodes) then
117   set machine=XNEC
118   set XNEC=1
119else
120   echo Vous travaillez sur une machine non prevue par le reglement
121   exit
122endif
123
124# create $libo directory if it doesn't exist
125if ( ! -d $libo )  then
126   mkdir $libo
127endif
128
129if $VPP then
130set netcdf=netcdf_v
131else
132set netcdf=netcdf
133endif
134########################################################################
135#  Quelques initialisations de variables du shell.
136########################################################################
137
138set dyn=
139set opt_link=""
140set adjnt=""
141set opt_dep=""
142
143set optim90=""
144set oplink=""
145
146########################################################################
147#  Optimisations par defaut suivant les machines
148########################################################################
149
150echo "Optimisations par defaut suivant les machines"
151set libf=$model/libf
152#setenv localdir "LOCAL_DIR=`pwd`"
153#setenv localdir "`pwd`"
154cd $model
155if $CRAY then
156   set optim90="-Wp'-P' -DCRAY "'-p$(LIBO) -eiv '
157   set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdf "
158   set mod_loc_dir=" "
159   set mod_suffix=" "
160else if $SUN then
161   set optim90=" -fast"
162   set optimtru90=" -fast -free"
163   set opt_link="-L$NCDFLIB -lnetcdf"
164   set mod_loc_dir=$localdir
165   set mod_suffix=mod
166else if $HP then
167else if $IBM then
168else if $VPP then
169   set optim90="$optim -X9 -w"
170   if $COUPLE then
171     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"
172     set oplink="-Wl,-t,-P,-dy "
173   else
174     set opt_link="-Wg,-c /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
175     set oplink="-Wl,-t,-dy "
176   endif
177   set mod_loc_dir=$IOIPSLDIR
178   set mod_suffix=mod
179else if $DEC then
180else if $LINUX then
181   set optim90=" -fast"
182   set optimtru90=" -fast -c -Mfree "
183#   set opt_link=" -Mfree -L/usr/local/pgi/linux86/lib -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Wl,-Bstatic "
184# Ehouarn: there is no /usr/local/pgi/linux86/lib, but it doesn't matter
185#          also changed -Wl,-Bstatic to -Bstatic
186   set opt_link=" -Mfree -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Bstatic "
187   set mod_loc_dir=$localdir
188   set mod_suffix=mod
189else if $NEC then
190   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
191   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
192###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
193   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
194   set mod_loc_dir="."
195   set mod_suffix="mod"
196else if $XNEC then
197   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
198   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
199   if $MODIPSL then
200     if $COUPLE then
201       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
202     else
203       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
204     endif
205     set mod_loc_dir="./"
206   else
207####     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"
208     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
209     set mod_loc_dir="."
210   endif
211   set mod_suffix="mod"
212
213endif
214
215set nomlib=$machine
216
217# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
218if (`uname` == Linux && `uname -m` == "x86_64") then
219  set nomlib=${machine}64
220endif
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
241The makegcm script:
242-------------------
243
2441. compiles a series of subroutines located in the $LMDGCM/libf
245 sub-directories.
246 The objects are then stored in the libraries in $LIBOGCM.
247
2482. then, makegcm compiles program prog.f located by default in
249$LMDGCM/libf/dyn3d and makes the link with the libraries.
250
251Environment Variables '$LMDGCM' and '$LIBOGCM'
252 must be set as environment variables or directly
253 in the makegcm file.
254
255The makegcm command is used to control the different versions of the model
256 in parallel, compiled using the compilation options
257 and the various dimensions, without having to recompile the whole model.
258
259The FORTRAN libraries are stored in directory $LIBOGCM.
260
261
262OPTIONS:
263--------
264
265The following options can either be defined by default by editing the
266makegcm "script", or in interactive mode:
267
268-d imxjmxlm  where im, jm, and lm are the number of longitudes,
269             latitudes and vertical layers respectively.
270
271-t ntrac   Selects the number of tracers present in the model
272
273             Options -d and -t overwrite file
274             $LMDGCM/libf/grid/dimensions.h
275             which contains the 3 dimensions of the
276             horizontal grid
277             im, jm, lm plus the number of tracers passively advected
278             by the dynamics ntrac,
279             in 4 PARAMETER FORTRAN format
280             with a new file:
281             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
282             If the file does not exist already
283             it is created by the script
284             $LMDGCM/libf/grid/dimension/makdim
285
286-p PHYS    Selects the set of physical parameterizations
287           you want to compile the model with.
288           The model is then compiled using the physical
289           parameterization sources in directory:
290            $LMDGCM/libf/phyPHYS
291
292-g grille  Selects the grid type.
293           This option overwrites file
294           $LMDGCM/libf/grid/fxyprim.h
295           with file
296           $LMDGCM/libf/grid/fxy_grille.h
297           the grid can take the following values:
298           1. reg - the regular grid
299           2. sin - to obtain equidistant points in terms of sin(latitude)
300           3. new - to zoom into a part of the globe
301
302-O "compilation options" set of fortran compilation options to use
303
304-include path
305           Used if the subroutines contain #include files (ccp) that
306           are located in directories that are not referenced by default.
307
308-adjnt     Compiles the adjoint model to the dynamical code.
309
310-olddyn    To compile GCM with "old dynamics"
311
312-filtre  filter
313           To select the longitudinal filter in the polar regions.
314           "filter" corresponds to the name of a directory located in
315           $LMDGCM/libf. The standard filter for the model is "filtrez"
316           which can be used for a regular grid and for a 
317           grid with longitudinal zoom.
318
319-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
320           Adds a link to FORTRAN libraries
321           libfile1.a, libfile2.a ...
322           located in directories dir1, dir2 ...respectively
323           If dirn is a directory with an automatic path
324           (/usr/lib ... for example)
325           there is no need to specify  -Ldirn.
326
327eod
328exit
329
330########################################################################
331# Lecture des differentes options
332########################################################################
333
334    case -d:
335        set dim=$2 ; shift ; shift ; goto top
336                       
337    case -O:
338        set optim90="$2" ; shift ; shift ; goto top
339
340     case -p
341        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
342
343     case -g
344        set grille="$2" ; shift ; shift ; goto top
345
346     case -t
347        set ntrac=$2 ; shift ; shift ; goto top
348
349     case -include
350        set include="$include -I$2" ; shift ; shift ; goto top
351
352     case -adjnt
353        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
354
355     case -olddyn
356        set dyntype="olddyn" ; shift; goto top
357
358     case -filtre
359        set filtre=$2 ; shift ; shift ; goto top
360
361     case -link
362        set opt_link="$opt_link $2" ; shift ; shift ; goto top
363
364     case -debug
365        if $HP then
366           set optim90=" -g "
367        else if $SUN then
368           setenv PARALLEL 4
369           set optim90=" -g -C "
370           set optimtru90=" -g -C "
371        else if $CRAY then
372           set optim90="$optim90"" -G1 "
373        else if $LINUX then
374           set optim90="-g -Mbounds "
375        else
376           echo "pas d option debug predefinie pour cette machine"
377           exit
378        endif
379        shift ; goto top
380
381     default
382        set code="$1" ; shift ; goto top
383
384   endsw
385endif
386
387echo "apres les opts dim $dim"
388
389########################################################################
390# cas special sans physique
391########################################################################
392if ( "$physique" == 'nophys' ) then
393   set phys="L_PHY= LIBPHY="
394endif
395
396########################################################################
397# choix du nombre de traceur par defaut si il n'a pas ete choisi,
398# suivant la physique
399########################################################################
400
401if ( $ntrac == 0  ) then
402    if ( "$physique" == 'nophys' ) then
403        set ntrac=1
404    else if ( "$physique" == 'lmd' ) then
405        set ntrac=2
406    else if ( "$physique" == 'lmd_test_li' ) then
407        set ntrac=2
408    else if ( "$physique" == 'ec' ) then
409        set ntrac=1
410    else
411        set ntrac = 1
412    endif
413endif
414
415########################################################################
416#subtilites sur le nom de la librairie
417########################################################################
418
419\rm tmp ; touch tmp
420\rm tmp90 ; touch tmp90
421foreach i ( $optim90 )
422   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
423end
424set suf=
425foreach i ( `sort tmp | uniq ` )
426   set suf=$suf$i
427end
428if ( ! $IBM ) then
429   set nomlib="$nomlib$suf"
430endif
431if ( $DEC ) then
432   set nomlib=DEC
433endif
434
435# dimension
436
437echo "dimension avant sed $dim"
438if ( $IBM ) then
439   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
440   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
441else if ( $SUN || $XNEC ) then
442   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
443   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
444else
445#   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
446#   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
447     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
448     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
449endif
450
451# build final name of libraries directory:
452if ( "$dyntype" == "olddyn" ) then
453  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
454else
455  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
456endif
457
458# Append 'physique' type, if it is not mars, to nomlib
459if ( "$physique" != "mars" ) then
460  set nomlib=${nomlib}_${physique}
461endif
462
463## M-A-F nomlib trop long sur CRAY pour ar
464if ( $CRAY ) then
465    set nomlib=F90_${dim_}_t${ntrac}
466endif
467if ( $NEC || $XNEC ) then
468    set nomlib=F90_${dim_}_t${ntrac}
469endif
470
471echo "calcul de la dimension"
472set dimc=`echo $dim | wc -w`
473
474if ( "$dimc" == "2" ) then
475  set include="$include "'-I$(LIBF)/dyn2d '
476  set dimh=$dim
477else
478  if ( "$dyntype" == "olddyn" ) then
479    set include="$include "'-I$(LIBF)/olddyn3d '
480  else
481    set include="$include "'-I$(LIBF)/dyn3d '
482  endif
483  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
484endif
485echo "dimc is $dimc"
486
487########################################################################
488# path pour les #include
489########################################################################
490
491set include="$include -I$NCDFINC "
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
501  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
502  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
503  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
504  echo "vous pouvez continuer en repondant oui."
505  echo "Voulez-vous vraiment continuer?"
506  if ( $< == "oui" ) then
507    #remove old dimensions.h file
508    \rm $libf/grid/dimensions.h
509  else
510    exit
511  endif
512endif
513
514# Build the appropriate 'dimensions.h' file
515cd dimension
516makdim $dim
517# echo contents of dimensions.h to standard output
518cat $libf/grid/dimensions.h
519
520cd $LMDGCM
521# set path to objects directory
522set libo=$libo/$nomlib
523# create objects directory, if it doesn't exist
524if ( ! -d $libo )  then
525   mkdir $libo
526   cd $model
527endif
528
529########################################################################
530# Differentes dynamiques (3d, 2d, 1d)
531########################################################################
532
533set dimension=`echo $dim | wc -w`
534echo dimension $dimension dim $dim
535if ( $dimension == 1 ) then
536  echo pas de dynamique
537  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
538endif
539endif
540
541cd $model
542if ( $dimension == 3 ) then
543  cd libf/grid
544  \rm fxyprim.h
545  cp -p fxy_${grille}.h fxyprim.h
546endif
547
548######################################################################
549#   Traitement special pour le nouveau rayonnement de Laurent Li.
550######################################################################
551
552if ( -f $libf/phy$physique/raddim.h ) then
553  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
554    \rm $libf/phy$physique/raddim.h
555    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
556    echo $libf/phy$physique/raddim.$dimh.h
557    cat $libf/phy$physique/raddim.$dimh.h
558    cat $libf/phy$physique/raddim.h
559  else
560    echo On peut diminuer la taille de l executable en creant
561    echo le fichier $libf/phy$physique/raddim.$dimh.h
562    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
563  endif
564endif
565
566######################################################################
567# Gestion du filtre qui n'existe qu'en 3d.
568######################################################################
569
570# set filtre to 'oldfiltrez' if using -olddyn option
571if ( "$dyntype" == "olddyn" ) then
572  set filtre="oldfiltrez"
573endif
574
575if ( `expr $dimc \> 2` == 1 ) then
576   set filtre="FILTRE=$filtre"
577else
578   set filtre="FILTRE= L_FILTRE= "
579endif
580echo "MACRO FILTRE $filtre"
581
582echo "dimc $dimc"
583
584########################################################################
585#  Avant de lancer le make, on recree le makefile si necessaire
586########################################################################
587# c'est a dire dans 3 cas:
588# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
589#    derniere creation du makefile
590# 2. si le fichier contenant cette liste "liste_des_sources"
591#    n'existe pas.
592# 3. Si le makefile n'existe pas.
593########################################################################
594
595cd $model
596find libf -name '*.[Fh]' -print >! tmp77
597#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
598find libf -name '*.[Fh]90' -print >> tmp90
599
600if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
601     || `diff tmp90 liste_des_sources_f90 | wc -w` \
602     || ! -f makefile \
603     || ! -f liste_des_sources_f90 \
604     || ! -f liste_des_sources_f77 ) then
605        echo "les fichiers suivants ont ete crees ou detruits"
606        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
607        diff liste_des_sources_f77 tmp77
608        diff liste_des_sources_f90 tmp90
609        \cp tmp77 liste_des_sources_f77
610        \cp tmp90 liste_des_sources_f90
611        echo "On recree le makefile"
612        if ("$dyntype" == "olddyn") then
613          ./create_make_gcm olddyn3d grid bibio aeronomars phy$physique >! tmp
614        else
615          ./create_make_gcm dyn3d grid bibio aeronomars phy$physique >! tmp
616        endif
617        \mv tmp makefile
618        echo "Nouveau makefile cree."
619endif
620
621########################################################################
622#  Execution de la comande make
623########################################################################
624
625echo PHYSIQUE $phys
626echo dynamique $dyn $dimension
627echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
628echo PATH pour les fichiers INCLUDE $include
629echo OPLINK="$oplink"
630
631if $HP then
632   set f77='fort77 +OP'
633   set f90='jensaisrien'
634   set opt_link="$opt_link -lm"
635else  if $VPP then
636   set f77=frt
637   set f90=$f77
638else if $CRAY then
639   set f77=f90
640   set f90=f90
641else if $LINUX then
642   set f77=pgf90
643   set f90=pgf90
644else if $SUN then
645   set f77=f90
646   set f90=f90
647else if $NEC then
648   set f77=f90
649   set f90=f90
650else if $XNEC then
651   set f77=sxmpif90
652   set f90=sxmpif90
653else
654   set f77=f77
655   set f90=f90
656endif
657
658cd $model
659
660if $VPP then
661  set make="gmake RANLIB=ls"
662else if $CRAY then
663  set make="make RANLIB=ls"
664else if $NEC then
665  set make="make RANLIB=ls"
666else if $LINUX then
667  set make="make -k RANLIB=ranlib"
668else if $XNEC then
669  set make="/usr/local/bin/gmake RANLIB=ls"
670  set make="/usr/freeware/bin/gmake RANLIB=ls"
671else
672  set make="make RANLIB=ranlib"
673endif
674
675
676
677#
678# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
679# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
680#
681#if ($code == 'create_limit' && $SUN) then
682#   set link=f77
683#   set opt_link="-L$NCDFLIB -lnetcdf"
684#endif
685
686#if ($code == 'create_etat0' && $SUN) then
687#   if ( ! -f $libo/libdyn3d.a ) then
688#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
689#     \rm $libf/grid/dimensions.h
690#     exit
691#   endif
692#   set optim90=" -dalign -fixed "
693#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
694#   set link="$f90 $optim90"
695#   touch $LMDGCM/libf/dyn3d/startvar.F
696#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
697#endif
698
699#
700# Encore un test temporaire: probleme de compilation sur VPP
701# l'optimisation de startvar se passe mal
702#
703if ($code == 'create_etat0' && $VPP) then
704   if ( ! -f $libo/libdyn3d.a ) then
705     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
706     \rm $libf/grid/dimensions.h                                             
707     exit                       
708   endif
709   set optim90="$optim90"" -X9 -w"
710   set opt_link="-L$NCDFLIB -lnetcdf"
711   touch $LMDGCM/libf/dyn3d/startvar.F
712   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
713endif
714
715#
716# etat0_netcdf a besoin d'info de la physique
717# A revoir
718set include="$include"" -I$libf/phy$physique"
719
720
721#################################################################
722# Execution de la comande make... ENFIN!
723#################################################################
724
725if $VPP then
726  set optim90=" $optim90 -Am -M$libo"
727  set optimtru90="$optim90"
728else if $SUN then
729 set optim90=" $optim90 -M$libo"
730 set optimtru90=" $optimtru90 "
731else if $NEC then
732 set optim90=" $optim90 -I$libo "
733else if $XNEC then
734 set optim90=" $optim90 -I$libo "
735 set optimtru90=" $optimtru90 -I$libo "
736else if $LINUX then
737 set optim90="$optim90 -module $libo"
738 set optimtru90="$optimtru90 -module $libo"
739# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
740# set mod_loc_dir=$libo
741endif
742
743set link="$f90 $optim90"
744
745set ar=ar
746
747if $XNEC then
748  set link="sxld $opt_link"
749  set link="$f90 "
750#  set ar=sxar
751endif
752
753
754cd $localdir
755
756echo $make -f $LMDGCM/makefile \
757OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
758OPTIM90="$optim90" \
759OPTIMTRU90="$optimtru90" \
760INCLUDE="$include" \
761$filtre \
762LIBO=$libo \
763$dyn \
764$phys \
765DIM=$dimc \
766DYNTYPE="$dyntype" \
767L_ADJNT="$adjnt" \
768LOCAL_DIR="$localdir"  \
769F77="$f77" \
770F90="$f90" \
771OPLINK="$oplink" \
772LINK="$link" \
773GCM="$LMDGCM" \
774MOD_LOC_DIR=$mod_loc_dir \
775MOD_SUFFIX=$mod_suffix \
776AR=$ar \
777PROG=$code
778
779
780$make -f $LMDGCM/makefile \
781OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
782OPTIM90="$optim90" \
783OPTIMTRU90="$optimtru90" \
784INCLUDE="$include" \
785$filtre \
786LIBO=$libo \
787$dyn \
788$phys \
789DIM=$dimc \
790DYNTYPE="$dyntype" \
791L_ADJNT="$adjnt" \
792LOCAL_DIR="$localdir"  \
793F77="$f77" \
794F90="$f90" \
795OPLINK="$oplink" \
796LINK="$link" \
797GCM="$LMDGCM" \
798MOD_LOC_DIR=$mod_loc_dir \
799MOD_SUFFIX=$mod_suffix \
800AR=$ar \
801PROG=$code
802
803\rm $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.