Philippe 23/02/2016: lfi2cdf: modif for JPHEXT/=1
[MNH-git_open_source-lfs.git] / tools / diachro / src / DIAPRO / tracev_fordiachro.f90
1 !     ######spl
2       MODULE MODI_TRACEV_FORDIACHRO
3 !     #############################
4 !
5 INTERFACE
6 !
7 SUBROUTINE TRACEV_FORDIACHRO(PTEMCV,KLOOP,HTEXT)
8 INTEGER          :: KLOOP
9 CHARACTER(LEN=*) :: HTEXT
10 REAL,DIMENSION(:,:)   :: PTEMCV
11 END SUBROUTINE TRACEV_FORDIACHRO
12 !
13 END INTERFACE
14 END MODULE MODI_TRACEV_FORDIACHRO
15 !     ######spl
16       SUBROUTINE TRACEV_FORDIACHRO(PTEMCV,KLOOP,HTEXT)
17 !     ################################################
18 !
19 !!****  *TRACEV_FORDIACHRO* - Manager for the horizontal cross-section plots
20 !!
21 !!    PURPOSE
22 !!    -------
23 !       In the case of horizontal cross-sections, call the interpolation and
24 !     display routines: - for contour plots
25 !                       - for vector arrow plots
26 !
27 !!**  METHOD
28 !!    ------
29 !!     
30 !!
31 !!    EXTERNAL
32 !!    --------
33 !!    VALNGRID   : retrieves the NGRID grid number when given the variable name
34 !!    COMCOORD   : computes true altitudes corresponding to the NGRID value
35 !!    IMCOU      : contour plot manager for vertical cross-sections
36 !!    IMCOUV     : vector  plot manager for vertical cross-sections
37 !!
38 !!    IMPLICIT ARGUMENTS
39 !!    ------------------
40 !!      Module MODD_TITLE  : Declares heading variables for the plots (TRACE)
41 !!         NCONT  :  Current plot number
42 !!
43 !!      Module MODD_NMGRID : declares global variable  NMGRID (TRACE)
44 !!         NMGRID  : Current MESO-NH grid indicator
45 !!
46 !!      Module MODN_NCAR : defines NAM_DIRTRA_POS namelist
47 !!                         (former NCAR common)
48 !!         NHI        : Extrema detection
49 !!                       (=0 --> H+L, <0 nothing)
50 !!         NDOT       : Line style
51 !!                       (=0|1|1023|65535 --> solid lines;
52 !!                       <0 --> solid lines for positive values and
53 !!                       dotted lines(ABS(NDOT))for negative values;
54 !!                       >0 --> dotted lines(ABS(NDOT)) )
55 !!         XPHINT     : Increment contour value for PHIM, PHIT
56 !!
57 !!      Module MODD_OUT  : defines various logical units and dimensions
58 !!         NIMAXT     : x-size of the displayed section of the MESO-NH arrays
59 !!         NJMAXT     : y-size of the displayed section of the MESO-NH arrays
60 !!         NKMAXT     : z-size of the displayed section of the MESO-NH arrays
61 !!
62 !!      Module MODN_PARA
63 !!         Module MODD_DIM1 : contains dimensions of data arrays
64 !!             NKMAX :  z array dimensions  
65 !!
66 !!      Module MODD_PARAMETERS : Contains array border depths
67 !!         JPVEXT   : Vertical external points number
68 !!
69 !!      Module MODD_SUPER   : defines plot overlay control variables 
70 !!         LSUPER   : =.TRUE. --> plot overlay is active
71 !!                    =.FALSE. --> plot overlay is not active
72 !!         NSUPER   : Rank of the current plot in the overlay
73 !!                    sequence. The initial plot is rank 1.
74 !!
75 !!
76 !!
77 !!    REFERENCE
78 !!    ---------
79 !!
80 !!      MESO-NH User's Manual, TRACE Post Processing sections, Version 1.0:
81 !!       + Book1: Concepts and Fundamentals, to appear in 1994;
82 !!       + Book2: Technical Reference and Flowcharts, to appear in 1994;
83 !!       + Book3: Tutorial, November 1994.
84 !!
85 !!    AUTHOR
86 !!    ------
87 !!      
88 !!      J. Duron    * Laboratoire d'Aerologie *
89 !!
90 !!    MODIFICATIONS
91 !!    -------------
92 !!      Original     
93 !-------------------------------------------------------------------------------
94 !
95 !*       0.    DECLARATIONS
96 !              ------------
97 !
98 USE MODD_TITLE
99 USE MODD_RESOLVCAR
100 USE MODD_ALLOC_FORDIACHRO
101 USE MODD_NMGRID
102 USE MODN_NCAR
103 USE MODD_OUT
104 USE MODD_DIM1
105 USE MODN_PARA
106 USE MODD_SUPER
107 USE MODD_PT_FOR_CH_FORDIACHRO
108 !USE MODI_IMCOU_FORDIACHRO
109
110 IMPLICIT NONE
111 !
112 !*      0.1   Interfaces declaration
113 !
114 INTERFACE
115       SUBROUTINE IMCOU_FORDIACHRO(PTABV,PINT,HLEGEND,HTEXT)
116       CHARACTER(LEN=*)   :: HTEXT, HLEGEND
117       REAL                :: PINT
118       REAL,DIMENSION(:,:) :: PTABV
119       END SUBROUTINE IMCOU_FORDIACHRO
120 END INTERFACE
121 INTERFACE
122       SUBROUTINE IMCOUV_FORDIACHRO(PU,PW,HLEGEND,HTEXT)
123       REAL,DIMENSION(:,:) :: PU,PW
124       CHARACTER(LEN=*)    :: HTEXT
125       CHARACTER(LEN=*)    :: HLEGEND
126       END SUBROUTINE IMCOUV_FORDIACHRO
127 END INTERFACE
128 !
129 !*       0.15 Dummy arguments
130 !          
131 INTEGER          :: KLOOP, JU
132 CHARACTER(LEN=*) :: HTEXT
133 REAL,DIMENSION(:,:)   :: PTEMCV
134 !
135 !*       0.2  local variables
136 !          
137
138 REAL,SAVE         :: ZHMIN, ZHMAX
139 INTEGER          :: IBEGITXT, IENDTXT
140 INTEGER          :: ISTA, IER, INB, IWK, J, II
141
142 CHARACTER(LEN=20) :: YNOM
143
144 !
145 !-------------------------------------------------------------------------------
146 !*       1.3    Interactive option selection and plot overlay management  
147 !
148 !
149 !!!!!!!!!!! 110797
150 IF(NLOOPSUPER == 1)THEN
151 ZHMIN=XHMIN; ZHMAX=XHMAX
152 if(nverbia > 0)then
153   print *,' TRACEV ENTREE XHMIN XHMAX ZHMIN ZHMAX ',XHMIN,XHMAX,ZHMIN,ZHMAX
154 endif
155 ELSE
156   IF(NBPMT > 0)THEN
157   DO J=NLOOPSUPER,1,-1
158     IF(NUMPM(J) /= 0 .AND. NUMPM(J) /= 1 .AND. NUMPM(J) /= 2)THEN
159       II=1
160       EXIT
161     ELSE
162 !     print *,' J NUMPM(J) ',J,NUMPM(J)
163       II=0
164     ENDIF
165   ENDDO
166   IF(II == 0)THEN
167     ZHMIN=XHMIN; ZHMAX=XHMAX
168   if(nverbia > 0)then
169     print *,' TRACEV ENTREE XHMIN XHMAX ZHMIN ZHMAX ',XHMIN,XHMAX,ZHMIN,ZHMAX
170   endif
171   ENDIF
172   ENDIF
173 ENDIF
174 !!!!!!!!!!! 110797
175
176 YNOM=ADJUSTL(CGROUP)
177 IF(YNOM.EQ.'QUIT')THEN
178   CALL GQOPS(ISTA)
179   CALL GQACWK(1,IER,INB,IWK)
180   IF(ISTA >1 .AND. INB >1)THEN
181     CALL GDAWK(2)
182     CALL GCLWK(2)
183   ENDIF
184 ! CALL FRAME
185   CALL NGPICT(1,1)
186   CALL CLSGKS
187   STOP
188 END IF
189 IBEGITXT=1
190 IENDTXT=30
191
192 IF(NSUPERDIA > 1)THEN
193   IF(LMINUS .OR. LPLUS)THEN
194                       IF(NBPM > 1)THEN
195                         DO JU=1,NBPM
196                           IF(NUMPM(JU) == 3)THEN
197                             LSUPER=.TRUE.
198                             EXIT
199                           ELSE
200                             LSUPER=.FALSE.
201                           ENDIF
202                         ENDDO
203                       ELSE
204                         LSUPER=.FALSE.
205                       ENDIF
206   ELSE
207     LSUPER=.TRUE.
208   ENDIF
209 ELSE
210   LSUPER=.FALSE.
211 ENDIF
212 IF(KLOOP == 1)NSUPER=0
213 XLWIDTH=XLWDEF
214 !
215 !*       2.     PROCESSING OF ALL VARIABLES
216 !               ---------------------------
217 !
218 IF(LULMWM .OR. LULTWT)THEN
219
220   CALL IMCOUV_FORDIACHRO(PTEMCV,XWCV,CLEGEND,HTEXT)
221
222 ! Ajout Janvier 2001
223 ELSE IF(LUMVM .OR. LUTVT .OR. LDIRWIND .OR. LSUMVM .OR. LSUTVT)THEN
224   if(nverbia > 0)then
225   print *,' LUMVM LDIRWIND LSUMVM AV CALL IMCOUV_FORDIACHRO ds TRACEV ',LUMVM,LDIRWIND,LSUMVM
226   endif
227   CALL IMCOUV_FORDIACHRO(PTEMCV,XWCV,CLEGEND,HTEXT)
228  
229 ELSE IF((LDIRWM .AND. .NOT.LDIRWIND) .OR. (LDIRWT .AND. .NOT.LDIRWIND))THEN
230   if(nverbia > 0)then
231   print *,' tracev LDIRWM LDIRWT LDIRWIND AV call imcou_fordiachro ',LDIRWM,LDIRWT,LDIRWIND
232   print *,' tracev SIZE(PTEMCV) AV call imcou_fordiachro ',SIZE(PTEMCV,1),SIZE(PTEMCV,2)
233   endif
234   CALL IMCOU_FORDIACHRO(PTEMCV,XDIAINT,CLEGEND,HTEXT)
235 ELSE
236
237   CALL COMPCOORD_FORDIACHRO(NMGRID)
238 !print *,' ZSTAB'
239 !print *,ZSTAB
240 !REGLER LE PB DE L'INTERVALLE
241   CALL IMCOU_FORDIACHRO(PTEMCV,XDIAINT,CLEGEND,HTEXT)
242 !
243 ENDIF
244 IF(ALLOCATED(XWCV))THEN
245   DEALLOCATE(XWCV)
246 ENDIF
247
248 IF(.NOT.LSUPER .OR. (LSUPER .AND. NLOOPSUPER == NSUPERDIA))THEN
249   XHMIN=ZHMIN; XHMAX=ZHMAX
250 if(nverbia > 0)then
251   print *,' TRACEV SORTIE XHMIN XHMAX ZHMIN ZHMAX ',XHMIN,XHMAX,ZHMIN,ZHMAX
252 endif
253 ENDIF
254 !
255   RETURN
256 !------------------------------------------------------------------------------
257 !
258 !*     5.       EXIT
259 !               ----
260 !
261 !
262 END SUBROUTINE  TRACEV_FORDIACHRO