source: trunk/MESOSCALE/LMDZ.MARS/makegcm_gnu @ 1858

Last change on this file since 1858 was 1858, checked in by aslmd, 7 years ago

added gfortran support for old GCM. commented part of ch.f which pose problems (not used anyway in low-atmosphere GCM for mesoscale applications. added an adapted makegcm_gnu. corrected a problem of condition in newstart picked by picky gfortran.

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