95 const PetscInt les = simCtx->
les;
96 const PetscInt central = simCtx->
central;
100 DM da = user->
da, fda = user->
fda;
102 PetscInt xs, xe, ys, ye, zs, ze;
106 Cmpnts ***fp1, ***fp2, ***fp3;
109 PetscReal ucon, up, um;
110 PetscReal coef = 0.125, innerblank=7.;
112 PetscInt lxs, lxe, lys, lye, lzs, lze, gxs, gxe, gys, gye, gzs,gze;
114 PetscReal ***nvert,***aj;
116 DMDAGetLocalInfo(da, &info);
117 mx = info.mx; my = info.my; mz = info.mz;
118 xs = info.xs; xe = xs + info.xm;
119 ys = info.ys; ye = ys + info.ym;
120 zs = info.zs; ze = zs + info.zm;
121 gxs = info.gxs; gxe = gxs + info.gxm;
122 gys = info.gys; gye = gys + info.gym;
123 gzs = info.gzs; gze = gzs + info.gzm;
125 DMDAVecGetArray(fda, Ucont, &ucont);
126 DMDAVecGetArray(fda, Ucat, &ucat);
127 DMDAVecGetArray(fda, Conv, &conv);
128 DMDAVecGetArray(da, user->
lAj, &aj);
130 VecDuplicate(Ucont, &Fp1);
131 VecDuplicate(Ucont, &Fp2);
132 VecDuplicate(Ucont, &Fp3);
134 DMDAVecGetArray(fda, Fp1, &fp1);
135 DMDAVecGetArray(fda, Fp2, &fp2);
136 DMDAVecGetArray(fda, Fp3, &fp3);
138 DMDAVecGetArray(da, user->
lNvert, &nvert);
168 if (xs==0) lxs = xs+1;
169 if (ys==0) lys = ys+1;
170 if (zs==0) lzs = zs+1;
172 if (xe==mx) lxe=xe-1;
173 if (ye==my) lye=ye-1;
174 if (ze==mz) lze=ze-1;
190 for (k=gzs; k<gze; k++) {
191 for (j=gys; j<gye; j++) {
192 ucat[k][j][i].
x=ucat[k][j][i-2].
x;
193 ucat[k][j][i].
y=ucat[k][j][i-2].
y;
194 ucat[k][j][i].
z=ucat[k][j][i-2].
z;
195 nvert[k][j][i]=nvert[k][j][i-2];
201 for (k=gzs; k<gze; k++) {
202 for (j=gys; j<gye; j++) {
203 ucat[k][j][i].
x=ucat[k][j][i+2].
x;
204 ucat[k][j][i].
y=ucat[k][j][i+2].
y;
205 ucat[k][j][i].
z=ucat[k][j][i+2].
z;
206 nvert[k][j][i]=nvert[k][j][i+2];
214 for (k=gzs; k<gze; k++) {
215 for (i=gxs; i<gxe; i++) {
216 ucat[k][j][i].
x=ucat[k][j-2][i].
x;
217 ucat[k][j][i].
y=ucat[k][j-2][i].
y;
218 ucat[k][j][i].
z=ucat[k][j-2][i].
z;
219 nvert[k][j][i]=nvert[k][j-2][i];
225 for (k=gzs; k<gze; k++) {
226 for (i=gxs; i<gxe; i++) {
227 ucat[k][j][i].
x=ucat[k][j+2][i].
x;
228 ucat[k][j][i].
y=ucat[k][j+2][i].
y;
229 ucat[k][j][i].
z=ucat[k][j+2][i].
z;
230 nvert[k][j][i]=nvert[k][j+2][i];
238 for (j=gys; j<gye; j++) {
239 for (i=gxs; i<gxe; i++) {
240 ucat[k][j][i].
x=ucat[k-2][j][i].
x;
241 ucat[k][j][i].
y=ucat[k-2][j][i].
y;
242 ucat[k][j][i].
z=ucat[k-2][j][i].
z;
243 nvert[k][j][i]=nvert[k-2][j][i];
249 for (j=gys; j<gye; j++) {
250 for (i=gxs; i<gxe; i++) {
251 ucat[k][j][i].
x=ucat[k+2][j][i].
x;
252 ucat[k][j][i].
y=ucat[k+2][j][i].
y;
253 ucat[k][j][i].
z=ucat[k+2][j][i].
z;
254 nvert[k][j][i]=nvert[k+2][j][i];
266 for (k=lzs; k<lze; k++){
267 for (j=lys; j<lye; j++){
268 for (i=lxs-1; i<lxe; i++){
271 ucon = ucont[k][j][i].
x * 0.5;
273 up = ucon + fabs(ucon);
274 um = ucon - fabs(ucon);
277 (nvert[k][j][i+1] < 0.1 || nvert[k][j][i+1]>innerblank) &&
278 (nvert[k][j][i-1] < 0.1 || nvert[k][j][i-1]>innerblank)) {
279 if ((les || central)) {
280 fp1[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j][i+1].
x );
281 fp1[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j][i+1].
y );
282 fp1[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j][i+1].
z );
286 um * (coef * (-ucat[k][j][i+2].
x -2.* ucat[k][j][i+1].
x +3.* ucat[k][j][i ].
x) +ucat[k][j][i+1].x) +
287 up * (coef * (-ucat[k][j][i-1].
x -2.* ucat[k][j][i ].
x +3.* ucat[k][j][i+1].
x) +ucat[k][j][i ].x);
289 um * (coef * (-ucat[k][j][i+2].
y -2.* ucat[k][j][i+1].
y +3.* ucat[k][j][i ].
y) +ucat[k][j][i+1].y) +
290 up * (coef * (-ucat[k][j][i-1].
y -2.* ucat[k][j][i ].
y +3.* ucat[k][j][i+1].
y) +ucat[k][j][i ].y);
292 um * (coef * (-ucat[k][j][i+2].
z -2.* ucat[k][j][i+1].
z +3.* ucat[k][j][i ].
z) +ucat[k][j][i+1].z) +
293 up * (coef * (-ucat[k][j][i-1].
z -2.* ucat[k][j][i ].
z +3.* ucat[k][j][i+1].
z) +ucat[k][j][i ].z);
296 else if ((les || central) && (i==0 || i==mx-2) &&
297 (nvert[k][j][i+1] < 0.1 || nvert[k][j][i+1]>innerblank) &&
298 (nvert[k][j][i ] < 0.1 || nvert[k][j][i ]>innerblank))
300 fp1[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j][i+1].
x );
301 fp1[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j][i+1].
y );
302 fp1[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j][i+1].
z );
304 else if (i==0 ||(nvert[k][j][i-1] > 0.1) ) {
305 if (user->
bctype[0]==7 && i==0 && (nvert[k][j][i-1]<0.1 && nvert[k][j][i+1]<0.1)){
307 um * (coef * (-ucat[k][j][i+2].
x -2.* ucat[k][j][i+1].
x +3.* ucat[k][j][i ].
x) +ucat[k][j][i+1].x) +
308 up * (coef * (-ucat[k][j][i-1].
x -2.* ucat[k][j][i ].
x +3.* ucat[k][j][i+1].
x) +ucat[k][j][i ].x);
310 um * (coef * (-ucat[k][j][i+2].
y -2.* ucat[k][j][i+1].
y +3.* ucat[k][j][i ].
y) +ucat[k][j][i+1].y) +
311 up * (coef * (-ucat[k][j][i-1].
y -2.* ucat[k][j][i ].
y +3.* ucat[k][j][i+1].
y) +ucat[k][j][i ].y);
313 um * (coef * (-ucat[k][j][i+2].
z -2.* ucat[k][j][i+1].
z +3.* ucat[k][j][i ].
z) +ucat[k][j][i+1].z) +
314 up * (coef * (-ucat[k][j][i-1].
z -2.* ucat[k][j][i ].
z +3.* ucat[k][j][i+1].
z) +ucat[k][j][i ].z);
317 um * (coef * (-ucat[k][j][i+2].
x -2.* ucat[k][j][i+1].
x +3.* ucat[k][j][i ].
x) +ucat[k][j][i+1].x) +
318 up * (coef * (-ucat[k][j][i ].
x -2.* ucat[k][j][i ].
x +3.* ucat[k][j][i+1].
x) +ucat[k][j][i ].x);
320 um * (coef * (-ucat[k][j][i+2].
y -2.* ucat[k][j][i+1].
y +3.* ucat[k][j][i ].
y) +ucat[k][j][i+1].y) +
321 up * (coef * (-ucat[k][j][i ].
y -2.* ucat[k][j][i ].
y +3.* ucat[k][j][i+1].
y) +ucat[k][j][i ].y);
323 um * (coef * (-ucat[k][j][i+2].
z -2.* ucat[k][j][i+1].
z +3.* ucat[k][j][i ].
z) +ucat[k][j][i+1].z) +
324 up * (coef * (-ucat[k][j][i ].
z -2.* ucat[k][j][i ].
z +3.* ucat[k][j][i+1].
z) +ucat[k][j][i ].z);
327 else if (i==mx-2 ||(nvert[k][j][i+1]) > 0.1) {
328 if (user->
bctype[0]==7 && i==mx-2 &&(nvert[k][j][i-1]<0.1 && nvert[k][j][i+1]<0.1)){
330 um * (coef * (-ucat[k][j][i+2].
x -2.* ucat[k][j][i+1].
x +3.* ucat[k][j][i ].
x) +ucat[k][j][i+1].x) +
331 up * (coef * (-ucat[k][j][i-1].
x -2.* ucat[k][j][i ].
x +3.* ucat[k][j][i+1].
x) +ucat[k][j][i ].x);
333 um * (coef * (-ucat[k][j][i+2].
y -2.* ucat[k][j][i+1].
y +3.* ucat[k][j][i ].
y) +ucat[k][j][i+1].y) +
334 up * (coef * (-ucat[k][j][i-1].
y -2.* ucat[k][j][i ].
y +3.* ucat[k][j][i+1].
y) +ucat[k][j][i ].y);
336 um * (coef * (-ucat[k][j][i+2].
z -2.* ucat[k][j][i+1].
z +3.* ucat[k][j][i ].
z) +ucat[k][j][i+1].z) +
337 up * (coef * (-ucat[k][j][i-1].
z -2.* ucat[k][j][i ].
z +3.* ucat[k][j][i+1].
z) +ucat[k][j][i ].z);
340 um * (coef * (-ucat[k][j][i+1].
x -2. * ucat[k][j][i+1].
x +3. * ucat[k][j][i ].
x) +ucat[k][j][i+1].x) +
341 up * (coef * (-ucat[k][j][i-1].
x -2. * ucat[k][j][i ].
x +3. * ucat[k][j][i+1].
x) +ucat[k][j][i ].x);
343 um * (coef * (-ucat[k][j][i+1].
y -2. * ucat[k][j][i+1].
y +3. * ucat[k][j][i ].
y) +ucat[k][j][i+1].y) +
344 up * (coef * (-ucat[k][j][i-1].
y -2. * ucat[k][j][i ].
y +3. * ucat[k][j][i+1].
y) +ucat[k][j][i ].y);
346 um * (coef * (-ucat[k][j][i+1].
z -2. * ucat[k][j][i+1].
z +3. * ucat[k][j][i ].
z) +ucat[k][j][i+1].z) +
347 up * (coef * (-ucat[k][j][i-1].
z -2. * ucat[k][j][i ].
z +3. * ucat[k][j][i+1].
z) +ucat[k][j][i ].z);
355 for (k=lzs; k<lze; k++) {
356 for(j=lys-1; j<lye; j++) {
357 for(i=lxs; i<lxe; i++) {
358 ucon = ucont[k][j][i].
y * 0.5;
360 up = ucon + fabs(ucon);
361 um = ucon - fabs(ucon);
364 (nvert[k][j+1][i] < 0.1 || nvert[k][j+1][i] > innerblank) &&
365 (nvert[k][j-1][i] < 0.1 || nvert[k][j-1][i] > innerblank)) {
366 if ((les || central)) {
367 fp2[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j+1][i].
x );
368 fp2[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j+1][i].
y );
369 fp2[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j+1][i].
z );
373 um * (coef * (-ucat[k][j+2][i].
x -2. * ucat[k][j+1][i].
x +3. * ucat[k][j ][i].
x) +ucat[k][j+1][i].x) +
374 up * (coef * (-ucat[k][j-1][i].
x -2. * ucat[k][j ][i].
x +3. * ucat[k][j+1][i].
x) +ucat[k][j ][i].x);
376 um * (coef * (-ucat[k][j+2][i].
y -2. * ucat[k][j+1][i].
y +3. * ucat[k][j ][i].
y) +ucat[k][j+1][i].y) +
377 up * (coef * (-ucat[k][j-1][i].
y -2. * ucat[k][j ][i].
y +3. * ucat[k][j+1][i].
y) +ucat[k][j ][i].y);
379 um * (coef * (-ucat[k][j+2][i].
z -2. * ucat[k][j+1][i].
z +3. * ucat[k][j ][i].
z) +ucat[k][j+1][i].z) +
380 up * (coef * (-ucat[k][j-1][i].
z -2. * ucat[k][j ][i].
z +3. * ucat[k][j+1][i].
z) +ucat[k][j ][i].z);
383 else if ((les || central) && (j==0 || i==my-2) &&
384 (nvert[k][j+1][i] < 0.1 || nvert[k][j+1][i]>innerblank) &&
385 (nvert[k][j ][i] < 0.1 || nvert[k][j ][i]>innerblank))
387 fp2[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j+1][i].
x );
388 fp2[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j+1][i].
y );
389 fp2[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j+1][i].
z );
391 else if (j==0 || (nvert[k][j-1][i]) > 0.1) {
392 if (user->
bctype[2]==7 && j==0 && (nvert[k][j-1][i]<0.1 && nvert[k][j+1][i]<0.1 )){
394 um * (coef * (-ucat[k][j+2][i].
x -2. * ucat[k][j+1][i].
x +3. * ucat[k][j ][i].
x) +ucat[k][j+1][i].x) +
395 up * (coef * (-ucat[k][j-1][i].
x -2. * ucat[k][j ][i].
x +3. * ucat[k][j+1][i].
x) +ucat[k][j ][i].x);
397 um * (coef * (-ucat[k][j+2][i].
y -2. * ucat[k][j+1][i].
y +3. * ucat[k][j ][i].
y) +ucat[k][j+1][i].y) +
398 up * (coef * (-ucat[k][j-1][i].
y -2. * ucat[k][j ][i].
y +3. * ucat[k][j+1][i].
y) +ucat[k][j ][i].y);
400 um * (coef * (-ucat[k][j+2][i].
z -2. * ucat[k][j+1][i].
z +3. * ucat[k][j ][i].
z) +ucat[k][j+1][i].z) +
401 up * (coef * (-ucat[k][j-1][i].
z -2. * ucat[k][j ][i].
z +3. * ucat[k][j+1][i].
z) +ucat[k][j ][i].z);
404 um * (coef * (-ucat[k][j+2][i].
x -2. * ucat[k][j+1][i].
x +3. * ucat[k][j ][i].
x) +ucat[k][j+1][i].x) +
405 up * (coef * (-ucat[k][j ][i].
x -2. * ucat[k][j ][i].
x +3. * ucat[k][j+1][i].
x) +ucat[k][j ][i].x);
407 um * (coef * (-ucat[k][j+2][i].
y -2. * ucat[k][j+1][i].
y +3. * ucat[k][j ][i].
y) +ucat[k][j+1][i].y) +
408 up * (coef * (-ucat[k][j ][i].
y -2. * ucat[k][j ][i].
y +3. * ucat[k][j+1][i].
y) +ucat[k][j ][i].y);
410 um * (coef * (-ucat[k][j+2][i].
z -2. * ucat[k][j+1][i].
z +3. * ucat[k][j ][i].
z) +ucat[k][j+1][i].z) +
411 up * (coef * (-ucat[k][j ][i].
z -2. * ucat[k][j ][i].
z +3. * ucat[k][j+1][i].
z) +ucat[k][j ][i].z);
414 else if (j==my-2 ||(nvert[k][j+1][i]) > 0.1) {
415 if (user->
bctype[2]==7 && j==my-2 && (nvert[k][j-1][i]<0.1 && nvert[k][j+1][i]<0.1 )){
417 um * (coef * (-ucat[k][j+2][i].
x -2. * ucat[k][j+1][i].
x +3. * ucat[k][j ][i].
x) +ucat[k][j+1][i].x) +
418 up * (coef * (-ucat[k][j-1][i].
x -2. * ucat[k][j ][i].
x +3. * ucat[k][j+1][i].
x) +ucat[k][j ][i].x);
420 um * (coef * (-ucat[k][j+2][i].
y -2. * ucat[k][j+1][i].
y +3. * ucat[k][j ][i].
y) +ucat[k][j+1][i].y) +
421 up * (coef * (-ucat[k][j-1][i].
y -2. * ucat[k][j ][i].
y +3. * ucat[k][j+1][i].
y) +ucat[k][j ][i].y);
423 um * (coef * (-ucat[k][j+2][i].
z -2. * ucat[k][j+1][i].
z +3. * ucat[k][j ][i].
z) +ucat[k][j+1][i].z) +
424 up * (coef * (-ucat[k][j-1][i].
z -2. * ucat[k][j ][i].
z +3. * ucat[k][j+1][i].
z) +ucat[k][j ][i].z);
427 um * (coef * (-ucat[k][j+1][i].
x -2. * ucat[k][j+1][i].
x +3. * ucat[k][j ][i].
x) +ucat[k][j+1][i].x) +
428 up * (coef * (-ucat[k][j-1][i].
x -2. * ucat[k][j ][i].
x +3. * ucat[k][j+1][i].
x) +ucat[k][j ][i].x);
430 um * (coef * (-ucat[k][j+1][i].
y -2. * ucat[k][j+1][i].
y +3. * ucat[k][j ][i].
y) +ucat[k][j+1][i].y) +
431 up * (coef * (-ucat[k][j-1][i].
y -2. * ucat[k][j ][i].
y +3. * ucat[k][j+1][i].
y) +ucat[k][j][i ].y);
433 um * (coef * (-ucat[k][j+1][i].
z -2. * ucat[k][j+1][i].
z +3. * ucat[k][j ][i].
z) +ucat[k][j+1][i].z) +
434 up * (coef * (-ucat[k][j-1][i].
z -2. * ucat[k][j ][i].
z +3. * ucat[k][j+1][i].
z) +ucat[k][j][i ].z);
443 for (k=lzs-1; k<lze; k++) {
444 for(j=lys; j<lye; j++) {
445 for(i=lxs; i<lxe; i++) {
446 ucon = ucont[k][j][i].
z * 0.5;
448 up = ucon + fabs(ucon);
449 um = ucon - fabs(ucon);
452 (nvert[k+1][j][i] < 0.1 || nvert[k+1][j][i] > innerblank) &&
453 (nvert[k-1][j][i] < 0.1 || nvert[k-1][j][i] > innerblank)) {
454 if ((les || central)) {
455 fp3[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k+1][j][i].
x );
456 fp3[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k+1][j][i].
y );
457 fp3[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k+1][j][i].
z );
461 um * (coef * (-ucat[k+2][j][i].
x -2. * ucat[k+1][j][i].
x +3. * ucat[k ][j][i].
x) +ucat[k+1][j][i].x) +
462 up * (coef * (-ucat[k-1][j][i].
x -2. * ucat[k ][j][i].
x +3. * ucat[k+1][j][i].
x) +ucat[k ][j][i].x);
464 um * (coef * (-ucat[k+2][j][i].
y -2. * ucat[k+1][j][i].
y +3. * ucat[k ][j][i].
y) +ucat[k+1][j][i].y) +
465 up * (coef * (-ucat[k-1][j][i].
y -2. * ucat[k ][j][i].
y +3. * ucat[k+1][j][i].
y) +ucat[k ][j][i].y);
467 um * (coef * (-ucat[k+2][j][i].
z -2. * ucat[k+1][j][i].
z +3. * ucat[k ][j][i].
z) +ucat[k+1][j][i].z) +
468 up * (coef * (-ucat[k-1][j][i].
z -2. * ucat[k ][j][i].
z +3. * ucat[k+1][j][i].
z) +ucat[k ][j][i].z);
471 else if ((les || central) && (k==0 || k==mz-2) &&
472 (nvert[k+1][j][i] < 0.1 || nvert[k+1][j][i]>innerblank) &&
473 (nvert[k ][j][i] < 0.1 || nvert[k ][j][i]>innerblank))
475 fp3[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k+1][j][i].
x );
476 fp3[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k+1][j][i].
y );
477 fp3[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k+1][j][i].
z );
479 else if (k<mz-2 && (k==0 ||(nvert[k-1][j][i]) > 0.1)) {
480 if(user->
bctype[4]==7 && k==0 && (nvert[k-1][j][i]<0.1 && nvert[k+1][j][i]<0.1)){
482 um * (coef * (-ucat[k+2][j][i].
x -2. * ucat[k+1][j][i].
x +3. * ucat[k ][j][i].
x) +ucat[k+1][j][i].x) +
483 up * (coef * (-ucat[k-1][j][i].
x -2. * ucat[k ][j][i].
x +3. * ucat[k+1][j][i].
x) +ucat[k ][j][i].x);
485 um * (coef * (-ucat[k+2][j][i].
y -2. * ucat[k+1][j][i].
y +3. * ucat[k ][j][i].
y) +ucat[k+1][j][i].y) +
486 up * (coef * (-ucat[k-1][j][i].
y -2. * ucat[k ][j][i].
y +3. * ucat[k+1][j][i].
y) +ucat[k ][j][i].y);
488 um * (coef * (-ucat[k+2][j][i].
z -2. * ucat[k+1][j][i].
z +3. * ucat[k ][j][i].
z) +ucat[k+1][j][i].z) +
489 up * (coef * (-ucat[k-1][j][i].
z -2. * ucat[k ][j][i].
z +3. * ucat[k+1][j][i].
z) +ucat[k ][j][i].z);
492 um * (coef * (-ucat[k+2][j][i].
x -2. * ucat[k+1][j][i].
x +3. * ucat[k ][j][i].
x) +ucat[k+1][j][i].x) +
493 up * (coef * (-ucat[k ][j][i].
x -2. * ucat[k ][j][i].
x +3. * ucat[k+1][j][i].
x) +ucat[k][j][i ].x);
495 um * (coef * (-ucat[k+2][j][i].
y -2. * ucat[k+1][j][i].
y +3. * ucat[k ][j][i].
y) +ucat[k+1][j][i].y) +
496 up * (coef * (-ucat[k ][j][i].
y -2. * ucat[k ][j][i].
y +3. * ucat[k+1][j][i].
y) +ucat[k][j][i ].y);
498 um * (coef * (-ucat[k+2][j][i].
z -2. * ucat[k+1][j][i].
z +3. * ucat[k ][j][i].
z) +ucat[k+1][j][i].z) +
499 up * (coef * (-ucat[k ][j][i].
z -2. * ucat[k ][j][i].
z +3. * ucat[k+1][j][i].
z) +ucat[k][j][i ].z);
502 else if (k>0 && (k==mz-2 ||(nvert[k+1][j][i]) > 0.1)) {
503 if (user->
bctype[4]==7 && k==mz-2 && (nvert[k-1][j][i]<0.1 && nvert[k+1][j][i]<0.1)){
505 um * (coef * (-ucat[k+2][j][i].
x -2. * ucat[k+1][j][i].
x +3. * ucat[k ][j][i].
x) +ucat[k+1][j][i].x) +
506 up * (coef * (-ucat[k-1][j][i].
x -2. * ucat[k ][j][i].
x +3. * ucat[k+1][j][i].
x) +ucat[k ][j][i].x);
508 um * (coef * (-ucat[k+2][j][i].
y -2. * ucat[k+1][j][i].
y +3. * ucat[k ][j][i].
y) +ucat[k+1][j][i].y) +
509 up * (coef * (-ucat[k-1][j][i].
y -2. * ucat[k ][j][i].
y +3. * ucat[k+1][j][i].
y) +ucat[k ][j][i].y);
511 um * (coef * (-ucat[k+2][j][i].
z -2. * ucat[k+1][j][i].
z +3. * ucat[k ][j][i].
z) +ucat[k+1][j][i].z) +
512 up * (coef * (-ucat[k-1][j][i].
z -2. * ucat[k ][j][i].
z +3. * ucat[k+1][j][i].
z) +ucat[k ][j][i].z);
515 um * (coef * (-ucat[k+1][j][i].
x -2. * ucat[k+1][j][i].
x +3. * ucat[k ][j][i].
x) +ucat[k+1][j][i].x) +
516 up * (coef * (-ucat[k-1][j][i].
x -2. * ucat[k ][j][i].
x +3. * ucat[k+1][j][i].
x) +ucat[k][j][i ].x);
518 um * (coef * (-ucat[k+1][j][i].
y -2. * ucat[k+1][j][i].
y +3. * ucat[k ][j][i].
y) +ucat[k+1][j][i].y) +
519 up * (coef * (-ucat[k-1][j][i].
y -2. * ucat[k ][j][i].
y +3. * ucat[k+1][j][i].
y) +ucat[k][j][i ].y);
521 um * (coef * (-ucat[k+1][j][i].
z -2. * ucat[k+1][j][i].
z +3. * ucat[k ][j][i].
z) +ucat[k+1][j][i].z) +
522 up * (coef * (-ucat[k-1][j][i].
z -2. * ucat[k ][j][i].
z +3. * ucat[k+1][j][i].
z) +ucat[k][j][i ].z);
531 for (k=lzs; k<lze; k++) {
532 for (j=lys; j<lye; j++) {
533 for (i=lxs; i<lxe; i++) {
535 fp1[k][j][i].
x - fp1[k][j][i-1].
x +
536 fp2[k][j][i].
x - fp2[k][j-1][i].
x +
537 fp3[k][j][i].
x - fp3[k-1][j][i].
x;
540 fp1[k][j][i].
y - fp1[k][j][i-1].
y +
541 fp2[k][j][i].
y - fp2[k][j-1][i].
y +
542 fp3[k][j][i].
y - fp3[k-1][j][i].
y;
545 fp1[k][j][i].
z - fp1[k][j][i-1].
z +
546 fp2[k][j][i].
z - fp2[k][j-1][i].
z +
547 fp3[k][j][i].
z - fp3[k-1][j][i].
z;
560 DMDAVecRestoreArray(fda, Ucont, &ucont);
561 DMDAVecRestoreArray(fda, Ucat, &ucat);
562 DMDAVecRestoreArray(fda, Conv, &conv);
563 DMDAVecRestoreArray(da, user->
lAj, &aj);
565 DMDAVecRestoreArray(fda, Fp1, &fp1);
566 DMDAVecRestoreArray(fda, Fp2, &fp2);
567 DMDAVecRestoreArray(fda, Fp3, &fp3);
568 DMDAVecRestoreArray(da, user->
lNvert, &nvert);
583 Vec Csi = user->
lCsi, Eta = user->
lEta, Zet = user->
lZet;
587 Cmpnts ***csi, ***eta, ***zet;
588 Cmpnts ***icsi, ***ieta, ***izet;
589 Cmpnts ***jcsi, ***jeta, ***jzet;
590 Cmpnts ***kcsi, ***keta, ***kzet;
594 DM da = user->
da, fda = user->
fda;
596 PetscInt xs, xe, ys, ye, zs, ze;
600 Cmpnts ***fp1, ***fp2, ***fp3;
602 PetscReal ***aj, ***iaj, ***jaj, ***kaj;
604 PetscInt lxs, lxe, lys, lye, lzs, lze;
608 PetscReal dudc, dude, dudz, dvdc, dvde, dvdz, dwdc, dwde, dwdz;
609 PetscReal csi0, csi1, csi2, eta0, eta1, eta2, zet0, zet1, zet2;
610 PetscReal g11, g21, g31;
611 PetscReal r11, r21, r31, r12, r22, r32, r13, r23, r33;
613 PetscScalar solid,innerblank;
620 const PetscInt les = simCtx->
les;
621 const PetscInt rans = simCtx->
rans;
622 const PetscInt ti = simCtx->
step;
623 const PetscReal ren = simCtx->
ren;
624 const PetscInt clark = simCtx->
clark;
628 DMDAVecGetArray(fda, Ucont, &ucont);
629 DMDAVecGetArray(fda, Ucat, &ucat);
630 DMDAVecGetArray(fda, Visc, &visc);
632 DMDAVecGetArray(fda, Csi, &csi);
633 DMDAVecGetArray(fda, Eta, &eta);
634 DMDAVecGetArray(fda, Zet, &zet);
636 DMDAVecGetArray(fda, user->
lICsi, &icsi);
637 DMDAVecGetArray(fda, user->
lIEta, &ieta);
638 DMDAVecGetArray(fda, user->
lIZet, &izet);
640 DMDAVecGetArray(fda, user->
lJCsi, &jcsi);
641 DMDAVecGetArray(fda, user->
lJEta, &jeta);
642 DMDAVecGetArray(fda, user->
lJZet, &jzet);
644 DMDAVecGetArray(fda, user->
lKCsi, &kcsi);
645 DMDAVecGetArray(fda, user->
lKEta, &keta);
646 DMDAVecGetArray(fda, user->
lKZet, &kzet);
648 DMDAVecGetArray(da, user->
lNvert, &nvert);
650 VecDuplicate(Ucont, &Fp1);
651 VecDuplicate(Ucont, &Fp2);
652 VecDuplicate(Ucont, &Fp3);
654 DMDAVecGetArray(fda, Fp1, &fp1);
655 DMDAVecGetArray(fda, Fp2, &fp2);
656 DMDAVecGetArray(fda, Fp3, &fp3);
658 DMDAVecGetArray(da, user->
lAj, &aj);
660 DMDAGetLocalInfo(da, &info);
662 mx = info.mx; my = info.my; mz = info.mz;
663 xs = info.xs; xe = xs + info.xm;
664 ys = info.ys; ye = ys + info.ym;
665 zs = info.zs; ze = zs + info.zm;
673 if (xs==0) lxs = xs+1;
674 if (ys==0) lys = ys+1;
675 if (zs==0) lzs = zs+1;
678 if (xe==mx) lxe=xe-1;
679 if (ye==my) lye=ye-1;
680 if (ze==mz) lze=ze-1;
687 DMDAVecGetArray(da, user->
lNu_t, &lnu_t);
690 DMDAVecGetArray(da, user->
lNu_t, &lnu_t);
695 DMDAVecGetArray(da, user->
lIAj, &iaj);
705 for (k=lzs; k<lze; k++) {
706 for (j=lys; j<lye; j++) {
707 for (i=lxs-1; i<lxe; i++) {
709 dudc = ucat[k][j][i+1].
x - ucat[k][j][i].
x;
710 dvdc = ucat[k][j][i+1].
y - ucat[k][j][i].
y;
711 dwdc = ucat[k][j][i+1].
z - ucat[k][j][i].
z;
713 if ((nvert[k][j+1][i ]> solid && nvert[k][j+1][i ]<innerblank) ||
714 (nvert[k][j+1][i+1]> solid && nvert[k][j+1][i+1]<innerblank)) {
715 dude = (ucat[k][j ][i+1].
x + ucat[k][j ][i].
x -
716 ucat[k][j-1][i+1].
x - ucat[k][j-1][i].
x) * 0.5;
717 dvde = (ucat[k][j ][i+1].
y + ucat[k][j ][i].
y -
718 ucat[k][j-1][i+1].
y - ucat[k][j-1][i].
y) * 0.5;
719 dwde = (ucat[k][j ][i+1].
z + ucat[k][j ][i].
z -
720 ucat[k][j-1][i+1].
z - ucat[k][j-1][i].
z) * 0.5;
722 else if ((nvert[k][j-1][i ]> solid && nvert[k][j-1][i ]<innerblank) ||
723 (nvert[k][j-1][i+1]> solid && nvert[k][j-1][i+1]<innerblank)) {
724 dude = (ucat[k][j+1][i+1].
x + ucat[k][j+1][i].
x -
725 ucat[k][j ][i+1].
x - ucat[k][j ][i].
x) * 0.5;
726 dvde = (ucat[k][j+1][i+1].
y + ucat[k][j+1][i].
y -
727 ucat[k][j ][i+1].
y - ucat[k][j ][i].
y) * 0.5;
728 dwde = (ucat[k][j+1][i+1].
z + ucat[k][j+1][i].
z -
729 ucat[k][j ][i+1].
z - ucat[k][j ][i].
z) * 0.5;
732 dude = (ucat[k][j+1][i+1].
x + ucat[k][j+1][i].
x -
733 ucat[k][j-1][i+1].
x - ucat[k][j-1][i].
x) * 0.25;
734 dvde = (ucat[k][j+1][i+1].
y + ucat[k][j+1][i].
y -
735 ucat[k][j-1][i+1].
y - ucat[k][j-1][i].
y) * 0.25;
736 dwde = (ucat[k][j+1][i+1].
z + ucat[k][j+1][i].
z -
737 ucat[k][j-1][i+1].
z - ucat[k][j-1][i].
z) * 0.25;
740 if ((nvert[k+1][j][i ]> solid && nvert[k+1][j][i ]<innerblank)||
741 (nvert[k+1][j][i+1]> solid && nvert[k+1][j][i+1]<innerblank)) {
742 dudz = (ucat[k ][j][i+1].
x + ucat[k ][j][i].
x -
743 ucat[k-1][j][i+1].
x - ucat[k-1][j][i].
x) * 0.5;
744 dvdz = (ucat[k ][j][i+1].
y + ucat[k ][j][i].
y -
745 ucat[k-1][j][i+1].
y - ucat[k-1][j][i].
y) * 0.5;
746 dwdz = (ucat[k ][j][i+1].
z + ucat[k ][j][i].
z -
747 ucat[k-1][j][i+1].
z - ucat[k-1][j][i].
z) * 0.5;
749 else if ((nvert[k-1][j][i ]> solid && nvert[k-1][j][i ]<innerblank) ||
750 (nvert[k-1][j][i+1]> solid && nvert[k-1][j][i+1]<innerblank)) {
752 dudz = (ucat[k+1][j][i+1].
x + ucat[k+1][j][i].
x -
753 ucat[k ][j][i+1].
x - ucat[k ][j][i].
x) * 0.5;
754 dvdz = (ucat[k+1][j][i+1].
y + ucat[k+1][j][i].
y -
755 ucat[k ][j][i+1].
y - ucat[k ][j][i].
y) * 0.5;
756 dwdz = (ucat[k+1][j][i+1].
z + ucat[k+1][j][i].
z -
757 ucat[k ][j][i+1].
z - ucat[k ][j][i].
z) * 0.5;
760 dudz = (ucat[k+1][j][i+1].
x + ucat[k+1][j][i].
x -
761 ucat[k-1][j][i+1].
x - ucat[k-1][j][i].
x) * 0.25;
762 dvdz = (ucat[k+1][j][i+1].
y + ucat[k+1][j][i].
y -
763 ucat[k-1][j][i+1].
y - ucat[k-1][j][i].
y) * 0.25;
764 dwdz = (ucat[k+1][j][i+1].
z + ucat[k+1][j][i].
z -
765 ucat[k-1][j][i+1].
z - ucat[k-1][j][i].
z) * 0.25;
768 csi0 = icsi[k][j][i].
x;
769 csi1 = icsi[k][j][i].
y;
770 csi2 = icsi[k][j][i].
z;
772 eta0 = ieta[k][j][i].
x;
773 eta1 = ieta[k][j][i].
y;
774 eta2 = ieta[k][j][i].
z;
776 zet0 = izet[k][j][i].
x;
777 zet1 = izet[k][j][i].
y;
778 zet2 = izet[k][j][i].
z;
780 g11 = csi0 * csi0 + csi1 * csi1 + csi2 * csi2;
781 g21 = eta0 * csi0 + eta1 * csi1 + eta2 * csi2;
782 g31 = zet0 * csi0 + zet1 * csi1 + zet2 * csi2;
784 r11 = dudc * csi0 + dude * eta0 + dudz * zet0;
785 r21 = dvdc * csi0 + dvde * eta0 + dvdz * zet0;
786 r31 = dwdc * csi0 + dwde * eta0 + dwdz * zet0;
788 r12 = dudc * csi1 + dude * eta1 + dudz * zet1;
789 r22 = dvdc * csi1 + dvde * eta1 + dvdz * zet1;
790 r32 = dwdc * csi1 + dwde * eta1 + dwdz * zet1;
792 r13 = dudc * csi2 + dude * eta2 + dudz * zet2;
793 r23 = dvdc * csi2 + dvde * eta2 + dvdz * zet2;
794 r33 = dwdc * csi2 + dwde * eta2 + dwdz * zet2;
798 double nu = 1./ren,
nu_t=0;
800 if( les || (rans && ti>0) ) {
802 nu_t = 0.5 * (lnu_t[k][j][i] + lnu_t[k][j][i+1]);
803 if ( (user->
bctype[0]==1 && i==0) || (user->
bctype[1]==1 && i==mx-2) )
nu_t=0;
804 fp1[k][j][i].
x = (g11 * dudc + g21 * dude + g31 * dudz + r11 * csi0 + r21 * csi1 + r31 * csi2) * ajc * (
nu_t);
805 fp1[k][j][i].
y = (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * csi0 + r22 * csi1 + r32 * csi2) * ajc * (
nu_t);
806 fp1[k][j][i].
z = (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * csi0 + r23 * csi1 + r33 * csi2) * ajc * (
nu_t);
814 fp1[k][j][i].
x += (g11 * dudc + g21 * dude + g31 * dudz+ r11 * csi0 + r21 * csi1 + r31 * csi2 ) * ajc * (nu);
815 fp1[k][j][i].
y += (g11 * dvdc + g21 * dvde + g31 * dvdz+ r12 * csi0 + r22 * csi1 + r32 * csi2 ) * ajc * (nu);
816 fp1[k][j][i].
z += (g11 * dwdc + g21 * dwde + g31 * dwdz+ r13 * csi0 + r23 * csi1 + r33 * csi2 ) * ajc * (nu);
821 Calculate_dxdydz (ajc, csi[k][j][i], eta[k][j][i], zet[k][j][i], &dc, &de, &dz);
822 double dc2=dc*dc, de2=de*de, dz2=dz*dz;
824 double t11 = ( dudc * dudc * dc2 + dude * dude * de2 + dudz * dudz * dz2 );
825 double t12 = ( dudc * dvdc * dc2 + dude * dvde * de2 + dudz * dvdz * dz2 );
826 double t13 = ( dudc * dwdc * dc2 + dude * dwde * de2 + dudz * dwdz * dz2 );
828 double t22 = ( dvdc * dvdc * dc2 + dvde * dvde * de2 + dvdz * dvdz * dz2 );
829 double t23 = ( dvdc * dwdc * dc2 + dvde * dwde * de2 + dvdz * dwdz * dz2 );
832 double t33 = ( dwdc * dwdc * dc2 + dwde * dwde * de2 + dwdz * dwdz * dz2 );
834 fp1[k][j][i].
x -= ( t11 * csi0 + t12 * csi1 + t13 * csi2 ) / 12.;
835 fp1[k][j][i].
y -= ( t21 * csi0 + t22 * csi1 + t23 * csi2 ) / 12.;
836 fp1[k][j][i].
z -= ( t31 * csi0 + t32 * csi1 + t33 * csi2 ) / 12.;
842 DMDAVecRestoreArray(da, user->
lIAj, &iaj);
846 DMDAVecGetArray(da, user->
lJAj, &jaj);
847 for (k=lzs; k<lze; k++) {
848 for (j=lys-1; j<lye; j++) {
849 for (i=lxs; i<lxe; i++) {
851 if ((nvert[k][j ][i+1]> solid && nvert[k][j ][i+1]<innerblank)||
852 (nvert[k][j+1][i+1]> solid && nvert[k][j+1][i+1]<innerblank)) {
853 dudc = (ucat[k][j+1][i ].
x + ucat[k][j][i ].
x -
854 ucat[k][j+1][i-1].
x - ucat[k][j][i-1].
x) * 0.5;
855 dvdc = (ucat[k][j+1][i ].
y + ucat[k][j][i ].
y -
856 ucat[k][j+1][i-1].
y - ucat[k][j][i-1].
y) * 0.5;
857 dwdc = (ucat[k][j+1][i ].
z + ucat[k][j][i ].
z -
858 ucat[k][j+1][i-1].
z - ucat[k][j][i-1].
z) * 0.5;
860 else if ((nvert[k][j ][i-1]> solid && nvert[k][j ][i-1]<innerblank) ||
861 (nvert[k][j+1][i-1]> solid && nvert[k][j+1][i-1]<innerblank)) {
862 dudc = (ucat[k][j+1][i+1].
x + ucat[k][j][i+1].
x -
863 ucat[k][j+1][i ].
x - ucat[k][j][i ].
x) * 0.5;
864 dvdc = (ucat[k][j+1][i+1].
y + ucat[k][j][i+1].
y -
865 ucat[k][j+1][i ].
y - ucat[k][j][i ].
y) * 0.5;
866 dwdc = (ucat[k][j+1][i+1].
z + ucat[k][j][i+1].
z -
867 ucat[k][j+1][i ].
z - ucat[k][j][i ].
z) * 0.5;
870 dudc = (ucat[k][j+1][i+1].
x + ucat[k][j][i+1].
x -
871 ucat[k][j+1][i-1].
x - ucat[k][j][i-1].
x) * 0.25;
872 dvdc = (ucat[k][j+1][i+1].
y + ucat[k][j][i+1].
y -
873 ucat[k][j+1][i-1].
y - ucat[k][j][i-1].
y) * 0.25;
874 dwdc = (ucat[k][j+1][i+1].
z + ucat[k][j][i+1].
z -
875 ucat[k][j+1][i-1].
z - ucat[k][j][i-1].
z) * 0.25;
878 dude = ucat[k][j+1][i].
x - ucat[k][j][i].
x;
879 dvde = ucat[k][j+1][i].
y - ucat[k][j][i].
y;
880 dwde = ucat[k][j+1][i].
z - ucat[k][j][i].
z;
882 if ((nvert[k+1][j ][i]> solid && nvert[k+1][j ][i]<innerblank)||
883 (nvert[k+1][j+1][i]> solid && nvert[k+1][j+1][i]<innerblank)) {
884 dudz = (ucat[k ][j+1][i].
x + ucat[k ][j][i].
x -
885 ucat[k-1][j+1][i].
x - ucat[k-1][j][i].
x) * 0.5;
886 dvdz = (ucat[k ][j+1][i].
y + ucat[k ][j][i].
y -
887 ucat[k-1][j+1][i].
y - ucat[k-1][j][i].
y) * 0.5;
888 dwdz = (ucat[k ][j+1][i].
z + ucat[k ][j][i].
z -
889 ucat[k-1][j+1][i].
z - ucat[k-1][j][i].
z) * 0.5;
891 else if ((nvert[k-1][j ][i]> solid && nvert[k-1][j ][i]<innerblank)||
892 (nvert[k-1][j+1][i]> solid && nvert[k-1][j+1][i]<innerblank)) {
893 dudz = (ucat[k+1][j+1][i].
x + ucat[k+1][j][i].
x -
894 ucat[k ][j+1][i].
x - ucat[k ][j][i].
x) * 0.5;
895 dvdz = (ucat[k+1][j+1][i].
y + ucat[k+1][j][i].
y -
896 ucat[k ][j+1][i].
y - ucat[k ][j][i].
y) * 0.5;
897 dwdz = (ucat[k+1][j+1][i].
z + ucat[k+1][j][i].
z -
898 ucat[k ][j+1][i].
z - ucat[k ][j][i].
z) * 0.5;
901 dudz = (ucat[k+1][j+1][i].
x + ucat[k+1][j][i].
x -
902 ucat[k-1][j+1][i].
x - ucat[k-1][j][i].
x) * 0.25;
903 dvdz = (ucat[k+1][j+1][i].
y + ucat[k+1][j][i].
y -
904 ucat[k-1][j+1][i].
y - ucat[k-1][j][i].
y) * 0.25;
905 dwdz = (ucat[k+1][j+1][i].
z + ucat[k+1][j][i].
z -
906 ucat[k-1][j+1][i].
z - ucat[k-1][j][i].
z) * 0.25;
909 csi0 = jcsi[k][j][i].
x;
910 csi1 = jcsi[k][j][i].
y;
911 csi2 = jcsi[k][j][i].
z;
913 eta0 = jeta[k][j][i].
x;
914 eta1 = jeta[k][j][i].
y;
915 eta2 = jeta[k][j][i].
z;
917 zet0 = jzet[k][j][i].
x;
918 zet1 = jzet[k][j][i].
y;
919 zet2 = jzet[k][j][i].
z;
922 g11 = csi0 * eta0 + csi1 * eta1 + csi2 * eta2;
923 g21 = eta0 * eta0 + eta1 * eta1 + eta2 * eta2;
924 g31 = zet0 * eta0 + zet1 * eta1 + zet2 * eta2;
926 r11 = dudc * csi0 + dude * eta0 + dudz * zet0;
927 r21 = dvdc * csi0 + dvde * eta0 + dvdz * zet0;
928 r31 = dwdc * csi0 + dwde * eta0 + dwdz * zet0;
930 r12 = dudc * csi1 + dude * eta1 + dudz * zet1;
931 r22 = dvdc * csi1 + dvde * eta1 + dvdz * zet1;
932 r32 = dwdc * csi1 + dwde * eta1 + dwdz * zet1;
934 r13 = dudc * csi2 + dude * eta2 + dudz * zet2;
935 r23 = dvdc * csi2 + dvde * eta2 + dvdz * zet2;
936 r33 = dwdc * csi2 + dwde * eta2 + dwdz * zet2;
947 double nu = 1./ren,
nu_t = 0;
949 if( les || (rans && ti>0) ) {
951 nu_t = 0.5 * (lnu_t[k][j][i] + lnu_t[k][j+1][i]);
952 if ( (user->
bctype[2]==1 && j==0) || (user->
bctype[3]==1 && j==my-2) )
nu_t=0;
954 fp2[k][j][i].
x = (g11 * dudc + g21 * dude + g31 * dudz + r11 * eta0 + r21 * eta1 + r31 * eta2) * ajc * (
nu_t);
955 fp2[k][j][i].
y = (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * eta0 + r22 * eta1 + r32 * eta2) * ajc * (
nu_t);
956 fp2[k][j][i].
z = (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * eta0 + r23 * eta1 + r33 * eta2) * ajc * (
nu_t);
964 fp2[k][j][i].
x += (g11 * dudc + g21 * dude + g31 * dudz+ r11 * eta0 + r21 * eta1 + r31 * eta2 ) * ajc * (nu);
965 fp2[k][j][i].
y += (g11 * dvdc + g21 * dvde + g31 * dvdz+ r12 * eta0 + r22 * eta1 + r32 * eta2 ) * ajc * (nu);
966 fp2[k][j][i].
z += (g11 * dwdc + g21 * dwde + g31 * dwdz+ r13 * eta0 + r23 * eta1 + r33 * eta2 ) * ajc * (nu);
970 Calculate_dxdydz(ajc, csi[k][j][i], eta[k][j][i], zet[k][j][i], &dc, &de, &dz);
971 double dc2=dc*dc, de2=de*de, dz2=dz*dz;
973 double t11 = ( dudc * dudc * dc2 + dude * dude * de2 + dudz * dudz * dz2 );
974 double t12 = ( dudc * dvdc * dc2 + dude * dvde * de2 + dudz * dvdz * dz2 );
975 double t13 = ( dudc * dwdc * dc2 + dude * dwde * de2 + dudz * dwdz * dz2 );
977 double t22 = ( dvdc * dvdc * dc2 + dvde * dvde * de2 + dvdz * dvdz * dz2 );
978 double t23 = ( dvdc * dwdc * dc2 + dvde * dwde * de2 + dvdz * dwdz * dz2 );
981 double t33 = ( dwdc * dwdc * dc2 + dwde * dwde * de2 + dwdz * dwdz * dz2 );
983 fp2[k][j][i].
x -= ( t11 * eta0 + t12 * eta1 + t13 * eta2 ) / 12.;
984 fp2[k][j][i].
y -= ( t21 * eta0 + t22 * eta1 + t23 * eta2 ) / 12.;
985 fp2[k][j][i].
z -= ( t31 * eta0 + t32 * eta1 + t33 * eta2 ) / 12.;
991 DMDAVecRestoreArray(da, user->
lJAj, &jaj);
994 DMDAVecGetArray(da, user->
lKAj, &kaj);
995 for (k=lzs-1; k<lze; k++) {
996 for (j=lys; j<lye; j++) {
997 for (i=lxs; i<lxe; i++) {
998 if ((nvert[k ][j][i+1]> solid && nvert[k ][j][i+1]<innerblank)||
999 (nvert[k+1][j][i+1]> solid && nvert[k+1][j][i+1]<innerblank)) {
1000 dudc = (ucat[k+1][j][i ].
x + ucat[k][j][i ].
x -
1001 ucat[k+1][j][i-1].
x - ucat[k][j][i-1].
x) * 0.5;
1002 dvdc = (ucat[k+1][j][i ].
y + ucat[k][j][i ].
y -
1003 ucat[k+1][j][i-1].
y - ucat[k][j][i-1].
y) * 0.5;
1004 dwdc = (ucat[k+1][j][i ].
z + ucat[k][j][i ].
z -
1005 ucat[k+1][j][i-1].
z - ucat[k][j][i-1].
z) * 0.5;
1007 else if ((nvert[k ][j][i-1]> solid && nvert[k ][j][i-1]<innerblank) ||
1008 (nvert[k+1][j][i-1]> solid && nvert[k+1][j][i-1]<innerblank)) {
1009 dudc = (ucat[k+1][j][i+1].
x + ucat[k][j][i+1].
x -
1010 ucat[k+1][j][i ].
x - ucat[k][j][i ].
x) * 0.5;
1011 dvdc = (ucat[k+1][j][i+1].
y + ucat[k][j][i+1].
y -
1012 ucat[k+1][j][i ].
y - ucat[k][j][i ].
y) * 0.5;
1013 dwdc = (ucat[k+1][j][i+1].
z + ucat[k][j][i+1].
z -
1014 ucat[k+1][j][i ].
z - ucat[k][j][i ].
z) * 0.5;
1017 dudc = (ucat[k+1][j][i+1].
x + ucat[k][j][i+1].
x -
1018 ucat[k+1][j][i-1].
x - ucat[k][j][i-1].
x) * 0.25;
1019 dvdc = (ucat[k+1][j][i+1].
y + ucat[k][j][i+1].
y -
1020 ucat[k+1][j][i-1].
y - ucat[k][j][i-1].
y) * 0.25;
1021 dwdc = (ucat[k+1][j][i+1].
z + ucat[k][j][i+1].
z -
1022 ucat[k+1][j][i-1].
z - ucat[k][j][i-1].
z) * 0.25;
1025 if ((nvert[k ][j+1][i]> solid && nvert[k ][j+1][i]<innerblank)||
1026 (nvert[k+1][j+1][i]> solid && nvert[k+1][j+1][i]<innerblank)) {
1027 dude = (ucat[k+1][j ][i].
x + ucat[k][j ][i].
x -
1028 ucat[k+1][j-1][i].
x - ucat[k][j-1][i].
x) * 0.5;
1029 dvde = (ucat[k+1][j ][i].
y + ucat[k][j ][i].
y -
1030 ucat[k+1][j-1][i].
y - ucat[k][j-1][i].
y) * 0.5;
1031 dwde = (ucat[k+1][j ][i].
z + ucat[k][j ][i].
z -
1032 ucat[k+1][j-1][i].
z - ucat[k][j-1][i].
z) * 0.5;
1034 else if ((nvert[k ][j-1][i]> solid && nvert[k ][j-1][i]<innerblank) ||
1035 (nvert[k+1][j-1][i]> solid && nvert[k+1][j-1][i]<innerblank)){
1036 dude = (ucat[k+1][j+1][i].
x + ucat[k][j+1][i].
x -
1037 ucat[k+1][j ][i].
x - ucat[k][j ][i].
x) * 0.5;
1038 dvde = (ucat[k+1][j+1][i].
y + ucat[k][j+1][i].
y -
1039 ucat[k+1][j ][i].
y - ucat[k][j ][i].
y) * 0.5;
1040 dwde = (ucat[k+1][j+1][i].
z + ucat[k][j+1][i].
z -
1041 ucat[k+1][j ][i].
z - ucat[k][j ][i].
z) * 0.5;
1044 dude = (ucat[k+1][j+1][i].
x + ucat[k][j+1][i].
x -
1045 ucat[k+1][j-1][i].
x - ucat[k][j-1][i].
x) * 0.25;
1046 dvde = (ucat[k+1][j+1][i].
y + ucat[k][j+1][i].
y -
1047 ucat[k+1][j-1][i].
y - ucat[k][j-1][i].
y) * 0.25;
1048 dwde = (ucat[k+1][j+1][i].
z + ucat[k][j+1][i].
z -
1049 ucat[k+1][j-1][i].
z - ucat[k][j-1][i].
z) * 0.25;
1052 dudz = ucat[k+1][j][i].
x - ucat[k][j][i].
x;
1053 dvdz = ucat[k+1][j][i].
y - ucat[k][j][i].
y;
1054 dwdz = ucat[k+1][j][i].
z - ucat[k][j][i].
z;
1057 csi0 = kcsi[k][j][i].
x;
1058 csi1 = kcsi[k][j][i].
y;
1059 csi2 = kcsi[k][j][i].
z;
1061 eta0 = keta[k][j][i].
x;
1062 eta1 = keta[k][j][i].
y;
1063 eta2 = keta[k][j][i].
z;
1065 zet0 = kzet[k][j][i].
x;
1066 zet1 = kzet[k][j][i].
y;
1067 zet2 = kzet[k][j][i].
z;
1070 g11 = csi0 * zet0 + csi1 * zet1 + csi2 * zet2;
1071 g21 = eta0 * zet0 + eta1 * zet1 + eta2 * zet2;
1072 g31 = zet0 * zet0 + zet1 * zet1 + zet2 * zet2;
1074 r11 = dudc * csi0 + dude * eta0 + dudz * zet0;
1075 r21 = dvdc * csi0 + dvde * eta0 + dvdz * zet0;
1076 r31 = dwdc * csi0 + dwde * eta0 + dwdz * zet0;
1078 r12 = dudc * csi1 + dude * eta1 + dudz * zet1;
1079 r22 = dvdc * csi1 + dvde * eta1 + dvdz * zet1;
1080 r32 = dwdc * csi1 + dwde * eta1 + dwdz * zet1;
1082 r13 = dudc * csi2 + dude * eta2 + dudz * zet2;
1083 r23 = dvdc * csi2 + dvde * eta2 + dvdz * zet2;
1084 r33 = dwdc * csi2 + dwde * eta2 + dwdz * zet2;
1088 double nu = 1./ren,
nu_t =0;
1090 if( les || (rans && ti>0) ) {
1092 nu_t = 0.5 * (lnu_t[k][j][i] + lnu_t[k+1][j][i]);
1093 if ( (user->
bctype[4]==1 && k==0) || (user->
bctype[5]==1 && k==mz-2) )
nu_t=0;
1095 fp3[k][j][i].
x = (g11 * dudc + g21 * dude + g31 * dudz + r11 * zet0 + r21 * zet1 + r31 * zet2) * ajc * (
nu_t);
1096 fp3[k][j][i].
y = (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * zet0 + r22 * zet1 + r32 * zet2) * ajc * (
nu_t);
1097 fp3[k][j][i].
z = (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * zet0 + r23 * zet1 + r33 * zet2) * ajc * (
nu_t);
1104 fp3[k][j][i].
x += (g11 * dudc + g21 * dude + g31 * dudz + r11 * zet0 + r21 * zet1 + r31 * zet2) * ajc * (nu);
1105 fp3[k][j][i].
y += (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * zet0 + r22 * zet1 + r32 * zet2) * ajc * (nu);
1106 fp3[k][j][i].
z += (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * zet0 + r23 * zet1 + r33 * zet2) * ajc * (nu);
1110 Calculate_dxdydz(ajc, csi[k][j][i], eta[k][j][i], zet[k][j][i], &dc, &de, &dz);
1111 double dc2=dc*dc, de2=de*de, dz2=dz*dz;
1113 double t11 = ( dudc * dudc * dc2 + dude * dude * de2 + dudz * dudz * dz2 );
1114 double t12 = ( dudc * dvdc * dc2 + dude * dvde * de2 + dudz * dvdz * dz2 );
1115 double t13 = ( dudc * dwdc * dc2 + dude * dwde * de2 + dudz * dwdz * dz2 );
1117 double t22 = ( dvdc * dvdc * dc2 + dvde * dvde * de2 + dvdz * dvdz * dz2 );
1118 double t23 = ( dvdc * dwdc * dc2 + dvde * dwde * de2 + dvdz * dwdz * dz2 );
1121 double t33 = ( dwdc * dwdc * dc2 + dwde * dwde * de2 + dwdz * dwdz * dz2 );
1123 fp3[k][j][i].
x -= ( t11 * zet0 + t12 * zet1 + t13 * zet2 ) / 12.;
1124 fp3[k][j][i].
y -= ( t21 * zet0 + t22 * zet1 + t23 * zet2 ) / 12.;
1125 fp3[k][j][i].
z -= ( t31 * zet0 + t32 * zet1 + t33 * zet2 ) / 12.;
1131 DMDAVecRestoreArray(da, user->
lKAj, &kaj);
1133 for (k=lzs; k<lze; k++) {
1134 for (j=lys; j<lye; j++) {
1135 for (i=lxs; i<lxe; i++) {
1137 (fp1[k][j][i].
x - fp1[k][j][i-1].
x +
1138 fp2[k][j][i].
x - fp2[k][j-1][i].
x +
1139 fp3[k][j][i].
x - fp3[k-1][j][i].
x);
1142 (fp1[k][j][i].
y - fp1[k][j][i-1].
y +
1143 fp2[k][j][i].
y - fp2[k][j-1][i].
y +
1144 fp3[k][j][i].
y - fp3[k-1][j][i].
y);
1147 (fp1[k][j][i].
z - fp1[k][j][i-1].
z +
1148 fp2[k][j][i].
z - fp2[k][j-1][i].
z +
1149 fp3[k][j][i].
z - fp3[k-1][j][i].
z);
1167 DMDAVecRestoreArray(fda, Ucont, &ucont);
1168 DMDAVecRestoreArray(fda, Ucat, &ucat);
1169 DMDAVecRestoreArray(fda, Visc, &visc);
1171 DMDAVecRestoreArray(fda, Csi, &csi);
1172 DMDAVecRestoreArray(fda, Eta, &eta);
1173 DMDAVecRestoreArray(fda, Zet, &zet);
1175 DMDAVecRestoreArray(fda, Fp1, &fp1);
1176 DMDAVecRestoreArray(fda, Fp2, &fp2);
1177 DMDAVecRestoreArray(fda, Fp3, &fp3);
1179 DMDAVecRestoreArray(da, user->
lAj, &aj);
1181 DMDAVecRestoreArray(fda, user->
lICsi, &icsi);
1182 DMDAVecRestoreArray(fda, user->
lIEta, &ieta);
1183 DMDAVecRestoreArray(fda, user->
lIZet, &izet);
1185 DMDAVecRestoreArray(fda, user->
lJCsi, &jcsi);
1186 DMDAVecRestoreArray(fda, user->
lJEta, &jeta);
1187 DMDAVecRestoreArray(fda, user->
lJZet, &jzet);
1189 DMDAVecRestoreArray(fda, user->
lKCsi, &kcsi);
1190 DMDAVecRestoreArray(fda, user->
lKEta, &keta);
1191 DMDAVecRestoreArray(fda, user->
lKZet, &kzet);
1193 DMDAVecRestoreArray(da, user->
lNvert, &nvert);
1196 DMDAVecRestoreArray(da, user->
lNu_t, &lnu_t);
1199 DMDAVecRestoreArray(da, user->
lNu_t, &lnu_t);
1233 PetscErrorCode ierr;
1235 DM da = user->
da, fda = user->
fda;
1236 DMDALocalInfo info = user->
info;
1238 PetscReal dpdc, dpde,dpdz;
1240 PetscInt xs = info.xs, xe = xs + info.xm, mx = info.mx;
1241 PetscInt ys = info.ys, ye = ys + info.ym, my = info.my;
1242 PetscInt zs = info.zs, ze = zs + info.zm, mz = info.mz;
1243 PetscInt lxs = (xs==0) ? xs+1 : xs;
1244 PetscInt lys = (ys==0) ? ys+1 : ys;
1245 PetscInt lzs = (zs==0) ? zs+1 : zs;
1246 PetscInt lxe = (xe==mx) ? xe-1 : xe;
1247 PetscInt lye = (ye==my) ? ye-1 : ye;
1248 PetscInt lze = (ze==mz) ? ze-1 : ze;
1249 PetscInt mz_end = (user->
bctype[5] == 8) ? mz - 2 : mz - 3;
1252 Cmpnts ***csi, ***eta, ***zet, ***icsi, ***ieta, ***izet, ***jcsi, ***jeta, ***jzet, ***kcsi, ***keta, ***kzet;
1253 PetscReal ***p, ***iaj, ***jaj, ***kaj, ***aj, ***nvert, ***nvert_o;
1254 Cmpnts ***rhs, ***rc, ***rct,***ucont;
1257 Vec Conv, Visc, Rc, Rct;
1259 PetscFunctionBeginUser;
1264 ierr = DMDAVecGetArrayRead(fda, user->
lCsi, &csi); CHKERRQ(ierr);
1265 ierr = DMDAVecGetArrayRead(fda, user->
lEta, &eta); CHKERRQ(ierr);
1266 ierr = DMDAVecGetArrayRead(fda, user->
lZet, &zet); CHKERRQ(ierr);
1267 ierr = DMDAVecGetArrayRead(da, user->
lAj, &aj); CHKERRQ(ierr);
1268 ierr = DMDAVecGetArrayRead(fda, user->
lICsi, &icsi); CHKERRQ(ierr);
1269 ierr = DMDAVecGetArrayRead(fda, user->
lIEta, &ieta); CHKERRQ(ierr);
1270 ierr = DMDAVecGetArrayRead(fda, user->
lIZet, &izet); CHKERRQ(ierr);
1271 ierr = DMDAVecGetArrayRead(fda, user->
lJCsi, &jcsi); CHKERRQ(ierr);
1272 ierr = DMDAVecGetArrayRead(fda, user->
lJEta, &jeta); CHKERRQ(ierr);
1273 ierr = DMDAVecGetArrayRead(fda, user->
lJZet, &jzet); CHKERRQ(ierr);
1274 ierr = DMDAVecGetArrayRead(fda, user->
lKCsi, &kcsi); CHKERRQ(ierr);
1275 ierr = DMDAVecGetArrayRead(fda, user->
lKEta, &keta); CHKERRQ(ierr);
1276 ierr = DMDAVecGetArrayRead(fda, user->
lKZet, &kzet); CHKERRQ(ierr);
1277 ierr = DMDAVecGetArrayRead(da, user->
lIAj, &iaj); CHKERRQ(ierr);
1278 ierr = DMDAVecGetArrayRead(da, user->
lJAj, &jaj); CHKERRQ(ierr);
1279 ierr = DMDAVecGetArrayRead(da, user->
lKAj, &kaj); CHKERRQ(ierr);
1280 ierr = DMDAVecGetArrayRead(da, user->
lP, &p); CHKERRQ(ierr);
1281 ierr = DMDAVecGetArrayRead(da, user->
lNvert, &nvert); CHKERRQ(ierr);
1282 ierr = DMDAVecGetArray(fda, Rhs, &rhs); CHKERRQ(ierr);
1285 ierr = VecDuplicate(user->
lUcont, &Rc); CHKERRQ(ierr);
1286 ierr = VecDuplicate(Rc, &Rct); CHKERRQ(ierr);
1287 ierr = VecDuplicate(Rct, &Conv); CHKERRQ(ierr);
1288 ierr = VecDuplicate(Rct, &Visc); CHKERRQ(ierr);
1307 ierr = VecSet(Visc, 0.0); CHKERRQ(ierr);
1314 ierr = VecWAXPY(Rc, -1.0, Conv, Visc); CHKERRQ(ierr);
1318 ierr = DMDAVecGetArray(fda, Rct, &rct); CHKERRQ(ierr);
1319 ierr = DMDAVecGetArray(fda, Rc, &rc); CHKERRQ(ierr);
1321 for (k = lzs; k < lze; k++) {
1322 for (j = lys; j < lye; j++) {
1323 for (i = lxs; i < lxe; i++) {
1324 rct[k][j][i].
x = aj[k][j][i] *
1325 (0.5 * (csi[k][j][i].
x + csi[k][j][i-1].
x) * rc[k][j][i].x +
1326 0.5 * (csi[k][j][i].y + csi[k][j][i-1].y) * rc[k][j][i].
y +
1327 0.5 * (csi[k][j][i].
z + csi[k][j][i-1].
z) * rc[k][j][i].z);
1328 rct[k][j][i].
y = aj[k][j][i] *
1329 (0.5 * (eta[k][j][i].
x + eta[k][j-1][i].
x) * rc[k][j][i].x +
1330 0.5 * (eta[k][j][i].y + eta[k][j-1][i].y) * rc[k][j][i].
y +
1331 0.5 * (eta[k][j][i].
z + eta[k][j-1][i].
z) * rc[k][j][i].z);
1332 rct[k][j][i].
z = aj[k][j][i] *
1333 (0.5 * (zet[k][j][i].
x + zet[k-1][j][i].
x) * rc[k][j][i].x +
1334 0.5 * (zet[k][j][i].y + zet[k-1][j][i].y) * rc[k][j][i].
y +
1335 0.5 * (zet[k][j][i].
z + zet[k-1][j][i].
z) * rc[k][j][i].z);
1339 ierr = DMDAVecRestoreArray(fda, Rct, &rct); CHKERRQ(ierr);
1340 ierr = DMDAVecRestoreArray(fda, Rc, &rc); CHKERRQ(ierr);
1344 DMLocalToLocalBegin(fda, Rct, INSERT_VALUES, Rct);
1345 DMLocalToLocalEnd(fda, Rct, INSERT_VALUES, Rct);
1347 DMDAVecGetArray(fda, Rct, &rct);
1352 for (k=lzs; k<lze; k++) {
1353 for (j=lys; j<lye; j++) {
1354 rct[k][j][i].
x=rct[k][j][i-2].
x;
1361 for (k=lzs; k<lze; k++) {
1362 for (j=lys; j<lye; j++) {
1363 rct[k][j][i].
x=rct[k][j][i+2].
x;
1372 for (k=lzs; k<lze; k++) {
1373 for (i=lxs; i<lxe; i++) {
1374 rct[k][j][i].
y=rct[k][j-2][i].
y;
1381 for (k=lzs; k<lze; k++) {
1382 for (i=lxs; i<lxe; i++) {
1383 rct[k][j][i].
y=rct[k][j+2][i].
y;
1391 for (j=lys; j<lye; j++) {
1392 for (i=lxs; i<lxe; i++) {
1393 rct[k][j][i].
z=rct[k-2][j][i].
z;
1399 for (j=lys; j<lye; j++) {
1400 for (i=lxs; i<lxe; i++) {
1401 rct[k][j][i].
z=rct[k+2][j][i].
z;
1412 ierr = DMDAVecRestoreArray(fda, Rct, &rct); CHKERRQ(ierr);
1414 ierr = DMLocalToLocalBegin(fda, Rct, INSERT_VALUES, Rct); CHKERRQ(ierr);
1415 ierr = DMLocalToLocalEnd(fda, Rct, INSERT_VALUES, Rct); CHKERRQ(ierr);
1417 ierr = DMDAVecGetArray(fda, Rct, &rct); CHKERRQ(ierr);
1419 for (k = lzs; k < lze; k++) {
1420 for (j = lys; j < lye; j++) {
1421 for (i = lxs; i < lxe; i++) {
1422 PetscReal dpdc, dpde, dpdz;
1423 dpdc = p[k][j][i+1] - p[k][j][i];
1425 if ((j==my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1426 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1427 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1428 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1431 else if ((j==my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1432 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1) {
1433 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1434 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1437 else if ((j == 1 && user->
bctype[2]!=7) || nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1438 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1439 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1440 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1443 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1444 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1445 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1446 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1450 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1451 p[k][j-1][i] - p[k][j-1][i+1]) * 0.25;
1454 if ((k == mz-2 && user->
bctype[4]!=7) || nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1455 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1456 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1457 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1460 else if ((k == mz-2 || k==1) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1461 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1) {
1462 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1463 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1466 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1467 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1468 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1469 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1472 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1473 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1474 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1475 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1479 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1480 p[k-1][j][i] - p[k-1][j][i+1]) * 0.25;
1483 rhs[k][j][i].
x =0.5 * (rct[k][j][i].
x + rct[k][j][i+1].
x);
1487 (dpdc * (icsi[k][j][i].
x * icsi[k][j][i].
x +
1488 icsi[k][j][i].
y * icsi[k][j][i].
y +
1489 icsi[k][j][i].
z * icsi[k][j][i].
z)+
1490 dpde * (ieta[k][j][i].x * icsi[k][j][i].x +
1491 ieta[k][j][i].y * icsi[k][j][i].y +
1492 ieta[k][j][i].z * icsi[k][j][i].z)+
1493 dpdz * (izet[k][j][i].
x * icsi[k][j][i].
x +
1494 izet[k][j][i].
y * icsi[k][j][i].
y +
1495 izet[k][j][i].
z * icsi[k][j][i].
z)) * iaj[k][j][i];
1497 if ((i == mx-2 && user->
bctype[0]!=7) || nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1498 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1499 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1500 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1503 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1504 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1) {
1505 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1506 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1509 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1510 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1511 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1512 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1515 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1516 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1517 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1518 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1522 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1523 p[k][j][i-1] - p[k][j+1][i-1]) * 0.25;
1526 dpde = p[k][j+1][i] - p[k][j][i];
1528 if ((k == mz-2 && user->
bctype[4]!=7)|| nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1529 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1530 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1531 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1534 else if ((k == mz-2 || k==1) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1535 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1) {
1536 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1537 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1540 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1541 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1542 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1543 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1546 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1547 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1548 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1549 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1553 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1554 p[k-1][j][i] - p[k-1][j+1][i]) * 0.25;
1557 rhs[k][j][i].
y =0.5 * (rct[k][j][i].
y + rct[k][j+1][i].
y);
1561 (dpdc * (jcsi[k][j][i].
x * jeta[k][j][i].
x +
1562 jcsi[k][j][i].
y * jeta[k][j][i].
y +
1563 jcsi[k][j][i].
z * jeta[k][j][i].
z) +
1564 dpde * (jeta[k][j][i].x * jeta[k][j][i].x +
1565 jeta[k][j][i].y * jeta[k][j][i].y +
1566 jeta[k][j][i].z * jeta[k][j][i].z) +
1567 dpdz * (jzet[k][j][i].
x * jeta[k][j][i].
x +
1568 jzet[k][j][i].
y * jeta[k][j][i].
y +
1569 jzet[k][j][i].
z * jeta[k][j][i].
z)) * jaj[k][j][i];
1571 if ((i == mx-2 && user->
bctype[0]!=7)|| nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1572 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1573 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1574 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1577 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1578 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1) {
1579 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1580 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1583 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1584 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1585 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1586 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1589 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1590 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1591 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1592 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1596 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1597 p[k][j][i-1] - p[k+1][j][i-1]) * 0.25;
1600 if ((j == my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1601 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1602 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1603 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1606 else if ((j == my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1607 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1) {
1608 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1609 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1612 else if ((j == 1 && user->
bctype[2]!=7)|| nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1613 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1614 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1615 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1618 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1619 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1620 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1621 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1625 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1626 p[k][j-1][i] - p[k+1][j-1][i]) * 0.25;
1629 dpdz = (p[k+1][j][i] - p[k][j][i]);
1631 rhs[k][j][i].
z =0.5 * (rct[k][j][i].
z + rct[k+1][j][i].
z);
1634 (dpdc * (kcsi[k][j][i].
x * kzet[k][j][i].
x +
1635 kcsi[k][j][i].
y * kzet[k][j][i].
y +
1636 kcsi[k][j][i].
z * kzet[k][j][i].
z) +
1637 dpde * (keta[k][j][i].x * kzet[k][j][i].x +
1638 keta[k][j][i].y * kzet[k][j][i].y +
1639 keta[k][j][i].z * kzet[k][j][i].z) +
1640 dpdz * (kzet[k][j][i].
x * kzet[k][j][i].
x +
1641 kzet[k][j][i].
y * kzet[k][j][i].
y +
1642 kzet[k][j][i].
z * kzet[k][j][i].
z)) * kaj[k][j][i];
1652 if (user->
bctype[0]==7 && xs==0){
1653 for (k=lzs; k<lze; k++) {
1654 for (j=lys; j<lye; j++) {
1657 dpdc = p[k][j][i+1] - p[k][j][i];
1659 if ((j==my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1660 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1661 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1662 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1665 else if ((j==my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1666 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1) {
1667 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1668 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1671 else if ((j == 1 && user->
bctype[2]!=7) || nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1672 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1673 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1674 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1677 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1678 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1679 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1680 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1684 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1685 p[k][j-1][i] - p[k][j-1][i+1]) * 0.25;
1688 if ((k == mz-2 && user->
bctype[4]!=7) || nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1689 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1690 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1691 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1694 else if ((k == mz-2 || k==1) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1695 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1) {
1696 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1697 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1700 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1701 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1702 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1703 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1706 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1707 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1708 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1709 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1713 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1714 p[k-1][j][i] - p[k-1][j][i+1]) * 0.25;
1717 rhs[k][j][i].
x =0.5 * (rct[k][j][i].
x + rct[k][j][i+1].
x);
1719 (dpdc * (icsi[k][j][i].
x * icsi[k][j][i].
x +
1720 icsi[k][j][i].
y * icsi[k][j][i].
y +
1721 icsi[k][j][i].
z * icsi[k][j][i].
z)+
1722 dpde * (ieta[k][j][i].x * icsi[k][j][i].x +
1723 ieta[k][j][i].y * icsi[k][j][i].y +
1724 ieta[k][j][i].z * icsi[k][j][i].z)+
1725 dpdz * (izet[k][j][i].
x * icsi[k][j][i].
x +
1726 izet[k][j][i].
y * icsi[k][j][i].
y +
1727 izet[k][j][i].
z * icsi[k][j][i].
z)) * iaj[k][j][i];
1733 if (user->
bctype[2]==7 && ys==0){
1734 for (k=lzs; k<lze; k++) {
1735 for (i=lxs; i<lxe; i++) {
1739 if ((i == mx-2 && user->
bctype[0]!=7) || nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1740 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1741 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1742 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1745 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1746 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1) {
1747 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1748 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1751 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1752 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1753 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1754 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1757 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1758 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1759 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1760 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1764 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1765 p[k][j][i-1] - p[k][j+1][i-1]) * 0.25;
1768 dpde = p[k][j+1][i] - p[k][j][i];
1770 if ((k == mz-2 && user->
bctype[4]!=7)|| nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1771 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1772 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1773 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1776 else if ((k == mz-2 || k==1 ) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1777 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1) {
1778 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1779 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1782 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1783 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1784 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1785 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1788 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1789 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1790 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1791 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1795 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1796 p[k-1][j][i] - p[k-1][j+1][i]) * 0.25;
1799 rhs[k][j][i].
y =0.5 * (rct[k][j][i].
y + rct[k][j+1][i].
y);
1802 (dpdc * (jcsi[k][j][i].
x * jeta[k][j][i].
x +
1803 jcsi[k][j][i].
y * jeta[k][j][i].
y +
1804 jcsi[k][j][i].
z * jeta[k][j][i].
z)+
1805 dpde * (jeta[k][j][i].x * jeta[k][j][i].x +
1806 jeta[k][j][i].y * jeta[k][j][i].y +
1807 jeta[k][j][i].z * jeta[k][j][i].z)+
1808 dpdz * (jzet[k][j][i].
x * jeta[k][j][i].
x +
1809 jzet[k][j][i].
y * jeta[k][j][i].
y +
1810 jzet[k][j][i].
z * jeta[k][j][i].
z)) * jaj[k][j][i];
1817 if (user->
bctype[4]==7&& zs==0){
1818 for (j=lys; j<lye; j++) {
1819 for (i=lxs; i<lxe; i++) {
1823 if ((i == mx-2 && user->
bctype[0]!=7)|| nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1824 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1825 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1826 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1829 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1830 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1) {
1831 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1832 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1835 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1836 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1837 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1838 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1841 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1842 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1843 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1844 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1848 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1849 p[k][j][i-1] - p[k+1][j][i-1]) * 0.25;
1852 if ((j == my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1853 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1854 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1855 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1858 else if ((j == my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1859 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1) {
1860 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1861 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1864 else if ((j == 1 && user->
bctype[2]!=7)|| nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1865 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1866 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1867 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1870 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1871 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1872 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1873 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1877 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1878 p[k][j-1][i] - p[k+1][j-1][i]) * 0.25;
1881 dpdz = (p[k+1][j][i] - p[k][j][i]);
1883 rhs[k][j][i].
z =0.5 * (rct[k][j][i].
z + rct[k+1][j][i].
z);
1886 (dpdc * (kcsi[k][j][i].
x * kzet[k][j][i].
x +
1887 kcsi[k][j][i].
y * kzet[k][j][i].
y +
1888 kcsi[k][j][i].
z * kzet[k][j][i].
z)+
1889 dpde * (keta[k][j][i].x * kzet[k][j][i].x +
1890 keta[k][j][i].y * kzet[k][j][i].y +
1891 keta[k][j][i].z * kzet[k][j][i].z)+
1892 dpdz * (kzet[k][j][i].
x * kzet[k][j][i].
x +
1893 kzet[k][j][i].
y * kzet[k][j][i].
y +
1894 kzet[k][j][i].
z * kzet[k][j][i].
z)) * kaj[k][j][i];
1900 ierr = DMDAVecRestoreArray(fda, Rct, &rct); CHKERRQ(ierr);
1903 PetscInt TwoD = simCtx->
TwoD;
1908 for (k=lzs; k<lze; k++) {
1909 for (j=lys; j<lye; j++) {
1910 for (i=lxs; i<lxe; i++) {
1918 if (nvert[k][j][i]>0.1) {
1923 if (nvert[k][j][i+1]>0.1) {
1926 if (nvert[k][j+1][i]>0.1) {
1929 if (nvert[k+1][j][i]>0.1) {
1941 DMDAVecRestoreArray(fda, Rhs, &rhs);
1944 DMDAVecRestoreArray(fda, user->
lCsi, &csi);
1945 DMDAVecRestoreArray(fda, user->
lEta, &eta);
1946 DMDAVecRestoreArray(fda, user->
lZet, &zet);
1947 DMDAVecRestoreArray(da, user->
lAj, &aj);
1950 DMDAVecRestoreArray(fda, user->
lICsi, &icsi);
1951 DMDAVecRestoreArray(fda, user->
lIEta, &ieta);
1952 DMDAVecRestoreArray(fda, user->
lIZet, &izet);
1953 DMDAVecRestoreArray(da, user->
lIAj, &iaj);
1956 DMDAVecRestoreArray(fda, user->
lJCsi, &jcsi);
1957 DMDAVecRestoreArray(fda, user->
lJEta, &jeta);
1958 DMDAVecRestoreArray(fda, user->
lJZet, &jzet);
1959 DMDAVecRestoreArray(da, user->
lJAj, &jaj);
1962 DMDAVecRestoreArray(fda, user->
lKCsi, &kcsi);
1963 DMDAVecRestoreArray(fda, user->
lKEta, &keta);
1964 DMDAVecRestoreArray(fda, user->
lKZet, &kzet);
1965 DMDAVecRestoreArray(da, user->
lKAj, &kaj);
1968 DMDAVecRestoreArray(da, user->
lP, &p);
1971 DMDAVecRestoreArray(da, user->
lNvert, &nvert);
1977 ierr = VecDestroy(&Conv); CHKERRQ(ierr);
1978 ierr = VecDestroy(&Visc); CHKERRQ(ierr);
1979 ierr = VecDestroy(&Rc); CHKERRQ(ierr);
1980 ierr = VecDestroy(&Rct); CHKERRQ(ierr);
1985 PetscFunctionReturn(0);