source: trunk/WRF.COMMON/WRFV2/mars_lmd_new/makegcm_g95 @ 3094

Last change on this file since 3094 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.7 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_g95/netcdf-3.6.1/lib
29#  setenv NCDFINC /donnees/emlmd/netcdf64_g95/netcdf-3.6.1/include
30#else
31#  setenv NCDFLIB /distrib/local/netcdf/g95_32bits/lib
32#  setenv NCDFINC /distrib/local/netcdf/g95_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`"
154d $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 'g95' compiler
182   set optim="-O3 -fstatic -funroll-loops -fno-second-underscore -DMESOSCALE"
183   set optim90=" -O3 -fstatic -funroll-loops -fno-second-underscore -DMESOSCALE"
184   set optimtru90=" -O3 -fstatic -funroll-loops -fno-second-underscore -DMESOSCALE"
185## Aymeric : added option for NETCDF libraries
186#   set optim90=" -DMESOSCALE -O2 -fno-second-underscore -fstatic -fzero -Wall
187#   set optimtru90=" -DMESOSCALE -O2 -fno-second-underscore -fstatic -fzero -Wall
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-p PHYS    Selects the set of physical parameterizations
293           you want to compile the model with.
294           The model is then compiled using the physical
295           parameterization sources in directory:
296            $LMDGCM/libf/phyPHYS
297
298-g grille  Selects the grid type.
299           This option overwrites file
300           $LMDGCM/libf/grid/fxyprim.h
301           with file
302           $LMDGCM/libf/grid/fxy_grille.h
303           the grid can take the following values:
304           1. reg - the regular grid
305           2. sin - to obtain equidistant points in terms of sin(latitude)
306           3. new - to zoom into a part of the globe
307
308-O "compilation options" set of fortran compilation options to use
309
310-include path
311           Used if the subroutines contain #include files (ccp) that
312           are located in directories that are not referenced by default.
313
314-adjnt     Compiles the adjoint model to the dynamical code.
315
316-olddyn    To compile GCM with "old dynamics"
317
318-filtre  filter
319           To select the longitudinal filter in the polar regions.
320           "filter" corresponds to the name of a directory located in
321           $LMDGCM/libf. The standard filter for the model is "filtrez"
322           which can be used for a regular grid and for a 
323           grid with longitudinal zoom.
324
325-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
326           Adds a link to FORTRAN libraries
327           libfile1.a, libfile2.a ...
328           located in directories dir1, dir2 ...respectively
329           If dirn is a directory with an automatic path
330           (/usr/lib ... for example)
331           there is no need to specify  -Ldirn.
332
333eod
334exit
335
336########################################################################
337# Lecture des differentes options
338########################################################################
339
340    case -d:
341        set dim=$2 ; shift ; shift ; goto top
342                       
343    case -O:
344#        set optim90="$2" ; shift ; shift ; goto top
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 -filtre
366        set filtre=$2 ; shift ; shift ; goto top
367
368     case -link
369        set opt_link="$opt_link $2" ; shift ; shift ; goto top
370
371     case -debug
372        if $HP then
373           set optim90=" -g "
374        else if $SUN then
375           setenv PARALLEL 4
376           set optim90=" -g -C "
377           set optimtru90=" -g -C "
378        else if $CRAY then
379           set optim90="$optim90"" -G1 "
380        else if $LINUX then
381##           set optim90="-g -Mbounds "
382##           set optim90="-mcmodel=medium"
383##         Aymeric : thought I'd complete the g95 debugging
384#          set optim="$optim"" -g -fbounds-check -DMESOSCALE "
385#          set optim90="$optim90"" -g -fbounds-check -DMESOSCALE "
386#          set optimtru90="$optimtru90"" -g -fbounds-check -DMESOSCALE "
387           ## for g95
388           set optim="-g -Wall -ftrace=full -fbounds-check -DMESOSCALE"
389           set optim90="-g -Wall -ftrace=full -fbounds-check -DMESOSCALE"
390           set optimtru90="-g -Wall -ftrace=full -fbounds-check -DMESOSCALE"
391        else
392           echo "pas d option debug predefinie pour cette machine"
393           exit
394        endif
395        shift ; goto top
396
397     default
398        set code="$1" ; shift ; goto top
399
400   endsw
401endif
402
403echo "apres les opts dim $dim"
404
405########################################################################
406# cas special sans physique
407########################################################################
408if ( "$physique" == 'nophys' ) then
409   set phys="L_PHY= LIBPHY="
410endif
411
412########################################################################
413# choix du nombre de traceur par defaut si il n'a pas ete choisi,
414# suivant la physique
415########################################################################
416
417if ( $ntrac == 0  ) then
418    if ( "$physique" == 'nophys' ) then
419        set ntrac=1
420    else if ( "$physique" == 'lmd' ) then
421        set ntrac=2
422    else if ( "$physique" == 'lmd_test_li' ) then
423        set ntrac=2
424    else if ( "$physique" == 'ec' ) then
425        set ntrac=1
426    else
427        set ntrac = 1
428    endif
429endif
430
431########################################################################
432#subtilites sur le nom de la librairie
433########################################################################
434
435\rm tmp ; touch tmp
436\rm tmp90 ; touch tmp90
437foreach i ( $optim90 )
438   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
439end
440set suf=
441foreach i ( `sort tmp | uniq ` )
442   set suf=$suf$i
443end
444if ( ! $IBM ) then
445   set nomlib="$nomlib$suf"
446endif
447if ( $DEC ) then
448   set nomlib=DEC
449endif
450
451# dimension
452
453echo "dimension avant sed $dim"
454if ( $IBM ) then
455   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
456   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
457else if ( $SUN || $XNEC ) then
458   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
459   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
460else
461#   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
462#   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
463     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
464     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
465endif
466
467# build final name of libraries directory:
468if ( "$dyntype" == "olddyn" ) then
469  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
470else
471  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
472endif
473
474# Append 'physique' type, if it is not mars, to nomlib
475if ( "$physique" != "mars" ) then
476  set nomlib=${nomlib}_${physique}
477endif
478
479## M-A-F nomlib trop long sur CRAY pour ar
480if ( $CRAY ) then
481    set nomlib=F90_${dim_}_t${ntrac}
482endif
483if ( $NEC || $XNEC ) then
484    set nomlib=F90_${dim_}_t${ntrac}
485endif
486
487echo "calcul de la dimension"
488set dimc=`echo $dim | wc -w`
489
490if ( "$dimc" == "2" ) then
491  set include="$include "'-I$(LIBF)/dyn2d '
492  set dimh=$dim
493else
494  if ( "$dyntype" == "olddyn" ) then
495    set include="$include "'-I$(LIBF)/olddyn3d '
496  else
497    set include="$include "'-I$(LIBF)/dyn3d '
498  endif
499  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
500endif
501echo "dimc is $dimc"
502
503########################################################################
504# path pour les #include
505########################################################################
506
507set include="$include -I$NCDFINC "
508echo $include
509
510########################################################################
511# Gestion des dimensions du modele.
512# on cree ou remplace le fichier des dimensions/nombre de traceur
513########################################################################
514
515cd $libf/grid
516#if ( -f dimensions.h ) then
517#  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
518#  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
519#  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
520#  echo "vous pouvez continuer en repondant oui."
521#  echo "Voulez-vous vraiment continuer?"
522#  if ( $< == "oui" ) then
523#    #remove old dimensions.h file
524#    \rm $libf/grid/dimensions.h
525#  else
526#    exit
527#  endif
528#endif
529#### Aymeric: commented for mesoscale purposes
530
531# Build the appropriate 'dimensions.h' file
532cd dimension
533./makdim $dim
534# echo contents of dimensions.h to standard output
535cat $libf/grid/dimensions.h
536#### Aymeric: necessary for nests, just add lines if more than 4 nests
537cp -f $libf/grid/dimensions.h $libf/grid/d2_dimensions.h
538cp -f $libf/grid/dimensions.h $libf/grid/d3_dimensions.h
539cp -f $libf/grid/dimensions.h $libf/grid/d4_dimensions.h
540
541cd $LMDGCM
542# set path to objects directory
543set libo=$libo/$nomlib
544# create objects directory, if it doesn't exist
545if ( ! -d $libo )  then
546   mkdir $libo
547   cd $model
548endif
549
550########################################################################
551# Differentes dynamiques (3d, 2d, 1d)
552########################################################################
553
554set dimension=`echo $dim | wc -w`
555echo dimension $dimension dim $dim
556if ( $dimension == 1 ) then
557  echo pas de dynamique
558  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
559endif
560endif
561
562cd $model
563if ( $dimension == 3 ) then
564  cd libf/grid
565  \rm fxyprim.h
566  cp -p fxy_${grille}.h fxyprim.h
567endif
568
569######################################################################
570#   Traitement special pour le nouveau rayonnement de Laurent Li.
571######################################################################
572
573if ( -f $libf/phy$physique/raddim.h ) then
574  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
575    \rm $libf/phy$physique/raddim.h
576    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
577    echo $libf/phy$physique/raddim.$dimh.h
578    cat $libf/phy$physique/raddim.$dimh.h
579    cat $libf/phy$physique/raddim.h
580  else
581    echo On peut diminuer la taille de l executable en creant
582    echo le fichier $libf/phy$physique/raddim.$dimh.h
583    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
584  endif
585endif
586
587######################################################################
588# Gestion du filtre qui n'existe qu'en 3d.
589######################################################################
590
591# set filtre to 'oldfiltrez' if using -olddyn option
592if ( "$dyntype" == "olddyn" ) then
593  set filtre="oldfiltrez"
594endif
595
596if ( `expr $dimc \> 2` == 1 ) then
597   set filtre="FILTRE=$filtre"
598else
599   set filtre="FILTRE= L_FILTRE= "
600endif
601echo "MACRO FILTRE $filtre"
602
603echo "dimc $dimc"
604
605########################################################################
606#  Avant de lancer le make, on recree le makefile si necessaire
607########################################################################
608# c'est a dire dans 3 cas:
609# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
610#    derniere creation du makefile
611# 2. si le fichier contenant cette liste "liste_des_sources"
612#    n'existe pas.
613# 3. Si le makefile n'existe pas.
614########################################################################
615
616cd $model
617find libf -name '*.[Fh]' -print >! tmp77
618#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
619find libf -name '*.[Fh]90' -print >> tmp90
620
621if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
622     || `diff tmp90 liste_des_sources_f90 | wc -w` \
623     || ! -f makefile \
624     || ! -f liste_des_sources_f90 \
625     || ! -f liste_des_sources_f77 ) then
626        echo "les fichiers suivants ont ete crees ou detruits"
627        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
628        diff liste_des_sources_f77 tmp77
629        diff liste_des_sources_f90 tmp90
630        \cp tmp77 liste_des_sources_f77
631        \cp tmp90 liste_des_sources_f90
632        echo "On recree le makefile"
633        if ("$dyntype" == "olddyn") then
634          ./create_make_gcm olddyn3d grid bibio aeronomars phy$physique >! tmp
635        else
636          ./create_make_gcm dyn3d grid bibio aeronomars phy$physique >! tmp
637        endif
638        \mv tmp makefile
639        echo "Nouveau makefile cree."
640endif
641
642########################################################################
643#  Execution de la comande make
644########################################################################
645
646echo PHYSIQUE $phys
647echo dynamique $dyn $dimension
648echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
649echo PATH pour les fichiers INCLUDE $include
650echo OPLINK="$oplink"
651
652if $HP then
653   set f77='fort77 +OP'
654   set f90='jensaisrien'
655   set opt_link="$opt_link -lm"
656else  if $VPP then
657   set f77=frt
658   set f90=$f77
659else if $CRAY then
660   set f77=f90
661   set f90=f90
662else if $LINUX then
663#   set f77=pgf90
664#   set f90=pgf90
665   set f77=g95
666   set f90=g95
667else if $SUN then
668   set f77=f90
669   set f90=f90
670else if $NEC then
671   set f77=f90
672   set f90=f90
673else if $XNEC then
674   set f77=sxmpif90
675   set f90=sxmpif90
676else
677   set f77=f77
678   set f90=f90
679endif
680
681cd $model
682
683if $VPP then
684  set make="gmake RANLIB=ls"
685else if $CRAY then
686  set make="make RANLIB=ls"
687else if $NEC then
688  set make="make RANLIB=ls"
689else if $LINUX then
690  set make="make -k RANLIB=ranlib"
691else if $XNEC then
692  set make="/usr/local/bin/gmake RANLIB=ls"
693  set make="/usr/freeware/bin/gmake RANLIB=ls"
694else
695  set make="make RANLIB=ranlib"
696endif
697
698
699
700#
701# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
702# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
703#
704#if ($code == 'create_limit' && $SUN) then
705#   set link=f77
706#   set opt_link="-L$NCDFLIB -lnetcdf"
707#endif
708
709#if ($code == 'create_etat0' && $SUN) then
710#   if ( ! -f $libo/libdyn3d.a ) then
711#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
712#     \rm $libf/grid/dimensions.h
713#     exit
714#   endif
715#   set optim90=" -dalign -fixed "
716#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
717#   set link="$f90 $optim90"
718#   touch $LMDGCM/libf/dyn3d/startvar.F
719#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
720#endif
721
722#
723# Encore un test temporaire: probleme de compilation sur VPP
724# l'optimisation de startvar se passe mal
725#
726if ($code == 'create_etat0' && $VPP) then
727   if ( ! -f $libo/libdyn3d.a ) then
728     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
729     \rm $libf/grid/dimensions.h                                             
730     exit                       
731   endif
732   set optim90="$optim90"" -X9 -w"
733   set opt_link="-L$NCDFLIB -lnetcdf"
734   touch $LMDGCM/libf/dyn3d/startvar.F
735   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
736endif
737
738#
739# etat0_netcdf a besoin d'info de la physique
740# A revoir
741set include="$include"" -I$libf/phy$physique"
742
743
744#################################################################
745# Execution de la comande make... ENFIN!
746#################################################################
747
748if $VPP then
749  set optim90=" $optim90 -Am -M$libo"
750  set optimtru90="$optim90"
751else if $SUN then
752 set optim90=" $optim90 -M$libo"
753 set optimtru90=" $optimtru90 "
754else if $NEC then
755 set optim90=" $optim90 -I$libo "
756else if $XNEC then
757 set optim90=" $optim90 -I$libo "
758 set optimtru90=" $optimtru90 -I$libo "
759else if $LINUX then
760# Ehouarn : adapt to g95
761 set optim="$optim -fmod=$libo"
762 set optim90="$optim90 -fmod=$libo"
763 set optimtru90="$optimtru90 -fmod=$libo"
764# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
765# set mod_loc_dir=$libo
766endif
767
768set link="$f90 $optim90"
769
770set ar=ar
771
772if $XNEC then
773  set link="sxld $opt_link"
774  set link="$f90 "
775#  set ar=sxar
776endif
777
778
779cd $localdir
780
781echo $make -f $LMDGCM/makefile \
782OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
783OPTIM="$optim" \
784OPTIM90="$optim90" \
785OPTIMTRU90="$optimtru90" \
786INCLUDE="$include" \
787$filtre \
788LIBO=$libo \
789$dyn \
790$phys \
791DIM=$dimc \
792DYNTYPE="$dyntype" \
793L_ADJNT="$adjnt" \
794LOCAL_DIR="$localdir"  \
795F77="$f77" \
796F90="$f90" \
797OPLINK="$oplink" \
798LINK="$link" \
799GCM="$LMDGCM" \
800MOD_LOC_DIR=$mod_loc_dir \
801MOD_SUFFIX=$mod_suffix \
802AR=$ar \
803PROG=$code
804
805
806$make -f $LMDGCM/makefile \
807OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
808OPTIM="$optim" \
809OPTIM90="$optim90" \
810OPTIMTRU90="$optimtru90" \
811INCLUDE="$include" \
812$filtre \
813LIBO=$libo \
814$dyn \
815$phys \
816DIM=$dimc \
817DYNTYPE="$dyntype" \
818L_ADJNT="$adjnt" \
819LOCAL_DIR="$localdir"  \
820F77="$f77" \
821F90="$f90" \
822OPLINK="$oplink" \
823LINK="$link" \
824GCM="$LMDGCM" \
825MOD_LOC_DIR=$mod_loc_dir \
826MOD_SUFFIX=$mod_suffix \
827AR=$ar \
828PROG=$code
829
830# cleanup, remove dimensions.h
831\rm $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.