c--------------------------------------------------------------------- c--------------------------------------------------------------------- subroutine l2norm ( ldx, ldy, ldz, > nx0, ny0, nz0, > ist, iend, > jst, jend, > v, sum ) c--------------------------------------------------------------------- c--------------------------------------------------------------------- c--------------------------------------------------------------------- c to compute the l2-norm of vector v. c--------------------------------------------------------------------- implicit none c--------------------------------------------------------------------- c input parameters c--------------------------------------------------------------------- integer ldx, ldy, ldz integer nx0, ny0, nz0 integer ist, iend integer jst, jend c--------------------------------------------------------------------- c To improve cache performance, second two dimensions padded by 1 c for even number sizes only. Only needed in v. c--------------------------------------------------------------------- double precision v(5,ldx/2*2+1,ldy/2*2+1,*), sum(5) c--------------------------------------------------------------------- c local variables c--------------------------------------------------------------------- integer i, j, k, m do m = 1, 5 sum(m) = 0.0d+00 end do do k = 2, nz0-1 do j = jst, jend do i = ist, iend do m = 1, 5 sum(m) = sum(m) + v(m,i,j,k) * v(m,i,j,k) end do end do end do end do do m = 1, 5 sum(m) = sqrt ( sum(m) / ( (nx0-2)*(ny0-2)*(nz0-2) ) ) end do return end