source: LMDZ.3.3/branches/rel-LF/makegcm @ 487

Last change on this file since 487 was 487, checked in by lmdzadmin, 20 years ago

Inclusion des options pour le SX6 du CEA, A. Caubel
LF

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