| 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 |