source: LMDZ.3.3/tags/IPSL-CM4_CMIP/makegcm @ 575

Last change on this file since 575 was 575, checked in by (none), 19 years ago

This commit was manufactured by cvs2svn to create tag
'IPSL-CM4_CMIP'.

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