1 c---------------------------------------------------------------------
2 c---------------------------------------------------------------------
4 subroutine error_norm(rms)
6 c---------------------------------------------------------------------
7 c---------------------------------------------------------------------
9 c---------------------------------------------------------------------
10 c this function computes the norm of the difference between the
11 c computed solution and the exact solution
12 c---------------------------------------------------------------------
17 integer c, i, j, k, m, ii, jj, kk, d, error
18 double precision xi, eta, zeta, u_exact(5), rms(5), rms_work(5),
27 do k = cell_low(3,c), cell_high(3,c)
28 zeta = dble(k) * dnzm1
30 do j = cell_low(2,c), cell_high(2,c)
33 do i = cell_low(1,c), cell_high(1,c)
35 call exact_solution(xi, eta, zeta, u_exact)
38 add = u(m,ii,jj,kk,c)-u_exact(m)
39 rms_work(m) = rms_work(m) + add*add
49 call mpi_allreduce(rms_work, rms, 5, dp_type,
50 > MPI_SUM, comm_setup, error)
54 rms(m) = rms(m) / dble(grid_points(d)-2)
56 rms(m) = dsqrt(rms(m))
63 c---------------------------------------------------------------------
64 c---------------------------------------------------------------------
66 subroutine rhs_norm(rms)
68 c---------------------------------------------------------------------
69 c---------------------------------------------------------------------
74 integer c, i, j, k, d, m, error
75 double precision rms(5), rms_work(5), add
82 do k = start(3,c), cell_size(3,c)-end(3,c)-1
83 do j = start(2,c), cell_size(2,c)-end(2,c)-1
84 do i = start(1,c), cell_size(1,c)-end(1,c)-1
87 rms_work(m) = rms_work(m) + add*add
94 call mpi_allreduce(rms_work, rms, 5, dp_type,
95 > MPI_SUM, comm_setup, error)
99 rms(m) = rms(m) / dble(grid_points(d)-2)
101 rms(m) = dsqrt(rms(m))