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