2 c---------------------------------------------------------------------
3 c---------------------------------------------------------------------
5 subroutine error_norm(rms)
7 c---------------------------------------------------------------------
8 c---------------------------------------------------------------------
10 c---------------------------------------------------------------------
11 c this function computes the norm of the difference between the
12 c computed solution and the exact solution
13 c---------------------------------------------------------------------
18 integer c, i, j, k, m, ii, jj, kk, d, error
19 double precision xi, eta, zeta, u_exact(5), rms(5), rms_work(5),
28 do k = cell_low(3,c), cell_high(3,c)
29 zeta = dble(k) * dnzm1
31 do j = cell_low(2,c), cell_high(2,c)
34 do i = cell_low(1,c), cell_high(1,c)
36 call exact_solution(xi, eta, zeta, u_exact)
39 add = u(ii,jj,kk,m,c)-u_exact(m)
40 rms_work(m) = rms_work(m) + add*add
50 call mpi_allreduce(rms_work, rms, 5, dp_type,
51 > MPI_SUM, comm_setup, error)
55 rms(m) = rms(m) / dble(grid_points(d)-2)
57 rms(m) = dsqrt(rms(m))
65 subroutine rhs_norm(rms)
70 integer c, i, j, k, d, m, error
71 double precision rms(5), rms_work(5), add
78 do k = start(3,c), cell_size(3,c)-end(3,c)-1
79 do j = start(2,c), cell_size(2,c)-end(2,c)-1
80 do i = start(1,c), cell_size(1,c)-end(1,c)-1
83 rms_work(m) = rms_work(m) + add*add
92 call mpi_allreduce(rms_work, rms, 5, dp_type,
93 > MPI_SUM, comm_setup, error)
97 rms(m) = rms(m) / dble(grid_points(d)-2)
99 rms(m) = dsqrt(rms(m))