source: trunk/LMDZ.MARS/makegcm_g95 @ 937

Last change on this file since 937 was 882, checked in by tnavarro, 12 years ago

small correction in makegcm, latent heat in clouds, changed threshold in dust radius

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