source: LMDZ.3.3/tags/CCM1_0/makegcm @ 300

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

This commit was manufactured by cvs2svn to create tag 'CCM1_0'.

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