source: LMDZ4/branches/LMDZ4_V3_patches/makegcm_fcm @ 845

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

Création de la branche LMDZ4_V3_patches: à partir de la version de référence LMDZ4_V3,

on corrige différents bugs qui sont sur la branche de développement HEAD pour établir
une version de référence LMDZ4_V3 pour les utilisateurs non-développeurs

Cette branche ne servira que pour les corrections de bugs et les version y seront tagguées

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" 
180endif
181
182if ( "$couple" != 'false' ) then
183   set CPP_KEY="$CPP_KEY CPP_COUPLE"
184   set INCLUDE="$INCLUDE -I${OASIS_INCDIR}"
185   set LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.${couple} -lmpp_io"
186endif
187
188if ( "$parallel" == 'true' ) then
189   set CPP_KEY="$CPP_KEY CPP_PARA"
190endif
191
192if ( "$veget" == 'true' ) then
193   set CPP_KEY="$CPP_KEY CPP_VEGET"
194   set INCLUDE="${INCLUDE} -I${ORCH_INCDIR}"
195   set LIB="${LIB} -L${ORCH_LIBDIR} -lsechiba -lparameters -lstomate -lparallel -lorglob"
196endif
197
198if ( $io == ioipsl ) then
199   set CPP_KEY="$CPP_KEY CPP_IOIPSL"
200   set INCLUDE="$INCLUDE -I${IOIPSL_INCDIR}"
201   set LIB="$LIB -L${IOIPSL_LIBDIR} -lioipsl"
202endif
203
204set INCLUDE="$INCLUDE -I${NETCDF_INCDIR}"
205set LIB="$LIB -L${NETCDF_LIBDIR} -lnetcdf"
206
207
208########################################################################
209# choix du nombre de traceur par defaut si il n'a pas ete choisi,
210# suivant la physique
211########################################################################
212
213if ( $ntrac == 0  ) then
214    if ( "$physique" == 'nophys' ) then
215        set ntrac=1
216    else if ( "$physique" == 'lmd' ) then
217        set ntrac=2
218    else if ( "$physique" == 'lmd_test_li' ) then
219        set ntrac=2
220    else if ( "$physique" == 'ec' ) then
221        set ntrac=1
222    else
223        set ntrac = 1
224    endif
225endif
226
227
228########################################################################
229# calcul du nombre de dimensions
230########################################################################
231
232
233set dim_full=$dim
234set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
235set dimc=`echo $dim | wc -w`
236
237echo calcul de la dimension
238echo dim $dim
239echo dimc $dimc
240
241
242########################################################################
243# Gestion des dimensions du modele.
244# on cree ou remplace le fichier des dimensions/nombre de traceur
245########################################################################
246
247cd $LIBFGCM/grid/dimension
248./makdim $ntrac $dim
249cat $LIBFGCM/grid/dimensions.h
250cd $LMDGCM
251
252
253########################################################################
254# Differentes dynamiques (3d, 2d, 1d)
255########################################################################
256
257set dimension=`echo $dim | wc -w`
258echo dimension $dimension
259
260if ( $dimension != 3 ) then
261  echo "Probleme dans les dimensions de la dynamique !!"
262  echo "Non reactive pour l'instant !!!"
263endif
264
265if ( $dimension == 3 ) then
266  cd $LIBFGCM/grid
267  \rm fxyprim.h
268  cp -p fxy_${grille}.h fxyprim.h
269endif
270
271######################################################################
272#   Traitement special pour le nouveau rayonnement de Laurent Li.
273#   ---> YM desactive pour le traitemement en parallele
274######################################################################
275
276#if ( -f $libf/phy$physique/raddim.h ) then
277# if ( -f $libf/phy$physique/raddim.$dimh.h ) then
278#  \rm -f $libf/phy$physique/raddim.h
279#  cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
280#  echo $libf/phy$physique/raddim.$dimh.h
281#  cat $libf/phy$physique/raddim.h
282# else
283#  echo On peut diminuer la taille de l executable en creant
284#  echo le fichier $libf/phy$physique/raddim.$dimh.h
285#  \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
286# endif
287#endif
288
289######################################################################
290# Gestion du filtre qui n'existe qu'en 3d.
291######################################################################
292
293if ( `expr $dimc \> 2` == 1 ) then
294   set filtre="FILTRE=$filtre"
295else
296   set filtre="FILTRE= L_FILTRE= "
297endif
298echo MACRO FILTRE $filtre
299
300echo $dimc
301
302
303
304######################################################################
305# Creation du suffixe de la configuration
306######################################################################
307
308
309set SUFF_NAME=_${dim_full}
310set SUFF_NAME=${SUFF_NAME}_t${ntrac}_phy${physique}
311
312if ( "$parallel" == 'true' ) then
313  set SUFF_NAME=${SUFF_NAME}_para
314  set DYN=dyn${dimc}dpar
315else
316  set SUFF_NAME=${SUFF_NAME}_seq
317  set DYN=dyn${dimc}d
318endif
319
320if ( $veget == "true" ) then
321  set SUFF_NAME=${SUFF_NAME}_orch
322endif
323
324if ( $couple != "false" ) then
325  set SUFF_NAME=${SUFF_NAME}_couple
326endif
327
328if ( $chimie == "true" ) then
329  set SUFF_NAME=${SUFF_NAME}_inca
330endif
331
332cd $LMDGCM
333set config_fcm="config.fcm"
334rm -f $config_fcm
335touch $config_fcm
336rm -f bin/${code}${SUFF_NAME}.e
337rm -f arch.fcm
338
339echo "%ARCH          $arch"          >> $config_fcm
340echo "%INCDIR        $INCLUDE"       >> $config_fcm 
341echo "%LIB           $LIB"           >> $config_fcm
342echo "%ROOT_PATH     $PWD"           >> $config_fcm
343echo "%LIBF          $LIBFGCM"       >> $config_fcm
344echo "%LIBO          $LIBOGCM"       >> $config_fcm
345echo "%DYN           $DYN"           >> $config_fcm
346echo "%PHYS          phy${physique}" >> $config_fcm
347echo "%CPP_KEY       $CPP_KEY"       >> $config_fcm
348echo "%EXEC          $code"          >> $config_fcm
349echo "%SUFF_NAME     $SUFF_NAME"     >> $config_fcm
350
351ln -s machine/arch-${arch}.fcm arch.fcm
352./build_gcm
353
354rm -f tmp_src
355rm -f config
356ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config config
357ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/tmp tmp_src
358#\rm -f $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.