1) !---------------------------------------------------------------------------! !Prolongation operator,粗网格往细网格上插值,c2f !bilinear interpolation !---------------------------------------------------------------------------! SUBROUTINE prol(nxh,nyh,nxf,nyf,u,p) implicit none integer::nxf,nyf,nxh,nyh real*8, dimension(0:nxf,0:nyf)::p !on higher grid real*8, dimension(0:nxh,0:nyh)::u !on lower grid integer::i,j do i=0,nxh-1 do j=0,nyh-1 p(2*i,2*j) = u(i,j) p(2*i+1,2*j) = 1.0d0/2.0d0*(u(i,j)+u(i+1,j)) p(2*i,2*j+1) = 1.0d0/2.0d0*(u(i,j)+u(i,j+1)) p(2*i+1,2*j+1)= 1.0d0/4.0d0*(u(i,j)+u(i,j+1)+u(i+1,j)+u(i+1,j+1)) end do end do !还要处理一下边界 do j=0,nyh p(nxf,2*j) = u(nxh,j) end do do i=0,nxh p(2*i,nyf) = u(i,nyh) end do return end 注意,还得重新处理一下边界。 |
说点什么...