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