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

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

This commit was manufactured by cvs2svn to create branch
'rel-1-0-patch'.

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