public override int go() { int i, j, k, m; int iglob, jglob; double xi, eta, zeta; double pxi, peta, pzeta; double[,,,] ue_1jk = new double[1, 1, 1, 5]; double[,,,] ue_nx0jk = new double[1, 1, 1, 5]; double[,,,] ue_i1k = new double[1, 1, 1, 5]; double[,,,] ue_iny0k = new double[1, 1, 1, 5]; double[,,,] ue_ij1 = new double[1, 1, 1, 5]; double[,,,] ue_ijnz = new double[1, 1, 1, 5]; for (k = 2; k <= nz - 1; k++) { zeta = ((double)(k - 1)) / (nz - 1); for (j = 1; j <= ny; j++) { jglob = jpt + j; if (jglob != 1 && jglob != ny0) { eta = ((double)(jglob - 1)) / (ny0 - 1); for (i = 1; i <= nx; i++) { iglob = ipt + i; if (iglob != 1 && iglob != nx0) { xi = ((double)(iglob - 1)) / (nx0 - 1); Exact.setParameters(1, jglob, k, ue_1jk, 0, 0, 0); Exact.go(); Exact.setParameters(nx0, jglob, k, ue_nx0jk, 0, 0, 0); Exact.go(); Exact.setParameters(iglob, 1, k, ue_i1k, 0, 0, 0); Exact.go(); Exact.setParameters(iglob, ny0, k, ue_iny0k, 0, 0, 0); Exact.go(); Exact.setParameters(iglob, jglob, 1, ue_ij1, 0, 0, 0); Exact.go(); Exact.setParameters(iglob, jglob, nz, ue_ijnz, 0, 0, 0); Exact.go(); for (m = 0; m < 5; m++) { pxi = (1.0d - xi) * ue_1jk[0, 0, 0, m] + xi * ue_nx0jk[0, 0, 0, m]; peta = (1.0d - eta) * ue_i1k[0, 0, 0, m] + eta * ue_iny0k[0, 0, 0, m]; pzeta = (1.0d - zeta) * ue_ij1[0, 0, 0, m] + zeta * ue_ijnz[0, 0, 0, m]; u[k - 1, j + 1, i + 1, m] = pxi + peta + pzeta - pxi * peta - peta * pzeta - pzeta * pxi + pxi * peta * pzeta; } } } } } } return(0); }
public override int go() { int i, j, k, m, iglob, jglob; double tmp; double[,,,] u000ijk = new double[1, 1, 1, 5]; double[] dummy = new double[5]; errnm = new double[5]; for (m = 0; m < 5; m++) { errnm[m] = 0.0d; dummy[m] = 0.0d; } for (k = 2; k <= nz - 1; k++) { for (j = jst; j <= jend; j++) { jglob = jpt + j; for (i = ist; i <= iend; i++) { iglob = ipt + i; Exact.setParameters(iglob, jglob, k, u000ijk, 0, 0, 0); Exact.go(); for (m = 0; m < 5; m++) { tmp = (u000ijk[0, 0, 0, m] - u[k - 1, j + 1, i + 1, m]); dummy[m] = dummy[m] + pow2(tmp); } } } } worldcomm.Allreduce <double>(dummy, MPI.Operation <double> .Add, ref errnm); for (m = 0; m < 5; m++) { errnm[m] = Math.Sqrt(errnm[m] / ((nx0 - 2) * (ny0 - 2) * (nz0 - 2))); } return(0); }
public override int go() { int i, j, k, iglob, jglob; for (j = 1; j <= ny; j++) { jglob = jpt + j; for (i = 1; i <= nx; i++) { iglob = ipt + i; Exact.setParameters(iglob, jglob, 1, u, 0, j + 1, i + 1); Exact.go(); Exact.setParameters(iglob, jglob, nz, u, nz - 1, j + 1, i + 1); Exact.go(); } } if (west == -1) { for (k = 1; k <= nz; k++) { for (i = 1; i <= nx; i++) { iglob = ipt + i; Exact.setParameters(iglob, 1, k, u, k - 1, 1 + 1, i + 1); Exact.go(); } } } if (east == -1) { for (k = 1; k <= nz; k++) { for (i = 1; i <= nx; i++) { iglob = ipt + i; Exact.setParameters(iglob, ny0, k, u, k - 1, ny + 1, i + 1); Exact.go(); } } } if (north == -1) { for (k = 1; k <= nz; k++) { for (j = 1; j <= ny; j++) { jglob = jpt + j; Exact.setParameters(1, jglob, k, u, k - 1, j + 1, 1 + 1); Exact.go(); } } } if (south == -1) { for (k = 1; k <= nz; k++) { for (j = 1; j <= ny; j++) { jglob = jpt + j; Exact.setParameters(nx0, jglob, k, u, k - 1, j + 1, nx + 1); Exact.go(); } } } return(0); }