updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / dyn_em / module_solvedebug_em.F
bloba6500d46fbe206c440302b429f061b746df7275f
1 !WRF:MEDIATION_LAYER:UTIL
4 MODULE module_solvedebug_em
5 CONTAINS
6       SUBROUTINE var_min_max( u,v,w,t,r,                  &
7                               ids,ide, jds,jde, kds,kde,  & ! domain dims
8                               ims,ime, jms,jme, kms,kme,  & ! memory dims
9                               ips,ipe, jps,jpe, kps,kpe,  & ! patch  dims
10                               its,ite, jts,jte, kts,kte )
12       IMPLICIT NONE
14       INTEGER,      INTENT(IN   )    :: ids,ide, jds,jde, kds,kde
15       INTEGER,      INTENT(IN   )    :: ims,ime, jms,jme, kms,kme
16       INTEGER,      INTENT(IN   )    :: ips,ipe, jps,jpe, kps,kpe
17       INTEGER,      INTENT(IN   )    :: its,ite, jts,jte, kts,kte
19       REAL,  DIMENSION( kms: , ims: , jms: ), &
20                    INTENT(IN) :: u,v,w,t,r
22       INTEGER  :: i, j, k, istag, jstag, imax, imin, jmax, jmin, &
23                   kmax, kmin
25       REAL :: vmax, vmin, vavg
27       vmin = u(1,1,1)
28       vmax = u(1,1,1)
29       vavg = 0.
30       imax = 1
31       imin = 1
32       jmax = 1
33       jmin = 1
34       kmax = 1
35       kmin = 1
37       do j=jps,jpe-1
38       do i=ips,ipe
39       do k=kps,kpe-1
40         if(u(k,i,j) .gt. vmax) then
41           vmax = u(k,i,j)
42           imax = i
43           jmax = j
44           kmax = k
45          endif
47         if(u(k,i,j) .lt. vmin) then
48           vmin = u(k,i,j)
49           imin = i
50           jmin = j
51           kmin = k
52          endif
53         vavg = vavg + abs(u(k,i,j))
54       enddo
55       enddo
56       enddo
57       vavg = vavg/float((ipe-ips)*(jpe-jps-1)*(kpe-kps-1))
58       write(6,*) ' ru min,max,avg ',vmin,vmax,vavg
59       write(6,*) kmax, imax, jmax, kmin, imin, jmin
62       vmin = v(1,1,1)
63       vmax = v(1,1,1)
64       vavg = 0.
65       imax = 1
66       imin = 1
67       jmax = 1
68       jmin = 1
69       kmax = 1
70       kmin = 1
72       do j=jps,jpe
73       do i=ips,ipe-1
74       do k=kps,kpe-1
75         if(v(k,i,j) .gt. vmax) then
76           vmax = v(k,i,j)
77           imax = i
78           jmax = j
79           kmax = k
80         endif
81         if(v(k,i,j) .lt. vmin) then
82           vmin = v(k,i,j)
83           imin = i
84           jmin = j
85           kmin = k
86         endif
87         vavg = vavg + abs(v(k,i,j))
88       enddo
89       enddo
90       enddo
91       vavg = vavg/float((ipe-ips-1)*(jpe-jps)*(kpe-kps-1))
92       write(6,*) ' rv min,max,avg ',vmin,vmax,vavg
93       write(6,*) kmax, imax, jmax, kmin, imin, jmin
97       vmin = w(1,1,1)
98       vmax = w(1,1,1)
99       vavg = 0.
100       imax = 1
101       imin = 1
102       jmax = 1
103       jmin = 1
104       kmax = 1
105       kmin = 1
107       do j=jps,jpe-1
108       do i=ips,ipe-1
109       do k=kps,kpe
110         if(w(k,i,j) .gt. vmax) then
111           vmax = w(k,i,j)
112           imax = i
113           jmax = j
114           kmax = k
115         endif
116         if(w(k,i,j) .lt. vmin) then
117           vmin = w(k,i,j)
118           imin = i
119           jmin = j
120           kmin = k
121         endif
122         vavg = vavg + abs(w(k,i,j))
123       enddo
124       enddo
125       enddo
126       vavg = vavg/float((ipe-ips-1)*(jpe-jps-1)*(kpe-kps))
127       write(6,*) ' rom min,max,avg ',vmin,vmax,vavg
128       write(6,*) kmax, imax, jmax, kmin, imin, jmin
132       vmin = t(1,1,1)
133       vmax = t(1,1,1)
134       vavg = 0.
135       imax = 1
136       imin = 1
137       jmax = 1
138       jmin = 1
139       kmax = 1
140       kmin = 1
142       do j=jps,jpe-1
143       do i=ips,ipe-1
144       do k=kps,kpe-1
145         if(t(k,i,j) .gt. vmax) then
146           vmax = t(k,i,j)
147           imax = i
148           jmax = j
149           kmax = k
150         endif
151         if(t(k,i,j) .lt. vmin) then
152           vmin = t(k,i,j)
153           imin = i
154           jmin = j
155           kmin = k
156         endif
157         vavg = vavg + abs(t(k,i,j))
158       enddo
159       enddo
160       enddo
161       vavg = vavg/float((ipe-ips-1)*(jpe-jps-1)*(kpe-kps-1))
162       write(6,*) ' rtp min,max,avg ',vmin,vmax,vavg
163       write(6,*) kmax, imax, jmax, kmin, imin, jmin
167       vmin = r(1,1,1)
168       vmax = r(1,1,1)
169       vavg = 0.
170       imax = 1
171       imin = 1
172       jmax = 1
173       jmin = 1
174       kmax = 1
175       kmin = 1
177       do j=jps,jpe-1
178       do i=ips,ipe-1
179       do k=kps,kpe-1
180         if(r(k,i,j) .gt. vmax) then
181           vmax = r(k,i,j)
182           imax = i
183           jmax = j
184           kmax = k
185         endif
186         if(r(k,i,j) .lt. vmin) then
187           vmin = r(k,i,j)
188           imin = i
189           jmin = j
190           kmin = k
191         endif
192         vavg = vavg + abs(r(k,i,j))
193       enddo
194       enddo
195       enddo
196       vavg = vavg/float((ipe-ips-1)*(jpe-jps-1)*(kpe-kps-1))
197       write(6,*) ' rhop min,max,avg ',vmin,vmax,vavg
198       write(6,*) kmax, imax, jmax, kmin, imin, jmin
200       return
201       end subroutine var_min_max
203       SUBROUTINE var1_min_max( u, &
204                               ids,ide, jds,jde, kds,kde,  & ! domain dims
205                               ims,ime, jms,jme, kms,kme,  & ! memory dims
206                               ips,ipe, jps,jpe, kps,kpe,  & ! patch  dims
207                               its,ite, jts,jte, kts,kte )
209       IMPLICIT NONE
211       INTEGER,      INTENT(IN   )    :: ids,ide, jds,jde, kds,kde
212       INTEGER,      INTENT(IN   )    :: ims,ime, jms,jme, kms,kme
213       INTEGER,      INTENT(IN   )    :: ips,ipe, jps,jpe, kps,kpe
214       INTEGER,      INTENT(IN   )    :: its,ite, jts,jte, kts,kte
216       REAL,  DIMENSION(kms: , ims: , jms: ), &
217                    INTENT(IN) :: u
219       INTEGER  :: i, j, k, istag, jstag, imax, imin, jmax, jmin, &
220                   kmax, kmin
222       REAL :: vmax, vmin, vavg
224       write(6,*) ' min, max, and avg stats '
226       vmin = u(1,1,1)
227       vmax = u(1,1,1)
228       vavg = 0.
229       imax = 1
230       imin = 1
231       jmax = 1
232       jmin = 1
233       kmax = 1
234       kmin = 1
236       do j=jps,jpe-1
237       do i=ips,ipe
238       do k=kps,kpe-1
239         if(u(k,i,j) .gt. vmax) then
240           vmax = u(k,i,j)
241           imax = i
242           jmax = j
243           kmax = k
244          endif
246         if(u(k,i,j) .lt. vmin) then
247           vmin = u(k,i,j)
248           imin = i
249           jmin = j
250           kmin = k
251          endif
252         vavg = vavg + abs(u(k,i,j))
253       enddo
254       enddo
255       enddo
256       vavg = vavg/float((ipe-ips)*(jpe-jps-1)*(kpe-kps-1))
257       write(6,*) ' ru max,min,avg ',vmax,vmin,vavg
258       write(6,*) kmax, imax, jmax, kmin, imin, jmin
260       return
261       end subroutine var1_min_max
266       SUBROUTINE var_print ( u, &
267                               ims,ime, jms,jme, kms,kme,  & ! memory dims
268                               ips,ipe, jps,jpe, kps,kpe,  & ! patch  dims
269                               level                )  
271       IMPLICIT NONE
273       INTEGER,      INTENT(IN   )    :: ims,ime, jms,jme, kms,kme
274       INTEGER,      INTENT(IN   )    :: ips,ipe, jps,jpe, kps,kpe
275       INTEGER,      INTENT(IN   )    :: level
277       REAL,  DIMENSION(kms:kme, ims:ime, jms:jme), &
278                    INTENT(IN) :: u
280       INTEGER  :: i, j, k, istag, jstag, it, imax, imin, jmax, jmin, &
281                   kmax, kmin, ii,jj
283       REAL :: vmax, vmin, vavg
285       write(6,*) ' level for print ',level
286       write(6,*) (u(level, ii, 1),ii=1,ipe)
287       write(6,*) (u(level, 1, jj),jj=1,jpe)
289       return
290       end subroutine var_print
292       SUBROUTINE symm_check ( f, &
293                               ids,ide, jds,jde, kds,kde,  & ! domain dims
294                               ims,ime, jms,jme, kms,kme,  & ! memory dims
295                               ips,ipe, jps,jpe, kps,kpe,  & ! patch  dims
296                               level                )  
298       IMPLICIT NONE
300       INTEGER,      INTENT(IN   )    :: ids,ide, jds,jde, kds,kde
301       INTEGER,      INTENT(IN   )    :: ims,ime, jms,jme, kms,kme
302       INTEGER,      INTENT(IN   )    :: ips,ipe, jps,jpe, kps,kpe
303       INTEGER,      INTENT(IN   )    :: level
305       REAL,  DIMENSION(kms:kme, ims:ime, jms:jme), &
306                    INTENT(IN) :: f
308       INTEGER  :: i, j, k, istag, jstag, it, imax, imin, jmax, jmin, &
309                   kmax, kmin, ii,jj
311       REAL :: vmax, vmin, vavg
313       write(6,*) ide,' = ide'
315       do k=kps,kpe
316        do i=ips,ipe
317         do j=jps,jpe
318           if(f(k,i,j).ne.f(k,ide-i,j))print *,' x asymmetry at kij ',k,i,j
319           if(f(k,i,j).ne.f(k,i,jde-j))print *,' y asymmetry at kij ',k,i,j
320         enddo
321        enddo
322       enddo
323       return
324       end subroutine symm_check
325 END MODULE module_solvedebug_em