Philippe 23/02/2016: lfi2cdf: modif for JPHEXT/=1
[MNH-git_open_source-lfs.git] / LIBTOOLS / tools / diachro / src / MOD / modd_resolvcar.f90
1 !     ######spl
2       MODULE  MODD_RESOLVCAR
3 !     ######################
4 !
5 !!****  *MODD_RESOLVCAR* - 
6 !!
7 !!    PURPOSE
8 !!    -------
9 !
10 !
11 !!    IMPLICIT ARGUMENTS
12 !!    ------------------
13 !!
14 !!     None
15 !!
16 !!
17 !!    REFERENCE
18 !!    ---------
19 !!
20 !!
21 !!    AUTHOR
22 !!    ------
23 !!      JD    "LA"
24 !!
25 !!
26 !!    MODIFICATIONS
27 !!    -------------
28 !!
29 !!     original        24/11/95
30 !!     updated   PM    21/11/94
31 !!
32 !-------------------------------------------------------------------------
33 !
34 !*     0.   Declarations
35 !           ------------
36 !
37
38 IMPLICIT NONE
39
40 !
41 ! Unite logique fichier de directives
42 !
43 INTEGER           :: NDIR
44
45 !
46 ! NLOOPN = JLOOPN OPER memorise pour SSOL + DRST + RAPL + RSPL
47 !
48 INTEGER           :: NLOOPN
49
50 !
51 ! NLOOPP = JLOOPP OPER memorise pour CART
52 !
53 INTEGER           :: NLOOPP
54
55 !
56 ! NLOOPK = JLOOPK OPER memorise pour CART et LANIMK
57 ! XLOOPZ = JLOOPZ               "                pour les niveaux =/= niv.modele
58 !
59 INTEGER           :: NLOOPK
60 REAL,SAVE         :: XLOOPZ
61
62 !
63 ! Logiques de gestion des differents types d'operations
64 !
65 LOGICAL           :: LCH, LCV, LPV, LPH, LPVT, LCN, LFT, LFT1, LPVKT, L1K
66 LOGICAL           :: LTK, LPR, LPVKT1, LZT, LXT, LYT, LXYDIA, LZTPVKT1
67 LOGICAL           :: LXYWINCUR=.FALSE.
68 LOGICAL           :: LPXT, LPYT
69 LOGICAL           :: LEV       ! Potential vorticity
70 LOGICAL           :: LMINUS, LPLUS
71 LOGICAL           :: LANIMK, LANIMT
72 LOGICAL           :: LCNCUM, LCNSUM, LCHXY, LCVXZ, LCVYZ, LRS, LRS1
73 LOGICAL           :: L1DT
74 LOGICAL           :: LPRINT=.FALSE., LPRINTXY=.FALSE.
75 ! Ecriture des dates dans le fichier FICVAL . Associe a XPRDAT
76 LOGICAL           :: LPRDAT=.FALSE.
77 LOGICAL           :: LPOINTG=.FALSE.
78 LOGICAL           :: L2DBX=.FALSE., L2DBY=.FALSE.
79 LOGICAL           :: LXYO=.FALSE.
80 LOGICAL,SAVE      :: LMNMXLOC=.FALSE.
81 LOGICAL           :: LXABSC=.FALSE. ! Cas V(x,t) --> X en abscisse ou non
82 LOGICAL           :: LXMINTOP=.FALSE. ! Cas V(x,t) --> Min X en ordonnee en haut
83                                   ! ou non
84 ! Streamlines
85 LOGICAL,SAVE      :: LSTREAM=.FALSE.
86 LOGICAL,SAVE      :: LINTERPOLSTR=.FALSE.
87 INTEGER,SAVE      :: NZSTR=80, NARSTR=4
88 INTEGER,SAVE      :: NSGD, NSEUIL
89 REAL,DIMENSION(:),ALLOCATABLE,SAVE :: XZSTR
90 REAl,SAVE         :: XLWSTR=1., XARLSTR=.009, XSSP=.004
91
92 ! Logique presence ou non des labels sur les axes .T. -> absence .F.presence
93 LOGICAL           :: LNOLABELX=.FALSE.
94 LOGICAL           :: LNOLABELY=.FALSE.
95 !
96 ! logiques de gestion des combinaisons des composantes du vent
97 !
98 LOGICAL           :: LUMVM, LUTVT, LMUMVM, LMUTVT
99 LOGICAL           :: LULM, LULT, LVTM, LVTT, LULMWM, LULTWT
100 LOGICAL           :: LSUMVM, LSUTVT, LMLSUMVM, LMLSUTVT
101 ! Representation anterieure de ULM et VTM
102 LOGICAL,SAVE      :: LULMVTMOLD=.FALSE.
103 ! CH orientation pour calcul ULM et VTM
104 REAl,SAVE         :: XANGULVT
105 ! CH direction du vent
106 LOGICAL,SAVE      :: LDIRWIND, LDIRWM, LDIRWT
107 ! Cas LDIRWIND _PVT_  Memorisation des temps
108 REAL,DIMENSION(:),ALLOCATABLE,SAVE :: XTDIRWIND
109 ! Logique de gestion des statistiques des vecteurs vents
110 LOGICAL,SAVE      :: LVST=.FALSE.
111 ! Logique pour supprimer la dilatation de la la composante W ds 
112 ! representation ULMWM ou ULTWT
113 LOGICAL,SAVE      :: LDILW=.TRUE.
114 ! Logique pour conserver les valeurs > XVHC ds le cas ou XVHC est <0
115 ! c.a.d ou = scale
116 LOGICAL,SAVE      :: LVSUPSCA=.FALSE.
117 !
118 ! logique de gestion des couleurs en cas de zoom en CV
119 ! =F -> iso +couleurs zoom ident. au graphique integral
120 ! =T ->        "       "   fction du min et du max du zoom
121 !
122 LOGICAL,SAVE      :: LCVZOOM=.FALSE.
123 !
124 ! logique de gestion des couleurs a 0 (background)
125 !
126 LOGICAL           :: LCOLZERO=.FALSE.
127 !
128 ! rang de l'index de couleur a mettre a 0
129 !
130 INTEGER           :: NCOLZERO
131 !
132 ! RS
133 !
134 INTEGER           :: NIRS, NJRS
135 REAL              :: XIRS, XJRS, XIRSCC, XJRSCC
136 LOGICAL           :: LNOUVRS=.FALSE.
137 !
138 ! Ajout (ou - ou * ) constante entre ()
139 !
140 CHARACTER(LEN=20),DIMENSION(100) :: CFACT=' '  !(Nom gpe + fact * ou + ou -)
141 REAL,DIMENSION(100)    :: XCONSTANTE=0.
142 INTEGER,DIMENSION(100)    :: NOPE(100)
143 INTEGER :: NPARG=0, NPARD=0              ! Parentheses Gauche et dte
144 INTEGER :: NOPEL=0                         ! Compteur fact * ou + ou -
145 LOGICAL :: LFACTIMP=.TRUE.               ! Impression fact * ou + ou -
146 !
147 ! Superpositions
148 !
149 INTEGER :: NLOOPSUPER     ! Indice de boucle des superpositions dans pg pal
150 LOGICAL :: LSUPERDIA
151 INTEGER :: NSUPERDIA
152 ! Fev 2001
153 CHARACTER(LEN=600),DIMENSION(100) :: CARSUP
154 !CHARACTER(LEN=240),DIMENSION(50) :: CARSUP
155 INTEGER,DIMENSION(100) :: NFILESCUR
156 !
157 ! Cas superpositions CV 3D + PH 2D Hor. (Oct 2000)
158 ! D'une maniere generale superp. coupes =/=
159 ! Conventions actuelles . 1 pour 1 CV 1+2=3 pour CV+K=PH
160 !
161 INTEGER,DIMENSION(100),SAVE :: NHISTORY=0
162 REAL, SAVE   :: XLWPH1=2,XLWPH2=2,XLWPH3=2,XLWPH4=2,XLWPH5=2,XLWPH6=2
163 REAL, SAVE   :: XLWPH7=2,XLWPH8=2
164 !
165 ! Temps
166 !
167 ! Les 2 derniers indices = superpositions + n.traj ou station...
168 ! 23/04/03 dim. n augmentee de 20 a 45
169 ! 17/01/05 dim. n augmentee de 45 a 100
170 LOGICAL,DIMENSION(100,100)           :: LTIMEDIALL, LTINCRDIA     
171
172 INTEGER,DIMENSION(100,100)           :: NBTIMEDIA
173
174 INTEGER, DIMENSION(120,100,100)  :: NTIMEDIA
175
176 REAL, DIMENSION(120,100,100)     :: XTIMEDIA
177 !
178 ! Processus
179 !
180 ! Dernier indice = superpositions
181 LOGICAL,DIMENSION(100)           :: LPROCDIALL, LPINCRDIA
182
183 INTEGER,DIMENSION(100)           :: NBPROCDIA
184
185 INTEGER, DIMENSION(120,100)  :: NPROCDIA
186 !
187 ! Niveaux K
188 !
189 ! Les 2 derniers indices = superpositions + n.traj ou station...
190 ! 10/10/07 dim. 1 augmentee de 120 a 160 (nb de niveaux K)
191 LOGICAL,DIMENSION(100,100)           :: LVLKDIALL, LKINCRDIA
192
193 INTEGER,DIMENSION(100,100)           :: NBLVLKDIA
194
195 INTEGER, DIMENSION(160,100,100)  :: NLVLKDIA
196 !
197 ! Niveaux Z
198 !
199 LOGICAL,DIMENSION(100)           :: LZINCRDIA
200
201 INTEGER,DIMENSION(100)           :: NBLVLZDIA
202
203 INTEGER, DIMENSION(120,100)  :: NLVLZDIA
204
205 REAL, DIMENSION(120,100)  :: XLVLZDIA
206 !
207 ! Numeros masques ou trajectoires
208 !
209 LOGICAL,DIMENSION(100)           :: LNDIALL, LNINCRDIA
210
211 INTEGER,DIMENSION(100)           :: NBNDIA
212
213 INTEGER, DIMENSION(120,100)  :: NNDIA
214 !
215 ! Nom du groupe
216 !
217 CHARACTER(LEN=100) :: CTIMECS
218 CHARACTER(LEN=16) :: CGROUP, CTIMEC
219 CHARACTER(LEN=22) :: CUNITGAL
220 CHARACTER(LEN=40) :: CTITGAL
221 CHARACTER(LEN=16),DIMENSION(100) :: CGROUPS
222 !
223 ! Intervalle des isocontours , extremes ou valeurs
224 !
225 REAL      :: XDIAINT
226 REAL      :: XISOMIN, XISOMAX
227 REAL,DIMENSION(300) :: XISOLEV
228 REAL      :: XISOREF
229 !
230 ! Nb chiffres signicatifs pour les High and Low isocontours + cste(champ cst)
231 !
232 INTEGER,SAVE :: NSD=0
233 CHARACTER(LEN=10),SAVE :: CFMTMNMX=' '
234 !
235 ! Formats axe X et axe Y et possibilite de * par un facteur ou donner bornes
236 !
237 LOGICAL,SAVE :: LFMTAXEX=.FALSE., LFMTAXEY=.FALSE.
238 CHARACTER(LEN=10),SAVE :: CFMTAXEX=' ', CFMTAXEY=' '
239 ! Taille des labels= NSZLBX/1024 et NSZLBY/1024
240 INTEGER,SAVE :: NSZLBX=10, NSZLBY=10
241
242 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
243 !! 19/12/2008 : modification pour controler la taille et le format des labels !!
244 !! pour les retrotrajectoires                                                 !!
245 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
246
247 !
248 ! Formats labels pour retrotrajectoire (ctraj3d_group)
249 !
250 LOGICAL,SAVE :: LFMTRTRAJ=.FALSE.
251 CHARACTER(LEN=10),SAVE :: CFMTRTRAJ='(E10.5)'
252 REAL,SAVE :: NSZRTRAJ=10.
253 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
254
255 ! Mars 2001
256 LOGICAL,SAVE :: LFACTAXEX=.FALSE., LFACTAXEY=.FALSE.
257 LOGICAL,SAVE :: LAXEXUSER=.FALSE., LAXEYUSER=.FALSE.
258 REAL,   SAVE :: XFACTAXEX=1., XFACTAXEY=1.
259 REAL,   SAVE :: XAXEXUSERD=1., XAXEXUSERF=1.
260 REAL,   SAVE :: XAXEYUSERD=1., XAXEYUSERF=1.
261 !
262 ! Profil vertical: indice en X dans la CV (NLMAX,IKU)
263 !
264 INTEGER   :: NPROFILE
265 !
266 ! PV Bornes en X
267 REAL      :: XPVMINTRUE, XPVMAXTRUE  ! Fournies par l'utilisateur
268 REAL      :: XPVMINT, XPVMAXT        ! Fournies par l'utilisateur (Bornes ident.
269 !
270 ! PV Epaisseur traits des =/= profils et figures
271 REAL,save :: XLWPV1=0., XLWPV2=0., XLWPV3=0., XLWPV4=0.
272 REAL,save :: XLWPV5=0., XLWPV6=0., XLWPV7=0., XLWPV8=0.
273 !*JD*Mars2009 Pour les budgets
274 REAL,save :: XLWPV9=0., XLWPV10=0., XLWPV11=0., XLWPV12=0.
275 REAL,save :: XLWPV13=0., XLWPV14=0., XLWPV15=0.
276 !*JD*Mars2009 Pour les budgets
277 REAL,save :: XSTYLPV1=0., XSTYLPV2=0., XSTYLPV3=0., XSTYLPV4=0.
278 REAL,save :: XSTYLPV5=0., XSTYLPV6=0., XSTYLPV7=0., XSTYLPV8=0.
279 !*JD*Mars2009 Pour les budgets
280 REAL,save :: XSTYLPV9=0., XSTYLPV10=0., XSTYLPV11=0., XSTYLPV12=0.
281 REAL,save :: XSTYLPV13=0., XSTYLPV14=0., XSTYLPV15=0.
282 !*JD*Mars2009 Pour les budgets
283 ! PV =/= entre parametre de GSLN pour 1 PV si > 4 (valeur max autorisee) et 1
284 ! pour assurer le passage de cette valeur entre trapro et pro1d
285 INTEGER,save :: NGSLNP=0
286 !
287 !*JD*Mars2009 Gestion nom variables + position + taille
288 !*JD*Mars2009
289 LOGICAL,SAVE :: LVARNPVUSER=.FALSE.
290 CHARACTER(LEN=22),SAVE :: CVARNPV1=' ',CVARNPV2=' ',CVARNPV3=' ',CVARNPV4=' '
291 CHARACTER(LEN=22),SAVE :: CVARNPV5=' ',CVARNPV6=' ',CVARNPV7=' ',CVARNPV8=' '
292 CHARACTER(LEN=22),SAVE :: CVARNPV9=' ',CVARNPV10=' ',CVARNPV11=' ',CVARNPV12=' '
293 CHARACTER(LEN=22),SAVE :: CVARNPV13=' ',CVARNPV14=' ',CVARNPV15=' '
294 REAL,save :: XSZVARNPVTOP=0.,XSZVARNPVBOT=0.
295 REAL,save :: XPOSXVARNPV1TOP=0.,XPOSXVARNPV5BOT=0.
296 REAL,save :: XPOSYVARNPV1TOP=0.,XPOSYVARNPV5BOT=0.
297 !*JD*Mars2009  Ligne Zero sur PV
298 LOGICAL,SAVE :: LINZEROPV=.FALSE.
299 INTEGER,SAVE    :: NSTYLINZEROPV=1
300 !*JD*Mars2009 
301 LOGICAL,SAVE :: LCONVG2MASS
302 !*JD*Mars2009 
303 LOGICAL,SAVE :: LVARNPHUSER=.FALSE.
304 CHARACTER(LEN=22),SAVE :: CVARNPH1=' ',CVARNPH2=' ',CVARNPH3=' ',CVARNPH4=' '
305 CHARACTER(LEN=22),SAVE :: CVARNPH5=' ',CVARNPH6=' ',CVARNPH7=' ',CVARNPH8=' '
306 ! pour plusieurs variables
307 !
308 ! PVKT + FT  Bornes en Y des processus
309 REAL      :: XPVMIN, XPVMAX          ! Calculees par le programme
310
311 ! Zones de recouvrement
312 INTEGER,SAVE   :: NBRECOUV
313 INTEGER,DIMENSION(20),SAVE  :: NRECOUV
314 !Mai 2000
315 ! FT + PVKT + FT1 Epaisseur des traits de l'ensemble des traces
316 ! Presence de valeurs manquantes
317 !
318 REAL,SAVE      :: XLWFTALL=2.
319 REAL,SAVE      :: XSPVALT
320 LOGICAL,SAVE   :: LSPVALT=.FALSE.
321 !
322 ! FT + PVKT + FT1 Bornes des variables en X (Temps)
323 LOGICAL,SAVE        :: LTIMEUSER=.FALSE.
324 LOGICAL,SAVE        :: LFTCLIP=.TRUE.  ! pour desactiver le clipping 
325 ! cas LTIMEUSER=F et LMNMXUSER=F pour eviter la disparition de traits 
326 !aux bornes lors conversion en PS
327 REAL,SAVE      :: XTIMEMIN, XTIMEMAX
328 !
329 ! FT + PVKT + FT1 Bornes des variables en Y, Noms des variables, Nb de variables
330 REAL,SAVE      :: XFTMIN, XFTMAX, XPVKTMIN, XPVKTMAX ! Fournies par l'utilisateur
331 REAL,SAVE      :: XFT1MIN, XFT1MAX ! Fournies par l'utilisateur cas +sieurs var.
332 REAL,DIMENSION(:),ALLOCATABLE,SAVE :: XFTMN, XFTMX
333 INTEGER,DIMENSION(:),ALLOCATABLE,SAVE :: NCOLI
334 CHARACTER(LEN=100),DIMENSION(:),ALLOCATABLE,SAVE :: CFTMN, CFTMX, CCOLI
335 INTEGER,SAVE   :: NBFTMN=0, NBFTMX=0, NBCOLI=0
336 INTEGER,SAVE   :: NCOLIVAL
337 LOGICAL,SAVE        :: LMNMXUSER=.FALSE.
338 LOGICAL,SAVE        :: LCOLUSER=.FALSE.
339 LOGICAL,SAVE   :: LOK=.FALSE.
340 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
341 !
342 ! FT1 Format courbes par USER (JD 240209) et nom variables representees
343 ! le tout controle par LFT1LUSER=T (et LCOLINE=T pour les entiers et reels)
344 !
345 LOGICAL,SAVE        :: LFT1LUSER=.FALSE.
346 INTEGER,SAVE   :: NFT1COL1=0, NFT1COL2=0, NFT1COL3=0, NFT1COL4=0, NFT1COL5=0
347 INTEGER,SAVE   :: NFT1COL6=0, NFT1COL7=0, NFT1COL8=0, NFT1COL9=0, NFT1COL10=0
348 INTEGER,SAVE   :: NFT1COL11=0, NFT1COL12=0, NFT1COL13=0, NFT1COL14=0, NFT1COL15=0
349 !
350 REAL,SAVE      :: XFT1LW1=2.,XFT1LW2=2.,XFT1LW3=2.,XFT1LW4=2.,XFT1LW5=2.
351 REAL,SAVE      :: XFT1LW6=2.,XFT1LW7=2.,XFT1LW8=2.,XFT1LW9=2.,XFT1LW10=2.
352 REAL,SAVE      :: XFT1LW11=2.,XFT1LW12=2.,XFT1LW13=2.,XFT1LW14=2.,XFT1LW15=2.
353 !
354 INTEGER,SAVE      :: NFT1STY1=1,NFT1STY2=1,NFT1STY3=1,NFT1STY4=1,NFT1STY5=1
355 INTEGER,SAVE      :: NFT1STY6=1,NFT1STY7=1,NFT1STY8=1,NFT1STY9=1,NFT1STY10=1
356 INTEGER,SAVE      :: NFT1STY11=1,NFT1STY12=1,NFT1STY13=1,NFT1STY14=1,NFT1STY15=1
357 !
358 CHARACTER(LEN=10) :: CFT1TIT1='          ',CFT1TIT2='          ', &
359 CFT1TIT3='          ',CFT1TIT4='          ',CFT1TIT5='          '
360 CHARACTER(LEN=10) :: CFT1TIT6='          ',CFT1TIT7='          ', &
361 CFT1TIT8='          ',CFT1TIT9='          ',CFT1TIT10='          '
362 CHARACTER(LEN=10) :: CFT1TIT11='          ',CFT1TIT12='          ', &
363 CFT1TIT13='          ',CFT1TIT14='          ',CFT1TIT15='          '
364 !
365 ! FT1 gestion de la fenetre par l utilisateur
366 !
367 LOGICAL,SAVE   :: LVPTFT1USER=.FALSE.
368 REAL,SAVE      :: XVPTFT1L,XVPTFT1R,XVPTFT1B,XVPTFT1T
369 !
370 ! Pour supprimer les labels a droite du dessin cas FT1 (je ne sais pas pour FT)
371 !
372 LOGICAL,SAVE   :: LBLFT1SUP=.FALSE.
373 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
374 ! JD Avril 2009
375 ! Trace filaire 2D Suppression des noms de var. et leur figure en Top
376 LOGICAL,SAVE   :: LXYNVARTOP=.TRUE.
377 LOGICAL,SAVE   :: LXYSTYLTOP=.TRUE.
378 LOGICAL,SAVE   :: LPHCOLUSER=.FALSE.
379 LOGICAL,SAVE   :: LPHSTYUSER=.FALSE.
380 INTEGER,SAVE      :: NPHSTY1=1,NPHSTY2=1,NPHSTY3=1,NPHSTY4=1,NPHSTY5=1
381 INTEGER,SAVE      :: NPHSTY6=1,NPHSTY7=1,NPHSTY8=1
382 INTEGER,SAVE      :: NPHCOL1=1,NPHCOL2=1,NPHCOL3=1,NPHCOL4=1,NPHCOL5=1
383 INTEGER,SAVE      :: NPHCOL6=1,NPHCOL7=1,NPHCOL8=1
384 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
385 !
386 ! Isocontours : cas NIMNMX=1 
387 !
388 REAL,DIMENSION(:),ALLOCATABLE,SAVE :: XISOMN, XISOMX, XISOINT
389 CHARACTER(LEN=100),DIMENSION(:),ALLOCATABLE,SAVE :: CISOMN, CISOMX, CISOINT
390 INTEGER,SAVE   :: NBISOMN, NBISOMX, NBISOINT
391 LOGICAL        :: LISOK=.FALSE.
392 !
393 ! Isocontours : cas NIMNMX=2 
394 !
395 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: XISOLEVP
396 INTEGER,DIMENSION(:),ALLOCATABLE,SAVE :: NLENP
397 CHARACTER(LEN=100),DIMENSION(:),ALLOCATABLE,SAVE :: CISOLEVP
398 INTEGER,SAVE   :: NBISOLEVP
399 LOGICAL        :: LISOLEVP=.FALSE.
400 !
401 ! Isocontours : cas NIMNMX=3 
402 !
403 REAL,DIMENSION(:),ALLOCATABLE,SAVE :: XISOREFP
404 CHARACTER(LEN=100),DIMENSION(:),ALLOCATABLE,SAVE :: CISOREF
405 INTEGER,SAVE   :: NBISOREF
406 LOGICAL        :: LISOREF=.FALSE.
407 !
408 ! Isocontours : epaisseurs des traits en cas de superpositions ou non
409 !
410 REAL,save      :: XLW1, XLW2, XLW3, XLW4
411 ! Epaisseur traits continents
412 REAL,save      :: XLWCONT=0.
413 !
414 ! LXY=.TRUE.    Bornes en Y
415 REAL,SAVE      :: XVARMIN=0., XVARMAX=0.
416 !
417 ! LZT=.TRUE.    Bornes en Y
418 REAL,SAVE      :: XZTMIN=0., XZTMAX=0.
419 !
420 ! Sommes et differences
421 !
422 INTEGER        :: NBPM          ! Nb de sommes et differences et superpositions 
423 INTEGER        :: NBPMT         ! Nb de sommes et differences
424 INTEGER,DIMENSION(99)   :: NUMPM  ! 1 --> +   2 --> -   0 --> rien
425 !
426 ! Vents /= vent normal : suffixe
427 !
428 CHARACTER(LEN=2),SAVE :: CSUFWIND='  '
429 INTEGER,SAVE          :: NSUFWIND=0
430 !
431 LOGICAL :: LSYMBT
432 INTEGER,SAVE          :: NCOLSYMB, NTYPSYMB
433 !
434 ! Spectres
435 !
436 LOGICAL,SAVE  :: LINDSP=.FALSE.
437 LOGICAL,SAVE  :: LOGNEP=.TRUE.
438 LOGICAL,SAVE  :: LM5S3=.FALSE.
439 LOGICAL,SAVE  :: LSPMNMXUSER=.FALSE., LSPMNMXALLT=.FALSE.
440 LOGICAL,SAVE  :: LSPLO=.FALSE., LSPO=.FALSE., LOSPLO=.FALSE., LPHALO=.FALSE., LPHAO=.FALSE.
441 LOGICAL,SAVE  :: LSPSECT=.FALSE., LSPSECTXY=.FALSE., LSPSECTXZ=.FALSE., LSPSECTYZ=.FALSE.
442 LOGICAL,SAVE  :: LSPX=.FALSE., LSPY=.FALSE., LSPZ=.FALSE.
443 REAL          :: XOMEGAX, XOMEGAY, XOMEGAZ
444 REAL,SAVE     :: XSPMIN=0., XSPMAX=0.
445
446 LOGICAL,SAVE  :: LBID
447 !
448 ! Table de couleurs N2
449 !
450 LOGICAL,SAVE  :: LTABCOLDEF2=.FALSE.
451 !
452 ! Trajectoires
453 !
454 LOGICAL,SAVE  :: LCONV2XY=.FALSE., LCONT=.FALSE., LRELIEF=.FALSE.
455 ! L2CONT pour trace comme anterieurement des continents 2fois (Septembre 2000)
456 LOGICAL,SAVE  :: L2CONT=.FALSE.
457 INTEGER,SAVE  :: NLATLON
458 !
459 INTEGER,SAVE  :: NVERBIA=0, NSSPG=0
460 ! LINVWB=.FALSE. (1,0,0.,0.,0.), (1,1,1.,1.,1.)
461 ! LINVWB=.TRUE. (1,1,0.,0.,0.), (1,0,1.,1.,1.)
462 ! Definition Noir et Blanc
463 LOGICAL,SAVE  :: LINVWB=.TRUE.
464 !
465 LOGICAL,SAVE  :: LISOWHI2=.FALSE., LISOWHI3=.FALSE.
466 !
467 ! Vecteurs vent (Les autres parametres de meme type sont ds MODN_NCAR)
468 ! = valeur en deca de laquelle les vecteurs ne st pas representes
469 REAL,SAVE :: XVLC=0.
470 !
471 ! Textes + symboles a ajouter a des plans horizontaux localises
472 ! a XLATCAR,XLONCAR (definis dans MODN_NCAR)
473 !
474 CHARACTER(LEN=20),DIMENSION(400) :: CNOMCAR=' '
475 CHARACTER(LEN=1),DIMENSION(400) :: CSYMCAR='.'
476 REAL,DIMENSION(400)              :: XPOSNOM=90.
477 REAL,DIMENSION(400)              :: XSZNOM=.012
478 REAL,DIMENSION(400)              :: XSZSYM=.012
479 INTEGER,DIMENSION(400)              :: ICOLSYM=1
480 INTEGER,DIMENSION(400)              :: ICOLNOM=1
481 INTEGER                         :: NOMCAR, NSYMCAR, NPOSNOM
482 INTEGER                         :: NSZNOM, NSZSYM, NCOLSYM, NCOLNOM
483 !
484 ! Tableau utilise ds imcoupv pour charger les composantes u et v (UMVM_PVT_)
485 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: XTEM2D, XTEM2D2
486 LOGICAL,DIMENSION(:),ALLOCATABLE,SAVE :: LUMVMPVT
487 LOGICAL,SAVE                          :: LUMVMPV=.FALSE.
488
489 ! Logique de gestion d'interpolation a partir du haut ou du bas
490 !
491 LOGICAL,SAVE                          :: LINTERPTOP=.TRUE.
492 ! Logique precisant que l'on demande les niv. des CH en reel
493 LOGICAL,SAVE                          :: LCHREEL=.FALSE.
494 !
495 ! Profils horizontaux 07042000 pour trace UTVT ou UMVM  pour recuperer
496 ! les coordonnees du debut des fleches
497 !
498 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: XTEMCVU, XTEMCVV
499 ! PH UTVT et UMVM pour expression des X en heures
500 ! Ajoute ds imcou pour _PVT_ et LHEURX=T en Mai 2000
501 LOGICAL,SAVE                          :: LHEURX=.TRUE.
502 LOGICAL,SAVE                          :: LMYHEURX=.FALSE.
503 INTEGER,SAVE                          :: NHEURXLBL=2
504 INTEGER,SAVE                          :: NHEURXGRAD=1
505 ! Avril 2009 ds imcou pour _PVT_
506 ! Possibilite mettre des temps exprimes sous forme hhHmm dont les bornes
507 ! sont fournies par utilisateur dans XAXUSERD= et XAXUSERF=(reels a 2 decimales)
508 ! avec LAXEXUSER=T LHEURX=T et LNOLABELX=T
509 ! Borne de fin toujours > borne debut mais si on veut une expression 
510 ! des heures entre 0 et 24H , on met L24H=T
511 LOGICAL,SAVE                          :: L24H=.FALSE.
512 ! Avril 2009 ds imcou pour _PVT_
513 ! Mai 2009 ds image + imcou
514 LOGICAL,SAVE                          :: LNOLBLBAR=.FALSE.
515 ! Mai 2009 ds image + imcou
516 ! Avril 2002 lat,lon CV et PH
517 REAL,DIMENSION(:),ALLOCATABLE,SAVE :: XLATCV, XLONCV
518
519 ! Limites du domaine fils sur le domaine pere. 
520 ! Fournies en indices de grille du domaine pere
521 !
522 LOGICAL,SAVE         :: LDOMAIN=.FALSE.
523 INTEGER,SAVE         :: NDOMAINL=1, NDOMAINR=1, NDOMAINB=1, NDOMAINT=1
524 REAL,SAVE            :: XLWDOMAIN=2.
525 !
526 ! Trace segment de dte sur une coupe horizontale en proj. cart
527 !
528 LOGICAL,SAVE         :: LSEGM=.FALSE.
529 ! Elements du tableau entiers mis a 1 si XSEGMx =/= 0
530 INTEGER,DIMENSION(100),SAVE  :: NSEGMS=0
531 ! nb couleurs lues
532 INTEGER,SAVE                :: NCOLSEGM=1
533 ! Numeros des couleurs
534 INTEGER,DIMENSION(30),SAVE                :: NCOLSEGMS=1
535 ! Couples lat,long extremites de segments de dte .
536 ! Si =0,0 discontinuite ds les segments (plume levee!!)
537 !REAL,DIMENSION(2),SAVE  :: XSEGM1=0.,XSEGM2=0.,XSEGM3=0.,XSEGM4=0.,XSEGM5=0.
538 !REAL,DIMENSION(2),SAVE  :: XSEGM6=0.,XSEGM7=0.,XSEGM8=0.,XSEGM9=0.,XSEGM10=0.
539 !REAL,DIMENSION(2),SAVE  :: XSEGM11=0., XSEGM12=0., XSEGM13=0., XSEGM14=0.
540 REAL,DIMENSION(100,2),SAVE  :: XCONFSEGMS=0., XSEGMS=0.
541 REAL,SAVE            :: XLWSEGM=2.
542 !
543 ! Logique d'inversion des pointilles et tiretes pour les isocontours N/B
544 !
545 LOGICAL,SAVE         :: LINVPTIR=.FALSE.
546 ! 15052000 
547 ! Pour impression de la fenetre papier courante
548 !
549 REAL,SAVE            :: XCURVPTL, XCURVPTR, XCURVPTB, XCURVPTT
550 ! Pour ecriture des dates dans le fichier FICVAL
551 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE  ::  XPRDAT
552 !
553 ! Ajout constante de temps pour ch courbe FT PVKT PVKT1
554 REAL,SAVE            :: XFT_ADTIM1=0
555 REAL,SAVE            :: XFT_ADTIM2=0
556 REAL,SAVE            :: XFT_ADTIM3=0
557 REAL,SAVE            :: XFT_ADTIM4=0
558 REAL,SAVE            :: XFT_ADTIM5=0
559 REAL,SAVE            :: XFT_ADTIM6=0
560 REAL,SAVE            :: XFT_ADTIM7=0
561 REAL,SAVE            :: XFT_ADTIM8=0
562 !
563 ! Ajout constante de temps pour ch courbe FT1
564 REAL,SAVE            :: XFT1_ADTIM1=0
565 REAL,SAVE            :: XFT1_ADTIM2=0
566 REAL,SAVE            :: XFT1_ADTIM3=0
567 REAL,SAVE            :: XFT1_ADTIM4=0
568 REAL,SAVE            :: XFT1_ADTIM5=0
569 REAL,SAVE            :: XFT1_ADTIM6=0
570 REAL,SAVE            :: XFT1_ADTIM7=0
571 REAL,SAVE            :: XFT1_ADTIM8=0
572 !
573 ! FT PVKT 3 ou 4 courbes / 1 diagramme (meme parametre avec bornes fixees)
574 LOGICAL,SAVE         :: LFT3C=.FALSE., LFT4C=.FALSE.
575
576 ! FT PVKT FT1 PVKT1 bornes calculees avec min et max effectifs
577 !(pour evol. temp. ds varfct)
578 LOGICAL,SAVE         :: LFTBAUTO=.FALSE.
579 LOGICAL,SAVE         :: LFT1BAUTO=.FALSE.
580 !
581 !NOVEMBRE 2009 : ajout de l apossibilit√© de tourner les titres en Y
582 LOGICAL,SAVE            ::L90TITYT=.FALSE.
583 LOGICAL,SAVE            ::L90TITYM=.FALSE.
584 LOGICAL,SAVE            ::L90TITYB=.FALSE.
585 LOGICAL,SAVE            ::LPATCH=.FALSE.
586
587 !
588 END MODULE MODD_RESOLVCAR