source: LMDZ.3.3/branches/rel-1-0-patch/makegcm @ 312

Last change on this file since 312 was 312, checked in by lmdz, 22 years ago

Inclusions des modifs faites dans la branche couplée pour le VPP
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 23.8 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 optimbis=" "
165   set optim90=" -fast -fixed "
166   set optimtru90=" -fast -free "
167   set opt_link="-lf77compat -L$MODIPSLDIR -lsechiba -lparameters -lstomate -lioipsl -L$NCDFLIB -lnetcdf "
168   set mod_loc_dir=$localdir
169   set mod_suffix=mod
170else if $HP then
171   set optim=" +U77 -O +E1 "
172   set optimbis=" "
173else if $IBM then
174   set optim=" -O3 -qtune=pwr2 -qarch=pwr2"
175   set optimbis=" "
176else if $VPP then
177#   set optim="-Dasuxm  -On, -g -Ad -Potilax -Eciplume -Si"
178#   set optimbis="  -Wv,-m3 -Wp,-DVPP -Z $LMDGCM/listage"
179   set optimbis=" -Wp,-DNC_DOUBLE -Ad -Z $LMDGCM/listage"
180   set optim90="$optim $optimbis -X9 -w"
181   set mod_loc_dir=$MODIPSLDIR
182   set mod_suffix=mod
183else if $DEC then
184   set optim=" "
185   set optimbis=" "
186else if $LINUX then
187   set optim="-fast "
188   set optim90=" -fast "
189   set optimtru90=" -fast -c -Mfree -module $MODIPSLDIR "
190   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/"
191   set mod_loc_dir=$MODIPSLDIR
192   set mod_suffix=mod
193else if $NEC then
194   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
195   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
196   set optim="$optim90"
197   set optimbis=" "
198   set opt_link=" -C hopt -float0 -ew -P static -L$MODIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf_i8r8_v "
199   set mod_loc_dir="."
200   set mod_suffix="mod"
201else if $XNEC then
202   set optim90=" -clear $OPTIMI -float0 -ew -R5 $OPT_STACK"
203   set optimtru90=" -clear -f4 $OPTIMI -float0 -ew -R2 -R3 -R4 -R5 $OPT_STACK"
204   set optim="$optim90"
205   set optimbis=" "
206   set mod_suffix="mod"
207else
208   set optim=""
209   set optimbis=" "
210endif
211
212set nomlib=$machine
213
214########################################################################
215# lecture des options de mymake
216########################################################################
217
218top:
219if ($#argv > 0) then
220    switch ($1:q)
221
222    case -h:
223
224########################################################################
225# Manuel en ligne
226########################################################################
227more <<eod
228
229
230makegcm [Options] prog
231
232
233
234
235Par default, la commande makegcm:
236---------------------------------
237
2381. compile une serie de sous programmes se trouvant dans des sous-repertoires
239de $LMDGCM/libf.
240Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
241sur $LIBOGCM.
242
2432. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
244$LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
245
246La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
247dans la comande makegcm.
248
249La commande makegcm est faite pour permettre de gerer en parallele des
250versions differentes du modele, compilees avec des options de compilation
251et des dimensions differentes sans avoir a chaque fois a recompiler tout
252le modele.
253
254Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
255
256
257OPTIONS:
258--------
259
260Les options suivantes peuvent etre definies soit par defaut en editant le
261"script" makegcm, soit en interactif:
262
263-d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
264             et couches verticales.
265
266-t ntrac   selectionne le nombre de traceur advectes par la dynamique.
267           Dans les versions courantes du modele terrestre on a par exemple
268           ntrac=2 pour l'eau vapeur et liquide
269
270             L'effet des options -d et -t est d'ecraser le fichier
271             $LMDGCM/libf/grid/dimensions.h
272             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
273             de la grille horizontale im, jm, lm plus le nombre de traceurs
274             advectes passivement par la dynamique ntrac, par un nouveu fichier
275             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
276             Si ce fichier n'existe pas encore, il est cree par le script
277             $LMDGCM/libf/grid/dimension/makdim
278
279-p PHYS    pour selectionner le jeu de parametrisations physiques avec
280           lequel on veut compiler le modele.
281           Le modele sera alors compile en prenant les sources des
282           parametrisations physiques dans le repertoire:
283            $LMDGCM/libf/phyPHYS
284
285-c false|true
286           pour selectionner le mode force (par defaut) ou couple
287
288-v true|false
289           pour selectionner la vegetation (par defaut) ou non
290
291-g grille  selectionne le type de grille qu'on veut utiliser.
292           L'effet de cette option est d'ecraser le fichier
293           $LMDGCM/libf/grid/fxyprim.h
294           avec le fichier
295           $LMDGCM/libf/grid/fxy_grille.h
296           grille peut prendre les valeurs:
297           1. reg pour la grille reguliere
298           2. sin pour avoir des points equidistants en sinus de la latitude
299           3. new pour pouvoir zoomer sur une partie du globe
300
301-O "optimisation fortran" ou les optimisations fortran sont les options de la
302            commande f77
303
304-include path
305           Dans le cas ou on a dans des sous programmes des fichiers
306           #include (cpp) qui se trouve sur des repertoires non references
307           par defaut
308
309-adjnt     Pour compiler la l'adjoint du code dynamique
310
311-filtre  filtre
312           Pour choisir le filtre en longitude dans les regions polaires.
313           "filtre" correspond au nom d'un repertoire se trouvant sur
314           $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
315           etre utilise aussi bien pour une grille reguliere que pour une
316           grille zoomee en longitude.
317
318-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
319          Pour rajouter un lien avec les librairies FORTRAN
320          libfile1.a, libfile2.a ... se trouvant respectivement sur les
321          repertoires dir1, dir2 ...
322          Si dirn est un repertoire dont le chemin est automatique (comme
323          par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
324
325Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
326eod
327exit
328
329########################################################################
330# Lecture des differentes options
331########################################################################
332
333    case -d:
334        set dim=$2 ; shift ; shift ; goto top
335                       
336    case -O:
337        set optim="$2" ; shift ; shift ; goto top
338
339     case -p
340        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
341
342     case -g
343        set grille="$2" ; shift ; shift ; goto top
344
345     case -c
346        set couple="$2" ; shift ; shift ; goto top
347
348     case -v
349        set veget="$2" ; shift ; shift ; goto top
350
351     case -t
352        set ntrac=$2 ; shift ; shift ; goto top
353
354     case -include
355        set include="$include -I$2" ; shift ; shift ; goto top
356
357     case -adjnt
358        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
359        set optim="$optim -Dadj" ; shift ; goto top
360
361     case -filtre
362        set filtre=$2 ; shift ; shift ; goto top
363
364     case -link
365        set opt_link="$opt_link $2" ; shift ; shift ; goto top
366
367     case -debug
368        if $HP then
369           set optim=" -g "
370        else if $SUN then
371           setenv PARALLEL 2
372           set optim=" -g -C "
373           set optim=" -g "
374           set optim90=" -fixed -g -C "
375           set optim90=" -fixed -g "
376           set optimtru90=" -free -g "
377        else if $CRAY then
378           set optim="$optim"" -g "
379           set optim90="$optim90"" -G1 "
380        else if $LINUX then
381           set optim="$optim"" -g -Mbounds -C "
382           set optim90="$optim90"" -g -Mbounds -C "
383        else
384           echo pas d option debug predefinie pour cette machine
385           exit
386        endif
387        shift ; goto top
388
389     default
390        set code="$1" ; shift ; goto top
391
392   endsw
393endif
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 -f tmp ; touch tmp
426\rm -f tmp90 ; touch tmp90
427foreach i ( $optim )
428   echo $i | sed -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
440if ( $IBM ) then
441   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
442   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
443else if ( $SUN ) then
444   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
445   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
446else
447   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
448   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
449endif
450set nomlib=${nomlib}_${dim_}_t${ntrac}_$grille
451## M-A-F nomlib trop long sur CRAY pour ar
452if ( $CRAY ) then
453    set nomlib=F90_${dim_}_t${ntrac}
454endif
455if ( $NEC || $XNEC ) then
456    set nomlib=F90_${dim_}_t${ntrac}
457endif
458echo calcul de la dimension
459set dimc=`echo $dim | wc -w`
460
461if ( "$dimc" == "2" ) then
462set include="$include "'-I$(LIBF)/dyn2d '
463set dimh=$dim
464else
465set include="$include "'-I$(LIBF)/dyn3d '
466set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
467endif
468echo $dimc
469
470########################################################################
471# path pour les #include
472########################################################################
473
474set include="$include -I$NCDFINC -I$IOIPSLDIR"
475echo $include
476
477########################################################################
478# Gestion des dimensions du modele.
479# on cree ou remplace le fichier des dimensions/nombre de traceur
480########################################################################
481
482cd $libf/grid
483if ( -f dimensions.h ) then
484echo 'ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs'
485echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
486echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
487echo  vous pouvez continuer en repondant oui.
488echo "Voulez-vous vraiment continuer?"
489if ( $< == "oui" ) then
490\rm -f $libf/grid/dimensions.h
491else
492exit
493endif
494endif
495
496cd dimension
497makdim $ntrac $dim
498cat $libf/grid/dimensions.h
499
500cd $LMDGCM
501set libo=$libo/$nomlib
502if ( ! -d $libo )  then
503   mkdir $libo
504   cd $model
505endif
506
507########################################################################
508# Differentes dynamiques (3d, 2d, 1d)
509########################################################################
510
511set dimension=`echo $dim | wc -w`
512echo dimension $dimension
513if ( $dimension == 1 ) then
514echo pas de dynamique
515set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
516endif
517endif
518cd $model
519if ( $dimension == 3 ) then
520cd libf/grid
521\rm fxyprim.h
522cp -p fxy_${grille}.h fxyprim.h
523endif
524
525######################################################################
526#   Traitement special pour le nouveau rayonnement de Laurent Li.
527######################################################################
528
529if ( -f $libf/phy$physique/raddim.h ) then
530 if ( -f $libf/phy$physique/raddim.$dimh.h ) then
531  \rm -f $libf/phy$physique/raddim.h
532  cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
533  echo $libf/phy$physique/raddim.$dimh.h
534  cat $libf/phy$physique/raddim.$dimh.h
535  cat $libf/phy$physique/raddim.h
536 else
537  echo On peut diminuer la taille de l executable en creant
538  echo le fichier $libf/phy$physique/raddim.$dimh.h
539  \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
540 endif
541endif
542
543######################################################################
544# Gestion du filtre qui n'existe qu'en 3d.
545######################################################################
546
547if ( `expr $dimc \> 2` == 1 ) then
548   set filtre="FILTRE=$filtre"
549else
550   set filtre="FILTRE= L_FILTRE= "
551endif
552echo MACRO FILTRE $filtre
553
554echo $dimc
555
556########################################################################
557#  utilisation des vraies routines de couplage si on est en couple
558########################################################################
559if ( $couple == 'true' ) then
560  banner couple
561  pwd
562  if ( `diff $libf/phylmd/oasis.F $libf/phylmd/oasis.true | wc -w` ) then
563   \cp $libf/phylmd/oasis.F $libf/phylmd/oasis.dummy
564   \cp $libf/phylmd/oasis.true $libf/phylmd/oasis.F
565  endif
566else
567  if ( `diff $libf/phylmd/oasis.F $libf/phylmd/oasis.dummy | wc -w` ) then
568   \cp $libf/phylmd/oasis.F $libf/phylmd/oasis.true
569   \cp $libf/phylmd/oasis.dummy $libf/phylmd/oasis.F
570  endif
571endif
572########################################################################
573#  Avant de lancer le make, on recree le makefile si necessaire
574########################################################################
575# c'est a dire dans 3 cas:
576# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
577#    derniere creation du makefile
578# 2. si le fichier contenant cette liste "liste_des_sources"
579#    n'existe pas.
580# 3. Si le makefile n'existe pas.
581########################################################################
582
583cd $model
584find libf -name '*.[Fh]' -print >! tmp77
585find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
586find libf -name '*.[Fh]90' -print >> tmp90
587
588if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
589     || `diff tmp90 liste_des_sources_f90 | wc -w` \
590     || ! -f makefile \
591     || ! -f liste_des_sources_f90 \
592     || ! -f liste_des_sources_f77 ) then
593        echo les fichiers suivants ont ete crees ou detruits
594        echo ou les fichiers suivants sont passes ou ne sont plus en Fortran 90
595        diff liste_des_sources_f77 tmp77
596        diff liste_des_sources_f90 tmp90
597        \cp tmp77 liste_des_sources_f77
598        \cp tmp90 liste_des_sources_f90
599        echo On recree le makefile
600        ./create_make_gcm >! tmp
601        \mv tmp makefile
602        echo Nouveau makefile cree.
603endif
604
605########################################################################
606#  Execution de la comande make
607########################################################################
608
609echo PHYSIQUE $phys
610echo dynamique $dyn $dimension
611echo OPTIM="$optim" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
612echo PATH pour les fichiers INCLUDE $include
613echo OPLINK="$oplink"
614
615if $HP then
616   set f77='fort77 +OP'
617   set f90='jensaisrien'
618   set opt_link="$opt_link -lm"
619else  if $VPP then
620   set f77=frt
621   set f90=$f77
622   if ($couple == true) then
623     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_31.a -L$MODIPSLDIR -lioipsl"
624     set oplink="-Wl,-t,-P,-dy "
625   else
626     set opt_link="-Wg,-c /usr/local/lib/lib64/libnetcdf_cc_31.a -L$MODIPSLDIR -lioipsl"
627     set oplink="-Wl,-t,-dy "
628   endif
629   if ($veget == true) then
630     set opt_link="$opt_link -lsechiba -lparameters -lstomate -lioipsl /usr/local/lib/lib64/libnetcdf_cc_31.a"
631   endif
632else if $CRAY then
633   set f77=f90
634   set f90=f90
635else if $LINUX then
636   set f77=pgf90
637   set f90=pgf90
638else if $SUN then
639   set f77=f90
640   set f90=f90
641else if $NEC then
642   set f77=f90
643   set f90=f90
644   set opt_link="-L$MODIPSLDIR"
645   if ($veget == true) then
646     set opt_link="$opt_link -lsechiba -lparameters -lstomate"
647   endif
648   if ($couple == true) then
649     set opt_link="$opt_link -lioipsl -loasis2.4_mpi2 -float0 -ew -P static $NCDFLIB "
650   else
651     set opt_link="$opt_link -L$MODIPSLDIR -lioipsl -float0 -ew -P static $NCDFLIB "
652   endif
653   set mod_loc_dir="./"
654else if $XNEC then
655   set f77=sxmpif90
656   set f90=sxmpif90
657   if $MODIPSL then
658     set opt_link="-L$MODIPSLDIR"
659     if ($veget == true) then
660       set opt_link="$opt_link -lsxsechiba -lsxparameters -lsxstomate"
661     endif
662     if ($couple == true) then
663       set opt_link="$opt_link -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static $NCDFLIB "
664     else
665       set opt_link="$opt_link -lsxioipsl -float0 -ew -P static $NCDFLIB "
666     endif
667   else
668     set opt_link=" -C hopt -float0 -ew -P static -L$MODIPSLDIR -lsxsechiba -lsxparameters -lsxstomate -lsxioipsl $NCDFLIB -I$NCDFINC "
669   endif
670   set mod_loc_dir="./"
671else
672   set f77=f77
673   set f90=f90
674endif
675
676cd $model
677
678if $VPP then
679set make="gmake RANLIB=ls"
680else if $CRAY then
681set make="make RANLIB=ls"
682else if $NEC then
683set make="make RANLIB=ls"
684else if $LINUX then
685set make="make -k RANLIB=ranlib"
686else if $XNEC then
687set make="gmake RANLIB=ls"
688else
689set make="make RANLIB=ranlib"
690endif
691
692
693
694#
695# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
696# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
697#
698#if ($code == 'create_limit' && $SUN) then
699#   set link=f77
700#   set opt_link="-L$NCDFLIB -lnetcdf"
701#endif
702
703#if ($code == 'create_etat0' && $SUN) then
704#   if ( ! -f $libo/libdyn3d.a ) then
705#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
706#     \rm $libf/grid/dimensions.h
707#     exit
708#   endif
709#   set optim=" -dalign "
710#   set optim90=" -dalign -fixed "
711#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
712#   set link="$f90 $optim90"
713#   touch $LMDGCM/libf/dyn3d/startvar.F
714#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
715#endif
716
717#
718# etat0_netcdf a besoin d'info de la physique
719# A revoir
720set include="$include"' -I$(LIBF)/phylmd'
721#
722# le programme principal create_limit a besoin de l'info du module
723# startvar: on met donc libo dans les include pour Nec
724set include="$include"' -I$(LIBO)'
725
726
727#################################################################
728# Execution de la comande make... ENFIN!
729#################################################################
730
731if $VPP then
732  set optim90=" $optim90 -Am -M$libo"
733  set optimtru90="$optim90"
734 \cp $IOIPSLDIR/*.mod $libo
735else if $SUN then
736 set optim90=" $optim90 -M$libo -M$MODIPSLDIR "
737 set optimtru90=" $optimtru90 -M$libo -M$MODIPSLDIR "
738 set optim="$optim90"
739 \cp $IOIPSLDIR/*.mod $libo
740else if $NEC then
741 set optim90=" $optim90 -I$libo "
742else if $XNEC then
743 set optim90=" $optim90 -I$libo "
744 set optimtru90=" $optimtru90 -I$libo "
745else if $LINUX then
746 set optim90=" $optim90 -module $libo "
747 set optim="$optim90"
748 set mod_loc_dir=$libo
749 \cp /d3/fairhead/sechiba/ioipsl/*.mod $libo
750 \cp $IOIPSLDIR/*.mod $libo
751endif
752
753set link="$f90 $optim90"
754
755set ar=ar
756
757if $XNEC then
758  set link="sxld $opt_link"
759  set link="$f90 "
760#  set ar=sxar
761endif
762
763
764cd $localdir
765
766echo $make -f $LMDGCM/makefile \
767OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
768OPTIM90="$optim90" \
769OPTIMTRU90="$optimtru90" \
770OPTIM="$optim$optimbis" \
771INCLUDE="$include" \
772$filtre \
773LIBO=$libo \
774$dyn \
775$phys \
776DIM=$dimc \
777L_ADJNT="$adjnt" \
778LOCAL_DIR="$localdir"  \
779F77="$f77" \
780F90="$f90" \
781OPLINK="$oplink" \
782LINK="$link" \
783GCM="$LMDGCM" \
784MOD_LOC_DIR=$mod_loc_dir \
785MOD_SUFFIX=$mod_suffix \
786AR=$ar \
787PROG=$code
788
789$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\rm -f $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.