57VPUBLIC
void VbuildP(
int *nxf,
int *nyf,
int *nzf,
58 int *nxc,
int *nyc,
int *nzc,
60 int *ipc,
double *rpc,
61 double *pc,
double *ac,
62 double *xf,
double *yf,
double *zf) {
66 MAT2(pc, *nxc * *nyc * *nzc, 1);
67 MAT2(ac, *nxf * *nyf * *nzf, 1);
71 VbuildP_trilin(nxf, nyf, nzf,
76 }
else if (*mgprol == 1) {
78 numdia = VAT(ipc, 11);
81 VbuildP_op7(nxf, nyf, nzf,
84 RAT2(ac, 1, 1), RAT2(pc, 1, 1));
85 }
else if (numdia == 27) {
86 VbuildP_op27(nxf, nyf, nzf,
89 RAT2(ac, 1, 1), RAT2(pc, 1, 1));
91 Vnm_print(2,
"BUILDP: invalid stencil type given: %d\n", numdia);
96VPUBLIC
void VbuildP_trilin(
int *nxf,
int *nyf,
int *nzf,
97 int *nxc,
int *nyc,
int *nzc,
99 double *xf,
double *yf,
double *zf) {
101 MAT2(pc, *nxc * *nyc * *nzc, 1);
103 VbuildPb_trilin(nxf, nyf, nzf,
105 RAT2(pc, 1, 1),RAT2(pc, 1, 2),RAT2(pc, 1, 3),RAT2(pc, 1, 4),RAT2(pc, 1, 5),
106 RAT2(pc, 1, 6),RAT2(pc, 1, 7),RAT2(pc, 1, 8),RAT2(pc, 1, 9),
107 RAT2(pc, 1, 10),RAT2(pc, 1, 11),RAT2(pc, 1, 12),RAT2(pc, 1, 13),RAT2(pc, 1, 14),
108 RAT2(pc, 1, 15),RAT2(pc, 1, 16),RAT2(pc, 1, 17),RAT2(pc, 1, 18),
109 RAT2(pc, 1, 19),RAT2(pc, 1, 20),RAT2(pc, 1, 21),RAT2(pc, 1, 22),RAT2(pc, 1, 23),
110 RAT2(pc, 1, 24),RAT2(pc, 1, 25),RAT2(pc, 1, 26),RAT2(pc, 1, 27),
114VEXTERNC
void VbuildPb_trilin(
int *nxf,
int *nyf,
int *nzf,
115 int *nxc,
int *nyc,
int *nzc,
116 double *oPC,
double *oPN,
double *oPS,
double *oPE,
double *oPW,
117 double *oPNE,
double *oPNW,
double *oPSE,
double *oPSW,
118 double *uPC,
double *uPN,
double *uPS,
double *uPE,
double *uPW,
119 double *uPNE,
double *uPNW,
double *uPSE,
double *uPSW,
120 double *dPC,
double *dPN,
double *dPS,
double *dPE,
double *dPW,
121 double *dPNE,
double *dPNW,
double *dPSE,
double *dPSW,
122 double *xf,
double *yf,
double *zf) {
128 double half = 1.0 / 2.0;
129 double quarter = 1.0 / 4.0;
130 double eighth = 1.0 / 8.0;
132 MAT3( oPC, *nxc, *nyc, *nzc);
133 MAT3( oPN, *nxc, *nyc, *nzc);
134 MAT3( oPS, *nxc, *nyc, *nzc);
135 MAT3( oPE, *nxc, *nyc, *nzc);
136 MAT3( oPW, *nxc, *nyc, *nzc);
138 MAT3(oPNE, *nxc, *nyc, *nzc);
139 MAT3(oPNW, *nxc, *nyc, *nzc);
140 MAT3(oPSE, *nxc, *nyc, *nzc);
141 MAT3(oPSW, *nxc, *nyc, *nzc);
143 MAT3( uPC, *nxc, *nyc, *nzc);
144 MAT3( uPN, *nxc, *nyc, *nzc);
145 MAT3( uPS, *nxc, *nyc, *nzc);
146 MAT3( uPE, *nxc, *nyc, *nzc);
147 MAT3( uPW, *nxc, *nyc, *nzc);
149 MAT3(uPNE, *nxc, *nyc, *nzc);
150 MAT3(uPNW, *nxc, *nyc, *nzc);
151 MAT3(uPSE, *nxc, *nyc, *nzc);
152 MAT3(uPSW, *nxc, *nyc, *nzc);
154 MAT3( dPC, *nxc, *nyc, *nzc);
155 MAT3( dPN, *nxc, *nyc, *nzc);
156 MAT3( dPS, *nxc, *nyc, *nzc);
157 MAT3( dPE, *nxc, *nyc, *nzc);
158 MAT3( dPW, *nxc, *nyc, *nzc);
160 MAT3(dPNE, *nxc, *nyc, *nzc);
161 MAT3(dPNW, *nxc, *nyc, *nzc);
162 MAT3(dPSE, *nxc, *nyc, *nzc);
163 MAT3(dPSW, *nxc, *nyc, *nzc);
165for(k=2; k<=*nzc-1; k++) {
166 for(j=2; j<=*nyc-1; j++) {
167 for(i=2; i<=*nxc-1; i++) {
169 VAT3(oPC, i,j,k) = won;
171 VAT3(oPN, i,j,k) = half;
172 VAT3(oPS, i,j,k) = half;
173 VAT3(oPE, i,j,k) = half;
174 VAT3(oPW, i,j,k) = half;
175 VAT3(uPC, i,j,k) = half;
176 VAT3(dPC, i,j,k) = half;
178 VAT3(oPNE, i,j,k) = quarter;
179 VAT3(oPNW, i,j,k) = quarter;
180 VAT3(oPSE, i,j,k) = quarter;
181 VAT3(oPSW, i,j,k) = quarter;
182 VAT3(dPN, i,j,k) = quarter;
183 VAT3(dPS, i,j,k) = quarter;
184 VAT3(dPE, i,j,k) = quarter;
185 VAT3(dPW, i,j,k) = quarter;
186 VAT3(uPN, i,j,k) = quarter;
187 VAT3(uPS, i,j,k) = quarter;
188 VAT3(uPE, i,j,k) = quarter;
189 VAT3(uPW, i,j,k) = quarter;
191 VAT3(dPNE, i,j,k) = eighth;
192 VAT3(dPNW, i,j,k) = eighth;
193 VAT3(dPSE, i,j,k) = eighth;
194 VAT3(dPSW, i,j,k) = eighth;
195 VAT3(uPNE, i,j,k) = eighth;
196 VAT3(uPNW, i,j,k) = eighth;
197 VAT3(uPSE, i,j,k) = eighth;
198 VAT3(uPSW, i,j,k) = eighth;
206VPUBLIC
void VbuildP_op7(
int *nxf,
int *nyf,
int *nzf,
207 int *nxc,
int *nyc,
int *nzc,
208 int *ipc,
double *rpc,
209 double *ac,
double *pc) {
211 MAT2(ac, *nxf * *nyf * *nzf, 1);
212 MAT2(pc, *nxc * *nyc * *nzc, 1);
216 VbuildPb_op7(nxf, nyf, nzf,
219 RAT2(ac, 1, 1), RAT2(ac, 1, 2), RAT2(ac, 1, 3),
221 RAT2(pc, 1, 1), RAT2(pc, 1, 2), RAT2(pc, 1, 3), RAT2(pc, 1, 4), RAT2(pc, 1, 5),
222 RAT2(pc, 1, 6), RAT2(pc, 1, 7), RAT2(pc, 1, 8), RAT2(pc, 1, 9),
223 RAT2(pc, 1, 10), RAT2(pc, 1, 11), RAT2(pc, 1, 12), RAT2(pc, 1, 13), RAT2(pc, 1, 14),
224 RAT2(pc, 1, 15), RAT2(pc, 1, 16), RAT2(pc, 1, 17), RAT2(pc, 1, 18),
225 RAT2(pc, 1, 19), RAT2(pc, 1, 20), RAT2(pc, 1, 21), RAT2(pc, 1, 22), RAT2(pc, 1, 23),
226 RAT2(pc, 1, 24), RAT2(pc, 1, 25), RAT2(pc, 1, 26), RAT2(pc, 1, 27));
231VPUBLIC
void VbuildPb_op7(
int *nxf,
int *nyf,
int *nzf,
232 int *nxc,
int *nyc,
int *nzc,
233 int *ipc,
double *rpc,
234 double *oC,
double *oE,
double *oN,
236 double *oPC,
double *oPN,
double *oPS,
double *oPE,
double *oPW,
237 double *oPNE,
double *oPNW,
double *oPSE,
double *oPSW,
238 double *uPC,
double *uPN,
double *uPS,
double *uPE,
double *uPW,
239 double *uPNE,
double *uPNW,
double *uPSE,
double *uPSW,
240 double *dPC,
double *dPN,
double *dPS,
double *dPE,
double *dPW,
241 double *dPNE,
double *dPNW,
double *dPSE,
double *dPSW) {
255 double won, half, quarter, eighth;
257 MAT3( oC, *nxf, *nyf, *nzf);
258 MAT3( oE, *nxf, *nyf, *nzf);
259 MAT3( oN, *nxf, *nyf, *nzf);
260 MAT3( uC, *nxf, *nyf, *nzf);
261 MAT3( oPC, *nxc, *nyc, *nzc);
262 MAT3( oPN, *nxc, *nyc, *nzc);
263 MAT3( oPS, *nxc, *nyc, *nzc);
264 MAT3( oPE, *nxc, *nyc, *nzc);
265 MAT3( oPW, *nxc, *nyc, *nzc);
266 MAT3(oPNE, *nxc, *nyc, *nzc);
267 MAT3(oPNW, *nxc, *nyc, *nzc);
268 MAT3(oPSE, *nxc, *nyc, *nzc);
269 MAT3(oPSW, *nxc, *nyc, *nzc);
270 MAT3( uPC, *nxc, *nyc, *nzc);
271 MAT3( uPN, *nxc, *nyc, *nzc);
272 MAT3( uPS, *nxc, *nyc, *nzc);
273 MAT3( uPE, *nxc, *nyc, *nzc);
274 MAT3( uPW, *nxc, *nyc, *nzc);
275 MAT3(uPNE, *nxc, *nyc, *nzc);
276 MAT3(uPNW, *nxc, *nyc, *nzc);
277 MAT3(uPSE, *nxc, *nyc, *nzc);
278 MAT3(uPSW, *nxc, *nyc, *nzc);
279 MAT3( dPC, *nxc, *nyc, *nzc);
280 MAT3( dPN, *nxc, *nyc, *nzc);
281 MAT3( dPS, *nxc, *nyc, *nzc);
282 MAT3( dPE, *nxc, *nyc, *nzc);
283 MAT3( dPW, *nxc, *nyc, *nzc);
284 MAT3(dPNE, *nxc, *nyc, *nzc);
285 MAT3(dPNW, *nxc, *nyc, *nzc);
286 MAT3(dPSE, *nxc, *nyc, *nzc);
287 MAT3(dPSW, *nxc, *nyc, *nzc);
299 for (kk = 2; kk < *nzc - 1; kk++) {
302 for (jj = 2; jj < *nyc - 1; jj++) {
305 for (ii = 2; ii < *nxc - 1; ii++) {
332 VAT3( oPC, ii, jj, kk) = won;
340 VAT3( oPN, ii, jj, kk) =
341 VAT3( oN, i, j, k) / ( VAT3( oC, i, jp1, k)
342 - VAT3( oE, im1, jp1, k)
343 - VAT3( oE, i, jp1, k)
344 - VAT3( uC, i, jp1, km1)
345 - VAT3( uC, i, jp1, k));
353 VAT3( oPS, ii, jj, kk) =
354 VAT3( oN, i, jm1, k) / ( VAT3( oC, i, jm1, k)
355 - VAT3( oE, im1, jm1, k)
356 - VAT3( oE, i, jm1, k)
357 - VAT3( uC, i, jm1, km1)
358 - VAT3( uC, i, jm1, k));
366 VAT3( oPE, ii, jj, kk) =
367 VAT3( oE, i, j, k) / ( VAT3( oC, ip1, j, k)
368 - VAT3( uC, ip1, j, km1)
369 - VAT3( uC, ip1, j, k)
370 - VAT3( oN, ip1, j, k)
371 - VAT3( oN, ip1, jm1, k));
379 VAT3( oPW, ii, jj, kk) =
380 VAT3( oE, im1, j, k) / ( VAT3( oC, im1, j, k)
381 - VAT3( uC, im1, j, km1)
382 - VAT3( uC, im1, j, k)
383 - VAT3( oN, im1, j, k)
384 - VAT3( oN, im1, jm1, k));
392 VAT3(oPNE, ii, jj, kk) =
394 VAT3( oN, ip1, j, k) * VAT3( oPE, ii, jj, kk)
395 + VAT3( oE, i, jp1, k) * VAT3( oPN, ii, jj, kk)
397 VAT3( oC, ip1, jp1, k)
398 - VAT3( uC, ip1, jp1, km1)
399 - VAT3( uC, ip1, jp1, k)
408 VAT3(oPNW, ii, jj, kk) =
410 VAT3( oN, im1, j, k) * VAT3( oPW, ii, jj, kk)
411 + VAT3( oE, im1, jp1, k) * VAT3( oPN, ii, jj, kk)
413 VAT3( oC, im1, jp1, k)
414 - VAT3( uC, im1, jp1, km1)
415 - VAT3( uC, im1, jp1, k)
424 VAT3(oPSE, ii, jj, kk) =
426 VAT3( oN, ip1, jm1, k) * VAT3( oPE, ii, jj, kk)
427 + VAT3( oE, i, jm1, k) * VAT3( oPS, ii, jj, kk)
429 VAT3( oC, ip1, jm1, k)
430 - VAT3( uC, ip1, jm1, km1)
431 - VAT3( uC, ip1, jm1, k)
440 VAT3(oPSW, ii, jj, kk) =
442 VAT3( oN, im1, jm1, k) * VAT3( oPW, ii, jj, kk)
443 + VAT3( oE, im1, jm1, k) * VAT3( oPS, ii, jj, kk)
445 VAT3( oC, im1, jm1, k)
446 - VAT3( uC, im1, jm1, km1)
447 - VAT3( uC, im1, jm1, k)
456 VAT3( dPC, ii, jj, kk) =
460 - VAT3( oN, i, j, km1)
461 - VAT3( oN, i, jm1, km1)
462 - VAT3( oE, im1, j, km1)
463 - VAT3( oE, i, j, km1)
472 VAT3( dPN, ii, jj, kk) =
474 VAT3( oN, i, j, km1) * VAT3( dPC, ii, jj, kk)
475 + VAT3( uC, i, jp1, km1) * VAT3( oPN, ii, jj, kk)
477 VAT3( oC, i, jp1, km1)
478 - VAT3( oE, im1, jp1, km1)
479 - VAT3( oE, i, jp1, km1)
488 VAT3( dPS, ii, jj, kk) =
490 VAT3( oN, i, jm1, km1) * VAT3( dPC, ii, jj, kk)
491 + VAT3( uC, i, jm1, km1) * VAT3( oPS, ii, jj, kk)
493 VAT3( oC, i, jm1, km1)
494 - VAT3( oE, im1, jm1, km1)
495 - VAT3( oE, i, jm1, km1)
504 VAT3( dPE, ii, jj, kk) =
506 VAT3( uC, ip1, j, km1) * VAT3( oPE, ii, jj, kk)
507 + VAT3( oE, i, j, km1) * VAT3( dPC, ii, jj, kk)
509 VAT3( oC, ip1, j, km1)
510 - VAT3( oN, ip1, j, km1)
511 - VAT3( oN, ip1, jm1, km1)
520 VAT3( dPW, ii, jj, kk) =
522 VAT3( uC, im1, j, km1) * VAT3( oPW, ii, jj, kk)
523 + VAT3( oE, im1, j, km1) * VAT3( dPC, ii, jj, kk)
525 VAT3( oC, im1, j, km1)
526 - VAT3( oN, im1, j, km1)
527 - VAT3( oN, im1, jm1, km1)
536 VAT3(dPNE, ii, jj, kk) =
538 VAT3( uC, ip1, jp1, km1) * VAT3(oPNE, ii, jj, kk)
539 + VAT3( oE, i, jp1, km1) * VAT3( dPN, ii, jj, kk)
540 + VAT3( oN, ip1, j, km1) * VAT3( dPE, ii, jj, kk)
541 ) / VAT3( oC, ip1, jp1, km1);
549 VAT3(dPNW, ii, jj, kk) =
551 VAT3( uC, im1, jp1, km1) * VAT3(oPNW, ii, jj, kk)
552 + VAT3( oE, im1, jp1, km1) * VAT3( dPN, ii, jj, kk)
553 + VAT3( oN, im1, j, km1) * VAT3( dPW, ii, jj, kk)
554 ) / VAT3( oC, im1, jp1, km1);
562 VAT3(dPSE, ii, jj, kk) =
564 VAT3( uC, ip1, jm1, km1) * VAT3(oPSE, ii, jj, kk)
565 + VAT3( oE, i, jm1, km1) * VAT3( dPS, ii, jj, kk)
566 + VAT3( oN, ip1, jm1, km1) * VAT3( dPE, ii, jj, kk)
567 ) / VAT3( oC, ip1, jm1, km1);
575 VAT3(dPSW, ii, jj, kk) =
577 VAT3( uC, im1, jm1, km1) * VAT3(oPSW, ii, jj, kk)
578 + VAT3( oE, im1, jm1, km1) * VAT3( dPS, ii, jj, kk)
579 + VAT3( oN, im1, jm1, km1) * VAT3( dPW, ii, jj, kk)
580 ) / VAT3( oC, im1, jm1, km1);
588 VAT3( uPC, ii, jj, kk) =
590 / ( VAT3( oC, i, j, kp1)
591 - VAT3( oN, i, j, kp1)
592 - VAT3( oN, i, jm1, kp1)
593 - VAT3( oE, im1, j, kp1)
594 - VAT3( oE, i, j, kp1)
603 VAT3( uPN, ii, jj, kk) =
605 VAT3( oN, i, j, kp1) * VAT3( uPC, ii, jj, kk)
606 + VAT3( uC, i, jp1, k) * VAT3( oPN, ii, jj, kk)
608 VAT3( oC, i, jp1, kp1)
609 - VAT3( oE, im1, jp1, kp1)
610 - VAT3( oE, i, jp1, kp1)
619 VAT3( uPS, ii, jj, kk) =
621 VAT3( oN, i, jm1, kp1) * VAT3( uPC, ii, jj, kk)
622 + VAT3( uC, i, jm1, k) * VAT3( oPS, ii, jj, kk)
624 VAT3( oC, i, jm1, kp1)
625 - VAT3( oE, im1, jm1, kp1)
626 - VAT3( oE, i, jm1, kp1)
635 VAT3( uPE, ii, jj, kk) =
637 VAT3( uC, ip1, j, k) * VAT3( oPE, ii, jj, kk)
638 + VAT3( oE, i, j, kp1) * VAT3( uPC, ii, jj, kk)
640 VAT3( oC, ip1, j, kp1)
641 - VAT3( oN, ip1, j, kp1)
642 - VAT3( oN, ip1, jm1, kp1)
651 VAT3( uPW, ii, jj, kk) =
653 VAT3( uC, im1, j, k) * VAT3( oPW, ii, jj, kk)
654 + VAT3( oE, im1, j, kp1) * VAT3( uPC, ii, jj, kk)
656 VAT3( oC, im1, j, kp1)
657 - VAT3( oN, im1, j, kp1)
658 - VAT3( oN, im1, jm1, kp1)
667 VAT3(uPNE, ii, jj, kk) =
669 VAT3( uC, ip1, jp1, k) * VAT3(oPNE, ii, jj, kk)
670 + VAT3( oE, i, jp1, kp1) * VAT3( uPN, ii, jj, kk)
671 + VAT3( oN, ip1, j, kp1) * VAT3( uPE, ii, jj, kk)
672 ) / VAT3( oC, ip1, jp1, kp1);
680 VAT3(uPNW, ii, jj, kk) =
682 VAT3( uC, im1, jp1, k) * VAT3(oPNW, ii, jj, kk)
683 + VAT3( oE, im1, jp1, kp1) * VAT3( uPN, ii, jj, kk)
684 + VAT3( oN, im1, j, kp1) * VAT3( uPW, ii, jj, kk)
685 ) / VAT3( oC, im1, jp1, kp1);
693 VAT3(uPSE, ii, jj, kk) =
695 VAT3( uC, ip1, jm1, k) * VAT3(oPSE, ii, jj, kk)
696 + VAT3( oE, i, jm1, kp1) * VAT3( uPS, ii, jj, kk)
697 + VAT3( oN, ip1, jm1, kp1) * VAT3( uPE, ii, jj, kk)
698 ) / VAT3( oC, ip1, jm1, kp1);
706 VAT3(uPSW, ii, jj, kk) =
708 VAT3( uC, im1, jm1, k) * VAT3(oPSW, ii, jj, kk)
709 + VAT3( oE, im1, jm1, kp1) * VAT3( uPS, ii, jj, kk)
710 + VAT3( oN, im1, jm1, kp1) * VAT3( uPW, ii, jj, kk)
711 ) / VAT3( oC, im1, jm1, kp1);
722VPUBLIC
void VbuildP_op27(
int *nxf,
int *nyf,
int *nzf,
723 int *nxc,
int *nyc,
int *nzc,
724 int *ipc,
double *rpc,
725 double *ac,
double *pc) {
727 MAT2(ac, *nxf * *nyf * *nzf, 1);
728 MAT2(pc, *nxc * *nyc * *nzc, 1);
732 VbuildPb_op27(nxf, nyf, nzf,
736 RAT2(ac, 1, 1), RAT2(ac, 1, 2), RAT2(ac, 1, 3),
738 RAT2(ac, 1, 5), RAT2(ac, 1, 6),
739 RAT2(ac, 1, 7), RAT2(ac, 1, 8), RAT2(ac, 1, 9), RAT2(ac, 1, 10),
740 RAT2(ac, 1, 11), RAT2(ac, 1, 12), RAT2(ac, 1, 13), RAT2(ac, 1, 14),
741 RAT2(pc, 1, 1), RAT2(pc, 1, 2), RAT2(pc, 1, 3), RAT2(pc, 1, 4), RAT2(pc, 1, 5),
742 RAT2(pc, 1, 6), RAT2(pc, 1, 7), RAT2(pc, 1, 8), RAT2(pc, 1, 9),
743 RAT2(pc, 1, 10), RAT2(pc, 1, 11), RAT2(pc, 1, 12), RAT2(pc, 1, 13), RAT2(pc, 1, 14),
744 RAT2(pc, 1, 15), RAT2(pc, 1, 16), RAT2(pc, 1, 17), RAT2(pc, 1, 18),
745 RAT2(pc, 1, 19), RAT2(pc, 1, 20), RAT2(pc, 1, 21), RAT2(pc, 1, 22), RAT2(pc, 1, 23),
746 RAT2(pc, 1, 24), RAT2(pc, 1, 25), RAT2(pc, 1, 26), RAT2(pc, 1, 27));
749VPUBLIC
void VbuildPb_op27(
int *nxf,
int *nyf,
int *nzf,
750 int *nxc,
int *nyc,
int *nzc,
751 int *ipc,
double *rpc,
752 double *oC,
double *oE,
double *oN,
754 double *oNE,
double *oNW,
755 double *uE,
double *uW,
double *uN,
double *uS,
756 double *uNE,
double *uNW,
double *uSE,
double *uSW,
757 double *oPC,
double *oPN,
double *oPS,
double *oPE,
double *oPW,
758 double *oPNE,
double *oPNW,
double *oPSE,
double *oPSW,
759 double *uPC,
double *uPN,
double *uPS,
double *uPE,
double *uPW,
760 double *uPNE,
double *uPNW,
double *uPSE,
double *uPSW,
761 double *dPC,
double *dPN,
double *dPS,
double *dPE,
double *dPW,
762 double *dPNE,
double *dPNW,
double *dPSE,
double *dPSW) {
776 double won, half, quarter, eighth;
778 MAT3( oC, *nxf, *nyf, *nzf);
779 MAT3( oE, *nxf, *nyf, *nzf);
780 MAT3( oN, *nxf, *nyf, *nzf);
781 MAT3( uC, *nxf, *nyf, *nzf);
782 MAT3( oNE, *nxf, *nyf, *nzf);
783 MAT3( oNW, *nxf, *nyf, *nzf);
784 MAT3( uE, *nxf, *nyf, *nzf);
785 MAT3( uW, *nxf, *nyf, *nzf);
786 MAT3( uN, *nxf, *nyf, *nzf);
787 MAT3( uS, *nxf, *nyf, *nzf);
788 MAT3( uNE, *nxf, *nyf, *nzf);
789 MAT3( uNW, *nxf, *nyf, *nzf);
790 MAT3( uSE, *nxf, *nyf, *nzf);
791 MAT3( uSW, *nxf, *nyf, *nzf);
792 MAT3( oPC, *nxc, *nyc, *nzc);
793 MAT3( oPN, *nxc, *nyc, *nzc);
794 MAT3( oPS, *nxc, *nyc, *nzc);
795 MAT3( oPE, *nxc, *nyc, *nzc);
796 MAT3( oPW, *nxc, *nyc, *nzc);
797 MAT3(oPNE, *nxc, *nyc, *nzc);
798 MAT3(oPNW, *nxc, *nyc, *nzc);
799 MAT3(oPSE, *nxc, *nyc, *nzc);
800 MAT3(oPSW, *nxc, *nyc, *nzc);
801 MAT3( uPC, *nxc, *nyc, *nzc);
802 MAT3( uPN, *nxc, *nyc, *nzc);
803 MAT3( uPS, *nxc, *nyc, *nzc);
804 MAT3( uPE, *nxc, *nyc, *nzc);
805 MAT3( uPW, *nxc, *nyc, *nzc);
806 MAT3(uPNE, *nxc, *nyc, *nzc);
807 MAT3(uPNW, *nxc, *nyc, *nzc);
808 MAT3(uPSE, *nxc, *nyc, *nzc);
809 MAT3(uPSW, *nxc, *nyc, *nzc);
810 MAT3( dPC, *nxc, *nyc, *nzc);
811 MAT3( dPN, *nxc, *nyc, *nzc);
812 MAT3( dPS, *nxc, *nyc, *nzc);
813 MAT3( dPE, *nxc, *nyc, *nzc);
814 MAT3( dPW, *nxc, *nyc, *nzc);
815 MAT3(dPNE, *nxc, *nyc, *nzc);
816 MAT3(dPNW, *nxc, *nyc, *nzc);
817 MAT3(dPSE, *nxc, *nyc, *nzc);
818 MAT3(dPSW, *nxc, *nyc, *nzc);
830 for (kk = 2; kk <= *nzc - 1; kk++) {
833 for (jj = 2; jj <= *nyc - 1; jj++) {
836 for (ii = 2; ii <= *nxc - 1; ii++) {
863 VAT3( oPC, ii, jj, kk) = won;
871 VAT3( oPN, ii, jj, kk) =
873 VAT3( uNE, im1, j, km1)
874 + VAT3( uN, i, j, km1)
875 + VAT3( uNW, ip1, j, km1)
876 + VAT3( oNE, im1, j, k)
878 + VAT3( oNW, ip1, j, k)
879 + VAT3( uSW, i, jp1, k)
880 + VAT3( uS, i, jp1, k)
881 + VAT3( uSE, i, jp1, k)
884 - VAT3( oE, im1, jp1, k)
885 - VAT3( oE, i, jp1, k)
886 - VAT3( uC, i, jp1, km1)
887 - VAT3( uE, im1, jp1, km1)
888 - VAT3( uW, ip1, jp1, km1)
889 - VAT3( uC, i, jp1, k)
890 - VAT3( uW, i, jp1, k)
891 - VAT3( uE, i, jp1, k)
900 VAT3( oPS, ii, jj, kk) =
902 VAT3( uSE, im1, j, km1)
903 + VAT3( uS, i, j, km1)
904 + VAT3( uSW, ip1, j, km1)
905 + VAT3( oNW, i, jm1, k)
906 + VAT3( oN, i, jm1, k)
907 + VAT3( oNE, i, jm1, k)
908 + VAT3( uNW, i, jm1, k)
909 + VAT3( uN, i, jm1, k)
910 + VAT3( uNE, i, jm1, k)
913 - VAT3( oE, im1, jm1, k)
914 - VAT3( oE, i, jm1, k)
915 - VAT3( uC, i, jm1, km1)
916 - VAT3( uE, im1, jm1, km1)
917 - VAT3( uW, ip1, jm1, km1)
918 - VAT3( uC, i, jm1, k)
919 - VAT3( uW, i, jm1, k)
920 - VAT3( uE, i, jm1, k)
929 VAT3( oPE, ii, jj, kk) =
931 VAT3( uSE, i, jp1, km1)
932 + VAT3( oNW, ip1, j, k)
933 + VAT3( uNW, ip1, j, k)
934 + VAT3( uE, i, j, km1)
936 + VAT3( uW, ip1, j, k)
937 + VAT3( uNE, i, jm1, km1)
938 + VAT3( oNE, i, jm1, k)
939 + VAT3( uSW, ip1, j, k)
942 - VAT3( uC, ip1, j, km1)
943 - VAT3( uC, ip1, j, k)
944 - VAT3( oN, ip1, j, k)
945 - VAT3( uS, ip1, jp1, km1)
946 - VAT3( uN, ip1, j, k)
947 - VAT3( oN, ip1, jm1, k)
948 - VAT3( uN, ip1, jm1, km1)
949 - VAT3( uS, ip1, j, k)
958 VAT3( oPW, ii, jj, kk) =
960 VAT3( uSW, i, jp1, km1)
961 + VAT3( oNE, im1, j, k)
962 + VAT3( uNE, im1, j, k)
963 + VAT3( uW, i, j, km1)
964 + VAT3( oE, im1, j, k)
965 + VAT3( uE, im1, j, k)
966 + VAT3( uNW, i, jm1, km1)
967 + VAT3( oNW, i, jm1, k)
968 + VAT3( uSE, im1, j, k)
971 - VAT3( uC, im1, j, km1)
972 - VAT3( uC, im1, j, k)
973 - VAT3( oN, im1, j, k)
974 - VAT3( uS, im1, jp1, km1)
975 - VAT3( uN, im1, j, k)
976 - VAT3( oN, im1, jm1, k)
977 - VAT3( uN, im1, jm1, km1)
978 - VAT3( uS, im1, j, k)
987 VAT3(oPNE, ii, jj, kk) =
989 VAT3( uNE, i, j, km1)
990 + VAT3( oNE, i, j, k)
991 + VAT3( uSW, ip1, jp1, k)
993 VAT3( uN, ip1, j, km1)
994 + VAT3( oN, ip1, j, k)
995 + VAT3( uS, ip1, jp1, k)
997 * VAT3( oPE, ii, jj, kk)
999 VAT3( uE, i, jp1, km1)
1000 + VAT3( oE, i, jp1, k)
1001 + VAT3( uW, ip1, jp1, k)
1003 * VAT3( oPN, ii, jj, kk)
1005 VAT3( oC, ip1, jp1, k)
1006 - VAT3( uC, ip1, jp1, km1)
1007 - VAT3( uC, ip1, jp1, k)
1016 VAT3(oPNW, ii, jj, kk) =
1018 VAT3( uNW, i, j, km1)
1019 + VAT3( oNW, i, j, k)
1020 + VAT3( uSE, im1, jp1, k)
1022 VAT3( uN, im1, j, km1)
1023 + VAT3( oN, im1, j, k)
1024 + VAT3( uS, im1, jp1, k)
1026 * VAT3( oPW, ii, jj, kk)
1028 VAT3( uW, i, jp1, km1)
1029 + VAT3( oE, im1, jp1, k)
1030 + VAT3( uE, im1, jp1, k)
1032 * VAT3( oPN, ii, jj, kk)
1034 VAT3( oC, im1, jp1, k)
1035 - VAT3( uC, im1, jp1, km1)
1036 - VAT3( uC, im1, jp1, k)
1045 VAT3(oPSE, ii, jj, kk) =
1047 VAT3( uSE, i, j, km1)
1048 + VAT3( oNW, ip1, jm1, k)
1049 + VAT3( uNW, ip1, jm1, k)
1051 VAT3( uS, ip1, j, km1)
1052 + VAT3( oN, ip1, jm1, k)
1053 + VAT3( uN, ip1, jm1, k)
1055 * VAT3( oPE, ii, jj, kk)
1057 VAT3( uE, i, jm1, km1)
1058 + VAT3( oE, i, jm1, k)
1059 + VAT3( uW, ip1, jm1, k)
1061 * VAT3( oPS, ii, jj, kk)
1063 VAT3( oC, ip1, jm1, k)
1064 - VAT3( uC, ip1, jm1, km1)
1065 - VAT3( uC, ip1, jm1, k)
1074 VAT3(oPSW, ii, jj, kk) =
1076 VAT3( uSW, i, j, km1)
1077 + VAT3( oNE, im1, jm1, k)
1078 + VAT3( uNE, im1, jm1, k)
1080 VAT3( uS, im1, j, km1)
1081 + VAT3( oN, im1, jm1, k)
1082 + VAT3( uN, im1, jm1, k)
1084 * VAT3( oPW, ii, jj, kk)
1086 VAT3( uW, i, jm1, km1)
1087 + VAT3( oE, im1, jm1, k)
1088 + VAT3( uE, im1, jm1, k)
1090 * VAT3( oPS, ii, jj, kk)
1092 VAT3( oC, im1, jm1, k)
1093 - VAT3( uC, im1, jm1, km1)
1094 - VAT3( uC, im1, jm1, k)
1103 VAT3( dPC, ii, jj, kk) =
1105 VAT3( uNW, i, j, km1)
1106 + VAT3( uW, i, j, km1)
1107 + VAT3( uSW, i, j, km1)
1108 + VAT3( uN, i, j, km1)
1109 + VAT3( uC, i, j, km1)
1110 + VAT3( uS, i, j, km1)
1111 + VAT3( uNE, i, j, km1)
1112 + VAT3( uE, i, j, km1)
1113 + VAT3( uSE, i, j, km1)
1115 VAT3( oC, i, j, km1)
1116 - VAT3( oN, i, j, km1)
1117 - VAT3( oN, i, jm1, km1)
1118 - VAT3( oNW, i, j, km1)
1119 - VAT3( oE, im1, j, km1)
1120 - VAT3( oNE, im1, jm1, km1)
1121 - VAT3( oNE, i, j, km1)
1122 - VAT3( oE, i, j, km1)
1123 - VAT3( oNW, ip1, jm1, km1)
1132 VAT3( dPN, ii, jj, kk) =
1134 VAT3( uSW, i, jp1, km1)
1135 + VAT3( uS, i, jp1, km1)
1136 + VAT3( uSE, i, jp1, km1)
1138 VAT3( oNE, im1, j, km1)
1139 + VAT3( oN, i, j, km1)
1140 + VAT3( oNW, ip1, j, km1)
1142 * VAT3( dPC, ii, jj, kk)
1144 VAT3( uW, i, jp1, km1)
1145 + VAT3( uC, i, jp1, km1)
1146 + VAT3( uE, i, jp1, km1)
1148 * VAT3( oPN, ii, jj, kk)
1150 VAT3( oC, i, jp1, km1)
1151 - VAT3( oE, im1, jp1, km1)
1152 - VAT3( oE, i, jp1, km1)
1161 VAT3( dPS, ii, jj, kk) =
1163 VAT3( uNW, i, jm1, km1)
1164 + VAT3( uN, i, jm1, km1)
1165 + VAT3( uNE, i, jm1, km1)
1167 VAT3( oNW, i, jm1, km1)
1168 + VAT3( oN, i, jm1, km1)
1169 + VAT3( oNE, i, jm1, km1)
1171 * VAT3( dPC, ii, jj, kk)
1173 VAT3( uW, i, jm1, km1)
1174 + VAT3( uC, i, jm1, km1)
1175 + VAT3( uE, i, jm1, km1)
1177 * VAT3( oPS, ii, jj, kk)
1179 VAT3( oC, i, jm1, km1)
1180 - VAT3( oE, im1, jm1, km1)
1181 - VAT3( oE, i, jm1, km1)
1190 VAT3( dPE, ii, jj, kk) =
1192 VAT3( uNW, ip1, j, km1)
1193 + VAT3( uW, ip1, j, km1)
1194 + VAT3( uSW, ip1, j, km1)
1196 VAT3( uN, ip1, j, km1)
1197 + VAT3( uC, ip1, j, km1)
1198 + VAT3( uS, ip1, j, km1)
1200 * VAT3( oPE, ii, jj, kk)
1202 VAT3( oNW, ip1, j, km1)
1203 + VAT3( oE, i, j, km1)
1204 + VAT3( oNE, i, jm1, km1)
1206 * VAT3( dPC, ii, jj, kk)
1208 VAT3( oC, ip1, j, km1)
1209 - VAT3( oN, ip1, j, km1)
1210 - VAT3( oN, ip1, jm1, km1)
1219 VAT3( dPW, ii, jj, kk) =
1221 VAT3( uNE, im1, j, km1)
1222 + VAT3( uE, im1, j, km1)
1223 + VAT3( uSE, im1, j, km1)
1225 VAT3( uN, im1, j, km1)
1226 + VAT3( uC, im1, j, km1)
1227 + VAT3( uS, im1, j, km1)
1229 * VAT3( oPW, ii, jj, kk)
1231 VAT3( oNE, im1, j, km1)
1232 + VAT3( oE, im1, j, km1)
1233 + VAT3( oNW, i, jm1, km1)
1235 * VAT3( dPC, ii, jj, kk)
1237 VAT3( oC, im1, j, km1)
1238 - VAT3( oN, im1, j, km1)
1239 - VAT3( oN, im1, jm1, km1)
1248 VAT3(dPNE, ii, jj, kk) =
1250 VAT3( uSW, ip1, jp1, km1)
1251 + VAT3( uW, ip1, jp1, km1)
1252 * VAT3( oPN, ii, jj, kk)
1253 + VAT3( uS, ip1, jp1, km1)
1254 * VAT3( oPE, ii, jj, kk)
1255 + VAT3( uC, ip1, jp1, km1)
1256 * VAT3(oPNE, ii, jj, kk)
1257 + VAT3( oNE, i, j, km1)
1258 * VAT3( dPC, ii, jj, kk)
1259 + VAT3( oE, i, jp1, km1)
1260 * VAT3( dPN, ii, jj, kk)
1261 + VAT3( oN, ip1, j, km1)
1262 * VAT3( dPE, ii, jj, kk)
1264 / VAT3( oC, ip1, jp1, km1);
1272 VAT3(dPNW, ii, jj, kk) =
1274 VAT3( uSE, im1, jp1, km1)
1275 + VAT3( uE, im1, jp1, km1)
1276 * VAT3( oPN, ii, jj, kk)
1277 + VAT3( uS, im1, jp1, km1)
1278 * VAT3( oPW, ii, jj, kk)
1279 + VAT3( uC, im1, jp1, km1)
1280 * VAT3(oPNW, ii, jj, kk)
1281 + VAT3( oNW, i, j, km1)
1282 * VAT3( dPC, ii, jj, kk)
1283 + VAT3( oE, im1, jp1, km1)
1284 * VAT3( dPN, ii, jj, kk)
1285 + VAT3( oN, im1, j, km1)
1286 * VAT3( dPW, ii, jj, kk)
1288 / VAT3( oC, im1, jp1, km1);
1296 VAT3(dPSE, ii, jj, kk) =
1298 VAT3( uNW, ip1, jm1, km1)
1299 + VAT3( uW, ip1, jm1, km1)
1300 * VAT3( oPS, ii, jj, kk)
1301 + VAT3( uN, ip1, jm1, km1)
1302 * VAT3( oPE, ii, jj, kk)
1303 + VAT3( uC, ip1, jm1, km1)
1304 * VAT3(oPSE, ii, jj, kk)
1305 + VAT3( oNW, ip1, jm1, km1)
1306 * VAT3( dPC, ii, jj, kk)
1307 + VAT3( oE, i, jm1, km1)
1308 * VAT3( dPS, ii, jj, kk)
1309 + VAT3( oN, ip1, jm1, km1)
1310 * VAT3( dPE, ii, jj, kk)
1312 / VAT3( oC, ip1, jm1, km1);
1320 VAT3(dPSW, ii, jj, kk) =
1322 VAT3( uNE, im1, jm1, km1)
1323 + VAT3( uE, im1, jm1, km1)
1324 * VAT3( oPS, ii, jj, kk)
1325 + VAT3( uN, im1, jm1, km1)
1326 * VAT3( oPW, ii, jj, kk)
1327 + VAT3( uC, im1, jm1, km1)
1328 * VAT3(oPSW, ii, jj, kk)
1329 + VAT3( oNE, im1, jm1, km1)
1330 * VAT3( dPC, ii, jj, kk)
1331 + VAT3( oE, im1, jm1, km1)
1332 * VAT3( dPS, ii, jj, kk)
1333 + VAT3( oN, im1, jm1, km1)
1334 * VAT3( dPW, ii, jj, kk)
1336 / VAT3( oC, im1, jm1, km1);
1344 VAT3( uPC, ii, jj, kk) =
1346 VAT3( uSE, im1, jp1, k)
1347 + VAT3( uE, im1, j, k)
1348 + VAT3( uNE, im1, jm1, k)
1349 + VAT3( uS, i, jp1, k)
1350 + VAT3( uC, i, j, k)
1351 + VAT3( uN, i, jm1, k)
1352 + VAT3( uSW, ip1, jp1, k)
1353 + VAT3( uW, ip1, j, k)
1354 + VAT3( uNW, ip1, jm1, k)
1356 VAT3( oC, i, j, kp1)
1357 - VAT3( oN, i, j, kp1)
1358 - VAT3( oN, i, jm1, kp1)
1359 - VAT3( oNW, i, j, kp1)
1360 - VAT3( oE, im1, j, kp1)
1361 - VAT3( oNE, im1, jm1, kp1)
1362 - VAT3( oNE, i, j, kp1)
1363 - VAT3( oE, i, j, kp1)
1364 - VAT3( oNW, ip1, jm1, kp1)
1373 VAT3( uPN, ii, jj, kk) =
1375 VAT3( uNE, im1, j, k)
1376 + VAT3( uN, i, j, k)
1377 + VAT3( uNW, ip1, j, k)
1379 VAT3( oNE, im1, j, kp1)
1380 + VAT3( oN, i, j, kp1)
1381 + VAT3( oNW, ip1, j, kp1)
1383 * VAT3( uPC, ii, jj, kk)
1385 VAT3( uE, im1, jp1, k)
1386 + VAT3( uC, i, jp1, k)
1387 + VAT3( uW, ip1, jp1, k)
1389 * VAT3( oPN, ii, jj, kk)
1391 VAT3( oC, i, jp1, kp1)
1392 - VAT3( oE, im1, jp1, kp1)
1393 - VAT3( oE, i, jp1, kp1)
1402 VAT3( uPS, ii, jj, kk) =
1404 VAT3( uSE, im1, j, k)
1405 + VAT3( uS, i, j, k)
1406 + VAT3( uSW, ip1, j, k)
1408 VAT3( oNW, i, jm1, kp1)
1409 + VAT3( oN, i, jm1, kp1)
1410 + VAT3( oNE, i, jm1, kp1)
1412 * VAT3( uPC, ii, jj, kk)
1414 VAT3( uE, im1, jm1, k)
1415 + VAT3( uC, i, jm1, k)
1416 + VAT3( uW, ip1, jm1, k)
1418 * VAT3( oPS, ii, jj, kk)
1420 VAT3( oC, i, jm1, kp1)
1421 - VAT3( oE, im1, jm1, kp1)
1422 - VAT3( oE, i, jm1, kp1)
1431 VAT3( uPE, ii, jj, kk) =
1433 VAT3( uSE, i, jp1, k)
1434 + VAT3( uS, ip1, jp1, k)
1435 + VAT3( uNE, i, jm1, k)
1437 VAT3( uS, ip1, jp1, k)
1438 + VAT3( uC, ip1, j, k)
1439 + VAT3( uN, ip1, jm1, k)
1441 * VAT3( oPE, ii, jj, kk)
1443 VAT3( oNW, ip1, j, kp1)
1444 + VAT3( oE, i, j, kp1)
1445 + VAT3( oNE, i, jm1, kp1)
1447 * VAT3( uPC, ii, jj, kk)
1449 VAT3( oC, ip1, j, kp1)
1450 - VAT3( oN, ip1, j, kp1)
1451 - VAT3( oN, ip1, jm1, kp1)
1460 VAT3( uPW, ii, jj, kk) =
1462 VAT3( uSW, i, jp1, k)
1463 + VAT3( uW, i, j, k)
1464 + VAT3( uNW, i, jm1, k)
1466 VAT3( uS, im1, jp1, k)
1467 + VAT3( uC, im1, j, k)
1468 + VAT3( uN, im1, jm1, k)
1470 * VAT3( oPW, ii, jj, kk)
1472 VAT3( oNE, im1, j, kp1)
1473 + VAT3( oE, im1, j, kp1)
1474 + VAT3( oNW, i, jm1, kp1)
1476 * VAT3( uPC, ii, jj, kk)
1478 VAT3( oC, im1, j, kp1)
1479 - VAT3( oN, im1, j, kp1)
1480 - VAT3( oN, im1, jm1, kp1)
1489 VAT3(uPNE, ii, jj, kk) =
1492 + VAT3( uE, i, jp1, k)
1493 * VAT3( oPN, ii, jj, kk)
1494 + VAT3( uN, ip1, j, k)
1495 * VAT3( oPE, ii, jj, kk)
1496 + VAT3( uC, ip1, jp1, k)
1497 * VAT3(oPNE, ii, jj, kk)
1498 + VAT3( oNE, i, j, kp1)
1499 * VAT3( uPC, ii, jj, kk)
1500 + VAT3( oE, i, jp1, kp1)
1501 * VAT3( uPN, ii, jj, kk)
1502 + VAT3( oN, ip1, j, kp1)
1503 * VAT3( uPE, ii, jj, kk)
1505 / VAT3( oC, ip1, jp1, kp1);
1513 VAT3(uPNW, ii, jj, kk) =
1516 + VAT3( uW, i, jp1, k)
1517 * VAT3( oPN, ii, jj, kk)
1518 + VAT3( uN, im1, j, k)
1519 * VAT3( oPW, ii, jj, kk)
1520 + VAT3( uC, im1, jp1, k)
1521 * VAT3(oPNW, ii, jj, kk)
1522 + VAT3( oNW, i, j, kp1)
1523 * VAT3( uPC, ii, jj, kk)
1524 + VAT3( oE, im1, jp1, kp1)
1525 * VAT3( uPN, ii, jj, kk)
1526 + VAT3( oN, im1, j, kp1)
1527 * VAT3( uPW, ii, jj, kk)
1529 / VAT3( oC, im1, jp1, kp1);
1537 VAT3(uPSE, ii, jj, kk) =
1540 + VAT3( uE, i, jm1, k)
1541 * VAT3( oPS, ii, jj, kk)
1542 + VAT3( uS, ip1, j, k)
1543 * VAT3( oPE, ii, jj, kk)
1544 + VAT3( uC, ip1, jm1, k)
1545 * VAT3(oPSE, ii, jj, kk)
1546 + VAT3( oNW, ip1, jm1, kp1)
1547 * VAT3( uPC, ii, jj, kk)
1548 + VAT3( oE, i, jm1, kp1)
1549 * VAT3( uPS, ii, jj, kk)
1550 + VAT3( oN, ip1, jm1, kp1)
1551 * VAT3( uPE, ii, jj, kk)
1553 / VAT3( oC, ip1, jm1, kp1);
1561 VAT3(uPSW, ii, jj, kk) =
1564 + VAT3( uW, i, jm1, k)
1565 * VAT3( oPS, ii, jj, kk)
1566 + VAT3( uS, im1, j, k)
1567 * VAT3( oPW, ii, jj, kk)
1568 + VAT3( uC, im1, jm1, k)
1569 * VAT3(oPSW, ii, jj, kk)
1570 + VAT3( oNE, im1, jm1, kp1)
1571 * VAT3( uPC, ii, jj, kk)
1572 + VAT3( oE, im1, jm1, kp1)
1573 * VAT3( uPS, ii, jj, kk)
1574 + VAT3( oN, im1, jm1, kp1)
1575 * VAT3( uPW, ii, jj, kk)
1577 / VAT3( oC, im1, jm1, kp1);
VPUBLIC void VbuildP(int *nxf, int *nyf, int *nzf, int *nxc, int *nyc, int *nzc, int *mgprol, int *ipc, double *rpc, double *pc, double *ac, double *xf, double *yf, double *zf)
Builds prolongation matrix.