source: trunk/LMDZ.PLUTO.old/makegcm_cygwin @ 3449

Last change on this file since 3449 was 3175, checked in by emillour, 10 months ago

Pluto PCM:
Add the old Pluto LMDZ for reference (required prior step to making
an LMDZ.PLUTO using the same framework as the other physics packages).
TB+EM

  • Property svn:executable set to *
File size: 25.5 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=std
9set phys="PHYS=$physique"
10set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I.'
11set ntrac = 1
12set filtre=filtrez
13set grille=reg
14set dyntype="dyn"
15set bands="8x7"
16########################################################################
17# path a changer contenant les sources et les objets du modele
18########################################################################
19
20#### If you want you can set environment variables here
21setenv LMDGCM "`pwd`" 
22# default LMDGCM to where makegcm script is located:
23set scriptdir=`dirname $0`
24setenv LMDGCM `readlink -f $scriptdir`
25setenv LIBOGCM $LMDGCM/libo
26setenv NCDFLIB /usr/local/Cellar/netcdf-fortran/4.6.1/lib
27setenv NCDFINC /usr/local/Cellar/netcdf-fortran/4.6.1/include
28#
29####
30
31setenv localdir "`pwd`"
32set MODIPSL=0
33echo $localdir | grep modipsl >& /dev/null
34if ( ! $status ) then
35  set MODIPSL=1
36  setenv LMDGCM $localdir
37  cd ../..
38  setenv LIBOGCM "`pwd`/lib"
39  cd $localdir
40  if ( `hostname` == rhodes ) then
41    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
42    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
43  else
44    if ( `hostname` == nymphea0 ) then
45      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
46      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
47    else
48      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
49    endif
50  endif
51else
52  if ( ! $?LMDGCM ) then
53    echo You must initialize the variable LMDGCM in your environnement
54    echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc
55    exit
56  endif
57  if ( ! $?LIBOGCM ) then
58    set LIBOGCM=$LMDGCM/libo
59  endif
60  if ( ! $?NCDFLIB ) then
61    echo You must initialize the variable NCDFLIB in your environnement
62    echo for instance: "setenv NCDFLIB /usr/myself/netcdf" in .cshrc
63    exit
64  endif
65  if ( ! $?NCDFINC ) then
66    echo You must initialize the variable NCDFINC in your environnement
67    echo for instance: "setenv NCDFINC /usr/myself/netcdf" in .cshrc
68    exit
69  endif
70endif
71set model=$LMDGCM
72set libo=$LIBOGCM
73
74########################################################################
75#  Les differentes platformes reconnues
76########################################################################
77
78set HP=0
79set IBM=0
80set SUN=0
81set VPP=0
82set CRAY=0
83set DEC=0
84set LINUX=0
85set NEC=0
86set XNEC=0
87if ( `uname` == HP-UX ) then
88   set machine=HP
89   set HP=1
90else if (`uname` == UNIX_System_V ) then
91   set machine=VPP
92   set VPP=1
93else if (`uname` == SunOS ) then
94   set machine=SUN
95   set SUN=1
96else if ( `uname` == AIX ) then
97   set machine=IBM
98   set IBM=1
99else if ( `uname` == OSF1 ) then
100   set machine=ALPHA
101   set DEC=1
102else if ( `uname` == Linux ) then
103   set machine=LINUX
104   set LINUX=1
105else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
106   set machine=CRAY
107   set CRAY=1
108else if ( `uname` == SUPER-UX ) then
109   set machine=NEC
110   set NEC=1
111else if ( `hostname` == rhodes) then
112   set machine=XNEC
113   set XNEC=1
114else if ( `uname` == CYGWIN_NT-6.1) then
115   set machine=LINUX
116   set LINUX=1
117else if ( `uname` == Darwin) then
118   set machine=LINUX
119   set LINUX=1
120else
121   echo Vous travaillez sur une machine non prevue par le reglement
122   echo 'machine:' $machine
123   exit
124endif
125echo 'machine:' $machine
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 'gfortran' compiler
185   set optim="-O3 -funroll-loops -fallow-argument-mismatch "
186   set optim90="-O3 -funroll-loops -fallow-argument-mismatch "
187   set optimtru90="-O3 -funroll-loops -fallow-argument-mismatch "
188   set opt_link=" -L$NCDFLIB -lnetcdff -O2 -Wall -fallow-argument-mismatch "
189
190   #NB: on gnome -O3 ==> NaNs ...
191   #set optim=" -O2 -ip -mkl=sequential -align common "
192   #set optim90=" -O2 -ip -mkl=sequential -align common "
193   #set optimtru90=" -O2 -ip -mkl=sequential -align common "
194
195   #set mod_loc_dir="./"
196   set mod_loc_dir=$LIBOGCM
197   set mod_suffix=mod
198
199
200
201else if $NEC then
202   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
203   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
204###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
205   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
206   set mod_loc_dir="."
207   set mod_suffix="mod"
208else if $XNEC then
209   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
210   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
211   if $MODIPSL then
212     if $COUPLE then
213       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
214     else
215       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
216     endif
217     set mod_loc_dir="./"
218   else
219####     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"
220     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
221     set mod_loc_dir="."
222   endif
223   set mod_suffix="mod"
224
225endif
226
227set nomlib=$machine
228
229# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
230if (`uname` == Linux && `uname -m` == "x86_64") then
231  set nomlib=${machine}64
232endif
233
234########################################################################
235# lecture des options de mymake
236########################################################################
237
238top:
239if ($#argv > 0) then
240    switch ($1:q)
241
242    case -h:
243
244########################################################################
245# Manuel en ligne
246########################################################################
247more <<eod
248
249
250makegcm [Options] prog
251
252
253
254
255Par default, la commande makegcm:
256---------------------------------
257
2581. compile une serie de sous programmes se trouvant dans des sous-repertoires
259de $LMDGCM/libf.
260Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
261sur $LIBOGCM.
262
2632. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
264$LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
265
266La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
267dans la comande makegcm.
268
269La commande makegcm est faite pour permettre de gerer en parallele des
270versions differentes du modele, compilees avec des options de compilation
271et des dimensions differentes sans avoir a chaque fois a recompiler tout
272le modele.
273
274Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
275
276
277OPTIONS:
278--------
279
280Les options suivantes peuvent etre definies soit par defaut en editant le
281"script" makegcm, soit en interactif:
282
283-d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
284             et couches verticales.
285
286-t ntrac   selectionne le nombre de traceur advectes par la dynamique.
287           Dans les versions courantes du modele terrestre on a par exemple
288           ntrac=2 pour l'eau vapeur et liquide
289
290             L'effet des options -d et -t est d'ecraser le fichier
291             $LMDGCM/libf/grid/dimensions.h
292             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
293             de la grille horizontale im, jm, lm plus le nombre de traceurs
294             advectes passivement par la dynamique ntrac, par un nouveu fichier
295             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
296             Si ce fichier n'existe pas encore, il est cree par le script
297             $LMDGCM/libf/grid/dimension/makdim
298
299-p PHYS    pour selectionner le jeu de parametrisations physiques avec
300           lequel on veut compiler le modele.
301           Le modele sera alors compile en prenant les sources des
302           parametrisations physiques dans le repertoire:
303            $LMDGCM/libf/phyPHYS
304
305-g grille  selectionne le type de grille qu'on veut utiliser.
306           L'effet de cette option est d'ecraser le fichier
307           $LMDGCM/libf/grid/fxyprim.h
308           avec le fichier
309           $LMDGCM/libf/grid/fxy_grille.h
310           grille peut prendre les valeurs:
311           1. reg pour la grille reguliere
312           2. sin pour avoir des points equidistants en sinus de la latitude
313           3. new pour pouvoir zoomer sur une partie du globe
314
315-O "optimisation fortran" ou les optimisations fortran sont les options de la
316            commande f77
317
318-include path
319           Dans le cas ou on a dans des sous programmes des fichiers
320           #include (cpp) qui se trouve sur des repertoires non references
321           par defaut
322
323-adjnt     Pour compiler la l'adjoint du code dynamique
324
325-olddyn    To compile GCM with "old dynamics"
326
327-filtre  filtre
328           Pour choisir le filtre en longitude dans les regions polaires.
329           "filtre" correspond au nom d'un repertoire se trouvant sur
330           $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
331           etre utilise aussi bien pour une grille reguliere que pour une
332           grille zoomee en longitude.
333
334-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
335          Pour rajouter un lien avec les librairies FORTRAN
336          libfile1.a, libfile2.a ... se trouvant respectivement sur les
337          repertoires dir1, dir2 ...
338          Si dirn est un repertoire dont le chemin est automatique (comme
339          par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
340
341Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
342eod
343exit
344
345########################################################################
346# Lecture des differentes options
347########################################################################
348
349    case -d:
350        set dim=$2 ; shift ; shift ; goto top
351                       
352    case -O:
353#        set optim90="$2" ; set optimtru90="$2" ; shift ; shift ; goto top
354        set optim90="$2" ; optim="$2" ; optimtru90="$2" ; shift ; shift ; goto top
355
356     case -p
357        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
358
359     case -g
360        set grille="$2" ; shift ; shift ; goto top
361
362    case -b
363        set bands=$2 ; shift ; shift ; goto top
364           
365     case -t
366        set ntrac=$2 ; shift ; shift ; goto top
367
368     case -include
369        set include="$include -I$2" ; shift ; shift ; goto top
370
371     case -adjnt
372        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
373
374     case -olddyn
375        set dyntype="olddyn" ; shift; goto top
376
377     case -filtre
378        set filtre=$2 ; shift ; shift ; goto top
379
380     case -link
381        set opt_link="$opt_link $2" ; shift ; shift ; goto top
382
383     case -debug
384        if $HP then
385           set optim90=" -g "
386        else if $SUN then
387           setenv PARALLEL 4
388           set optim90=" -g -C "
389           set optimtru90=" -g -C "
390        else if $CRAY then
391           set optim90="$optim90"" -G1 "
392        else if $LINUX then
393           ## for gfortran
394           set optim="-g3 -Wall -fbounds-check -ffpe-trap=invalid,zero,overflow -fallow-argument-mismatch"
395           set optim90="-g3 -Wall -fbounds-check -ffpe-trap=invalid,zero,overflow -fallow-argument-mismatch"
396           set optimtru90="-g3 -Wall -fbounds-check -ffpe-trap=invalid,zero,overflow -fallow-argument-mismatch"
397           #set optim="-g3 -Wall -fbounds-check"
398           #set optim90="-g3 -Wall -fbounds-check"
399           #set optimtru90="-g3 -Wall -fbounds-check"
400        else
401           echo "pas d option debug predefinie pour cette machine"
402           exit
403        endif
404        shift ; goto top
405
406     default
407        set code="$1" ; shift ; goto top
408
409   endsw
410endif
411
412echo "apres les opts dim $dim"
413
414########################################################################
415# cas special sans physique
416########################################################################
417if ( "$physique" == 'nophys' ) then
418   set phys="L_PHY= LIBPHY="
419endif
420
421########################################################################
422# choix du nombre de traceur par defaut si il n'a pas ete choisi,
423# suivant la physique
424########################################################################
425
426if ( $ntrac == 0  ) then
427    if ( "$physique" == 'nophys' ) then
428        set ntrac=1
429    else if ( "$physique" == 'lmd' ) then
430        set ntrac=2
431    else if ( "$physique" == 'lmd_test_li' ) then
432        set ntrac=2
433    else if ( "$physique" == 'ec' ) then
434        set ntrac=1
435    else
436        set ntrac = 1
437    endif
438endif
439
440########################################################################
441#subtilites sur le nom de la librairie
442########################################################################
443
444\rm tmp ; touch tmp
445\rm tmp90 ; touch tmp90
446foreach i ( $optim90 )
447   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
448end
449set suf=
450foreach i ( `sort tmp | uniq ` )
451   set suf=$suf$i
452end
453if ( ! $IBM ) then
454   set nomlib="$nomlib$suf"
455endif
456if ( $DEC ) then
457   set nomlib=DEC
458endif
459
460# dimension
461echo "dimension avant sed $dim"
462if ( $IBM ) then
463   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
464   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
465else if ( $SUN || $XNEC ) then
466   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
467   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
468else
469     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
470     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
471endif
472
473# bands
474echo "bands avant sed $bands"
475if ( $IBM ) then
476   set bands=`echo $bands | sed -en 's/[^0-9]/ /g'`
477   set bands_=`echo $bands | sed -en 's/[^0-9]/_/g'`
478else if ( $SUN || $XNEC ) then
479   set bands=`echo $bands | sed -e 's/[^0-9]/ /g'` 
480   set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
481else
482     set bands=`echo $bands | sed -e 's/[^0-9]/ /g'`
483     set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
484endif
485
486
487# build final name of libraries directory:
488if ( "$dyntype" == "olddyn" ) then
489  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
490else
491  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
492endif
493
494# Append number of bands to nomlib (new for universal model)
495set nomlib=${nomlib}_${bands_}
496
497# Append 'physique' type, if it is not mars, to nomlib
498if ( "$physique" != "mars" ) then
499  set nomlib=${nomlib}_${physique}
500endif
501
502## M-A-F nomlib trop long sur CRAY pour ar
503if ( $CRAY ) then
504    set nomlib=F90_${dim_}_t${ntrac}
505endif
506if ( $NEC || $XNEC ) then
507    set nomlib=F90_${dim_}_t${ntrac}
508endif
509
510echo "calcul de la dimension"
511set dimc=`echo $dim | wc -w`
512
513if ( "$dimc" == "2" ) then
514  set include="$include "'-I$(LIBF)/dyn2d '
515  set dimh=$dim
516else
517  if ( "$dyntype" == "olddyn" ) then
518    set include="$include "'-I$(LIBF)/olddyn3d '
519  else
520    set include="$include "'-I$(LIBF)/dyn3d '
521  endif
522  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
523endif
524echo "dimc is $dimc"
525
526########################################################################
527# path pour les #include
528########################################################################
529
530set include="$include -I$NCDFINC "
531echo $include
532
533########################################################################
534# Gestion des dimensions du modele.
535# on cree ou remplace le fichier des dimensions/nombre de traceur
536########################################################################
537
538cd $libf/grid
539if ( -f dimensions.h ) then
540  echo "WARNING: you are already compiling the model somewhere else"
541  echo "Wait until the first compilation is finished before starting."
542  echo "If you are sure that you are not compiling elsewhere, you can"
543  echo "type [yes] to continue."
544  echo "Do you want to continue?"
545#  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
546#  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
547#  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
548#  echo "vous pouvez continuer en repondant oui."
549#  echo "Voulez-vous vraiment continuer?"
550  if ( $< == "yes" ) then
551    #remove old dimensions.h file
552    \rm $libf/grid/dimensions.h
553    \rm $libf/grid/bands.h
554  else
555    exit
556  endif
557endif
558
559# Build the appropriate 'dimensions.h' file
560cd dimension
561makdim $ntrac $dim
562# echo contents of dimensions.h to standard output
563cat $libf/grid/dimensions.h
564
565# Build the appropriate 'bands.h' file
566makbands $bands
567# echo contents of bands.h to standard output
568cat $libf/grid/bands.h
569
570cd $LMDGCM
571# set path to objects directory
572set libo=$libo/$nomlib
573# create objects directory, if it doesn't exist
574if ( ! -d $libo )  then
575   mkdir $libo
576   cd $model
577endif
578
579########################################################################
580# Differentes dynamiques (3d, 2d, 1d)
581########################################################################
582
583set dimension=`echo $dim | wc -w`
584echo dimension $dimension dim $dim
585if ( $dimension == 1 ) then
586  echo pas de dynamique
587  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
588endif
589endif
590
591cd $model
592if ( $dimension == 3 ) then
593  cd libf/grid
594  \rm fxyprim.h
595  cp -p fxy_${grille}.h fxyprim.h
596endif
597
598######################################################################
599#   Traitement special pour le nouveau rayonnement de Laurent Li.
600######################################################################
601#if ( -f $libf/phy$physique/raddim.h ) then
602#  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
603#    \rm $libf/phy$physique/raddim.h
604#    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
605#    echo $libf/phy$physique/raddim.$dimh.h
606#    cat $libf/phy$physique/raddim.$dimh.h
607#    cat $libf/phy$physique/raddim.h
608#  else
609#    echo On peut diminuer la taille de l executable en creant
610#    echo le fichier $libf/phy$physique/raddim.$dimh.h
611#    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
612#  endif
613#endif
614
615######################################################################
616# Gestion du filtre qui n'existe qu'en 3d.
617######################################################################
618
619# set filtre to 'oldfiltrez' if using -olddyn option
620if ( "$dyntype" == "olddyn" ) then
621  set filtre="oldfiltrez"
622endif
623
624if ( `expr $dimc \> 2` == 1 ) then
625   set filtre="FILTRE=$filtre"
626else
627   set filtre="FILTRE= L_FILTRE= "
628endif
629echo "MACRO FILTRE $filtre"
630
631echo "dimc $dimc"
632
633########################################################################
634#  Avant de lancer le make, on recree le makefile si necessaire
635########################################################################
636# c'est a dire dans 3 cas:
637# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
638#    derniere creation du makefile
639# 2. si le fichier contenant cette liste "liste_des_sources"
640#    n'existe pas.
641# 3. Si le makefile n'existe pas.
642########################################################################
643
644cd $model
645find libf -name '*.[Fh]' -print | sort >! tmp77
646#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
647find libf -name '*.[Fh]90' -print | sort >! tmp90
648
649if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
650     || `diff tmp90 liste_des_sources_f90 | wc -w` \
651     || ! -f makefile \
652     || ! -f liste_des_sources_f90 \
653     || ! -f liste_des_sources_f77 ) then
654        echo "les fichiers suivants ont ete crees ou detruits"
655        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
656        diff liste_des_sources_f77 tmp77
657        diff liste_des_sources_f90 tmp90
658        \cp tmp77 liste_des_sources_f77
659        \cp tmp90 liste_des_sources_f90
660        echo "Remaking the makefile!"
661        if ("$dyntype" == "olddyn") then
662          ./create_make_gcm olddyn3d grid bibio phy$physique >! tmp
663        else
664          ./create_make_gcm dyn3d grid bibio phy$physique >! tmp
665        endif
666        \mv tmp makefile
667        echo "New makefile created."
668endif
669
670########################################################################
671#  Execution de la comande make
672########################################################################
673
674echo PHYSIQUE $phys
675echo dynamique $dyn $dimension
676echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
677echo PATH pour les fichiers INCLUDE $include
678echo OPLINK="$oplink"
679
680if $HP then
681   set f77='fort77 +OP'
682   set f90='jensaisrien'
683   set opt_link="$opt_link -lm"
684else  if $VPP then
685   set f77=frt
686   set f90=$f77
687else if $CRAY then
688   set f77=f90
689   set f90=f90
690else if $LINUX then
691   set f77="gfortran -fdefault-real-8 -DNC_DOUBLE -ffree-line-length-264 -fallow-argument-mismatch"
692   set f90="gfortran -fdefault-real-8 -DNC_DOUBLE -ffree-line-length-264 -fallow-argument-mismatch"
693else if $SUN then
694   set f77=f90
695   set f90=f90
696else if $NEC then
697   set f77=f90
698   set f90=f90
699else if $XNEC then
700   set f77=sxmpif90
701   set f90=sxmpif90
702else
703   set f77=f77
704   set f90=f90
705endif
706
707cd $model
708
709if $VPP then
710  set make="gmake RANLIB=ls"
711else if $CRAY then
712  set make="make RANLIB=ls"
713else if $NEC then
714  set make="make RANLIB=ls"
715else if $LINUX then
716  set make="make -k RANLIB=ranlib"
717else if $XNEC then
718  set make="/usr/local/bin/gmake RANLIB=ls"
719  set make="/usr/freeware/bin/gmake RANLIB=ls"
720else
721  set make="make RANLIB=ranlib"
722endif
723
724
725
726#
727# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
728# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
729#
730#if ($code == 'create_limit' && $SUN) then
731#   set link=f77
732#   set opt_link="-L$NCDFLIB -lnetcdf"
733#endif
734
735#if ($code == 'create_etat0' && $SUN) then
736#   if ( ! -f $libo/libdyn3d.a ) then
737#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
738#     \rm $libf/grid/dimensions.h
739#     exit
740#   endif
741#   set optim90=" -dalign -fixed "
742#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
743#   set link="$f90 $optim90"
744#   touch $LMDGCM/libf/dyn3d/startvar.F
745#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
746#endif
747
748#
749# Encore un test temporaire: probleme de compilation sur VPP
750# l'optimisation de startvar se passe mal
751#
752#if ($code == 'create_etat0' && $VPP) then
753#   if ( ! -f $libo/libdyn3d.a ) then
754#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
755#     \rm $libf/grid/dimensions.h                                             
756#     exit                       
757#   endif
758#   set optim90="$optim90"" -X9 -w"
759#   set opt_link="-L$NCDFLIB -lnetcdf"
760#   touch $LMDGCM/libf/dyn3d/startvar.F
761#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
762#endif
763
764#
765# etat0_netcdf a besoin d'info de la physique
766# A revoir
767set include="$include"" -I$libf/phy$physique"
768
769
770#################################################################
771# Execution de la comande make... ENFIN!
772#################################################################
773
774if $VPP then
775  set optim90=" $optim90 -Am -M$libo"
776  set optimtru90="$optim90"
777else if $SUN then
778 set optim90=" $optim90 -M$libo"
779 set optimtru90=" $optimtru90 "
780else if $NEC then
781 set optim90=" $optim90 -I$libo "
782else if $XNEC then
783 set optim90=" $optim90 -I$libo "
784 set optimtru90=" $optimtru90 -I$libo "
785else if $LINUX then
786 set optim="$optim -I${libo}"
787 set optim90="$optim90 -I${libo}"
788 set optimtru90="$optimtru90 -ffree-form -I${libo}"
789endif
790
791set link="$f90 $optim90"
792
793set ar=ar
794
795if $XNEC then
796  set link="sxld $opt_link"
797  set link="$f90 "
798#  set ar=sxar
799endif
800
801
802cd $localdir
803
804echo $make -f $LMDGCM/makefile \
805OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
806OPTIM="$optim" \
807OPTIM90="$optim90" \
808OPTIMTRU90="$optimtru90" \
809INCLUDE="$include" \
810$filtre \
811LIBO=$libo \
812$dyn \
813$phys \
814DIM=$dimc \
815DYNTYPE="$dyntype" \
816L_ADJNT="$adjnt" \
817LOCAL_DIR="$localdir"  \
818F77="$f77" \
819F90="$f90" \
820OPLINK="$oplink" \
821LINK="$link" \
822GCM="$LMDGCM" \
823MOD_LOC_DIR=$mod_loc_dir \
824MOD_SUFFIX=$mod_suffix \
825AR=$ar \
826PROG=$code
827
828
829$make -f $LMDGCM/makefile \
830OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
831OPTIM="$optim" \
832OPTIM90="$optim90" \
833OPTIMTRU90="$optimtru90" \
834INCLUDE="$include" \
835$filtre \
836LIBO=$libo \
837$dyn \
838$phys \
839DIM=$dimc \
840DYNTYPE="$dyntype" \
841L_ADJNT="$adjnt" \
842LOCAL_DIR="$localdir"  \
843F77="$f77" \
844F90="$f90" \
845OPLINK="$oplink" \
846LINK="$link" \
847GCM="$LMDGCM" \
848MOD_LOC_DIR=$mod_loc_dir \
849MOD_SUFFIX=$mod_suffix \
850AR=$ar \
851PROG=$code
852
853\rm $libf/grid/dimensions.h
854\rm $libf/grid/bands.h
Note: See TracBrowser for help on using the repository browser.