936 lines
22 KiB
Fortran
936 lines
22 KiB
Fortran
module m_terms
|
|
|
|
use m_openmpi
|
|
use m_parameters
|
|
use m_arrays
|
|
use m_calculate
|
|
|
|
implicit none
|
|
|
|
character (len=*), parameter :: build_date="Fri May 10 04:36:01 2019"
|
|
character (len=*), parameter :: build_base="b4db0e2f8a3669de8450525bdabbfeeb7c215005"
|
|
character (len=*), parameter :: term_info="[u, v, w, y]"//char(10)//""//char(10)//"c = 1.0 - y"//char(10)//"wrate = rxn_rate(c)"//char(10)//"fsd = sqrt (sqr(ddx(c)) + sqr(ddy(c)) + sqr(ddz(c)))"//char(10)//""//char(10)//"sd = ((d2dx(c) + d2dy(c) + d2dz(c)) * $rod + wrate) / fsd"//char(10)//""//char(10)//"nx = - ddx(c) / fsd"//char(10)//"ny = - ddy(c) / fsd"//char(10)//"nz = - ddz(c) / fsd"//char(10)//""//char(10)//"vn = u * nx + v * ny + w * nz"//char(10)//""//char(10)//"divn = ddx(nx) + ddy(ny) + ddz(nz)"//char(10)//""//char(10)//"absk = abs(divn)"//char(10)//""//char(10)//"lapc = d2dx(c) + d2dy(c) + d2dz(c)"//char(10)//""//char(10)//"t1 = (vn + sd) * nx"//char(10)//""//char(10)//"t2 = t1' * nx'"//char(10)//""//char(10)//"t3 = t1' * divn'"//char(10)//""//char(10)//"t4 = t1' * absk'"//char(10)//""//char(10)//"t5 = sqr(t1')"//char(10)//""//char(10)//"t6 = sqr(nx')"//char(10)//""//char(10)//"t7 = sqr(divn')"//char(10)//""//char(10)//"t8 = sqr(absk')"//char(10)//""//char(10)//"avg { c, u, v, w, fsd, lapc, ddx_c, ddy_c, ddz_c, d2dx_c, d2dy_c, d2dz_c }"//char(10)//""//char(10)//"avg fsd { u, v, w, nx, ny, nz, t1, t2, t3, t4, t5, t6, t7, t8, absk, divn, sd }"//char(10)//""
|
|
character (len = *), parameter :: output_header="x avg_c avg_d2dx_c avg_d2dy_c avg_d2dz_c avg_ddx_c avg_ddy_c avg_ddz_c avg_fsd avg_lapc avg_u avg_v avg_w fsd_avg_absk fsd_avg_divn fsd_avg_nx fsd_avg_ny fsd_avg_nz fsd_avg_sd fsd_avg_t1 fsd_avg_u fsd_avg_v fsd_avg_w fsd_avg_t2 fsd_avg_t3 fsd_avg_t4 fsd_avg_t5 fsd_avg_t6 fsd_avg_t7 fsd_avg_t8"
|
|
real*8, allocatable, dimension(:) :: fsd_avg_divn
|
|
real*8, allocatable, dimension(:) :: fsd_avg_ny
|
|
real*8, allocatable, dimension(:) :: fsd_avg_nx
|
|
real*8, allocatable, dimension(:) :: fsd_avg_nz
|
|
real*8, allocatable, dimension(:) :: avg_d2dz_c
|
|
real*8, allocatable, dimension(:) :: avg_d2dx_c
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t3
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t2
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t1
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t7
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t6
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t5
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t4
|
|
real*8, allocatable, dimension(:) :: fsd_avg_t8
|
|
real*8, allocatable, dimension(:) :: avg_fsd
|
|
real*8, allocatable, dimension(:) :: fsd_avg_absk
|
|
real*8, allocatable, dimension(:) :: fsd_avg_sd
|
|
real*8, allocatable, dimension(:) :: avg_ddy_c
|
|
real*8, allocatable, dimension(:) :: avg_ddx_c
|
|
real*8, allocatable, dimension(:) :: avg_lapc
|
|
real*8, allocatable, dimension(:) :: avg_ddz_c
|
|
real*8, allocatable, dimension(:) :: avg_c
|
|
real*8, allocatable, dimension(:) :: avg_d2dy_c
|
|
real*8, allocatable, dimension(:) :: avg_u
|
|
real*8, allocatable, dimension(:) :: avg_v
|
|
real*8, allocatable, dimension(:) :: avg_w
|
|
real*8, allocatable, dimension(:) :: fsd_avg_v
|
|
real*8, allocatable, dimension(:) :: fsd_avg_w
|
|
real*8, allocatable, dimension(:) :: fsd_avg_u
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer0
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer1
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer2
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer3
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer4
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer5
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer6
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer7
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer8
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer9
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer10
|
|
real*8, allocatable, dimension(:,:,:) :: xyzbuffer11
|
|
|
|
contains
|
|
|
|
subroutine m_terms_init
|
|
|
|
integer :: ierr
|
|
|
|
allocate(fsd_avg_divn(nxp), stat=ierr) ; fsd_avg_divn = 0.
|
|
allocate(fsd_avg_ny(nxp), stat=ierr) ; fsd_avg_ny = 0.
|
|
allocate(fsd_avg_nx(nxp), stat=ierr) ; fsd_avg_nx = 0.
|
|
allocate(fsd_avg_nz(nxp), stat=ierr) ; fsd_avg_nz = 0.
|
|
allocate(avg_d2dz_c(nxp), stat=ierr) ; avg_d2dz_c = 0.
|
|
allocate(avg_d2dx_c(nxp), stat=ierr) ; avg_d2dx_c = 0.
|
|
allocate(fsd_avg_t3(nxp), stat=ierr) ; fsd_avg_t3 = 0.
|
|
allocate(fsd_avg_t2(nxp), stat=ierr) ; fsd_avg_t2 = 0.
|
|
allocate(fsd_avg_t1(nxp), stat=ierr) ; fsd_avg_t1 = 0.
|
|
allocate(fsd_avg_t7(nxp), stat=ierr) ; fsd_avg_t7 = 0.
|
|
allocate(fsd_avg_t6(nxp), stat=ierr) ; fsd_avg_t6 = 0.
|
|
allocate(fsd_avg_t5(nxp), stat=ierr) ; fsd_avg_t5 = 0.
|
|
allocate(fsd_avg_t4(nxp), stat=ierr) ; fsd_avg_t4 = 0.
|
|
allocate(fsd_avg_t8(nxp), stat=ierr) ; fsd_avg_t8 = 0.
|
|
allocate(avg_fsd(nxp), stat=ierr) ; avg_fsd = 0.
|
|
allocate(fsd_avg_absk(nxp), stat=ierr) ; fsd_avg_absk = 0.
|
|
allocate(fsd_avg_sd(nxp), stat=ierr) ; fsd_avg_sd = 0.
|
|
allocate(avg_ddy_c(nxp), stat=ierr) ; avg_ddy_c = 0.
|
|
allocate(avg_ddx_c(nxp), stat=ierr) ; avg_ddx_c = 0.
|
|
allocate(avg_lapc(nxp), stat=ierr) ; avg_lapc = 0.
|
|
allocate(avg_ddz_c(nxp), stat=ierr) ; avg_ddz_c = 0.
|
|
allocate(avg_c(nxp), stat=ierr) ; avg_c = 0.
|
|
allocate(avg_d2dy_c(nxp), stat=ierr) ; avg_d2dy_c = 0.
|
|
allocate(avg_u(nxp), stat=ierr) ; avg_u = 0.
|
|
allocate(avg_v(nxp), stat=ierr) ; avg_v = 0.
|
|
allocate(avg_w(nxp), stat=ierr) ; avg_w = 0.
|
|
allocate(fsd_avg_v(nxp), stat=ierr) ; fsd_avg_v = 0.
|
|
allocate(fsd_avg_w(nxp), stat=ierr) ; fsd_avg_w = 0.
|
|
allocate(fsd_avg_u(nxp), stat=ierr) ; fsd_avg_u = 0.
|
|
allocate(xyzbuffer0(nxp,nyp,nzp), stat=ierr) ; xyzbuffer0 = 0.
|
|
allocate(xyzbuffer1(nxp,nyp,nzp), stat=ierr) ; xyzbuffer1 = 0.
|
|
allocate(xyzbuffer2(nxp,nyp,nzp), stat=ierr) ; xyzbuffer2 = 0.
|
|
allocate(xyzbuffer3(nxp,nyp,nzp), stat=ierr) ; xyzbuffer3 = 0.
|
|
allocate(xyzbuffer4(nxp,nyp,nzp), stat=ierr) ; xyzbuffer4 = 0.
|
|
allocate(xyzbuffer5(nxp,nyp,nzp), stat=ierr) ; xyzbuffer5 = 0.
|
|
allocate(xyzbuffer6(nxp,nyp,nzp), stat=ierr) ; xyzbuffer6 = 0.
|
|
allocate(xyzbuffer7(nxp,nyp,nzp), stat=ierr) ; xyzbuffer7 = 0.
|
|
allocate(xyzbuffer8(nxp,nyp,nzp), stat=ierr) ; xyzbuffer8 = 0.
|
|
allocate(xyzbuffer9(nxp,nyp,nzp), stat=ierr) ; xyzbuffer9 = 0.
|
|
allocate(xyzbuffer10(nxp,nyp,nzp), stat=ierr) ; xyzbuffer10 = 0.
|
|
allocate(xyzbuffer11(nxp,nyp,nzp), stat=ierr) ; xyzbuffer11 = 0.
|
|
|
|
end subroutine m_terms_init
|
|
|
|
|
|
subroutine m_terms_finalize
|
|
|
|
deallocate(fsd_avg_divn)
|
|
deallocate(fsd_avg_ny)
|
|
deallocate(fsd_avg_nx)
|
|
deallocate(fsd_avg_nz)
|
|
deallocate(avg_d2dz_c)
|
|
deallocate(avg_d2dx_c)
|
|
deallocate(fsd_avg_t3)
|
|
deallocate(fsd_avg_t2)
|
|
deallocate(fsd_avg_t1)
|
|
deallocate(fsd_avg_t7)
|
|
deallocate(fsd_avg_t6)
|
|
deallocate(fsd_avg_t5)
|
|
deallocate(fsd_avg_t4)
|
|
deallocate(fsd_avg_t8)
|
|
deallocate(avg_fsd)
|
|
deallocate(fsd_avg_absk)
|
|
deallocate(fsd_avg_sd)
|
|
deallocate(avg_ddy_c)
|
|
deallocate(avg_ddx_c)
|
|
deallocate(avg_lapc)
|
|
deallocate(avg_ddz_c)
|
|
deallocate(avg_c)
|
|
deallocate(avg_d2dy_c)
|
|
deallocate(avg_u)
|
|
deallocate(avg_v)
|
|
deallocate(avg_w)
|
|
deallocate(fsd_avg_v)
|
|
deallocate(fsd_avg_w)
|
|
deallocate(fsd_avg_u)
|
|
deallocate(xyzbuffer0)
|
|
deallocate(xyzbuffer1)
|
|
deallocate(xyzbuffer2)
|
|
deallocate(xyzbuffer3)
|
|
deallocate(xyzbuffer4)
|
|
deallocate(xyzbuffer5)
|
|
deallocate(xyzbuffer6)
|
|
deallocate(xyzbuffer7)
|
|
deallocate(xyzbuffer8)
|
|
deallocate(xyzbuffer9)
|
|
deallocate(xyzbuffer10)
|
|
deallocate(xyzbuffer11)
|
|
|
|
end subroutine m_terms_finalize
|
|
|
|
|
|
subroutine m_terms_calculate_pass1
|
|
|
|
integer :: i, j, k
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_u(i) = avg_u(i) + u(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_w(i) = avg_w(i) + w(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_v(i) = avg_v(i) + v(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( 1.0 - y(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer11(i,j,k) = ( 1.0 - y(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call d2dy ( xyzbuffer10, xyzbuffer11 )
|
|
call ddx ( xyzbuffer9, xyzbuffer11 )
|
|
call ddy ( xyzbuffer8, xyzbuffer11 )
|
|
call ddz ( xyzbuffer3, xyzbuffer11 )
|
|
|
|
! ( sqrt ( ( ( ((ddx_c(i,j,k))*(ddx_c(i,j,k))) + ((ddy_c(i,j,k))*(ddy_c(i,j,k))) ) + ((ddz_c(i,j,k))*(ddz_c(i,j,k))) ) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer2(i,j,k) = ( sqrt ( ( ( ((xyzbuffer9(i,j,k))*(xyzbuffer9(i,j,k))) + ((xyzbuffer8(i,j,k))*(xyzbuffer8(i,j,k))) ) + ((xyzbuffer3(i,j,k))*(xyzbuffer3(i,j,k))) ) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_u(i) = fsd_avg_u(i) + u(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_w(i) = fsd_avg_w(i) + w(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( - ddx_c(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer1(i,j,k) = ( ( - xyzbuffer9(i,j,k) ) / xyzbuffer2(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( - ddz_c(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer0(i,j,k) = ( ( - xyzbuffer3(i,j,k) ) / xyzbuffer2(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( rxn_rate ( c(i,j,k) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer7(i,j,k) = ( rxn_rate ( xyzbuffer11(i,j,k) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_c(i) = avg_c(i) + xyzbuffer11(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_d2dy_c(i) = avg_d2dy_c(i) + xyzbuffer10(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_ddx_c(i) = avg_ddx_c(i) + xyzbuffer9(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_ddz_c(i) = avg_ddz_c(i) + xyzbuffer3(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call d2dx ( xyzbuffer6, xyzbuffer11 )
|
|
call ddx ( xyzbuffer5, xyzbuffer1 )
|
|
call ddz ( xyzbuffer4, xyzbuffer0 )
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_nx(i) = fsd_avg_nx(i) + xyzbuffer1(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_nz(i) = fsd_avg_nz(i) + xyzbuffer0(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_v(i) = fsd_avg_v(i) + v(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( - ddy_c(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer9(i,j,k) = ( ( - xyzbuffer8(i,j,k) ) / xyzbuffer2(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( ( u(i,j,k) * nx(i,j,k) ) + ( v(i,j,k) * ny(i,j,k) ) ) + ( w(i,j,k) * nz(i,j,k) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer3(i,j,k) = ( ( ( u(i,j,k) * xyzbuffer1(i,j,k) ) + ( v(i,j,k) * xyzbuffer9(i,j,k) ) ) + ( w(i,j,k) * xyzbuffer0(i,j,k) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_d2dx_c(i) = avg_d2dx_c(i) + xyzbuffer6(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_ddy_c(i) = avg_ddy_c(i) + xyzbuffer8(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call d2dz ( xyzbuffer0, xyzbuffer11 )
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_ny(i) = fsd_avg_ny(i) + xyzbuffer9(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( d2dx_c(i,j,k) + d2dy_c(i,j,k) ) + d2dz_c(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer11(i,j,k) = ( ( xyzbuffer6(i,j,k) + xyzbuffer10(i,j,k) ) + xyzbuffer0(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_d2dz_c(i) = avg_d2dz_c(i) + xyzbuffer0(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_lapc(i) = avg_lapc(i) + xyzbuffer11(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( ( ( ( d2dx_c(i,j,k) + d2dy_c(i,j,k) ) + d2dz_c(i,j,k) ) * rod ) + wrate(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer8(i,j,k) = ( ( ( ( ( xyzbuffer6(i,j,k) + xyzbuffer10(i,j,k) ) + xyzbuffer0(i,j,k) ) * rod ) + xyzbuffer7(i,j,k) ) / xyzbuffer2(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
avg_fsd(i) = avg_fsd(i) + xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_sd(i) = fsd_avg_sd(i) + xyzbuffer8(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( vn(i,j,k) + sd(i,j,k) ) * nx(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer0(i,j,k) = ( ( xyzbuffer3(i,j,k) + xyzbuffer8(i,j,k) ) * xyzbuffer1(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call ddy ( xyzbuffer7, xyzbuffer9 )
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t1(i) = fsd_avg_t1(i) + xyzbuffer0(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( ddx_nx(i,j,k) + ddy_ny(i,j,k) ) + ddz_nz(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer6(i,j,k) = ( ( xyzbuffer5(i,j,k) + xyzbuffer7(i,j,k) ) + xyzbuffer4(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_divn(i) = fsd_avg_divn(i) + xyzbuffer6(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( dabs ( divn(i,j,k) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer5(i,j,k) = ( dabs ( xyzbuffer6(i,j,k) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_absk(i) = fsd_avg_absk(i) + xyzbuffer5(i,j,k) * xyzbuffer2(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
end subroutine m_terms_calculate_pass1
|
|
|
|
|
|
subroutine m_terms_average_pass1 (nfiles)
|
|
|
|
integer :: nfiles
|
|
real*8 :: denum
|
|
|
|
denum=real(nfiles*nyp*nzp)
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_c = avg_c / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_d2dx_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_d2dx_c = avg_d2dx_c / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_d2dy_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_d2dy_c = avg_d2dy_c / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_d2dz_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_d2dz_c = avg_d2dz_c / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_ddx_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_ddx_c = avg_ddx_c / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_ddy_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_ddy_c = avg_ddy_c / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_ddz_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_ddz_c = avg_ddz_c / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_fsd, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_fsd = avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_lapc, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_lapc = avg_lapc / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_u, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_u = avg_u / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_v, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_v = avg_v / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_w, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
avg_w = avg_w / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_absk, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_absk = fsd_avg_absk / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_divn, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_divn = fsd_avg_divn / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_nx, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_nx = fsd_avg_nx / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_ny, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_ny = fsd_avg_ny / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_nz, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_nz = fsd_avg_nz / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_sd, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_sd = fsd_avg_sd / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t1, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t1 = fsd_avg_t1 / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_u, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_u = fsd_avg_u / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_v, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_v = fsd_avg_v / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_w, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_w = fsd_avg_w / avg_fsd / denum
|
|
|
|
|
|
end subroutine m_terms_average_pass1
|
|
|
|
|
|
subroutine m_terms_calculate_pass2
|
|
|
|
integer :: i, j, k
|
|
|
|
|
|
! ( 1.0 - y(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer10(i,j,k) = ( 1.0 - y(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call d2dy ( xyzbuffer9, xyzbuffer10 )
|
|
call ddx ( xyzbuffer8, xyzbuffer10 )
|
|
call ddy ( xyzbuffer3, xyzbuffer10 )
|
|
call ddz ( xyzbuffer2, xyzbuffer10 )
|
|
|
|
! ( sqrt ( ( ( ((ddx_c(i,j,k))*(ddx_c(i,j,k))) + ((ddy_c(i,j,k))*(ddy_c(i,j,k))) ) + ((ddz_c(i,j,k))*(ddz_c(i,j,k))) ) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer1(i,j,k) = ( sqrt ( ( ( ((xyzbuffer8(i,j,k))*(xyzbuffer8(i,j,k))) + ((xyzbuffer3(i,j,k))*(xyzbuffer3(i,j,k))) ) + ((xyzbuffer2(i,j,k))*(xyzbuffer2(i,j,k))) ) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( - ddx_c(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer0(i,j,k) = ( ( - xyzbuffer8(i,j,k) ) / xyzbuffer1(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( - ddz_c(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer7(i,j,k) = ( ( - xyzbuffer2(i,j,k) ) / xyzbuffer1(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! (((nx(i,j,k) - fsd_avg_nx(i)))*((nx(i,j,k) - fsd_avg_nx(i))))
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer6(i,j,k) = (((xyzbuffer0(i,j,k) - fsd_avg_nx(i)))*((xyzbuffer0(i,j,k) - fsd_avg_nx(i))))
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( rxn_rate ( c(i,j,k) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer5(i,j,k) = ( rxn_rate ( xyzbuffer10(i,j,k) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call d2dx ( xyzbuffer4, xyzbuffer10 )
|
|
call ddx ( xyzbuffer8, xyzbuffer0 )
|
|
call ddz ( xyzbuffer2, xyzbuffer7 )
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t6(i) = fsd_avg_t6(i) + xyzbuffer6(i,j,k) * xyzbuffer1(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( - ddy_c(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer6(i,j,k) = ( ( - xyzbuffer3(i,j,k) ) / xyzbuffer1(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( ( u(i,j,k) * nx(i,j,k) ) + ( v(i,j,k) * ny(i,j,k) ) ) + ( w(i,j,k) * nz(i,j,k) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer3(i,j,k) = ( ( ( u(i,j,k) * xyzbuffer0(i,j,k) ) + ( v(i,j,k) * xyzbuffer6(i,j,k) ) ) + ( w(i,j,k) * xyzbuffer7(i,j,k) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call d2dz ( xyzbuffer7, xyzbuffer10 )
|
|
|
|
! ( ( ( ( ( d2dx_c(i,j,k) + d2dy_c(i,j,k) ) + d2dz_c(i,j,k) ) * rod ) + wrate(i,j,k) ) / fsd(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer10(i,j,k) = ( ( ( ( ( xyzbuffer4(i,j,k) + xyzbuffer9(i,j,k) ) + xyzbuffer7(i,j,k) ) * rod ) + xyzbuffer5(i,j,k) ) / xyzbuffer1(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
call ddy ( xyzbuffer9, xyzbuffer6 )
|
|
|
|
! ( ( vn(i,j,k) + sd(i,j,k) ) * nx(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer7(i,j,k) = ( ( xyzbuffer3(i,j,k) + xyzbuffer10(i,j,k) ) * xyzbuffer0(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! (((t1(i,j,k) - fsd_avg_t1(i)))*((t1(i,j,k) - fsd_avg_t1(i))))
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer6(i,j,k) = (((xyzbuffer7(i,j,k) - fsd_avg_t1(i)))*((xyzbuffer7(i,j,k) - fsd_avg_t1(i))))
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( ( ddx_nx(i,j,k) + ddy_ny(i,j,k) ) + ddz_nz(i,j,k) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer5(i,j,k) = ( ( xyzbuffer8(i,j,k) + xyzbuffer9(i,j,k) ) + xyzbuffer2(i,j,k) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t5(i) = fsd_avg_t5(i) + xyzbuffer6(i,j,k) * xyzbuffer1(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( (t1(i,j,k) - fsd_avg_t1(i)) * (nx(i,j,k) - fsd_avg_nx(i)) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer4(i,j,k) = ( (xyzbuffer7(i,j,k) - fsd_avg_t1(i)) * (xyzbuffer0(i,j,k) - fsd_avg_nx(i)) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! (((divn(i,j,k) - fsd_avg_divn(i)))*((divn(i,j,k) - fsd_avg_divn(i))))
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer10(i,j,k) = (((xyzbuffer5(i,j,k) - fsd_avg_divn(i)))*((xyzbuffer5(i,j,k) - fsd_avg_divn(i))))
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( dabs ( divn(i,j,k) ) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer9(i,j,k) = ( dabs ( xyzbuffer5(i,j,k) ) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t7(i) = fsd_avg_t7(i) + xyzbuffer10(i,j,k) * xyzbuffer1(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( (t1(i,j,k) - fsd_avg_t1(i)) * (divn(i,j,k) - fsd_avg_divn(i)) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer8(i,j,k) = ( (xyzbuffer7(i,j,k) - fsd_avg_t1(i)) * (xyzbuffer5(i,j,k) - fsd_avg_divn(i)) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! (((absk(i,j,k) - fsd_avg_absk(i)))*((absk(i,j,k) - fsd_avg_absk(i))))
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer3(i,j,k) = (((xyzbuffer9(i,j,k) - fsd_avg_absk(i)))*((xyzbuffer9(i,j,k) - fsd_avg_absk(i))))
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t2(i) = fsd_avg_t2(i) + xyzbuffer4(i,j,k) * xyzbuffer1(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t8(i) = fsd_avg_t8(i) + xyzbuffer3(i,j,k) * xyzbuffer1(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t3(i) = fsd_avg_t3(i) + xyzbuffer8(i,j,k) * xyzbuffer1(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
! ( (t1(i,j,k) - fsd_avg_t1(i)) * (absk(i,j,k) - fsd_avg_absk(i)) )
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
xyzbuffer2(i,j,k) = ( (xyzbuffer7(i,j,k) - fsd_avg_t1(i)) * (xyzbuffer9(i,j,k) - fsd_avg_absk(i)) )
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
do k = 1, nzp
|
|
do j = 1, nyp
|
|
do i = 1, nxp
|
|
fsd_avg_t4(i) = fsd_avg_t4(i) + xyzbuffer2(i,j,k) * xyzbuffer1(i,j,k)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
|
|
end subroutine m_terms_calculate_pass2
|
|
|
|
|
|
subroutine m_terms_average_pass2 (nfiles)
|
|
|
|
integer :: nfiles
|
|
real*8 :: denum
|
|
|
|
denum=real(nfiles*nyp*nzp)
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t2, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t2 = fsd_avg_t2 / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t3, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t3 = fsd_avg_t3 / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t4, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t4 = fsd_avg_t4 / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t5, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t5 = fsd_avg_t5 / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t6, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t6 = fsd_avg_t6 / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t7, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t7 = fsd_avg_t7 / avg_fsd / denum
|
|
|
|
|
|
call MPI_ALLREDUCE(MPI_IN_PLACE, fsd_avg_t8, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
|
|
|
fsd_avg_t8 = fsd_avg_t8 / avg_fsd / denum
|
|
|
|
|
|
end subroutine m_terms_average_pass2
|
|
|
|
|
|
subroutine m_terms_write_result
|
|
|
|
|
|
integer :: i
|
|
|
|
open (200, file="qEdge_X.dat")
|
|
|
|
write (200,*) output_header
|
|
|
|
do i=1,nxp
|
|
write (200,'(30e20.10)') real(i)*hxp, avg_c(i), avg_d2dx_c(i), avg_d2dy_c(i), avg_d2dz_c(i), avg_ddx_c(i), avg_ddy_c(i), avg_ddz_c(i), avg_fsd(i), avg_lapc(i), avg_u(i), avg_v(i), avg_w(i), fsd_avg_absk(i), fsd_avg_divn(i), fsd_avg_nx(i), fsd_avg_ny(i), fsd_avg_nz(i), fsd_avg_sd(i), fsd_avg_t1(i), fsd_avg_u(i), fsd_avg_v(i), fsd_avg_w(i), fsd_avg_t2(i), fsd_avg_t3(i), fsd_avg_t4(i), fsd_avg_t5(i), fsd_avg_t6(i), fsd_avg_t7(i), fsd_avg_t8(i)
|
|
end do
|
|
|
|
close (200)
|
|
|
|
|
|
end subroutine m_terms_write_result
|
|
|
|
|
|
end module m_terms
|
|
|