source: trunk/LMDZ.MARS/makegcm_ifort @ 1313

Last change on this file since 1313 was 1246, checked in by aslmd, 11 years ago

LMDZ.MARS. Made number of scatterers a free dimension not in need to be prescribe at compiling time. Instead it must be set in callphys.def. See README for further information about this commit.

  • Property svn:executable set to *
File size: 24.2 KB
Line 
1#!/bin/csh -f
2# $Header: /users/lmdz/cvsroot/LMDZ.3.3/makegcm,v 1.21 2001/07/04 08:41:44 lmdz Exp $
3#set verbose echo
4########################################################################
5# options par defaut pour la commande make
6########################################################################
7set dim="64x48x32"
8set physique=mars
9set phys="PHYS=$physique"
10set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I. -I$(LIBF)/aeronomars'
11set ntrac = 1
12set filtre=filtrez
13set grille=reg
14set dyntype="dyn"
15set full=""
16########################################################################
17# path a changer contenant les sources et les objets du modele
18########################################################################
19
20#### If you want you can set environment variables here (instead of
21####  relying on the C-shell environment variables)
22# default LMDGCM to where makegcm script is located:
23set scriptdir=`dirname $0`
24setenv LMDGCM `readlink -f $scriptdir`
25# You may set LIBOGCM to something else; otherwise we default to:
26setenv LIBOGCM $LMDGCM/libo
27
28### NetCDF librairies. some presets for LMD people.
29hostname | grep 'lmd.jussieu.fr' > /dev/null
30if ( $? == 0 ) then
31   echo "*** NETCDF preset *** LMD machines"
32   setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_ifort/lib
33   setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_ifort/include
34endif
35hostname | grep 'n201' > /dev/null
36if ( $? == 0 ) then
37   echo "*** NETCDF preset *** GNOME cluster"
38   setenv NCDFLIB /usr/local/lib
39   setenv NCDFINC /usr/local/include
40endif
41hostname | grep 'ciclad' > /dev/null
42if ( $? == 0 ) then
43   echo "*** NETCDF preset *** CICLAD cluster"
44   setenv NCDFLIB /opt/netcdf/ifort/lib
45   setenv NCDFINC /opt/netcdf/ifort/include
46endif
47### end NetCDF presets
48
49setenv localdir "`pwd`"
50set MODIPSL=0
51echo $localdir | grep modipsl >& /dev/null
52if ( ! $status ) then
53  set MODIPSL=1
54  setenv LMDGCM $localdir
55  cd ../..
56  setenv LIBOGCM "`pwd`/lib"
57  cd $localdir
58  if ( `hostname` == rhodes ) then
59    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
60    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
61  else
62    if ( `hostname` == nymphea0 ) then
63      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
64      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
65    else
66      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
67    endif
68  endif
69else
70  if ( ! $?LMDGCM ) then
71    echo You must initialize the variable LMDGCM in your environnement
72    echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc
73    exit
74  endif
75  if ( ! $?LIBOGCM ) then
76    set LIBOGCM=$LMDGCM/libo
77  endif
78  if ( ! $?NCDFLIB ) then
79    echo You must initialize the variable NCDFLIB in your environnement
80    echo for instance: "setenv NCDFLIB /usr/myself/netcdf" in .cshrc
81    exit
82  endif
83  if ( ! $?NCDFINC ) then
84    echo You must initialize the variable NCDFINC in your environnement
85    echo for instance: "setenv NCDFINC /usr/myself/netcdf" in .cshrc
86    exit
87  endif
88endif
89set model=$LMDGCM
90set libo=$LIBOGCM
91
92########################################################################
93#  Les differentes platformes reconnues
94########################################################################
95
96set HP=0
97set IBM=0
98set SUN=0
99set VPP=0
100set CRAY=0
101set DEC=0
102set LINUX=0
103set NEC=0
104set XNEC=0
105if ( `uname` == HP-UX ) then
106   set machine=HP
107   set HP=1
108else if (`uname` == UNIX_System_V ) then
109   set machine=VPP
110   set VPP=1
111else if (`uname` == SunOS ) then
112   set machine=SUN
113   set SUN=1
114else if ( `uname` == AIX ) then
115   set machine=IBM
116   set IBM=1
117else if ( `uname` == OSF1 ) then
118   set machine=ALPHA
119   set DEC=1
120else if ( `uname` == Linux ) then
121   set machine=LINUX
122   set LINUX=1
123else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
124   set machine=CRAY
125   set CRAY=1
126else if ( `uname` == SUPER-UX ) then
127   set machine=NEC
128   set NEC=1
129else if ( `hostname` == rhodes) then
130   set machine=XNEC
131   set XNEC=1
132else
133   echo Vous travaillez sur une machine non prevue par le reglement
134   exit
135endif
136
137# create $libo directory if it doesn't exist
138if ( ! -d $libo )  then
139   mkdir $libo
140endif
141
142if $VPP then
143set netcdf=netcdf_v
144else
145set netcdf=netcdf
146endif
147########################################################################
148#  Quelques initialisations de variables du shell.
149########################################################################
150
151set dyn=
152set opt_link=""
153set adjnt=""
154set opt_dep=""
155
156set optim90=""
157set oplink=""
158
159########################################################################
160#  Optimisations par defaut suivant les machines
161########################################################################
162
163echo "Optimisations par defaut suivant les machines"
164set libf=$model/libf
165#setenv localdir "LOCAL_DIR=`pwd`"
166#setenv localdir "`pwd`"
167cd $model
168if $CRAY then
169   set optim90="-Wp'-P' -DCRAY "'-p$(LIBO) -eiv '
170   set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdf "
171   set mod_loc_dir=" "
172   set mod_suffix=" "
173else if $SUN then
174   set optim90=" -fast"
175   set optimtru90=" -fast -free"
176   set opt_link="-L$NCDFLIB -lnetcdf"
177   set mod_loc_dir=$localdir
178   set mod_suffix=mod
179else if $HP then
180else if $IBM then
181else if $VPP then
182   set optim90="$optim -X9 -w"
183   if $COUPLE then
184     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"
185     set oplink="-Wl,-t,-P,-dy "
186   else
187     set opt_link="-Wg,-c /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
188     set oplink="-Wl,-t,-dy "
189   endif
190   set mod_loc_dir=$IOIPSLDIR
191   set mod_suffix=mod
192else if $DEC then
193else if $LINUX then
194# Ehouarn 'ifort' compiler
195   #NB: on gnome -O3 ==> NaNs ...
196   set optim="-auto -O2 -fp-model precise -ip -mkl=sequential -align all "
197   set optim90="-auto -O2 -fp-model precise -ip -mkl=sequential -align all "
198   set optimtru90="-auto -O2 -fp-model precise -ip -mkl=sequential -align all "
199#   set opt_link=" -Mfree -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Bstatic "
200#   set mod_loc_dir=$LIBOGCM
201# ifort puts mod files in local directory
202   set mod_loc_dir="."
203   set mod_suffix=mod
204else if $NEC then
205   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
206   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
207###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
208   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
209   set mod_loc_dir="."
210   set mod_suffix="mod"
211else if $XNEC then
212   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
213   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
214   if $MODIPSL then
215     if $COUPLE then
216       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
217     else
218       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
219     endif
220     set mod_loc_dir="./"
221   else
222####     set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lsxioipsl -L /u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
223     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
224     set mod_loc_dir="."
225   endif
226   set mod_suffix="mod"
227
228endif
229
230# Ehouarn: add 'g9fortran' string to pathname
231set nomlib=${machine}
232
233# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
234if (`uname` == Linux && `uname -m` == "x86_64") then
235  set nomlib=${machine}64
236endif
237
238########################################################################
239# lecture des options de mymake
240########################################################################
241
242top:
243if ($#argv > 0) then
244    switch ($1:q)
245
246    case -h:
247
248########################################################################
249# Manuel en ligne
250########################################################################
251more <<eod
252
253
254makegcm [Options] prog
255
256
257The makegcm script:
258-------------------
259
2601. compiles a series of subroutines located in the $LMDGCM/libf
261 sub-directories.
262 The objects are then stored in the libraries in $LIBOGCM.
263
2642. then, makegcm compiles program prog.f located by default in
265$LMDGCM/libf/dyn3d and makes the link with the libraries.
266
267Environment Variables '$LMDGCM' and '$LIBOGCM'
268 must be set as environment variables or directly
269 in the makegcm file.
270
271The makegcm command is used to control the different versions of the model
272 in parallel, compiled using the compilation options
273 and the various dimensions, without having to recompile the whole model.
274
275The FORTRAN libraries are stored in directory $LIBOGCM.
276
277
278OPTIONS:
279--------
280
281The following options can either be defined by default by editing the
282makegcm "script", or in interactive mode:
283
284-d imxjmxlm  where im, jm, and lm are the number of longitudes,
285             latitudes and vertical layers respectively.
286
287-t ntrac   Selects the number of tracers present in the model
288
289             Options -d and -t overwrite file
290             $LMDGCM/libf/grid/dimensions.h
291             which contains the 3 dimensions of the
292             horizontal grid
293             im, jm, lm plus the number of tracers passively advected
294             by the dynamics ntrac,
295             in 4 PARAMETER FORTRAN format
296             with a new file:
297             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
298             If the file does not exist already
299             it is created by the script
300             $LMDGCM/libf/grid/dimension/makdim
301
302-p PHYS    Selects the set of physical parameterizations
303           you want to compile the model with.
304           The model is then compiled using the physical
305           parameterization sources in directory:
306            $LMDGCM/libf/phyPHYS
307
308-g grille  Selects the grid type.
309           This option overwrites file
310           $LMDGCM/libf/grid/fxyprim.h
311           with file
312           $LMDGCM/libf/grid/fxy_grille.h
313           the grid can take the following values:
314           1. reg - the regular grid
315           2. sin - to obtain equidistant points in terms of sin(latitude)
316           3. new - to zoom into a part of the globe
317
318-O "compilation options" set of fortran compilation options to use
319
320-include path
321           Used if the subroutines contain #include files (ccp) that
322           are located in directories that are not referenced by default.
323
324-adjnt     Compiles the adjoint model to the dynamical code.
325
326-olddyn    To compile GCM with "old dynamics"
327
328-filtre  filter
329           To select the longitudinal filter in the polar regions.
330           "filter" corresponds to the name of a directory located in
331           $LMDGCM/libf. The standard filter for the model is "filtrez"
332           which can be used for a regular grid and for a 
333           grid with longitudinal zoom.
334
335-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
336           Adds a link to FORTRAN libraries
337           libfile1.a, libfile2.a ...
338           located in directories dir1, dir2 ...respectively
339           If dirn is a directory with an automatic path
340           (/usr/lib ... for example)
341           there is no need to specify  -Ldirn.
342
343-full      Full (re)compilation (from scratch)
344
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" ; set optim90="$2" ; set optimtru90="$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
373     case -olddyn
374        set dyntype="olddyn" ; shift; goto top
375
376     case -full
377        set full="full" ; shift ; goto top
378
379     case -filtre
380        set filtre=$2 ; shift ; shift ; goto top
381
382     case -link
383        set opt_link="$opt_link $2" ; shift ; shift ; goto top
384
385     case -debug
386        if $HP then
387           set optim90=" -g "
388        else if $SUN then
389           setenv PARALLEL 4
390           set optim90=" -g -C "
391           set optimtru90=" -g -C "
392        else if $CRAY then
393           set optim90="$optim90"" -G1 "
394        else if $LINUX then
395           ## for ifort
396             set optim=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug"
397             set optim90=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug"
398             set optimtru90=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug"
399        else
400           echo "pas d option debug predefinie pour cette machine"
401           exit
402        endif
403        shift ; goto top
404
405     default
406        set code="$1" ; shift ; goto top
407
408   endsw
409endif
410
411echo "apres les opts dim $dim"
412
413########################################################################
414# cas special sans physique
415########################################################################
416if ( "$physique" == 'nophys' ) then
417   set phys="L_PHY= LIBPHY="
418endif
419
420########################################################################
421# choix du nombre de traceur par defaut si il n'a pas ete choisi,
422# suivant la physique
423########################################################################
424
425if ( $ntrac == 0  ) then
426    if ( "$physique" == 'nophys' ) then
427        set ntrac=1
428    else if ( "$physique" == 'lmd' ) then
429        set ntrac=2
430    else if ( "$physique" == 'lmd_test_li' ) then
431        set ntrac=2
432    else if ( "$physique" == 'ec' ) then
433        set ntrac=1
434    else
435        set ntrac = 1
436    endif
437endif
438
439########################################################################
440#subtilites sur le nom de la librairie
441########################################################################
442
443\rm tmp ; touch tmp
444\rm tmp90 ; touch tmp90
445foreach i ( $optim90 )
446   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
447end
448set suf=
449foreach i ( `sort tmp | uniq ` )
450   set suf=$suf$i
451end
452if ( ! $IBM ) then
453   set nomlib="$nomlib$suf"
454endif
455if ( $DEC ) then
456   set nomlib=DEC
457endif
458
459# dimension
460
461echo "dimension avant sed $dim"
462if ( $IBM ) then
463   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
464   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
465else if ( $SUN || $XNEC ) then
466   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
467   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
468else
469#   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
470#   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
471     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
472     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
473endif
474
475# build final name of libraries directory:
476if ( "$dyntype" == "olddyn" ) then
477  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
478else
479  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
480endif
481
482# Append 'physique' type, if it is not mars, to nomlib
483if ( "$physique" != "mars" ) then
484  set nomlib=${nomlib}_${physique}
485endif
486
487## M-A-F nomlib trop long sur CRAY pour ar
488if ( $CRAY ) then
489    set nomlib=F90_${dim_}_t${ntrac}
490endif
491if ( $NEC || $XNEC ) then
492    set nomlib=F90_${dim_}_t${ntrac}
493endif
494
495echo "calcul de la dimension"
496set dimc=`echo $dim | wc -w`
497
498if ( "$dimc" == "2" ) then
499  set include="$include "'-I$(LIBF)/dyn2d '
500  set dimh=$dim
501else
502  if ( "$dyntype" == "olddyn" ) then
503    set include="$include "'-I$(LIBF)/olddyn3d '
504  else
505    set include="$include "'-I$(LIBF)/dyn3d '
506  endif
507  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
508endif
509echo "dimc is $dimc"
510
511########################################################################
512# path pour les #include
513########################################################################
514
515set include="$include -I$NCDFINC "
516echo $include
517
518########################################################################
519# Gestion des dimensions du modele.
520# on cree ou remplace le fichier des dimensions/nombre de traceur
521########################################################################
522
523cd $libf/grid
524if ( -f dimensions.h ) then
525  echo "WARNING: you are probably already compiling the model (perhaps"
526  echo " elsewhere). Wait until the first compilation ends before "
527  echo " compiling a different configuration."
528  echo "If you are sure that you are not already compiling, then you"
529  echo " may continue this compilation by answering yes."
530  echo "Do you want to continue?"
531  if ( $< == "yes" ) then
532    #remove old dimensions.h file
533    \rm -f $libf/grid/dimensions.h
534  else
535    exit
536  endif
537endif
538
539# Build the appropriate 'dimensions.h' file
540cd dimension
541./makdim $dim
542# echo contents of dimensions.h to standard output
543cat $libf/grid/dimensions.h
544
545cd $LMDGCM
546# set path to objects directory
547set libo=$libo/$nomlib
548# create objects directory, if it doesn't exist
549if ( ! -d $libo )  then
550   mkdir $libo
551   cd $model
552endif
553
554########################################################################
555# Differentes dynamiques (3d, 2d, 1d)
556########################################################################
557
558set dimension=`echo $dim | wc -w`
559echo dimension $dimension dim $dim
560if ( $dimension == 1 ) then
561  echo "No dynamics"
562##  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
563## NB: we still need to have L_DYN=libdyn3d to reach routines and module
564## objects which are located in dyn3d
565  set dyn="L_DYN=-ldyn3d DYN= L_FILTRE= DIRMAIN=phy$physique "
566endif
567endif
568
569cd $model
570if ( $dimension == 3 ) then
571  cd libf/grid
572  \rm fxyprim.h
573  cp -p fxy_${grille}.h fxyprim.h
574endif
575
576######################################################################
577#   Traitement special pour le nouveau rayonnement de Laurent Li.
578######################################################################
579
580if ( -f $libf/phy$physique/raddim.h ) then
581  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
582    \rm $libf/phy$physique/raddim.h
583    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
584    echo $libf/phy$physique/raddim.$dimh.h
585    cat $libf/phy$physique/raddim.$dimh.h
586    cat $libf/phy$physique/raddim.h
587  else
588    echo On peut diminuer la taille de l executable en creant
589    echo le fichier $libf/phy$physique/raddim.$dimh.h
590    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
591  endif
592endif
593
594######################################################################
595# Gestion du filtre qui n'existe qu'en 3d.
596######################################################################
597
598# set filtre to 'oldfiltrez' if using -olddyn option
599if ( "$dyntype" == "olddyn" ) then
600  set filtre="oldfiltrez"
601endif
602
603if ( `expr $dimc \> 2` == 1 ) then
604   set filtre="FILTRE=$filtre"
605else
606   set filtre="FILTRE= L_FILTRE= "
607endif
608echo "MACRO FILTRE $filtre"
609
610echo "dimc $dimc"
611
612#cleanup for a full recompilation, if requested
613if ("$full" == "full") then
614# remove makefile and $libo
615  cd $model
616  \rm -f makefile
617  \rm -rf $libo/*
618endif
619
620########################################################################
621#  Avant de lancer le make, on recree le makefile si necessaire
622########################################################################
623# c'est a dire dans 3 cas:
624# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
625#    derniere creation du makefile
626# 2. si le fichier contenant cette liste "liste_des_sources"
627#    n'existe pas.
628# 3. Si le makefile n'existe pas.
629########################################################################
630
631cd $model
632find libf -name '*.[Fh]' -print | sort >! tmp77
633#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
634find libf -name '*.[Fh]90' -print | sort >> tmp90
635
636if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
637     || `diff tmp90 liste_des_sources_f90 | wc -w` \
638     || ! -f makefile \
639     || ! -f liste_des_sources_f90 \
640     || ! -f liste_des_sources_f77 ) then
641        echo "les fichiers suivants ont ete crees ou detruits"
642        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
643        diff liste_des_sources_f77 tmp77
644        diff liste_des_sources_f90 tmp90
645        \cp tmp77 liste_des_sources_f77
646        \cp tmp90 liste_des_sources_f90
647        echo "On recree le makefile"
648        if ("$dyntype" == "olddyn") then
649          ./create_make_gcm olddyn3d grid bibio aeronomars phy$physique >! tmp
650        else
651          ./create_make_gcm dyn3d grid bibio aeronomars phy$physique >! tmp
652        endif
653        \mv tmp makefile
654        echo "Nouveau makefile cree."
655endif
656
657########################################################################
658#  Execution de la comande make
659########################################################################
660
661echo PHYSIQUE $phys
662echo dynamique $dyn $dimension
663echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
664echo PATH pour les fichiers INCLUDE $include
665echo OPLINK="$oplink"
666
667if $HP then
668   set f77='fort77 +OP'
669   set f90='jensaisrien'
670   set opt_link="$opt_link -lm"
671else  if $VPP then
672   set f77=frt
673   set f90=$f77
674else if $CRAY then
675   set f77=f90
676   set f90=f90
677else if $LINUX then
678   set f77=ifort
679   set f90=ifort
680   set opt_link=" -L$LIBOGCM -L$NCDFLIB -lnetcdf "
681else if $SUN then
682   set f77=f90
683   set f90=f90
684else if $NEC then
685   set f77=f90
686   set f90=f90
687else if $XNEC then
688   set f77=sxmpif90
689   set f90=sxmpif90
690else
691   set f77=f77
692   set f90=f90
693endif
694
695cd $model
696
697if $VPP then
698  set make="gmake RANLIB=ls"
699else if $CRAY then
700  set make="make RANLIB=ls"
701else if $NEC then
702  set make="make RANLIB=ls"
703else if $LINUX then
704  set make="make -k RANLIB=ranlib"
705else if $XNEC then
706  set make="/usr/local/bin/gmake RANLIB=ls"
707  set make="/usr/freeware/bin/gmake RANLIB=ls"
708else
709  set make="make RANLIB=ranlib"
710endif
711
712set include="$include"" -I$libf/phy$physique"
713
714
715#################################################################
716# Execution de la comande make... ENFIN!
717#################################################################
718
719if $VPP then
720  set optim90=" $optim90 -Am -M$libo"
721  set optimtru90="$optim90"
722else if $SUN then
723 set optim90=" $optim90 -M$libo"
724 set optimtru90=" $optimtru90 "
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# Ehouarn : adapt to gfortran
732 set optim="$optim -I${libo}"
733 set optim90="$optim90 -I${libo}"
734 set optimtru90="$optimtru90 -I${libo}"
735# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
736# set mod_loc_dir=$libo
737endif
738
739set link="$f90 $optim90"
740
741set ar=ar
742
743if $XNEC then
744  set link="sxld $opt_link"
745  set link="$f90 "
746#  set ar=sxar
747endif
748
749
750cd $localdir
751
752## locate main program (could be in dyn3d or phy$physique
753##                      and could be .F or .F90)
754set source_code=${code}.F
755if ( -f $LMDGCM/libf/dyn3d/${code}.F90 ) then
756  set source_code=${code}.F90
757endif
758if ( -f $LMDGCM/libf/phy${physique}/${code}.F ) then
759  set source_code=${code}.F
760endif
761if ( -f $LMDGCM/libf/phy${physique}/${code}.F90 ) then
762  set source_code=${code}.F90
763endif
764
765## locate directory where main program is located
766if ( $dimension == 3 ) then
767  if ( -f $LMDGCM/libf/dyn3d/${source_code} ) then
768    set dyn="DIRMAIN=dyn3d "
769  endif
770  if ( -f $LMDGCM/libf/phy${physique}/${source_code} ) then
771    set dyn="DIRMAIN=phy${physique} "
772  endif
773endif
774
775echo $make -f $LMDGCM/makefile \
776OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
777OPTIM="$optim" \
778OPTIM90="$optim90" \
779OPTIMTRU90="$optimtru90" \
780INCLUDE="$include" \
781$filtre \
782LIBO=$libo \
783$dyn \
784$phys \
785DIM=$dimc \
786DYNTYPE="$dyntype" \
787L_ADJNT="$adjnt" \
788LOCAL_DIR="$localdir"  \
789F77="$f77" \
790F90="$f90" \
791OPLINK="$oplink" \
792LINK="$link" \
793GCM="$LMDGCM" \
794MOD_LOC_DIR=$mod_loc_dir \
795MOD_SUFFIX=$mod_suffix \
796AR=$ar \
797SOURCE=$source_code \
798PROG=$code
799
800
801$make -f $LMDGCM/makefile \
802OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
803OPTIM="$optim" \
804OPTIM90="$optim90" \
805OPTIMTRU90="$optimtru90" \
806INCLUDE="$include" \
807$filtre \
808LIBO=$libo \
809$dyn \
810$phys \
811DIM=$dimc \
812DYNTYPE="$dyntype" \
813L_ADJNT="$adjnt" \
814LOCAL_DIR="$localdir"  \
815F77="$f77" \
816F90="$f90" \
817OPLINK="$oplink" \
818LINK="$link" \
819GCM="$LMDGCM" \
820MOD_LOC_DIR=$mod_loc_dir \
821MOD_SUFFIX=$mod_suffix \
822AR=$ar \
823SOURCE=$source_code \
824PROG=$code
825
826# cleanup, remove dimensions.h
827\rm -f $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.