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

Last change on this file since 177 was 177, checked in by lmdzadmin, 24 years ago

Lots of stuff, plus particulierement:

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