source: trunk/LMDZ.MARS/makegcm_g95 @ 1228

Last change on this file since 1228 was 1085, checked in by emillour, 11 years ago

Removed wrongly referenced module variables in lwb and physdem.
Added option "-full" to makegcm_* to force a full recompilation from scratch (ie: removing libo/... and makefile before launching makefile building and compilation).
EM

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