source: LMDZ4/trunk/makegcm_fcm @ 852

Last change on this file since 852 was 842, checked in by Laurent Fairhead, 17 years ago

On rajoute la physique utilisee dans le nom de la librairie MAFo
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 10.3 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 ntrac = 4
21set filtre=filtrez
22set grille=reg
23set couple=false
24set veget=false
25set chimie=false
26set parallel=false
27set io=ioipsl
28
29set LMDGCM=`/bin/pwd`
30set LIBOGCM=$LMDGCM/libo
31set LIBFGCM=$LMDGCM/libf
32
33########################################################################
34#  Quelques initialisations de variables du shell.
35########################################################################
36
37set CPP_KEY="" 
38set INCLUDE=""
39set LIB=""
40set adjnt=""
41
42
43########################################################################
44# lecture des options de mymake
45########################################################################
46
47top:
48if ($#argv > 0) then
49    switch ($1:q)
50
51    case -h:
52cat <<fin
53manuel complet sur http://...
54Usage :
55makegcm
56[-h]                   : manuel abrégé
57[-d [[IMx]JMx]LM]      : IM, JM, LM sont les dims en x, y, z (def: $dim)
58[-t NTRAC]             : nombre de traceurs (def: 4)
59[-p PHYS]              : compilation avec la physique libf/phyPHYS, (def: lmd)
60[-debug]               : compile avec options debug.
61[-c false/MPI1/MPI2]   : couplé océan : MPI1/MPI2/false (def: false)
62[-v false/true]        : avec ou sans végétation (def: false)
63[-chimie SCHEMA/false] : nom du schéma chimique ou false (def)
64[-parallel true/false] : parallelisation, en développement (def: false)
65[-g GRI]               : conf. grille dans dyn3d/GRI_xy.h\
66                         (def: reg inclue un zoom)
67[-io IO]               : choix d'une librairie I/O, experts (def: ioipsl)
68[-include INCLUDES]    : variables supplementaires pour include cpp, experts.
69[-adjnt]               : adjoint, a remettre en route ...
70[-filtre NOMFILTRE]    : prend le filtre dans libf/NOMFILTRE (def: filtrez)
71[-link LINKS]          : liens optionels avec d'autres librairies
72[-m arch]              : nom de l'architecture cible
73fin
74        exit
75
76    case -d:
77        set dim=$2 ; shift ; shift ; goto top
78                       
79    case -O:
80        echo "option obsolete dans cette version intermediaire de makegcm"
81        exit
82
83     case -p
84        set physique="$2" ;  shift ; shift ; goto top
85
86     case -g
87        set grille="$2" ; shift ; shift ; goto top
88
89     case -c
90        set couple="$2" ; shift ; shift ; goto top
91
92     case -io
93        set io="$2" ; shift ; shift ; goto top
94
95     case -v
96        set veget="$2" ; shift ; shift ; goto top
97
98     case -chimie
99        set chimie="$2" ; shift ; shift ; goto top
100
101     case -parallel
102        set parallel="$2" ; shift ; shift ; goto top
103 
104     case -t
105        set ntrac=$2 ; shift ; shift ; goto top
106
107     case -include
108        set INCLUDE="$INCLUDE -I$2" ; shift ; shift ; goto top
109
110     case -adjnt
111        echo 'otpion a reactiver ';exit
112        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
113        set optim="$optim -Dadj" ; shift ; goto top
114
115
116     case -filtre
117        set filtre=$2 ; shift ; shift ; goto top
118
119     case -link
120        set LIB="$LIB $2" ; shift ; shift ; goto top
121
122     case -m
123       set arch=$2 ; shift ; shift ; goto top
124       
125     case -debug
126        echo 'option a reactiver' ; exit
127
128     default
129        set code="$1" ; shift ; goto top
130
131   endsw
132endif
133
134
135###############################################################
136# lecture des chemins propres à l'architecture  de la machine #
137###############################################################
138
139rm -f ./arch.path
140ln -s ./machine/arch-${arch}.path ./arch.path
141source arch.path
142
143########################################################################
144# Definition des clefs CPP, des chemins des includes et modules
145#  et des libraries
146########################################################################
147
148
149if ( "$physique" == 'nophys' ) then
150   
151else
152   set CPP_KEY="$CPP_KEY CPP_PHYS"
153endif
154
155
156if ( "$chimie" == 'AER' ) then
157    set CPP_KEY="$CPP_KEY INCA INCA_AER"
158    set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
159    set LIB="$LIB -L${INCA_LIBDIR} -lchimie" 
160else if  ( "$chimie" == 'CH4' ) then
161    set CPP_KEY="$CPP_KEY INCA INCA_CH4"
162    set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
163    set LIB="$LIB -L${INCA_LIBDIR} -lchimie" 
164else if  ( "$chimie" == 'CH4_AER' ) then
165    set CPP_KEY="$CPP_KEY INCA INCA_AER INCA_CH4"
166    set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
167    set LIB="$LIB -L${INCA_LIBDIR} -lchimie" 
168else if  ( "$chimie" == 'NMHC' ) then
169    set CPP_KEY="$CPP_KEY INCA INCA_NMHC"
170    set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
171    set LIB="$LIB -L${INCA_LIBDIR} -lchimie" 
172else if  ( "$chimie" == 'NMHC_AER' ) then
173    set CPP_KEY="$CPP_KEY INCA INCA_AER INCA_NMHC"
174    set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
175    set LIB="$LIB -L${INCA_LIBDIR} -lchimie" 
176else if ( "$chimie" == 'GES' ) then
177    set CPP_KEY="$CPP_KEY INCA"
178    set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
179    set LIB="$LIB -L${INCA_LIBDIR} -lchimie" 
180
181endif
182
183if ( "$couple" != 'false' ) then
184   set CPP_KEY="$CPP_KEY CPP_COUPLE"
185   set INCLUDE="$INCLUDE -I${OASIS_INCDIR}"
186   set LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.${couple} -lmpp_io"
187endif
188
189if ( "$parallel" == 'true' ) then
190   set CPP_KEY="$CPP_KEY CPP_PARA"
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} -lsechiba -lparameters -lstomate -lparallel -lorglob"
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} -lioipsl"
203endif
204
205set INCLUDE="$INCLUDE -I${NETCDF_INCDIR}"
206set LIB="$LIB -L${NETCDF_LIBDIR} -lnetcdf"
207
208
209########################################################################
210# choix du nombre de traceur par defaut si il n'a pas ete choisi,
211# suivant la physique
212########################################################################
213
214if ( $ntrac == 0  ) then
215    if ( "$physique" == 'nophys' ) then
216        set ntrac=1
217    else if ( "$physique" == 'lmd' ) then
218        set ntrac=2
219    else if ( "$physique" == 'lmd_test_li' ) then
220        set ntrac=2
221    else if ( "$physique" == 'ec' ) then
222        set ntrac=1
223    else
224        set ntrac = 1
225    endif
226endif
227
228
229########################################################################
230# calcul du nombre de dimensions
231########################################################################
232
233
234set dim_full=$dim
235set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
236set dimc=`echo $dim | wc -w`
237
238echo calcul de la dimension
239echo dim $dim
240echo dimc $dimc
241
242
243########################################################################
244# Gestion des dimensions du modele.
245# on cree ou remplace le fichier des dimensions/nombre de traceur
246########################################################################
247
248cd $LIBFGCM/grid/dimension
249./makdim $ntrac $dim
250cat $LIBFGCM/grid/dimensions.h
251cd $LMDGCM
252
253
254########################################################################
255# Differentes dynamiques (3d, 2d, 1d)
256########################################################################
257
258set dimension=`echo $dim | wc -w`
259echo dimension $dimension
260
261if ( $dimension != 3 ) then
262  echo "Probleme dans les dimensions de la dynamique !!"
263  echo "Non reactive pour l'instant !!!"
264endif
265
266if ( $dimension == 3 ) then
267  cd $LIBFGCM/grid
268  \rm fxyprim.h
269  cp -p fxy_${grille}.h fxyprim.h
270endif
271
272######################################################################
273#   Traitement special pour le nouveau rayonnement de Laurent Li.
274#   ---> YM desactive pour le traitemement en parallele
275######################################################################
276
277#if ( -f $libf/phy$physique/raddim.h ) then
278# if ( -f $libf/phy$physique/raddim.$dimh.h ) then
279#  \rm -f $libf/phy$physique/raddim.h
280#  cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
281#  echo $libf/phy$physique/raddim.$dimh.h
282#  cat $libf/phy$physique/raddim.h
283# else
284#  echo On peut diminuer la taille de l executable en creant
285#  echo le fichier $libf/phy$physique/raddim.$dimh.h
286#  \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
287# endif
288#endif
289
290######################################################################
291# Gestion du filtre qui n'existe qu'en 3d.
292######################################################################
293
294if ( `expr $dimc \> 2` == 1 ) then
295   set filtre="FILTRE=$filtre"
296else
297   set filtre="FILTRE= L_FILTRE= "
298endif
299echo MACRO FILTRE $filtre
300
301echo $dimc
302
303
304
305######################################################################
306# Creation du suffixe de la configuration
307######################################################################
308
309
310set SUFF_NAME=_${dim_full}
311set SUFF_NAME=${SUFF_NAME}_t${ntrac}_phy${physique}
312
313if ( "$parallel" == 'true' ) then
314  set SUFF_NAME=${SUFF_NAME}_para
315  set DYN=dyn${dimc}dpar
316else
317  set SUFF_NAME=${SUFF_NAME}_seq
318  set DYN=dyn${dimc}d
319endif
320
321if ( $veget == "true" ) then
322  set SUFF_NAME=${SUFF_NAME}_orch
323endif
324
325if ( $couple != "false" ) then
326  set SUFF_NAME=${SUFF_NAME}_couple
327endif
328
329if ( $chimie == "true" ) then
330  set SUFF_NAME=${SUFF_NAME}_inca
331endif
332
333cd $LMDGCM
334set config_fcm="config.fcm"
335rm -f $config_fcm
336touch $config_fcm
337rm -f bin/${code}${SUFF_NAME}.e
338rm -f arch.fcm
339
340echo "%ARCH          $arch"          >> $config_fcm
341echo "%INCDIR        $INCLUDE"       >> $config_fcm 
342echo "%LIB           $LIB"           >> $config_fcm
343echo "%ROOT_PATH     $PWD"           >> $config_fcm
344echo "%LIBF          $LIBFGCM"       >> $config_fcm
345echo "%LIBO          $LIBOGCM"       >> $config_fcm
346echo "%DYN           $DYN"           >> $config_fcm
347echo "%PHYS          phy${physique}" >> $config_fcm
348echo "%CPP_KEY       $CPP_KEY"       >> $config_fcm
349echo "%EXEC          $code"          >> $config_fcm
350echo "%SUFF_NAME     $SUFF_NAME"     >> $config_fcm
351
352ln -s machine/arch-${arch}.fcm arch.fcm
353./build_gcm
354
355rm -f tmp_src
356rm -f config
357ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config config
358ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/tmp tmp_src
359#\rm -f $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.