From a56c4d978cfb315cd7dbf22a672e68090576d096 Mon Sep 17 00:00:00 2001 From: ignis Date: Sat, 11 Nov 2017 00:43:27 +0900 Subject: [PATCH] remove loops in parallel z-dir fns --- m_fdm_calc.f90 | 82 +++++++++++--------------------------------------- 1 file changed, 17 insertions(+), 65 deletions(-) diff --git a/m_fdm_calc.f90 b/m_fdm_calc.f90 index 90862e8..6281fd8 100644 --- a/m_fdm_calc.f90 +++ b/m_fdm_calc.f90 @@ -12,7 +12,7 @@ module m_fdm_calc real*8, dimension(:,:,:,:), allocatable :: y1,y2,yf real*8, dimension(:,:), allocatable :: fzzl, fzzu - real*8, dimension(:,:), allocatable :: fbuf1, fbuf2, fbuf3, fbuf4 + real*8, dimension(:,:,:), allocatable :: fbuf1, fbuf2, fbuf3, fbuf4 real*8, dimension(:,:), allocatable :: yxbuf1, yxbuf2, yxbuf3, yxbuf4 real*8, dimension(:,:), allocatable :: xybuf1, xybuf2, xybuf3, xybuf4 @@ -246,10 +246,10 @@ module m_fdm_calc allocate(fzzu(nx*ny,2)) allocate(fzzl(nx*ny,2)) - allocate(fbuf1(nx*ny,nz)) - allocate(fbuf2(nx*ny,nz)) - allocate(fbuf3(nx*ny,nz)) - allocate(fbuf4(nx*ny,nz)) + allocate(fbuf1(nx,ny,nz)) + allocate(fbuf2(nx,ny,nz)) + allocate(fbuf3(nx,ny,nz)) + allocate(fbuf4(nx,ny,nz)) allocate(xybuf1(nx,ny)) allocate(xybuf2(nx,ny)) @@ -548,79 +548,31 @@ module m_fdm_calc ! -( d(rho*w)/dz ) - DO k=1,zz - DO j=1,yy - DO i=1,xx - fbuf1(i+xx*(j-1),k) = r1_(i,j,k,1)*ww_(i,j,k) ! rho*w - ENDDO - ENDDO - ENDDO + fbuf1(:,:,:) = r1_(:,:,:,1)*ww_(:,:,:) ! rho*w + CALL pdfp (fbuf1, fzzl, fzzu, fbuf2, hy, xx*yy, zz, yy, 3) - CALL pdfp (fbuf1, fzzl, fzzu, fbuf2, hy, xx*yy, zz, yy, 3) - - DO k=1,zz - DO j=1,yy - DO i=1,xx - f_(i,j,k,1) = f_(i,j,k,1) - fbuf2(i+xx*(j-1),k) ! continuity - ENDDO - ENDDO - ENDDO + f_(:,:,:,1) = f_(:,:,:,1) - fbuf2(:,:,:) ! continuity ! -( d(rho*w*Yr)/dz ) + d(rho*D* d(Yr)/dz)/dz ! = -( d(rho*w*Yr)/dz ) ! + D* (rho* d2(Yr)/dz2 + d(rho)/dz * d(Yr)/dz ) - DO k=1,zz - DO j=1,yy - DO i=1,xx - fbuf1(i+xx*(j-1),k) = r1_(i,j,k,2)*ww_(i,j,k) ! rho*w*Y - ENDDO - ENDDO - ENDDO + fbuf1(:,:,:) = r1_(:,:,:,2)*ww_(:,:,:) ! rho*w*Y + CALL pdfp (fbuf1, fzzl, fzzu, fbuf2, hy, xx*yy, zz, yy, 3) - CALL pdfp (fbuf1, fzzl, fzzu, fbuf2, hy, xx*yy, zz, yy, 3) + f_(:,:,:,2) = f_(:,:,:,2) - fbuf2(:,:,:) ! species conserv. - DO k=1,zz - DO j=1,yy - DO i=1,xx - idx2 = xx*(j-1)+i - idx1 = (idx2-1)*4 - f_(i,j,k,2) = f_(i,j,k,2) - fbuf2(i+xx*(j-1),k) ! species conserv. - ENDDO - ENDDO - ENDDO + fbuf1(:,:,:) = r1_(:,:,:,2)/r1_(:,:,:,1) ! Y + CALL pdfp (fbuf1, fzzl, fzzu, fbuf2, hy, xx*yy, zz, yy, 3) + CALL pd2fp(fbuf1, fzzl, fzzu, fbuf3, hy, xx*yy, zz, yy, 3) - DO k=1,zz - DO j=1,yy - DO i=1,xx - fbuf1(i+xx*(j-1),k) = r1_(i,j,k,2)/r1_(i,j,k,1) ! Y - ENDDO - ENDDO - ENDDO - - CALL pdfp (fbuf1, fzzl, fzzu, fbuf2, hy, xx*yy, zz, yy, 3) - CALL pd2fp(fbuf1, fzzl, fzzu, fbuf3, hy, xx*yy, zz, yy, 3) - - DO k=1,zz - DO j=1,yy - DO i=1,xx - fbuf1(i+xx*(j-1),k) = r1_(i,j,k,1) ! rho - ENDDO - ENDDO - ENDDO - - CALL pdfp (fbuf1, fzzl, fzzu, fbuf4, hy, xx*yy, zz, yy, 3) + fbuf1(:,:,:) = r1_(:,:,:,1) ! rho + CALL pdfp (fbuf1, fzzl, fzzu, fbuf4, hy, xx*yy, zz, yy, 3) fbuf2 = fbuf2 * fbuf4 fbuf1 = fbuf1 * fbuf3 + fbuf2 - DO k=1,zz - DO j=1,yy - DO i=1,xx - f_(i,j,k,2) = f_(i,j,k,2) + diff*fbuf1(i+xx*(j-1),k) ! species conserv. - ENDDO - ENDDO - ENDDO + f_(:,:,:,2) = f_(:,:,:,2) + diff*fbuf1(:,:,:) ! species conserv. endif