1#include "RCCE.h"
2#include <math.h>
3#include <stdio.h>
4#include "applu_share.h"
5#include "applu_macros.h"
6#include "applu_protos.h"
7
8#define u000ijk(m) u000ijk[m-1]
9#define errnm(m)   errnm[m-1]
10#define dummy(m)   dummy[m-1]
11
12void error() {
13
14//  local variables
15
16      int i, j, k, m,  iglob, jglob;
17      double  tmp, u000ijk[5], dummy[5];
18
19      for (m=1; m<=5; m++) {
20         errnm(m) = 0.0;
21         dummy(m) = 0.0;
22      }
23
24      for (k=2; k<=(nz)-1; k++)
25         for (j=jst; j<=(jend); j++) {
26            jglob = jpt + j;
27            for (i=ist;i<=(iend); i++) {
28               iglob = ipt + i;
29               exact(iglob, jglob, k, u000ijk);
30               for (m=1; m<=5; m++) {
31                  tmp = ( u000ijk(m) - u(m,i,j,k) );
32                  dummy(m) = dummy(m) + tmp * tmp;
33               }
34            }
35         }
36
37//   compute the global sum of individual contributions to dot product.
38
39     RCCE_allreduce((char*)dummy, (char*)errnm, 5, RCCE_DOUBLE, RCCE_SUM, RCCE_COMM_WORLD);
40
41     for (m=1; m<=5; m++) {
42         errnm(m) = sqrt ( errnm(m) / ( (nx0-2)*(ny0-2)*(nz0-2) ) );
43     }
44     return;
45}
46
47