source: LMDZ.3.3/tags/IPSL-CM4_v2x1/makegcm @ 469

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

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

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