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