source: trunk/WRF.COMMON/WRFV2/mars_lmd_new/makegcm_pgf @ 2756

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

MESOSCALE
LMDZ.MARS

--> Performed the necessary modifications for dynamic tracers

to work with the mesoscale model (new physics).

--> Added precompiling flag MESOSCALE around pressure modifications

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

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

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

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