source: LMDZ4/branches/LMDZ4-dev/makegcm_fcm @ 1114

Last change on this file since 1114 was 1114, checked in by jghattas, 15 years ago

Creation du module infotrac:

  • contient les variables de advtrac.h
  • contient la subroutine iniadvtrac renommer en infotrac_init
  • le nombre des traceurs est lu dans tracer.def en dynamique (ou par default ou recu par INCA)
  • ce module est utilise dans la dynamique et la physique
  • contient aussi la variable nbtr qui avant etait stockee dans dimphy

Le fichier advtrac.h n'existe plus.
La compilation ne prend plus en compte le nombre de traceur.

/JG

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 10.0 KB
Line 
1#!/bin/csh
2#
3# $Header$
4#
5# FH : on ne cr�e plus le fichier arch.mk qui est suppos� exister par
6# FH : ailleurs.
7# FH : ult�rieurement, ce fichier sera pr�-existant pour une s�rie
8# FH : de configurations en versions optimis�es et debug qui seront
9# FH : li�s (ln -s) avec arch.mk en fonction de l'architecture.
10# FH : Pour le moment, cette version est en test et on peut cr�er les
11# FH : arch.mk en lan�ant une premi�re fois makegcm7.
12#
13set verbose echo
14########################################################################
15# options par defaut pour la commande make
16########################################################################
17
18set dim="96x72x19"
19set physique=lmd
20set filtre=filtrez
21set grille=reg
22set couple=false
23set veget=false
24set chimie=false
25set parallel=none
26set compil_mod=prod
27set io=ioipsl
28set LIBPREFIX=""
29
30set LMDGCM=`/bin/pwd`
31set LIBOGCM=$LMDGCM/libo
32set LIBFGCM=$LMDGCM/libf
33
34########################################################################
35#  Quelques initialisations de variables du shell.
36########################################################################
37
38set CPP_KEY="" 
39set INCLUDE=""
40set LIB=""
41set adjnt=""
42set COMPIL_FFLAGS="%PROD_FFLAGS"
43set PARA_FFLAGS=""
44set PARA_LD=""
45
46########################################################################
47# lecture des options de mymake
48########################################################################
49
50top:
51if ($#argv > 0) then
52    switch ($1:q)
53
54    case -h:
55cat <<fin
56manuel complet sur http://...
57Usage :
58makegcm [options] -m arch exec
59[-h]                       : manuel abrégé
60[-d [[IMx]JMx]LM]          : IM, JM, LM sont les dims en x, y, z (def: $dim)
61[-p PHYS]                  : compilation avec la physique libf/phyPHYS, (def: lmd)
62[-prod / -dev / -debug]    : compilation en mode production (default) / developpement / debug .
63[-c false/MPI1/MPI2]       : couplé océan : MPI1/MPI2/false (def: false)
64[-v false/true]            : avec ou sans végétation (def: false)
65[-chimie INCA/false]       : avec ou sans model de chimie INCA (def: false)
66[-parallel none/mpi/omp/mpi_omp] : parallelisation (default: none) : mpi, openmp ou mixte mpi_openmp
67[-g GRI]                   : conf. grille dans dyn3d/GRI_xy.h  (def: reg inclue un zoom)
68[-io IO]                   : choix d'une librairie I/O, experts (def: ioipsl)
69[-include INCLUDES]        : variables supplementaires pour include cpp, experts.
70[-adjnt]                   : adjoint, a remettre en route ...
71[-filtre NOMFILTRE]        : prend le filtre dans libf/NOMFILTRE (def: filtrez)
72[-link LINKS]              : liens optionels avec d'autres librairies
73 -m arch                   : nom de l'architecture cible
74 exec                      : exécutable généré
75fin
76        exit
77
78    case -d:
79        set dim=$2 ; shift ; shift ; goto top
80                       
81    case -O:
82        echo "option obsolete dans cette version intermediaire de makegcm"
83        exit
84
85     case -p
86        set physique="$2" ;  shift ; shift ; goto top
87
88     case -g
89        set grille="$2" ; shift ; shift ; goto top
90
91     case -c
92        set couple="$2" ; shift ; shift ; goto top
93
94     case -prod
95        set compil_mod="prod" ; shift ; goto top
96
97     case -dev
98       set compil_mod="dev" ; shift ; goto top
99
100     case -debug
101       set compil_mod="debug" ; shift ; goto top
102
103     case -io
104        set io="$2" ; shift ; shift ; goto top
105
106     case -v
107        set veget="$2" ; shift ; shift ; goto top
108
109     case -chimie
110        set chimie="$2" ; shift ; shift ; goto top
111
112     case -parallel
113        set parallel="$2" ; shift ; shift ; goto top
114 
115     case -include
116        set INCLUDE="$INCLUDE -I$2" ; shift ; shift ; goto top
117
118     case -adjnt
119        echo 'otpion a reactiver ';exit
120        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
121        set optim="$optim -Dadj" ; shift ; goto top
122
123
124     case -filtre
125        set filtre=$2 ; shift ; shift ; goto top
126
127     case -link
128        set LIB="$LIB $2" ; shift ; shift ; goto top
129
130     case -m
131       set arch=$2 ; shift ; shift ; goto top
132
133     default
134        set code="$1" ; shift ; goto top
135
136   endsw
137endif
138
139
140###############################################################
141# lecture des chemins propres � l'architecture  de la machine #
142###############################################################
143
144rm -f ./arch.path
145ln -s ./machine/arch-${arch}.path ./arch.path
146source arch.path
147
148########################################################################
149# Definition des clefs CPP, des chemins des includes et modules
150#  et des libraries
151########################################################################
152
153if ( "$compil_mod" == 'prod' ) then
154  set COMPIL_FFLAGS="%PROD_FFLAGS"
155else if ( "$compil_mod" == 'dev' ) then
156  set COMPIL_FFLAGS="%DEV_FFLAGS"
157else if ( "$compil_mod" == 'debug' ) then
158  set COMPIL_FFLAGS="%DEBUG_FFLAGS"
159endif
160
161if ( "$physique" == 'nophys' ) then
162   
163else
164   set CPP_KEY="$CPP_KEY CPP_PHYS"
165endif
166
167if ( "$chimie" == 'INCA' ) then
168   set CPP_KEY="$CPP_KEY INCA"
169   set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
170   set LIB="$LIB -L${INCA_LIBDIR} -lchimie"
171endif
172
173if ( "$couple" != 'false' ) then
174   set CPP_KEY="$CPP_KEY CPP_COUPLE"
175   set INCLUDE="$INCLUDE -I${OASIS_INCDIR}"
176   set LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.${couple} -lmpp_io"
177endif
178
179if ( "$parallel" == 'mpi' ) then
180   set CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI"
181   set PARA_FFLAGS="%MPI_FFLAGS"
182   set PARA_LD="%MPI_LD"
183else if ("$parallel" == 'omp' ) then
184   set CPP_KEY="$CPP_KEY CPP_PARA CPP_OMP"
185   set PARA_FFLAGS="%OMP_FFLAGS"
186   set PARA_LD="%OMP_LD"
187else if ("$parallel" == 'mpi_omp' ) then
188   set CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI CPP_OMP"
189   set PARA_FFLAGS="%MPI_FFLAGS %OMP_FFLAGS"
190   set PARA_LD="%MPI_LD %OMP_LD"
191endif
192
193if ( "$veget" == 'true' ) then
194   set CPP_KEY="$CPP_KEY CPP_VEGET"
195   set INCLUDE="${INCLUDE} -I${ORCH_INCDIR}"
196   set LIB="${LIB} -L${ORCH_LIBDIR} -l${LIBPREFIX}sechiba -l${LIBPREFIX}parameters -l${LIBPREFIX}stomate -l${LIBPREFIX}parallel -l${LIBPREFIX}orglob"
197endif
198
199if ( $io == ioipsl ) then
200   set CPP_KEY="$CPP_KEY CPP_IOIPSL"
201   set INCLUDE="$INCLUDE -I${IOIPSL_INCDIR}"
202   set LIB="$LIB -L${IOIPSL_LIBDIR} -l${LIBPREFIX}ioipsl"
203endif
204
205set INCLUDE="$INCLUDE -I${NETCDF_INCDIR}"
206set LIB="$LIB -L${NETCDF_LIBDIR} -lnetcdf"
207
208########################################################################
209# calcul du nombre de dimensions
210########################################################################
211
212
213set dim_full=$dim
214set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
215set dimc=`echo $dim | wc -w`
216
217echo calcul de la dimension
218echo dim $dim
219echo dimc $dimc
220
221
222########################################################################
223# Gestion des dimensions du modele.
224# on cree ou remplace le fichier des dimensions
225########################################################################
226
227cd $LIBFGCM/grid/dimension
228./makdim $dim
229cat $LIBFGCM/grid/dimensions.h
230cd $LMDGCM
231
232
233########################################################################
234# Differentes dynamiques (3d, 2d, 1d)
235########################################################################
236
237set dimension=`echo $dim | wc -w`
238echo dimension $dimension
239
240if ( $dimension != 3 ) then
241  echo "Probleme dans les dimensions de la dynamique !!"
242  echo "Non reactive pour l'instant !!!"
243endif
244
245if ( $dimension == 3 ) then
246  cd $LIBFGCM/grid
247  \rm fxyprim.h
248  cp -p fxy_${grille}.h fxyprim.h
249endif
250
251######################################################################
252#   Traitement special pour le nouveau rayonnement de Laurent Li.
253#   ---> YM desactive pour le traitemement en parallele
254######################################################################
255
256#if ( -f $libf/phy$physique/raddim.h ) then
257# if ( -f $libf/phy$physique/raddim.$dimh.h ) then
258#  \rm -f $libf/phy$physique/raddim.h
259#  cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
260#  echo $libf/phy$physique/raddim.$dimh.h
261#  cat $libf/phy$physique/raddim.h
262# else
263#  echo On peut diminuer la taille de l executable en creant
264#  echo le fichier $libf/phy$physique/raddim.$dimh.h
265#  \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
266# endif
267#endif
268
269######################################################################
270# Gestion du filtre qui n'existe qu'en 3d.
271######################################################################
272
273if ( `expr $dimc \> 2` == 1 ) then
274   set filtre="FILTRE=$filtre"
275else
276   set filtre="FILTRE= L_FILTRE= "
277endif
278echo MACRO FILTRE $filtre
279
280echo $dimc
281
282
283
284######################################################################
285# Creation du suffixe de la configuration
286######################################################################
287
288
289set SUFF_NAME=_${dim_full}
290set SUFF_NAME=${SUFF_NAME}_phy${physique}
291
292if ( "$parallel" != 'none' ) then
293  set SUFF_NAME=${SUFF_NAME}_para
294  set DYN=dyn${dimc}dpar
295else
296  set SUFF_NAME=${SUFF_NAME}_seq
297  set DYN=dyn${dimc}d
298endif
299
300if ( $veget == "true" ) then
301  set SUFF_NAME=${SUFF_NAME}_orch
302endif
303
304if ( $couple != "false" ) then
305  set SUFF_NAME=${SUFF_NAME}_couple
306endif
307
308if ( $chimie == 'INCA' ) then
309  set SUFF_NAME=${SUFF_NAME}_inca
310endif
311
312cd $LMDGCM
313set config_fcm="config.fcm"
314rm -f $config_fcm
315touch $config_fcm
316rm -f bin/${code}${SUFF_NAME}.e
317rm -f arch.fcm
318
319echo "%ARCH          $arch"          >> $config_fcm
320echo "%INCDIR        $INCLUDE"       >> $config_fcm 
321echo "%LIB           $LIB"           >> $config_fcm
322echo "%ROOT_PATH     $PWD"           >> $config_fcm
323echo "%LIBF          $LIBFGCM"       >> $config_fcm
324echo "%LIBO          $LIBOGCM"       >> $config_fcm
325echo "%DYN           $DYN"           >> $config_fcm
326echo "%PHYS          phy${physique}" >> $config_fcm
327echo "%CPP_KEY       $CPP_KEY"       >> $config_fcm
328echo "%EXEC          $code"          >> $config_fcm
329echo "%SUFF_NAME     $SUFF_NAME"     >> $config_fcm
330echo "%COMPIL_FFLAGS $COMPIL_FFLAGS" >> $config_fcm
331echo "%PARA_FFLAGS   $PARA_FFLAGS"   >> $config_fcm
332echo "%PARA_LD       $PARA_LD"       >> $config_fcm
333
334
335
336ln -s machine/arch-${arch}.fcm arch.fcm
337rm -f $LIBOGCM/${arch}${SUFF_NAME}/.config/fcm.bld.lock
338./build_gcm
339
340rm -f tmp_src
341rm -f config
342ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config config
343ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/tmp tmp_src
344#\rm -f $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.