1+ module pastr_data_process
2+
3+ use iso_fortran_env, only: wp = > real64
4+
5+ implicit none
6+
7+ real (wp),allocatable ,dimension (:,:,:) :: ro,u1,u2,u3,p,t
8+ real (wp),allocatable ,dimension (:,:) :: ro_xy,u1_xy,u2_xy,u3_xy,p_xy,t_xy
9+
10+ contains
11+
12+ subroutine stats_read_process (mode )
13+
14+ use pastr_commvar, only: im,jm,km
15+ use pastr_io, only : read_stats
16+
17+ character (len=* ),intent (in ) :: mode
18+
19+ if (mode==' meanflow' .or. mode==' all' ) then
20+
21+ allocate ( ro(0 :im,0 :jm,0 :km),u1(0 :im,0 :jm,0 :km), &
22+ u2(0 :im,0 :jm,0 :km),u3(0 :im,0 :jm,0 :km), &
23+ p(0 :im,0 :jm,0 :km),t(0 :im,0 :jm,0 :km) )
24+
25+ call read_stats(var= ro,varname= ' rom' )
26+ call read_stats(var= u1,varname= ' u1m' )
27+ call read_stats(var= u2,varname= ' u2m' )
28+ call read_stats(var= u3,varname= ' u3m' )
29+ call read_stats(var= p,varname= ' pm' )
30+ call read_stats(var= t,varname= ' tm' )
31+
32+ allocate ( ro_xy(0 :im,0 :jm),u1_xy(0 :im,0 :jm), &
33+ u2_xy(0 :im,0 :jm),u3_xy(0 :im,0 :jm), &
34+ p_xy(0 :im,0 :jm), t_xy(0 :im,0 :jm) )
35+
36+ ro_xy= average(ro)
37+ u1_xy= average(u1)/ ro_xy
38+ u2_xy= average(u2)/ ro_xy
39+ u3_xy= average(u3)/ ro_xy
40+ p_xy= average(p)
41+ t_xy= average(t)/ ro_xy
42+
43+ call write_stats()
44+
45+ call plot_meanflow_xy()
46+
47+ elseif (mode==' 2ndsta' .or. mode==' all' ) then
48+ elseif (mode==' 3rdsta' .or. mode==' all' ) then
49+ elseif (mode==' budget' .or. mode==' all' ) then
50+ else
51+ stop 1
52+ endif
53+
54+ end subroutine stats_read_process
55+
56+ subroutine write_stats
57+
58+ use pastr_commtype, only : tblock
59+ use pastr_commvar, only: im,jm,km
60+ use pastr_multiblock_type, only: block_define
61+ use pastr_h5io
62+
63+ type (tblock),allocatable ,target :: pblocks(:)
64+ integer :: nblocks
65+ logical :: multi_block
66+ integer :: i
67+ type (tblock),pointer :: b
68+
69+ call block_define(multi_block,nblocks,pblocks)
70+
71+ do i= 1 ,nblocks
72+ b= >pblocks(i)
73+ b% nvar= 6
74+ write (b% name,' (A,I5.5)' )' b' ,i
75+ call b% init_data()
76+ b% var(0 :b% im,0 :b% jm,0 ,1 )= ro_xy(b% ilo:b% ihi,b% jlo:b% jhi)
77+ b% var(0 :b% im,0 :b% jm,0 ,2 )= u1_xy(b% ilo:b% ihi,b% jlo:b% jhi)
78+ b% var(0 :b% im,0 :b% jm,0 ,3 )= u2_xy(b% ilo:b% ihi,b% jlo:b% jhi)
79+ b% var(0 :b% im,0 :b% jm,0 ,4 )= u3_xy(b% ilo:b% ihi,b% jlo:b% jhi)
80+ b% var(0 :b% im,0 :b% jm,0 ,5 )= p_xy(b% ilo:b% ihi,b% jlo:b% jhi)
81+ b% var(0 :b% im,0 :b% jm,0 ,6 )= t_xy(b% ilo:b% ihi,b% jlo:b% jhi)
82+ b% varname(1 ) = ' ro'
83+ b% varname(2 ) = ' u'
84+ b% varname(3 ) = ' v'
85+ b% varname(4 ) = ' w'
86+ b% varname(5 ) = ' p'
87+ b% varname(6 ) = ' t'
88+ enddo
89+
90+ call h5_write_blocks(blocks= pblocks,fname= ' Results/mean.fav.zm.h5' )
91+
92+ ! call H5WriteArray(ro_xy,im,jm,'ro','Results/mean.fav.zm.h5')
93+ ! call H5WriteArray(u1_xy,im,jm,'u1','Results/mean.fav.zm.h5')
94+ ! call H5WriteArray(u2_xy,im,jm,'u2','Results/mean.fav.zm.h5')
95+ ! call H5WriteArray(u3_xy,im,jm,'u3','Results/mean.fav.zm.h5')
96+ ! call H5WriteArray( p_xy,im,jm, 'p','Results/mean.fav.zm.h5')
97+ ! call H5WriteArray( t_xy,im,jm, 't','Results/mean.fav.zm.h5')
98+
99+ end subroutine write_stats
100+
101+ subroutine plot_meanflow_xy
102+
103+ use pastr_commvar, only: im,jm,km
104+ use pastr_io, only : read_grid
105+ use pastr_multiblock_type, only: block_define
106+ use pastr_tecio
107+ use pastr_commtype, only : tblock
108+
109+ real (wp),allocatable :: x(:,:),y(:,:),z(:,:)
110+ type (tblock),allocatable ,target :: pblocks(:)
111+ integer :: nblocks
112+ logical :: multi_block
113+ integer :: i
114+ type (tblock),pointer :: b
115+
116+ allocate (x(0 :im,0 :jm),y(0 :im,0 :jm),z(0 :im,0 :jm))
117+
118+ call read_grid(x= x,y= y,z= z,kslice= 0 )
119+
120+ call block_define(multi_block,nblocks,pblocks)
121+
122+ do i= 1 ,nblocks
123+ b= >pblocks(i)
124+ b% nvar= 6
125+ call b% init_data()
126+ b% x(0 :b% im,0 :b% jm,0 )= x(b% ilo:b% ihi,b% jlo:b% jhi)
127+ b% y(0 :b% im,0 :b% jm,0 )= y(b% ilo:b% ihi,b% jlo:b% jhi)
128+ b% var(0 :b% im,0 :b% jm,0 ,1 )= ro_xy(b% ilo:b% ihi,b% jlo:b% jhi)
129+ b% var(0 :b% im,0 :b% jm,0 ,2 )= u1_xy(b% ilo:b% ihi,b% jlo:b% jhi)
130+ b% var(0 :b% im,0 :b% jm,0 ,3 )= u2_xy(b% ilo:b% ihi,b% jlo:b% jhi)
131+ b% var(0 :b% im,0 :b% jm,0 ,4 )= u3_xy(b% ilo:b% ihi,b% jlo:b% jhi)
132+ b% var(0 :b% im,0 :b% jm,0 ,5 )= p_xy(b% ilo:b% ihi,b% jlo:b% jhi)
133+ b% var(0 :b% im,0 :b% jm,0 ,6 )= t_xy(b% ilo:b% ihi,b% jlo:b% jhi)
134+ b% varname(1 ) = ' ro'
135+ b% varname(2 ) = ' u'
136+ b% varname(3 ) = ' v'
137+ b% varname(4 ) = ' w'
138+ b% varname(5 ) = ' p'
139+ b% varname(6 ) = ' t'
140+
141+ enddo
142+
143+ call tecbin(filename= ' Results/tecmean' ,block= pblocks)
144+
145+ end subroutine plot_meanflow_xy
146+
147+ function average (var ) result(varm)
148+
149+ use pastr_commvar, only: im,jm,km
150+
151+ real (wp),intent (in ) :: var(0 :im,0 :jm,0 :km)
152+ real (wp) :: varm(0 :im,0 :jm)
153+
154+ integer :: k
155+
156+ varm= 0._wp
157+ do k= 1 ,km
158+ varm(:,:)= varm(:,:)+ var(:,:,k)
159+ enddo
160+ varm= varm/ dble (km)
161+
162+ end function average
163+
164+ end module pastr_data_process
0 commit comments