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

Last change on this file since 258 was 243, checked in by lmdzadmin, 23 years ago

Inclusion des options -c (couple) et -v (veget) a l'appel de makegcm MAFO
LF

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