blob: e83f74912fa6c27a4647456dbcdd8688b4b78f26 [file] [log] [blame]
c---------------------------------------------------------------------
c---------------------------------------------------------------------
subroutine error
c---------------------------------------------------------------------
c---------------------------------------------------------------------
c---------------------------------------------------------------------
c
c compute the solution error
c
c---------------------------------------------------------------------
implicit none
include 'mpinpb.h'
include 'applu.incl'
c---------------------------------------------------------------------
c local variables
c---------------------------------------------------------------------
integer i, j, k, m
integer iglob, jglob
double precision tmp
double precision u000ijk(5), dummy(5)
integer IERROR
do m = 1, 5
errnm(m) = 0.0d+00
dummy(m) = 0.0d+00
end do
do k = 2, nz-1
do j = jst, jend
jglob = jpt + j
do i = ist, iend
iglob = ipt + i
call exact( iglob, jglob, k, u000ijk )
do m = 1, 5
tmp = ( u000ijk(m) - u(m,i,j,k) )
dummy(m) = dummy(m) + tmp ** 2
end do
end do
end do
end do
c---------------------------------------------------------------------
c compute the global sum of individual contributions to dot product.
c---------------------------------------------------------------------
call MPI_ALLREDUCE( dummy,
> errnm,
> 5,
> dp_type,
> MPI_SUM,
> MPI_COMM_WORLD,
> IERROR )
do m = 1, 5
errnm(m) = sqrt ( errnm(m) / ( (nx0-2)*(ny0-2)*(nz0-2) ) )
end do
c if (id.eq.0) then
c write (*,1002) ( errnm(m), m = 1, 5 )
c end if
1002 format (1x/1x,'RMS-norm of error in soln. to ',
> 'first pde = ',1pe12.5/,
> 1x,'RMS-norm of error in soln. to ',
> 'second pde = ',1pe12.5/,
> 1x,'RMS-norm of error in soln. to ',
> 'third pde = ',1pe12.5/,
> 1x,'RMS-norm of error in soln. to ',
> 'fourth pde = ',1pe12.5/,
> 1x,'RMS-norm of error in soln. to ',
> 'fifth pde = ',1pe12.5)
return
end