source: trunk/WRF.COMMON/WRFV2/mars_lmd/makegcm_mpifort @ 2756

Last change on this file since 2756 was 1440, checked in by aslmd, 9 years ago

MESOSCALE. changes inspired by Liam Steele. mcmodel in makemeso and mpifort for larger domains. cleaning the PREP_MARS repository. added Liam's ukdiag tool to convert UK dynamical core outputs for use in mesoscale simulations.

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