source: trunk/LMDZ.MARS/makegcm_g95 @ 1313

Last change on this file since 1313 was 1246, checked in by aslmd, 11 years ago

LMDZ.MARS. Made number of scatterers a free dimension not in need to be prescribe at compiling time. Instead it must be set in callphys.def. See README for further information about this commit.

  • Property svn:executable set to *
File size: 23.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
14set dyntype="dyn"
15set full=""
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#set scriptdir=`dirname $0`
24#setenv LMDGCM `readlink -f $scriptdir`
25## You may set LIBOGCM to something else; otherwise we default to:
26#setenv LIBOGCM $LMDGCM/libo
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
30#  setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_g95/lib
31#  setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_g95/include
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
291-p PHYS    Selects the set of physical parameterizations
292           you want to compile the model with.
293           The model is then compiled using the physical
294           parameterization sources in directory:
295            $LMDGCM/libf/phyPHYS
296
297-g grille  Selects the grid type.
298           This option overwrites file
299           $LMDGCM/libf/grid/fxyprim.h
300           with file
301           $LMDGCM/libf/grid/fxy_grille.h
302           the grid can take the following values:
303           1. reg - the regular grid
304           2. sin - to obtain equidistant points in terms of sin(latitude)
305           3. new - to zoom into a part of the globe
306
307-O "compilation options" set of fortran compilation options to use
308
309-include path
310           Used if the subroutines contain #include files (ccp) that
311           are located in directories that are not referenced by default.
312
313-adjnt     Compiles the adjoint model to the dynamical code.
314
315-olddyn    To compile GCM with "old dynamics"
316
317-filtre  filter
318           To select the longitudinal filter in the polar regions.
319           "filter" corresponds to the name of a directory located in
320           $LMDGCM/libf. The standard filter for the model is "filtrez"
321           which can be used for a regular grid and for a 
322           grid with longitudinal zoom.
323
324-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
325           Adds a link to FORTRAN libraries
326           libfile1.a, libfile2.a ...
327           located in directories dir1, dir2 ...respectively
328           If dirn is a directory with an automatic path
329           (/usr/lib ... for example)
330           there is no need to specify  -Ldirn.
331
332-full      Full (re)compilation (from scratch)
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
350     case -g
351        set grille="$2" ; shift ; shift ; goto top
352
353     case -t
354        set ntrac=$2 ; shift ; shift ; goto top
355
356     case -include
357        set include="$include -I$2" ; shift ; shift ; goto top
358
359     case -adjnt
360        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
361
362     case -olddyn
363        set dyntype="olddyn" ; shift; goto top
364
365     case -full
366        set full="full" ; 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
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"
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
466  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
467else
468  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
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
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
521    #remove old dimensions.h file
522    \rm -f $libf/grid/dimensions.h
523  else
524    exit
525  endif
526endif
527
528# Build the appropriate 'dimensions.h' file
529cd dimension
530./makdim $dim
531# echo contents of dimensions.h to standard output
532cat $libf/grid/dimensions.h
533
534#
535cd $LMDGCM
536# set path to objects directory
537set libo=$libo/$nomlib
538# create objects directory, if it doesn't exist
539if ( ! -d $libo )  then
540   mkdir $libo
541   cd $model
542endif
543
544########################################################################
545# Differentes dynamiques (3d, 2d, 1d)
546########################################################################
547
548set dimension=`echo $dim | wc -w`
549echo dimension $dimension dim $dim
550if ( $dimension == 1 ) then
551  echo "No dynamics"
552##  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
553## NB: we still need to have L_DYN=libdyn3d to reach routines and module
554## objects which are located in dyn3d
555  set dyn="L_DYN=-ldyn3d DYN= L_FILTRE= DIRMAIN=phy$physique "
556endif
557endif
558
559cd $model
560if ( $dimension == 3 ) then
561  cd libf/grid
562  \rm fxyprim.h
563  cp -p fxy_${grille}.h fxyprim.h
564endif
565
566######################################################################
567#   Traitement special pour le nouveau rayonnement de Laurent Li.
568######################################################################
569
570if ( -f $libf/phy$physique/raddim.h ) then
571  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
572    \rm $libf/phy$physique/raddim.h
573    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
574    echo $libf/phy$physique/raddim.$dimh.h
575    cat $libf/phy$physique/raddim.$dimh.h
576    cat $libf/phy$physique/raddim.h
577  else
578    echo On peut diminuer la taille de l executable en creant
579    echo le fichier $libf/phy$physique/raddim.$dimh.h
580    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
581  endif
582endif
583
584######################################################################
585# Gestion du filtre qui n'existe qu'en 3d.
586######################################################################
587
588# set filtre to 'oldfiltrez' if using -olddyn option
589if ( "$dyntype" == "olddyn" ) then
590  set filtre="oldfiltrez"
591endif
592
593if ( `expr $dimc \> 2` == 1 ) then
594   set filtre="FILTRE=$filtre"
595else
596   set filtre="FILTRE= L_FILTRE= "
597endif
598echo "MACRO FILTRE $filtre"
599
600echo "dimc $dimc"
601
602#cleanup for a full recompilation, if requested
603if ("$full" == "full") then
604# remove makefile and $libo
605  cd $model
606  \rm -f makefile
607  \rm -rf $libo/*
608endif
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 | sort >! tmp77
623#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
624find libf -name '*.[Fh]90' -print | sort >> 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=pgf90
669#   set f90=pgf90
670   set f77=g95
671   set f90=g95
672else if $SUN then
673   set f77=f90
674   set f90=f90
675else if $NEC then
676   set f77=f90
677   set f90=f90
678else if $XNEC then
679   set f77=sxmpif90
680   set f90=sxmpif90
681else
682   set f77=f77
683   set f90=f90
684endif
685
686cd $model
687
688if $VPP then
689  set make="gmake RANLIB=ls"
690else if $CRAY then
691  set make="make RANLIB=ls"
692else if $NEC then
693  set make="make RANLIB=ls"
694else if $LINUX then
695  set make="make -k RANLIB=ranlib"
696else if $XNEC then
697  set make="/usr/local/bin/gmake RANLIB=ls"
698  set make="/usr/freeware/bin/gmake RANLIB=ls"
699else
700  set make="make RANLIB=ranlib"
701endif
702
703set include="$include"" -I$libf/phy$physique"
704
705
706#################################################################
707# Execution de la comande make... ENFIN!
708#################################################################
709
710if $VPP then
711  set optim90=" $optim90 -Am -M$libo"
712  set optimtru90="$optim90"
713else if $SUN then
714 set optim90=" $optim90 -M$libo"
715 set optimtru90=" $optimtru90 "
716else if $NEC then
717 set optim90=" $optim90 -I$libo "
718else if $XNEC then
719 set optim90=" $optim90 -I$libo "
720 set optimtru90=" $optimtru90 -I$libo "
721else if $LINUX then
722# Ehouarn : adapt to g95
723 set optim="$optim -fmod=$libo"
724 set optim90="$optim90 -fmod=$libo"
725 set optimtru90="$optimtru90 -fmod=$libo"
726# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
727# set mod_loc_dir=$libo
728endif
729
730set link="$f90 $optim90"
731
732set ar=ar
733
734if $XNEC then
735  set link="sxld $opt_link"
736  set link="$f90 "
737#  set ar=sxar
738endif
739
740
741cd $localdir
742
743## locate main program (could be in dyn3d or phy$physique
744##                      and could be .F or .F90)
745set source_code=${code}.F
746if ( -f $LMDGCM/libf/dyn3d/${code}.F90 ) then
747  set source_code=${code}.F90
748endif
749if ( -f $LMDGCM/libf/phy${physique}/${code}.F ) then
750  set source_code=${code}.F
751endif
752if ( -f $LMDGCM/libf/phy${physique}/${code}.F90 ) then
753  set source_code=${code}.F90
754endif
755
756## locate directory where main program is located
757if ( $dimension == 3 ) then
758  if ( -f $LMDGCM/libf/dyn3d/${source_code} ) then
759    set dyn="DIRMAIN=dyn3d "
760  endif
761  if ( -f $LMDGCM/libf/phy${physique}/${source_code} ) then
762    set dyn="DIRMAIN=phy${physique} "
763  endif
764endif
765
766echo $make -f $LMDGCM/makefile \
767OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
768OPTIM="$optim" \
769OPTIM90="$optim90" \
770OPTIMTRU90="$optimtru90" \
771INCLUDE="$include" \
772$filtre \
773LIBO=$libo \
774$dyn \
775$phys \
776DIM=$dimc \
777DYNTYPE="$dyntype" \
778L_ADJNT="$adjnt" \
779LOCAL_DIR="$localdir"  \
780F77="$f77" \
781F90="$f90" \
782OPLINK="$oplink" \
783LINK="$link" \
784GCM="$LMDGCM" \
785MOD_LOC_DIR=$mod_loc_dir \
786MOD_SUFFIX=$mod_suffix \
787AR=$ar \
788SOURCE=$source_code \
789PROG=$code
790
791
792$make -f $LMDGCM/makefile \
793OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
794OPTIM="$optim" \
795OPTIM90="$optim90" \
796OPTIMTRU90="$optimtru90" \
797INCLUDE="$include" \
798$filtre \
799LIBO=$libo \
800$dyn \
801$phys \
802DIM=$dimc \
803DYNTYPE="$dyntype" \
804L_ADJNT="$adjnt" \
805LOCAL_DIR="$localdir"  \
806F77="$f77" \
807F90="$f90" \
808OPLINK="$oplink" \
809LINK="$link" \
810GCM="$LMDGCM" \
811MOD_LOC_DIR=$mod_loc_dir \
812MOD_SUFFIX=$mod_suffix \
813AR=$ar \
814SOURCE=$source_code \
815PROG=$code
816
817# cleanup, remove dimensions.h
818\rm -f $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.