DOUBLE PRECISION FUNCTION FINDN2S(u,nx,ny,nz) c*** c get the L_2 Norm of a scalar field c*** INCLUDE 'undefined.h' INCLUDE 'mpif.h' INTEGER nx, ny, nz, i, j, k, ierr00 DOUBLE PRECISION u(nx,ny,nz), tnpt INTRINSIC DSQRT c*** ierr00=MPI_SUCCESS CALL CHECK_MPI(IERR00,301) FINDN2S=0.d0 do k=2,nz-1 do j=2,ny-1 do i=2,nx-1 FINDN2S = FINDN2S + u(i,j,k)**2 enddo enddo enddo tnpt = DFLOAT((nx-2)*(ny-2)*(nz-2)) FINDN2S = FINDN2S/tnpt CALL CHECK_MPI(IERR00,302) c*** if(havempi.eq.0) then FINDN2S = DSQRT(FINDN2S) return else if(havempi.eq.1) then CALL MPI_ALLREDUCE(FINDN2S,norm_total,1, & MPI_DOUBLE_PRECISION,MPI_SUM,COMM2D,IERR00) FINDN2S = dsqrt(norm_total/NPROCS) CALL CHECK_MPI(IERR00,303) return else stop 'wrong value of havempi' endif end