source: trunk/LMDZ.MARS/makegcm_ifort @ 357

Last change on this file since 357 was 352, checked in by acolaitis, 13 years ago

Up to date makegcm for ifort, for usage on penn, viccaro and levan.

  • Property svn:executable set to *
File size: 23.3 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"
15set scatterers="1"
16########################################################################
17# path a changer contenant les sources et les objets du modele
18########################################################################
19
20#### If you want you can set environment variables here (instead of
21####  relying on the C-shell environment variables)
22# default LMDGCM to where makegcm script is located:
23#setenv LMDGCM "`dirname $0`"
24# You may set LIBOGCM to something else; otherwise we default to:
25setenv LIBOGCM $LMDGCM/libo
26## NetCDF Libraries: what follows is OK on GNOME
27#  setenv NCDFLIB /usr/local/lib
28#  setenv NCDFINC /usr/local/include
29####
30
31## NetCDF Libraries: what follows is OK on LMD network
32setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_ifort/lib
33setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_ifort/include
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# Ehouarn 'ifort' compiler
182   #NB: on gnome -O3 ==> NaNs ...
183   if (`grep sse4_2 /proc/cpuinfo` !=) then
184      set optim=" -O2 -ip -mkl=sequential -align all -xSSE4.2 -static"
185      set optim90=" -O2 -ip -mkl=sequential -align all -xSSE4.2 -static"
186      set optimtru90=" -O2 -ip -mkl=sequential -align all -xSSE4.2 -static"
187   else
188      set optim=" -O2 -ip -mkl=sequential -align all -static"
189      set optim90=" -O2 -ip -mkl=sequential -align all -static"
190      set optimtru90=" -O2 -ip -mkl=sequential -align all -static"
191   endif
192#   set opt_link=" -Mfree -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Bstatic "
193#   set mod_loc_dir=$LIBOGCM
194# ifort puts mod files in local directory
195   set mod_loc_dir="."
196   set mod_suffix=mod
197else if $NEC then
198   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
199   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
200###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
201   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
202   set mod_loc_dir="."
203   set mod_suffix="mod"
204else if $XNEC then
205   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
206   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
207   if $MODIPSL then
208     if $COUPLE then
209       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
210     else
211       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
212     endif
213     set mod_loc_dir="./"
214   else
215####     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"
216     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
217     set mod_loc_dir="."
218   endif
219   set mod_suffix="mod"
220
221endif
222
223# Ehouarn: add 'g9fortran' string to pathname
224set nomlib=${machine}
225
226# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
227if (`uname` == Linux && `uname -m` == "x86_64") then
228  set nomlib=${machine}64
229endif
230
231########################################################################
232# lecture des options de mymake
233########################################################################
234
235top:
236if ($#argv > 0) then
237    switch ($1:q)
238
239    case -h:
240
241########################################################################
242# Manuel en ligne
243########################################################################
244more <<eod
245
246
247makegcm [Options] prog
248
249
250The makegcm script:
251-------------------
252
2531. compiles a series of subroutines located in the $LMDGCM/libf
254 sub-directories.
255 The objects are then stored in the libraries in $LIBOGCM.
256
2572. then, makegcm compiles program prog.f located by default in
258$LMDGCM/libf/dyn3d and makes the link with the libraries.
259
260Environment Variables '$LMDGCM' and '$LIBOGCM'
261 must be set as environment variables or directly
262 in the makegcm file.
263
264The makegcm command is used to control the different versions of the model
265 in parallel, compiled using the compilation options
266 and the various dimensions, without having to recompile the whole model.
267
268The FORTRAN libraries are stored in directory $LIBOGCM.
269
270
271OPTIONS:
272--------
273
274The following options can either be defined by default by editing the
275makegcm "script", or in interactive mode:
276
277-d imxjmxlm  where im, jm, and lm are the number of longitudes,
278             latitudes and vertical layers respectively.
279
280-t ntrac   Selects the number of tracers present in the model
281
282             Options -d and -t overwrite file
283             $LMDGCM/libf/grid/dimensions.h
284             which contains the 3 dimensions of the
285             horizontal grid
286             im, jm, lm plus the number of tracers passively advected
287             by the dynamics ntrac,
288             in 4 PARAMETER FORTRAN format
289             with a new file:
290             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
291             If the file does not exist already
292             it is created by the script
293             $LMDGCM/libf/grid/dimension/makdim
294
295-s nscat   Number of radiatively active scatterers
296
297-p PHYS    Selects the set of physical parameterizations
298           you want to compile the model with.
299           The model is then compiled using the physical
300           parameterization sources in directory:
301            $LMDGCM/libf/phyPHYS
302
303-g grille  Selects the grid type.
304           This option overwrites file
305           $LMDGCM/libf/grid/fxyprim.h
306           with file
307           $LMDGCM/libf/grid/fxy_grille.h
308           the grid can take the following values:
309           1. reg - the regular grid
310           2. sin - to obtain equidistant points in terms of sin(latitude)
311           3. new - to zoom into a part of the globe
312
313-O "compilation options" set of fortran compilation options to use
314
315-include path
316           Used if the subroutines contain #include files (ccp) that
317           are located in directories that are not referenced by default.
318
319-adjnt     Compiles the adjoint model to the dynamical code.
320
321-olddyn    To compile GCM with "old dynamics"
322
323-filtre  filter
324           To select the longitudinal filter in the polar regions.
325           "filter" corresponds to the name of a directory located in
326           $LMDGCM/libf. The standard filter for the model is "filtrez"
327           which can be used for a regular grid and for a 
328           grid with longitudinal zoom.
329
330-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
331           Adds a link to FORTRAN libraries
332           libfile1.a, libfile2.a ...
333           located in directories dir1, dir2 ...respectively
334           If dirn is a directory with an automatic path
335           (/usr/lib ... for example)
336           there is no need to specify  -Ldirn.
337
338eod
339exit
340
341########################################################################
342# Lecture des differentes options
343########################################################################
344
345    case -d:
346        set dim=$2 ; shift ; shift ; goto top
347                       
348    case -O:
349        set optim="$2" ; set optim90="$2" ; set optimtru90="$2" ; shift ; shift ; goto top
350
351     case -p
352        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
353
354     case -s
355        set scatterers="$2" ; shift ; goto top
356
357     case -g
358        set grille="$2" ; shift ; shift ; goto top
359
360     case -t
361        set ntrac=$2 ; shift ; shift ; goto top
362
363     case -include
364        set include="$include -I$2" ; shift ; shift ; goto top
365
366     case -adjnt
367        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
368
369     case -olddyn
370        set dyntype="olddyn" ; shift; goto top
371
372     case -filtre
373        set filtre=$2 ; shift ; shift ; goto top
374
375     case -link
376        set opt_link="$opt_link $2" ; shift ; shift ; goto top
377
378     case -debug
379        if $HP then
380           set optim90=" -g "
381        else if $SUN then
382           setenv PARALLEL 4
383           set optim90=" -g -C "
384           set optimtru90=" -g -C "
385        else if $CRAY then
386           set optim90="$optim90"" -G1 "
387        else if $LINUX then
388           ## for ifort
389             set optim=" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"
390             set optim90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"
391             set optimtru90=" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"
392        else
393           echo "pas d option debug predefinie pour cette machine"
394           exit
395        endif
396        shift ; goto top
397
398     default
399        set code="$1" ; shift ; goto top
400
401   endsw
402endif
403
404echo "apres les opts dim $dim"
405
406########################################################################
407# cas special sans physique
408########################################################################
409if ( "$physique" == 'nophys' ) then
410   set phys="L_PHY= LIBPHY="
411endif
412
413########################################################################
414# choix du nombre de traceur par defaut si il n'a pas ete choisi,
415# suivant la physique
416########################################################################
417
418if ( $ntrac == 0  ) then
419    if ( "$physique" == 'nophys' ) then
420        set ntrac=1
421    else if ( "$physique" == 'lmd' ) then
422        set ntrac=2
423    else if ( "$physique" == 'lmd_test_li' ) then
424        set ntrac=2
425    else if ( "$physique" == 'ec' ) then
426        set ntrac=1
427    else
428        set ntrac = 1
429    endif
430endif
431
432########################################################################
433#subtilites sur le nom de la librairie
434########################################################################
435
436\rm tmp ; touch tmp
437\rm tmp90 ; touch tmp90
438foreach i ( $optim90 )
439   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
440end
441set suf=
442foreach i ( `sort tmp | uniq ` )
443   set suf=$suf$i
444end
445if ( ! $IBM ) then
446   set nomlib="$nomlib$suf"
447endif
448if ( $DEC ) then
449   set nomlib=DEC
450endif
451
452# dimension
453
454echo "dimension avant sed $dim"
455if ( $IBM ) then
456   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
457   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
458else if ( $SUN || $XNEC ) then
459   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
460   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
461else
462#   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
463#   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
464     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
465     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
466endif
467
468# build final name of libraries directory:
469if ( "$dyntype" == "olddyn" ) then
470  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}_olddyn
471else
472  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}
473endif
474
475# Append 'physique' type, if it is not mars, to nomlib
476if ( "$physique" != "mars" ) then
477  set nomlib=${nomlib}_${physique}
478endif
479
480## M-A-F nomlib trop long sur CRAY pour ar
481if ( $CRAY ) then
482    set nomlib=F90_${dim_}_t${ntrac}
483endif
484if ( $NEC || $XNEC ) then
485    set nomlib=F90_${dim_}_t${ntrac}
486endif
487
488echo "calcul de la dimension"
489set dimc=`echo $dim | wc -w`
490
491if ( "$dimc" == "2" ) then
492  set include="$include "'-I$(LIBF)/dyn2d '
493  set dimh=$dim
494else
495  if ( "$dyntype" == "olddyn" ) then
496    set include="$include "'-I$(LIBF)/olddyn3d '
497  else
498    set include="$include "'-I$(LIBF)/dyn3d '
499  endif
500  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
501endif
502echo "dimc is $dimc"
503
504########################################################################
505# path pour les #include
506########################################################################
507
508set include="$include -I$NCDFINC "
509echo $include
510
511########################################################################
512# Gestion des dimensions du modele.
513# on cree ou remplace le fichier des dimensions/nombre de traceur
514########################################################################
515
516cd $libf/grid
517if ( -f dimensions.h ) then
518  echo "WARNING: you are probably already compiling the model (perhaps"
519  echo " elsewhere). Wait until the first compilation ends before "
520  echo " compiling a different configuration."
521  echo "If you are sure that you are not already compiling, then you"
522  echo " may continue this compilation by answering yes."
523  echo "Do you want to continue?"
524  if ( $< == "yes" ) then
525    #remove old dimensions.h file
526    \rm -f $libf/grid/dimensions.h
527    #remove old scatterers.h file
528    \rm -f $libf/phymars/scatterers.h
529  else
530    exit
531  endif
532endif
533
534# Build the appropriate 'dimensions.h' file
535cd dimension
536./makdim $ntrac $dim
537# echo contents of dimensions.h to standard output
538cat $libf/grid/dimensions.h
539
540cd $libf/phymars/scatterers
541# Build the appropriate 'scatterers.h' file
542./make_scatterers $scatterers
543# echo contents of scatterers.h to standard output
544cat $libf/phymars/scatterers.h
545
546cd $LMDGCM
547# set path to objects directory
548set libo=$libo/$nomlib
549# create objects directory, if it doesn't exist
550if ( ! -d $libo )  then
551   mkdir $libo
552   cd $model
553endif
554
555########################################################################
556# Differentes dynamiques (3d, 2d, 1d)
557########################################################################
558
559set dimension=`echo $dim | wc -w`
560echo dimension $dimension dim $dim
561if ( $dimension == 1 ) then
562  echo pas de dynamique
563  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
564endif
565endif
566
567cd $model
568if ( $dimension == 3 ) then
569  cd libf/grid
570  \rm fxyprim.h
571  cp -p fxy_${grille}.h fxyprim.h
572endif
573
574######################################################################
575#   Traitement special pour le nouveau rayonnement de Laurent Li.
576######################################################################
577
578if ( -f $libf/phy$physique/raddim.h ) then
579  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
580    \rm $libf/phy$physique/raddim.h
581    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
582    echo $libf/phy$physique/raddim.$dimh.h
583    cat $libf/phy$physique/raddim.$dimh.h
584    cat $libf/phy$physique/raddim.h
585  else
586    echo On peut diminuer la taille de l executable en creant
587    echo le fichier $libf/phy$physique/raddim.$dimh.h
588    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
589  endif
590endif
591
592######################################################################
593# Gestion du filtre qui n'existe qu'en 3d.
594######################################################################
595
596# set filtre to 'oldfiltrez' if using -olddyn option
597if ( "$dyntype" == "olddyn" ) then
598  set filtre="oldfiltrez"
599endif
600
601if ( `expr $dimc \> 2` == 1 ) then
602   set filtre="FILTRE=$filtre"
603else
604   set filtre="FILTRE= L_FILTRE= "
605endif
606echo "MACRO FILTRE $filtre"
607
608echo "dimc $dimc"
609
610########################################################################
611#  Avant de lancer le make, on recree le makefile si necessaire
612########################################################################
613# c'est a dire dans 3 cas:
614# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
615#    derniere creation du makefile
616# 2. si le fichier contenant cette liste "liste_des_sources"
617#    n'existe pas.
618# 3. Si le makefile n'existe pas.
619########################################################################
620
621cd $model
622find libf -name '*.[Fh]' -print >! tmp77
623#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
624find libf -name '*.[Fh]90' -print >> tmp90
625
626if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
627     || `diff tmp90 liste_des_sources_f90 | wc -w` \
628     || ! -f makefile \
629     || ! -f liste_des_sources_f90 \
630     || ! -f liste_des_sources_f77 ) then
631        echo "les fichiers suivants ont ete crees ou detruits"
632        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
633        diff liste_des_sources_f77 tmp77
634        diff liste_des_sources_f90 tmp90
635        \cp tmp77 liste_des_sources_f77
636        \cp tmp90 liste_des_sources_f90
637        echo "On recree le makefile"
638        if ("$dyntype" == "olddyn") then
639          ./create_make_gcm olddyn3d grid bibio aeronomars phy$physique >! tmp
640        else
641          ./create_make_gcm dyn3d grid bibio aeronomars phy$physique >! tmp
642        endif
643        \mv tmp makefile
644        echo "Nouveau makefile cree."
645endif
646
647########################################################################
648#  Execution de la comande make
649########################################################################
650
651echo PHYSIQUE $phys
652echo dynamique $dyn $dimension
653echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
654echo PATH pour les fichiers INCLUDE $include
655echo OPLINK="$oplink"
656
657if $HP then
658   set f77='fort77 +OP'
659   set f90='jensaisrien'
660   set opt_link="$opt_link -lm"
661else  if $VPP then
662   set f77=frt
663   set f90=$f77
664else if $CRAY then
665   set f77=f90
666   set f90=f90
667else if $LINUX then
668   set f77=ifort
669   set f90=ifort
670   set opt_link=" -L$LIBOGCM -L$NCDFLIB -lnetcdf "
671else if $SUN then
672   set f77=f90
673   set f90=f90
674else if $NEC then
675   set f77=f90
676   set f90=f90
677else if $XNEC then
678   set f77=sxmpif90
679   set f90=sxmpif90
680else
681   set f77=f77
682   set f90=f90
683endif
684
685cd $model
686
687if $VPP then
688  set make="gmake RANLIB=ls"
689else if $CRAY then
690  set make="make RANLIB=ls"
691else if $NEC then
692  set make="make RANLIB=ls"
693else if $LINUX then
694  set make="make -k RANLIB=ranlib"
695else if $XNEC then
696  set make="/usr/local/bin/gmake RANLIB=ls"
697  set make="/usr/freeware/bin/gmake RANLIB=ls"
698else
699  set make="make RANLIB=ranlib"
700endif
701
702set include="$include"" -I$libf/phy$physique"
703
704
705#################################################################
706# Execution de la comande make... ENFIN!
707#################################################################
708
709if $VPP then
710  set optim90=" $optim90 -Am -M$libo"
711  set optimtru90="$optim90"
712else if $SUN then
713 set optim90=" $optim90 -M$libo"
714 set optimtru90=" $optimtru90 "
715else if $NEC then
716 set optim90=" $optim90 -I$libo "
717else if $XNEC then
718 set optim90=" $optim90 -I$libo "
719 set optimtru90=" $optimtru90 -I$libo "
720else if $LINUX then
721# Ehouarn : adapt to gfortran
722 set optim="$optim -I${libo}"
723 set optim90="$optim90 -I${libo}"
724 set optimtru90="$optimtru90 -I${libo}"
725# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
726# set mod_loc_dir=$libo
727endif
728
729set link="$f90 $optim90"
730
731set ar=ar
732
733if $XNEC then
734  set link="sxld $opt_link"
735  set link="$f90 "
736#  set ar=sxar
737endif
738
739
740cd $localdir
741
742echo $make -f $LMDGCM/makefile \
743OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
744OPTIM="$optim" \
745OPTIM90="$optim90" \
746OPTIMTRU90="$optimtru90" \
747INCLUDE="$include" \
748$filtre \
749LIBO=$libo \
750$dyn \
751$phys \
752DIM=$dimc \
753DYNTYPE="$dyntype" \
754L_ADJNT="$adjnt" \
755LOCAL_DIR="$localdir"  \
756F77="$f77" \
757F90="$f90" \
758OPLINK="$oplink" \
759LINK="$link" \
760GCM="$LMDGCM" \
761MOD_LOC_DIR=$mod_loc_dir \
762MOD_SUFFIX=$mod_suffix \
763AR=$ar \
764PROG=$code
765
766
767$make -f $LMDGCM/makefile \
768OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
769OPTIM="$optim" \
770OPTIM90="$optim90" \
771OPTIMTRU90="$optimtru90" \
772INCLUDE="$include" \
773$filtre \
774LIBO=$libo \
775$dyn \
776$phys \
777DIM=$dimc \
778DYNTYPE="$dyntype" \
779L_ADJNT="$adjnt" \
780LOCAL_DIR="$localdir"  \
781F77="$f77" \
782F90="$f90" \
783OPLINK="$oplink" \
784LINK="$link" \
785GCM="$LMDGCM" \
786MOD_LOC_DIR=$mod_loc_dir \
787MOD_SUFFIX=$mod_suffix \
788AR=$ar \
789PROG=$code
790
791# cleanup, remove dimensions.h and scatterers.h
792\rm -f $libf/grid/dimensions.h
793\rm -f $libf/phymars/scatterers.h
Note: See TracBrowser for help on using the repository browser.