13 const PetscInt les = simCtx->
les;
14 const PetscInt central = simCtx->
central;
18 DM da = user->
da, fda = user->
fda;
20 PetscInt xs, xe, ys, ye, zs, ze;
24 Cmpnts ***fp1, ***fp2, ***fp3;
27 PetscReal ucon, up, um;
28 PetscReal coef = 0.125, innerblank=7.;
30 PetscInt lxs, lxe, lys, lye, lzs, lze, gxs, gxe, gys, gye, gzs,gze;
32 PetscReal ***nvert,***aj;
36 DMDAGetLocalInfo(da, &info);
37 mx = info.mx; my = info.my; mz = info.mz;
38 xs = info.xs; xe = xs + info.xm;
39 ys = info.ys; ye = ys + info.ym;
40 zs = info.zs; ze = zs + info.zm;
41 gxs = info.gxs; gxe = gxs + info.gxm;
42 gys = info.gys; gye = gys + info.gym;
43 gzs = info.gzs; gze = gzs + info.gzm;
45 DMDAVecGetArray(fda, Ucont, &ucont);
46 DMDAVecGetArray(fda, Ucat, &ucat);
47 DMDAVecGetArray(fda, Conv, &conv);
48 DMDAVecGetArray(da, user->
lAj, &aj);
50 VecDuplicate(Ucont, &Fp1);
51 VecDuplicate(Ucont, &Fp2);
52 VecDuplicate(Ucont, &Fp3);
54 DMDAVecGetArray(fda, Fp1, &fp1);
55 DMDAVecGetArray(fda, Fp2, &fp2);
56 DMDAVecGetArray(fda, Fp3, &fp3);
58 DMDAVecGetArray(da, user->
lNvert, &nvert);
88 if (xs==0) lxs = xs+1;
89 if (ys==0) lys = ys+1;
90 if (zs==0) lzs = zs+1;
110 for (k=gzs; k<gze; k++) {
111 for (j=gys; j<gye; j++) {
112 ucat[k][j][i].
x=ucat[k][j][i-2].
x;
113 ucat[k][j][i].
y=ucat[k][j][i-2].
y;
114 ucat[k][j][i].
z=ucat[k][j][i-2].
z;
115 nvert[k][j][i]=nvert[k][j][i-2];
121 for (k=gzs; k<gze; k++) {
122 for (j=gys; j<gye; j++) {
123 ucat[k][j][i].
x=ucat[k][j][i+2].
x;
124 ucat[k][j][i].
y=ucat[k][j][i+2].
y;
125 ucat[k][j][i].
z=ucat[k][j][i+2].
z;
126 nvert[k][j][i]=nvert[k][j][i+2];
134 for (k=gzs; k<gze; k++) {
135 for (i=gxs; i<gxe; i++) {
136 ucat[k][j][i].
x=ucat[k][j-2][i].
x;
137 ucat[k][j][i].
y=ucat[k][j-2][i].
y;
138 ucat[k][j][i].
z=ucat[k][j-2][i].
z;
139 nvert[k][j][i]=nvert[k][j-2][i];
145 for (k=gzs; k<gze; k++) {
146 for (i=gxs; i<gxe; i++) {
147 ucat[k][j][i].
x=ucat[k][j+2][i].
x;
148 ucat[k][j][i].
y=ucat[k][j+2][i].
y;
149 ucat[k][j][i].
z=ucat[k][j+2][i].
z;
150 nvert[k][j][i]=nvert[k][j+2][i];
158 for (j=gys; j<gye; j++) {
159 for (i=gxs; i<gxe; i++) {
160 ucat[k][j][i].
x=ucat[k-2][j][i].
x;
161 ucat[k][j][i].
y=ucat[k-2][j][i].
y;
162 ucat[k][j][i].
z=ucat[k-2][j][i].
z;
163 nvert[k][j][i]=nvert[k-2][j][i];
169 for (j=gys; j<gye; j++) {
170 for (i=gxs; i<gxe; i++) {
171 ucat[k][j][i].
x=ucat[k+2][j][i].
x;
172 ucat[k][j][i].
y=ucat[k+2][j][i].
y;
173 ucat[k][j][i].
z=ucat[k+2][j][i].
z;
174 nvert[k][j][i]=nvert[k+2][j][i];
186 for (k=lzs; k<lze; k++){
187 for (j=lys; j<lye; j++){
188 for (i=lxs-1; i<lxe; i++){
191 ucon = ucont[k][j][i].
x * 0.5;
193 up = ucon + fabs(ucon);
194 um = ucon - fabs(ucon);
197 (nvert[k][j][i+1] < 0.1 || nvert[k][j][i+1]>innerblank) &&
198 (nvert[k][j][i-1] < 0.1 || nvert[k][j][i-1]>innerblank)) {
199 if ((les || central)) {
200 fp1[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j][i+1].
x );
201 fp1[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j][i+1].
y );
202 fp1[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j][i+1].
z );
206 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) +
207 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);
209 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) +
210 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);
212 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) +
213 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);
216 else if ((les || central) && (i==0 || i==mx-2) &&
217 (nvert[k][j][i+1] < 0.1 || nvert[k][j][i+1]>innerblank) &&
218 (nvert[k][j][i ] < 0.1 || nvert[k][j][i ]>innerblank))
220 fp1[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j][i+1].
x );
221 fp1[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j][i+1].
y );
222 fp1[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j][i+1].
z );
224 else if (i==0 ||(nvert[k][j][i-1] > 0.1) ) {
225 if (user->
bctype[0]==7 && i==0 && (nvert[k][j][i-1]<0.1 && nvert[k][j][i+1]<0.1)){
227 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) +
228 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);
230 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) +
231 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);
233 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) +
234 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);
237 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) +
238 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);
240 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) +
241 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);
243 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) +
244 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);
247 else if (i==mx-2 ||(nvert[k][j][i+1]) > 0.1) {
248 if (user->
bctype[0]==7 && i==mx-2 &&(nvert[k][j][i-1]<0.1 && nvert[k][j][i+1]<0.1)){
250 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) +
251 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);
253 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) +
254 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);
256 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) +
257 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);
260 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) +
261 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);
263 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) +
264 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);
266 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) +
267 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);
275 for (k=lzs; k<lze; k++) {
276 for(j=lys-1; j<lye; j++) {
277 for(i=lxs; i<lxe; i++) {
278 ucon = ucont[k][j][i].
y * 0.5;
280 up = ucon + fabs(ucon);
281 um = ucon - fabs(ucon);
284 (nvert[k][j+1][i] < 0.1 || nvert[k][j+1][i] > innerblank) &&
285 (nvert[k][j-1][i] < 0.1 || nvert[k][j-1][i] > innerblank)) {
286 if ((les || central)) {
287 fp2[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j+1][i].
x );
288 fp2[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j+1][i].
y );
289 fp2[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j+1][i].
z );
293 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) +
294 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);
296 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) +
297 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);
299 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) +
300 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);
303 else if ((les || central) && (j==0 || i==my-2) &&
304 (nvert[k][j+1][i] < 0.1 || nvert[k][j+1][i]>innerblank) &&
305 (nvert[k][j ][i] < 0.1 || nvert[k][j ][i]>innerblank))
307 fp2[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k][j+1][i].
x );
308 fp2[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k][j+1][i].
y );
309 fp2[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k][j+1][i].
z );
311 else if (j==0 || (nvert[k][j-1][i]) > 0.1) {
312 if (user->
bctype[2]==7 && j==0 && (nvert[k][j-1][i]<0.1 && nvert[k][j+1][i]<0.1 )){
314 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) +
315 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);
317 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) +
318 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);
320 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) +
321 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);
324 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) +
325 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);
327 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) +
328 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);
330 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) +
331 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);
334 else if (j==my-2 ||(nvert[k][j+1][i]) > 0.1) {
335 if (user->
bctype[2]==7 && j==my-2 && (nvert[k][j-1][i]<0.1 && nvert[k][j+1][i]<0.1 )){
337 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) +
338 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);
340 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) +
341 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);
343 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) +
344 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);
347 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) +
348 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);
350 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) +
351 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);
353 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) +
354 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);
363 for (k=lzs-1; k<lze; k++) {
364 for(j=lys; j<lye; j++) {
365 for(i=lxs; i<lxe; i++) {
366 ucon = ucont[k][j][i].
z * 0.5;
368 up = ucon + fabs(ucon);
369 um = ucon - fabs(ucon);
372 (nvert[k+1][j][i] < 0.1 || nvert[k+1][j][i] > innerblank) &&
373 (nvert[k-1][j][i] < 0.1 || nvert[k-1][j][i] > innerblank)) {
374 if ((les || central)) {
375 fp3[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k+1][j][i].
x );
376 fp3[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k+1][j][i].
y );
377 fp3[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k+1][j][i].
z );
381 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) +
382 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);
384 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) +
385 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);
387 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) +
388 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);
391 else if ((les || central) && (k==0 || k==mz-2) &&
392 (nvert[k+1][j][i] < 0.1 || nvert[k+1][j][i]>innerblank) &&
393 (nvert[k ][j][i] < 0.1 || nvert[k ][j][i]>innerblank))
395 fp3[k][j][i].
x = ucon * ( ucat[k][j][i].
x + ucat[k+1][j][i].
x );
396 fp3[k][j][i].
y = ucon * ( ucat[k][j][i].
y + ucat[k+1][j][i].
y );
397 fp3[k][j][i].
z = ucon * ( ucat[k][j][i].
z + ucat[k+1][j][i].
z );
399 else if (k<mz-2 && (k==0 ||(nvert[k-1][j][i]) > 0.1)) {
400 if(user->
bctype[4]==7 && k==0 && (nvert[k-1][j][i]<0.1 && nvert[k+1][j][i]<0.1)){
402 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) +
403 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);
405 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) +
406 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);
408 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) +
409 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);
412 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) +
413 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);
415 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) +
416 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);
418 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) +
419 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);
422 else if (k>0 && (k==mz-2 ||(nvert[k+1][j][i]) > 0.1)) {
423 if (user->
bctype[4]==7 && k==mz-2 && (nvert[k-1][j][i]<0.1 && nvert[k+1][j][i]<0.1)){
425 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) +
426 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);
428 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) +
429 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);
431 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) +
432 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);
435 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) +
436 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);
438 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) +
439 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);
441 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) +
442 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);
451 for (k=lzs; k<lze; k++) {
452 for (j=lys; j<lye; j++) {
453 for (i=lxs; i<lxe; i++) {
455 fp1[k][j][i].
x - fp1[k][j][i-1].
x +
456 fp2[k][j][i].
x - fp2[k][j-1][i].
x +
457 fp3[k][j][i].
x - fp3[k-1][j][i].
x;
460 fp1[k][j][i].
y - fp1[k][j][i-1].
y +
461 fp2[k][j][i].
y - fp2[k][j-1][i].
y +
462 fp3[k][j][i].
y - fp3[k-1][j][i].
y;
465 fp1[k][j][i].
z - fp1[k][j][i-1].
z +
466 fp2[k][j][i].
z - fp2[k][j-1][i].
z +
467 fp3[k][j][i].
z - fp3[k-1][j][i].
z;
480 DMDAVecRestoreArray(fda, Ucont, &ucont);
481 DMDAVecRestoreArray(fda, Ucat, &ucat);
482 DMDAVecRestoreArray(fda, Conv, &conv);
483 DMDAVecRestoreArray(da, user->
lAj, &aj);
485 DMDAVecRestoreArray(fda, Fp1, &fp1);
486 DMDAVecRestoreArray(fda, Fp2, &fp2);
487 DMDAVecRestoreArray(fda, Fp3, &fp3);
488 DMDAVecRestoreArray(da, user->
lNvert, &nvert);
507 Vec Csi = user->
lCsi, Eta = user->
lEta, Zet = user->
lZet;
511 Cmpnts ***csi, ***eta, ***zet;
512 Cmpnts ***icsi, ***ieta, ***izet;
513 Cmpnts ***jcsi, ***jeta, ***jzet;
514 Cmpnts ***kcsi, ***keta, ***kzet;
518 DM da = user->
da, fda = user->
fda;
520 PetscInt xs, xe, ys, ye, zs, ze;
524 Cmpnts ***fp1, ***fp2, ***fp3;
526 PetscReal ***aj, ***iaj, ***jaj, ***kaj;
528 PetscInt lxs, lxe, lys, lye, lzs, lze;
532 PetscReal dudc, dude, dudz, dvdc, dvde, dvdz, dwdc, dwde, dwdz;
533 PetscReal csi0, csi1, csi2, eta0, eta1, eta2, zet0, zet1, zet2;
534 PetscReal g11, g21, g31;
535 PetscReal r11, r21, r31, r12, r22, r32, r13, r23, r33;
537 PetscScalar solid,innerblank;
544 const PetscInt les = simCtx->
les;
545 const PetscInt rans = simCtx->
rans;
546 const PetscInt ti = simCtx->
step;
547 const PetscReal ren = simCtx->
ren;
548 const PetscInt clark = simCtx->
clark;
554 DMDAVecGetArray(fda, Ucont, &ucont);
555 DMDAVecGetArray(fda, Ucat, &ucat);
556 DMDAVecGetArray(fda, Visc, &visc);
558 DMDAVecGetArray(fda, Csi, &csi);
559 DMDAVecGetArray(fda, Eta, &eta);
560 DMDAVecGetArray(fda, Zet, &zet);
562 DMDAVecGetArray(fda, user->
lICsi, &icsi);
563 DMDAVecGetArray(fda, user->
lIEta, &ieta);
564 DMDAVecGetArray(fda, user->
lIZet, &izet);
566 DMDAVecGetArray(fda, user->
lJCsi, &jcsi);
567 DMDAVecGetArray(fda, user->
lJEta, &jeta);
568 DMDAVecGetArray(fda, user->
lJZet, &jzet);
570 DMDAVecGetArray(fda, user->
lKCsi, &kcsi);
571 DMDAVecGetArray(fda, user->
lKEta, &keta);
572 DMDAVecGetArray(fda, user->
lKZet, &kzet);
574 DMDAVecGetArray(da, user->
lNvert, &nvert);
576 VecDuplicate(Ucont, &Fp1);
577 VecDuplicate(Ucont, &Fp2);
578 VecDuplicate(Ucont, &Fp3);
580 DMDAVecGetArray(fda, Fp1, &fp1);
581 DMDAVecGetArray(fda, Fp2, &fp2);
582 DMDAVecGetArray(fda, Fp3, &fp3);
584 DMDAVecGetArray(da, user->
lAj, &aj);
586 DMDAGetLocalInfo(da, &info);
588 mx = info.mx; my = info.my; mz = info.mz;
589 xs = info.xs; xe = xs + info.xm;
590 ys = info.ys; ye = ys + info.ym;
591 zs = info.zs; ze = zs + info.zm;
599 if (xs==0) lxs = xs+1;
600 if (ys==0) lys = ys+1;
601 if (zs==0) lzs = zs+1;
604 if (xe==mx) lxe=xe-1;
605 if (ye==my) lye=ye-1;
606 if (ze==mz) lze=ze-1;
613 DMDAVecGetArray(da, user->
lNu_t, &lnu_t);
616 DMDAVecGetArray(da, user->
lNu_t, &lnu_t);
621 DMDAVecGetArray(da, user->
lIAj, &iaj);
631 for (k=lzs; k<lze; k++) {
632 for (j=lys; j<lye; j++) {
633 for (i=lxs-1; i<lxe; i++) {
635 dudc = ucat[k][j][i+1].
x - ucat[k][j][i].
x;
636 dvdc = ucat[k][j][i+1].
y - ucat[k][j][i].
y;
637 dwdc = ucat[k][j][i+1].
z - ucat[k][j][i].
z;
639 if ((nvert[k][j+1][i ]> solid && nvert[k][j+1][i ]<innerblank) ||
640 (nvert[k][j+1][i+1]> solid && nvert[k][j+1][i+1]<innerblank)) {
641 dude = (ucat[k][j ][i+1].
x + ucat[k][j ][i].
x -
642 ucat[k][j-1][i+1].
x - ucat[k][j-1][i].
x) * 0.5;
643 dvde = (ucat[k][j ][i+1].
y + ucat[k][j ][i].
y -
644 ucat[k][j-1][i+1].
y - ucat[k][j-1][i].
y) * 0.5;
645 dwde = (ucat[k][j ][i+1].
z + ucat[k][j ][i].
z -
646 ucat[k][j-1][i+1].
z - ucat[k][j-1][i].
z) * 0.5;
648 else if ((nvert[k][j-1][i ]> solid && nvert[k][j-1][i ]<innerblank) ||
649 (nvert[k][j-1][i+1]> solid && nvert[k][j-1][i+1]<innerblank)) {
650 dude = (ucat[k][j+1][i+1].
x + ucat[k][j+1][i].
x -
651 ucat[k][j ][i+1].
x - ucat[k][j ][i].
x) * 0.5;
652 dvde = (ucat[k][j+1][i+1].
y + ucat[k][j+1][i].
y -
653 ucat[k][j ][i+1].
y - ucat[k][j ][i].
y) * 0.5;
654 dwde = (ucat[k][j+1][i+1].
z + ucat[k][j+1][i].
z -
655 ucat[k][j ][i+1].
z - ucat[k][j ][i].
z) * 0.5;
658 dude = (ucat[k][j+1][i+1].
x + ucat[k][j+1][i].
x -
659 ucat[k][j-1][i+1].
x - ucat[k][j-1][i].
x) * 0.25;
660 dvde = (ucat[k][j+1][i+1].
y + ucat[k][j+1][i].
y -
661 ucat[k][j-1][i+1].
y - ucat[k][j-1][i].
y) * 0.25;
662 dwde = (ucat[k][j+1][i+1].
z + ucat[k][j+1][i].
z -
663 ucat[k][j-1][i+1].
z - ucat[k][j-1][i].
z) * 0.25;
666 if ((nvert[k+1][j][i ]> solid && nvert[k+1][j][i ]<innerblank)||
667 (nvert[k+1][j][i+1]> solid && nvert[k+1][j][i+1]<innerblank)) {
668 dudz = (ucat[k ][j][i+1].
x + ucat[k ][j][i].
x -
669 ucat[k-1][j][i+1].
x - ucat[k-1][j][i].
x) * 0.5;
670 dvdz = (ucat[k ][j][i+1].
y + ucat[k ][j][i].
y -
671 ucat[k-1][j][i+1].
y - ucat[k-1][j][i].
y) * 0.5;
672 dwdz = (ucat[k ][j][i+1].
z + ucat[k ][j][i].
z -
673 ucat[k-1][j][i+1].
z - ucat[k-1][j][i].
z) * 0.5;
675 else if ((nvert[k-1][j][i ]> solid && nvert[k-1][j][i ]<innerblank) ||
676 (nvert[k-1][j][i+1]> solid && nvert[k-1][j][i+1]<innerblank)) {
678 dudz = (ucat[k+1][j][i+1].
x + ucat[k+1][j][i].
x -
679 ucat[k ][j][i+1].
x - ucat[k ][j][i].
x) * 0.5;
680 dvdz = (ucat[k+1][j][i+1].
y + ucat[k+1][j][i].
y -
681 ucat[k ][j][i+1].
y - ucat[k ][j][i].
y) * 0.5;
682 dwdz = (ucat[k+1][j][i+1].
z + ucat[k+1][j][i].
z -
683 ucat[k ][j][i+1].
z - ucat[k ][j][i].
z) * 0.5;
686 dudz = (ucat[k+1][j][i+1].
x + ucat[k+1][j][i].
x -
687 ucat[k-1][j][i+1].
x - ucat[k-1][j][i].
x) * 0.25;
688 dvdz = (ucat[k+1][j][i+1].
y + ucat[k+1][j][i].
y -
689 ucat[k-1][j][i+1].
y - ucat[k-1][j][i].
y) * 0.25;
690 dwdz = (ucat[k+1][j][i+1].
z + ucat[k+1][j][i].
z -
691 ucat[k-1][j][i+1].
z - ucat[k-1][j][i].
z) * 0.25;
694 csi0 = icsi[k][j][i].
x;
695 csi1 = icsi[k][j][i].
y;
696 csi2 = icsi[k][j][i].
z;
698 eta0 = ieta[k][j][i].
x;
699 eta1 = ieta[k][j][i].
y;
700 eta2 = ieta[k][j][i].
z;
702 zet0 = izet[k][j][i].
x;
703 zet1 = izet[k][j][i].
y;
704 zet2 = izet[k][j][i].
z;
706 g11 = csi0 * csi0 + csi1 * csi1 + csi2 * csi2;
707 g21 = eta0 * csi0 + eta1 * csi1 + eta2 * csi2;
708 g31 = zet0 * csi0 + zet1 * csi1 + zet2 * csi2;
710 r11 = dudc * csi0 + dude * eta0 + dudz * zet0;
711 r21 = dvdc * csi0 + dvde * eta0 + dvdz * zet0;
712 r31 = dwdc * csi0 + dwde * eta0 + dwdz * zet0;
714 r12 = dudc * csi1 + dude * eta1 + dudz * zet1;
715 r22 = dvdc * csi1 + dvde * eta1 + dvdz * zet1;
716 r32 = dwdc * csi1 + dwde * eta1 + dwdz * zet1;
718 r13 = dudc * csi2 + dude * eta2 + dudz * zet2;
719 r23 = dvdc * csi2 + dvde * eta2 + dvdz * zet2;
720 r33 = dwdc * csi2 + dwde * eta2 + dwdz * zet2;
724 double nu = 1./ren,
nu_t=0;
726 if( les || (rans && ti>0) ) {
728 nu_t = 0.5 * (lnu_t[k][j][i] + lnu_t[k][j][i+1]);
729 if ( (user->
bctype[0]==1 && i==0) || (user->
bctype[1]==1 && i==mx-2) )
nu_t=0;
730 fp1[k][j][i].
x = (g11 * dudc + g21 * dude + g31 * dudz + r11 * csi0 + r21 * csi1 + r31 * csi2) * ajc * (
nu_t);
731 fp1[k][j][i].
y = (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * csi0 + r22 * csi1 + r32 * csi2) * ajc * (
nu_t);
732 fp1[k][j][i].
z = (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * csi0 + r23 * csi1 + r33 * csi2) * ajc * (
nu_t);
740 fp1[k][j][i].
x += (g11 * dudc + g21 * dude + g31 * dudz+ r11 * csi0 + r21 * csi1 + r31 * csi2 ) * ajc * (nu);
741 fp1[k][j][i].
y += (g11 * dvdc + g21 * dvde + g31 * dvdz+ r12 * csi0 + r22 * csi1 + r32 * csi2 ) * ajc * (nu);
742 fp1[k][j][i].
z += (g11 * dwdc + g21 * dwde + g31 * dwdz+ r13 * csi0 + r23 * csi1 + r33 * csi2 ) * ajc * (nu);
748 double dc2=dc*dc, de2=de*de, dz2=dz*dz;
750 double t11 = ( dudc * dudc * dc2 + dude * dude * de2 + dudz * dudz * dz2 );
751 double t12 = ( dudc * dvdc * dc2 + dude * dvde * de2 + dudz * dvdz * dz2 );
752 double t13 = ( dudc * dwdc * dc2 + dude * dwde * de2 + dudz * dwdz * dz2 );
754 double t22 = ( dvdc * dvdc * dc2 + dvde * dvde * de2 + dvdz * dvdz * dz2 );
755 double t23 = ( dvdc * dwdc * dc2 + dvde * dwde * de2 + dvdz * dwdz * dz2 );
758 double t33 = ( dwdc * dwdc * dc2 + dwde * dwde * de2 + dwdz * dwdz * dz2 );
760 fp1[k][j][i].
x -= ( t11 * csi0 + t12 * csi1 + t13 * csi2 ) / 12.;
761 fp1[k][j][i].
y -= ( t21 * csi0 + t22 * csi1 + t23 * csi2 ) / 12.;
762 fp1[k][j][i].
z -= ( t31 * csi0 + t32 * csi1 + t33 * csi2 ) / 12.;
768 DMDAVecRestoreArray(da, user->
lIAj, &iaj);
772 DMDAVecGetArray(da, user->
lJAj, &jaj);
773 for (k=lzs; k<lze; k++) {
774 for (j=lys-1; j<lye; j++) {
775 for (i=lxs; i<lxe; i++) {
777 if ((nvert[k][j ][i+1]> solid && nvert[k][j ][i+1]<innerblank)||
778 (nvert[k][j+1][i+1]> solid && nvert[k][j+1][i+1]<innerblank)) {
779 dudc = (ucat[k][j+1][i ].
x + ucat[k][j][i ].
x -
780 ucat[k][j+1][i-1].
x - ucat[k][j][i-1].
x) * 0.5;
781 dvdc = (ucat[k][j+1][i ].
y + ucat[k][j][i ].
y -
782 ucat[k][j+1][i-1].
y - ucat[k][j][i-1].
y) * 0.5;
783 dwdc = (ucat[k][j+1][i ].
z + ucat[k][j][i ].
z -
784 ucat[k][j+1][i-1].
z - ucat[k][j][i-1].
z) * 0.5;
786 else if ((nvert[k][j ][i-1]> solid && nvert[k][j ][i-1]<innerblank) ||
787 (nvert[k][j+1][i-1]> solid && nvert[k][j+1][i-1]<innerblank)) {
788 dudc = (ucat[k][j+1][i+1].
x + ucat[k][j][i+1].
x -
789 ucat[k][j+1][i ].
x - ucat[k][j][i ].
x) * 0.5;
790 dvdc = (ucat[k][j+1][i+1].
y + ucat[k][j][i+1].
y -
791 ucat[k][j+1][i ].
y - ucat[k][j][i ].
y) * 0.5;
792 dwdc = (ucat[k][j+1][i+1].
z + ucat[k][j][i+1].
z -
793 ucat[k][j+1][i ].
z - ucat[k][j][i ].
z) * 0.5;
796 dudc = (ucat[k][j+1][i+1].
x + ucat[k][j][i+1].
x -
797 ucat[k][j+1][i-1].
x - ucat[k][j][i-1].
x) * 0.25;
798 dvdc = (ucat[k][j+1][i+1].
y + ucat[k][j][i+1].
y -
799 ucat[k][j+1][i-1].
y - ucat[k][j][i-1].
y) * 0.25;
800 dwdc = (ucat[k][j+1][i+1].
z + ucat[k][j][i+1].
z -
801 ucat[k][j+1][i-1].
z - ucat[k][j][i-1].
z) * 0.25;
804 dude = ucat[k][j+1][i].
x - ucat[k][j][i].
x;
805 dvde = ucat[k][j+1][i].
y - ucat[k][j][i].
y;
806 dwde = ucat[k][j+1][i].
z - ucat[k][j][i].
z;
808 if ((nvert[k+1][j ][i]> solid && nvert[k+1][j ][i]<innerblank)||
809 (nvert[k+1][j+1][i]> solid && nvert[k+1][j+1][i]<innerblank)) {
810 dudz = (ucat[k ][j+1][i].
x + ucat[k ][j][i].
x -
811 ucat[k-1][j+1][i].
x - ucat[k-1][j][i].
x) * 0.5;
812 dvdz = (ucat[k ][j+1][i].
y + ucat[k ][j][i].
y -
813 ucat[k-1][j+1][i].
y - ucat[k-1][j][i].
y) * 0.5;
814 dwdz = (ucat[k ][j+1][i].
z + ucat[k ][j][i].
z -
815 ucat[k-1][j+1][i].
z - ucat[k-1][j][i].
z) * 0.5;
817 else if ((nvert[k-1][j ][i]> solid && nvert[k-1][j ][i]<innerblank)||
818 (nvert[k-1][j+1][i]> solid && nvert[k-1][j+1][i]<innerblank)) {
819 dudz = (ucat[k+1][j+1][i].
x + ucat[k+1][j][i].
x -
820 ucat[k ][j+1][i].
x - ucat[k ][j][i].
x) * 0.5;
821 dvdz = (ucat[k+1][j+1][i].
y + ucat[k+1][j][i].
y -
822 ucat[k ][j+1][i].
y - ucat[k ][j][i].
y) * 0.5;
823 dwdz = (ucat[k+1][j+1][i].
z + ucat[k+1][j][i].
z -
824 ucat[k ][j+1][i].
z - ucat[k ][j][i].
z) * 0.5;
827 dudz = (ucat[k+1][j+1][i].
x + ucat[k+1][j][i].
x -
828 ucat[k-1][j+1][i].
x - ucat[k-1][j][i].
x) * 0.25;
829 dvdz = (ucat[k+1][j+1][i].
y + ucat[k+1][j][i].
y -
830 ucat[k-1][j+1][i].
y - ucat[k-1][j][i].
y) * 0.25;
831 dwdz = (ucat[k+1][j+1][i].
z + ucat[k+1][j][i].
z -
832 ucat[k-1][j+1][i].
z - ucat[k-1][j][i].
z) * 0.25;
835 csi0 = jcsi[k][j][i].
x;
836 csi1 = jcsi[k][j][i].
y;
837 csi2 = jcsi[k][j][i].
z;
839 eta0 = jeta[k][j][i].
x;
840 eta1 = jeta[k][j][i].
y;
841 eta2 = jeta[k][j][i].
z;
843 zet0 = jzet[k][j][i].
x;
844 zet1 = jzet[k][j][i].
y;
845 zet2 = jzet[k][j][i].
z;
848 g11 = csi0 * eta0 + csi1 * eta1 + csi2 * eta2;
849 g21 = eta0 * eta0 + eta1 * eta1 + eta2 * eta2;
850 g31 = zet0 * eta0 + zet1 * eta1 + zet2 * eta2;
852 r11 = dudc * csi0 + dude * eta0 + dudz * zet0;
853 r21 = dvdc * csi0 + dvde * eta0 + dvdz * zet0;
854 r31 = dwdc * csi0 + dwde * eta0 + dwdz * zet0;
856 r12 = dudc * csi1 + dude * eta1 + dudz * zet1;
857 r22 = dvdc * csi1 + dvde * eta1 + dvdz * zet1;
858 r32 = dwdc * csi1 + dwde * eta1 + dwdz * zet1;
860 r13 = dudc * csi2 + dude * eta2 + dudz * zet2;
861 r23 = dvdc * csi2 + dvde * eta2 + dvdz * zet2;
862 r33 = dwdc * csi2 + dwde * eta2 + dwdz * zet2;
873 double nu = 1./ren,
nu_t = 0;
875 if( les || (rans && ti>0) ) {
877 nu_t = 0.5 * (lnu_t[k][j][i] + lnu_t[k][j+1][i]);
878 if ( (user->
bctype[2]==1 && j==0) || (user->
bctype[3]==1 && j==my-2) )
nu_t=0;
880 fp2[k][j][i].
x = (g11 * dudc + g21 * dude + g31 * dudz + r11 * eta0 + r21 * eta1 + r31 * eta2) * ajc * (
nu_t);
881 fp2[k][j][i].
y = (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * eta0 + r22 * eta1 + r32 * eta2) * ajc * (
nu_t);
882 fp2[k][j][i].
z = (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * eta0 + r23 * eta1 + r33 * eta2) * ajc * (
nu_t);
890 fp2[k][j][i].
x += (g11 * dudc + g21 * dude + g31 * dudz+ r11 * eta0 + r21 * eta1 + r31 * eta2 ) * ajc * (nu);
891 fp2[k][j][i].
y += (g11 * dvdc + g21 * dvde + g31 * dvdz+ r12 * eta0 + r22 * eta1 + r32 * eta2 ) * ajc * (nu);
892 fp2[k][j][i].
z += (g11 * dwdc + g21 * dwde + g31 * dwdz+ r13 * eta0 + r23 * eta1 + r33 * eta2 ) * ajc * (nu);
897 double dc2=dc*dc, de2=de*de, dz2=dz*dz;
899 double t11 = ( dudc * dudc * dc2 + dude * dude * de2 + dudz * dudz * dz2 );
900 double t12 = ( dudc * dvdc * dc2 + dude * dvde * de2 + dudz * dvdz * dz2 );
901 double t13 = ( dudc * dwdc * dc2 + dude * dwde * de2 + dudz * dwdz * dz2 );
903 double t22 = ( dvdc * dvdc * dc2 + dvde * dvde * de2 + dvdz * dvdz * dz2 );
904 double t23 = ( dvdc * dwdc * dc2 + dvde * dwde * de2 + dvdz * dwdz * dz2 );
907 double t33 = ( dwdc * dwdc * dc2 + dwde * dwde * de2 + dwdz * dwdz * dz2 );
909 fp2[k][j][i].
x -= ( t11 * eta0 + t12 * eta1 + t13 * eta2 ) / 12.;
910 fp2[k][j][i].
y -= ( t21 * eta0 + t22 * eta1 + t23 * eta2 ) / 12.;
911 fp2[k][j][i].
z -= ( t31 * eta0 + t32 * eta1 + t33 * eta2 ) / 12.;
917 DMDAVecRestoreArray(da, user->
lJAj, &jaj);
920 DMDAVecGetArray(da, user->
lKAj, &kaj);
921 for (k=lzs-1; k<lze; k++) {
922 for (j=lys; j<lye; j++) {
923 for (i=lxs; i<lxe; i++) {
924 if ((nvert[k ][j][i+1]> solid && nvert[k ][j][i+1]<innerblank)||
925 (nvert[k+1][j][i+1]> solid && nvert[k+1][j][i+1]<innerblank)) {
926 dudc = (ucat[k+1][j][i ].
x + ucat[k][j][i ].
x -
927 ucat[k+1][j][i-1].
x - ucat[k][j][i-1].
x) * 0.5;
928 dvdc = (ucat[k+1][j][i ].
y + ucat[k][j][i ].
y -
929 ucat[k+1][j][i-1].
y - ucat[k][j][i-1].
y) * 0.5;
930 dwdc = (ucat[k+1][j][i ].
z + ucat[k][j][i ].
z -
931 ucat[k+1][j][i-1].
z - ucat[k][j][i-1].
z) * 0.5;
933 else if ((nvert[k ][j][i-1]> solid && nvert[k ][j][i-1]<innerblank) ||
934 (nvert[k+1][j][i-1]> solid && nvert[k+1][j][i-1]<innerblank)) {
935 dudc = (ucat[k+1][j][i+1].
x + ucat[k][j][i+1].
x -
936 ucat[k+1][j][i ].
x - ucat[k][j][i ].
x) * 0.5;
937 dvdc = (ucat[k+1][j][i+1].
y + ucat[k][j][i+1].
y -
938 ucat[k+1][j][i ].
y - ucat[k][j][i ].
y) * 0.5;
939 dwdc = (ucat[k+1][j][i+1].
z + ucat[k][j][i+1].
z -
940 ucat[k+1][j][i ].
z - ucat[k][j][i ].
z) * 0.5;
943 dudc = (ucat[k+1][j][i+1].
x + ucat[k][j][i+1].
x -
944 ucat[k+1][j][i-1].
x - ucat[k][j][i-1].
x) * 0.25;
945 dvdc = (ucat[k+1][j][i+1].
y + ucat[k][j][i+1].
y -
946 ucat[k+1][j][i-1].
y - ucat[k][j][i-1].
y) * 0.25;
947 dwdc = (ucat[k+1][j][i+1].
z + ucat[k][j][i+1].
z -
948 ucat[k+1][j][i-1].
z - ucat[k][j][i-1].
z) * 0.25;
951 if ((nvert[k ][j+1][i]> solid && nvert[k ][j+1][i]<innerblank)||
952 (nvert[k+1][j+1][i]> solid && nvert[k+1][j+1][i]<innerblank)) {
953 dude = (ucat[k+1][j ][i].
x + ucat[k][j ][i].
x -
954 ucat[k+1][j-1][i].
x - ucat[k][j-1][i].
x) * 0.5;
955 dvde = (ucat[k+1][j ][i].
y + ucat[k][j ][i].
y -
956 ucat[k+1][j-1][i].
y - ucat[k][j-1][i].
y) * 0.5;
957 dwde = (ucat[k+1][j ][i].
z + ucat[k][j ][i].
z -
958 ucat[k+1][j-1][i].
z - ucat[k][j-1][i].
z) * 0.5;
960 else if ((nvert[k ][j-1][i]> solid && nvert[k ][j-1][i]<innerblank) ||
961 (nvert[k+1][j-1][i]> solid && nvert[k+1][j-1][i]<innerblank)){
962 dude = (ucat[k+1][j+1][i].
x + ucat[k][j+1][i].
x -
963 ucat[k+1][j ][i].
x - ucat[k][j ][i].
x) * 0.5;
964 dvde = (ucat[k+1][j+1][i].
y + ucat[k][j+1][i].
y -
965 ucat[k+1][j ][i].
y - ucat[k][j ][i].
y) * 0.5;
966 dwde = (ucat[k+1][j+1][i].
z + ucat[k][j+1][i].
z -
967 ucat[k+1][j ][i].
z - ucat[k][j ][i].
z) * 0.5;
970 dude = (ucat[k+1][j+1][i].
x + ucat[k][j+1][i].
x -
971 ucat[k+1][j-1][i].
x - ucat[k][j-1][i].
x) * 0.25;
972 dvde = (ucat[k+1][j+1][i].
y + ucat[k][j+1][i].
y -
973 ucat[k+1][j-1][i].
y - ucat[k][j-1][i].
y) * 0.25;
974 dwde = (ucat[k+1][j+1][i].
z + ucat[k][j+1][i].
z -
975 ucat[k+1][j-1][i].
z - ucat[k][j-1][i].
z) * 0.25;
978 dudz = ucat[k+1][j][i].
x - ucat[k][j][i].
x;
979 dvdz = ucat[k+1][j][i].
y - ucat[k][j][i].
y;
980 dwdz = ucat[k+1][j][i].
z - ucat[k][j][i].
z;
983 csi0 = kcsi[k][j][i].
x;
984 csi1 = kcsi[k][j][i].
y;
985 csi2 = kcsi[k][j][i].
z;
987 eta0 = keta[k][j][i].
x;
988 eta1 = keta[k][j][i].
y;
989 eta2 = keta[k][j][i].
z;
991 zet0 = kzet[k][j][i].
x;
992 zet1 = kzet[k][j][i].
y;
993 zet2 = kzet[k][j][i].
z;
996 g11 = csi0 * zet0 + csi1 * zet1 + csi2 * zet2;
997 g21 = eta0 * zet0 + eta1 * zet1 + eta2 * zet2;
998 g31 = zet0 * zet0 + zet1 * zet1 + zet2 * zet2;
1000 r11 = dudc * csi0 + dude * eta0 + dudz * zet0;
1001 r21 = dvdc * csi0 + dvde * eta0 + dvdz * zet0;
1002 r31 = dwdc * csi0 + dwde * eta0 + dwdz * zet0;
1004 r12 = dudc * csi1 + dude * eta1 + dudz * zet1;
1005 r22 = dvdc * csi1 + dvde * eta1 + dvdz * zet1;
1006 r32 = dwdc * csi1 + dwde * eta1 + dwdz * zet1;
1008 r13 = dudc * csi2 + dude * eta2 + dudz * zet2;
1009 r23 = dvdc * csi2 + dvde * eta2 + dvdz * zet2;
1010 r33 = dwdc * csi2 + dwde * eta2 + dwdz * zet2;
1014 double nu = 1./ren,
nu_t =0;
1016 if( les || (rans && ti>0) ) {
1018 nu_t = 0.5 * (lnu_t[k][j][i] + lnu_t[k+1][j][i]);
1019 if ( (user->
bctype[4]==1 && k==0) || (user->
bctype[5]==1 && k==mz-2) )
nu_t=0;
1021 fp3[k][j][i].
x = (g11 * dudc + g21 * dude + g31 * dudz + r11 * zet0 + r21 * zet1 + r31 * zet2) * ajc * (
nu_t);
1022 fp3[k][j][i].
y = (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * zet0 + r22 * zet1 + r32 * zet2) * ajc * (
nu_t);
1023 fp3[k][j][i].
z = (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * zet0 + r23 * zet1 + r33 * zet2) * ajc * (
nu_t);
1030 fp3[k][j][i].
x += (g11 * dudc + g21 * dude + g31 * dudz + r11 * zet0 + r21 * zet1 + r31 * zet2) * ajc * (nu);
1031 fp3[k][j][i].
y += (g11 * dvdc + g21 * dvde + g31 * dvdz + r12 * zet0 + r22 * zet1 + r32 * zet2) * ajc * (nu);
1032 fp3[k][j][i].
z += (g11 * dwdc + g21 * dwde + g31 * dwdz + r13 * zet0 + r23 * zet1 + r33 * zet2) * ajc * (nu);
1037 double dc2=dc*dc, de2=de*de, dz2=dz*dz;
1039 double t11 = ( dudc * dudc * dc2 + dude * dude * de2 + dudz * dudz * dz2 );
1040 double t12 = ( dudc * dvdc * dc2 + dude * dvde * de2 + dudz * dvdz * dz2 );
1041 double t13 = ( dudc * dwdc * dc2 + dude * dwde * de2 + dudz * dwdz * dz2 );
1043 double t22 = ( dvdc * dvdc * dc2 + dvde * dvde * de2 + dvdz * dvdz * dz2 );
1044 double t23 = ( dvdc * dwdc * dc2 + dvde * dwde * de2 + dvdz * dwdz * dz2 );
1047 double t33 = ( dwdc * dwdc * dc2 + dwde * dwde * de2 + dwdz * dwdz * dz2 );
1049 fp3[k][j][i].
x -= ( t11 * zet0 + t12 * zet1 + t13 * zet2 ) / 12.;
1050 fp3[k][j][i].
y -= ( t21 * zet0 + t22 * zet1 + t23 * zet2 ) / 12.;
1051 fp3[k][j][i].
z -= ( t31 * zet0 + t32 * zet1 + t33 * zet2 ) / 12.;
1057 DMDAVecRestoreArray(da, user->
lKAj, &kaj);
1059 for (k=lzs; k<lze; k++) {
1060 for (j=lys; j<lye; j++) {
1061 for (i=lxs; i<lxe; i++) {
1063 (fp1[k][j][i].
x - fp1[k][j][i-1].
x +
1064 fp2[k][j][i].
x - fp2[k][j-1][i].
x +
1065 fp3[k][j][i].
x - fp3[k-1][j][i].
x);
1068 (fp1[k][j][i].
y - fp1[k][j][i-1].
y +
1069 fp2[k][j][i].
y - fp2[k][j-1][i].
y +
1070 fp3[k][j][i].
y - fp3[k-1][j][i].
y);
1073 (fp1[k][j][i].
z - fp1[k][j][i-1].
z +
1074 fp2[k][j][i].
z - fp2[k][j-1][i].
z +
1075 fp3[k][j][i].
z - fp3[k-1][j][i].
z);
1093 DMDAVecRestoreArray(fda, Ucont, &ucont);
1094 DMDAVecRestoreArray(fda, Ucat, &ucat);
1095 DMDAVecRestoreArray(fda, Visc, &visc);
1097 DMDAVecRestoreArray(fda, Csi, &csi);
1098 DMDAVecRestoreArray(fda, Eta, &eta);
1099 DMDAVecRestoreArray(fda, Zet, &zet);
1101 DMDAVecRestoreArray(fda, Fp1, &fp1);
1102 DMDAVecRestoreArray(fda, Fp2, &fp2);
1103 DMDAVecRestoreArray(fda, Fp3, &fp3);
1105 DMDAVecRestoreArray(da, user->
lAj, &aj);
1107 DMDAVecRestoreArray(fda, user->
lICsi, &icsi);
1108 DMDAVecRestoreArray(fda, user->
lIEta, &ieta);
1109 DMDAVecRestoreArray(fda, user->
lIZet, &izet);
1111 DMDAVecRestoreArray(fda, user->
lJCsi, &jcsi);
1112 DMDAVecRestoreArray(fda, user->
lJEta, &jeta);
1113 DMDAVecRestoreArray(fda, user->
lJZet, &jzet);
1115 DMDAVecRestoreArray(fda, user->
lKCsi, &kcsi);
1116 DMDAVecRestoreArray(fda, user->
lKEta, &keta);
1117 DMDAVecRestoreArray(fda, user->
lKZet, &kzet);
1119 DMDAVecRestoreArray(da, user->
lNvert, &nvert);
1122 DMDAVecRestoreArray(da, user->
lNu_t, &lnu_t);
1125 DMDAVecRestoreArray(da, user->
lNu_t, &lnu_t);
1161 PetscErrorCode ierr;
1163 DM da = user->
da, fda = user->
fda;
1164 DMDALocalInfo info = user->
info;
1166 PetscReal dpdc, dpde,dpdz;
1168 PetscInt xs = info.xs, xe = xs + info.xm, mx = info.mx;
1169 PetscInt ys = info.ys, ye = ys + info.ym, my = info.my;
1170 PetscInt zs = info.zs, ze = zs + info.zm, mz = info.mz;
1171 PetscInt lxs = (xs==0) ? xs+1 : xs;
1172 PetscInt lys = (ys==0) ? ys+1 : ys;
1173 PetscInt lzs = (zs==0) ? zs+1 : zs;
1174 PetscInt lxe = (xe==mx) ? xe-1 : xe;
1175 PetscInt lye = (ye==my) ? ye-1 : ye;
1176 PetscInt lze = (ze==mz) ? ze-1 : ze;
1177 PetscInt mz_end = (user->
bctype[5] == 8) ? mz - 2 : mz - 3;
1180 Cmpnts ***csi, ***eta, ***zet, ***icsi, ***ieta, ***izet, ***jcsi, ***jeta, ***jzet, ***kcsi, ***keta, ***kzet;
1181 PetscReal ***p, ***iaj, ***jaj, ***kaj, ***aj, ***nvert, ***nvert_o;
1182 Cmpnts ***rhs, ***rc, ***rct,***ucont;
1185 Vec Conv, Visc, Rc, Rct;
1187 PetscFunctionBeginUser;
1193 ierr = DMDAVecGetArrayRead(fda, user->
lCsi, &csi); CHKERRQ(ierr);
1194 ierr = DMDAVecGetArrayRead(fda, user->
lEta, &eta); CHKERRQ(ierr);
1195 ierr = DMDAVecGetArrayRead(fda, user->
lZet, &zet); CHKERRQ(ierr);
1196 ierr = DMDAVecGetArrayRead(da, user->
lAj, &aj); CHKERRQ(ierr);
1197 ierr = DMDAVecGetArrayRead(fda, user->
lICsi, &icsi); CHKERRQ(ierr);
1198 ierr = DMDAVecGetArrayRead(fda, user->
lIEta, &ieta); CHKERRQ(ierr);
1199 ierr = DMDAVecGetArrayRead(fda, user->
lIZet, &izet); CHKERRQ(ierr);
1200 ierr = DMDAVecGetArrayRead(fda, user->
lJCsi, &jcsi); CHKERRQ(ierr);
1201 ierr = DMDAVecGetArrayRead(fda, user->
lJEta, &jeta); CHKERRQ(ierr);
1202 ierr = DMDAVecGetArrayRead(fda, user->
lJZet, &jzet); CHKERRQ(ierr);
1203 ierr = DMDAVecGetArrayRead(fda, user->
lKCsi, &kcsi); CHKERRQ(ierr);
1204 ierr = DMDAVecGetArrayRead(fda, user->
lKEta, &keta); CHKERRQ(ierr);
1205 ierr = DMDAVecGetArrayRead(fda, user->
lKZet, &kzet); CHKERRQ(ierr);
1206 ierr = DMDAVecGetArrayRead(da, user->
lIAj, &iaj); CHKERRQ(ierr);
1207 ierr = DMDAVecGetArrayRead(da, user->
lJAj, &jaj); CHKERRQ(ierr);
1208 ierr = DMDAVecGetArrayRead(da, user->
lKAj, &kaj); CHKERRQ(ierr);
1209 ierr = DMDAVecGetArrayRead(da, user->
lP, &p); CHKERRQ(ierr);
1210 ierr = DMDAVecGetArrayRead(da, user->
lNvert, &nvert); CHKERRQ(ierr);
1211 ierr = DMDAVecGetArray(fda, Rhs, &rhs); CHKERRQ(ierr);
1214 ierr = VecDuplicate(user->
lUcont, &Rc); CHKERRQ(ierr);
1215 ierr = VecDuplicate(Rc, &Rct); CHKERRQ(ierr);
1216 ierr = VecDuplicate(Rct, &Conv); CHKERRQ(ierr);
1217 ierr = VecDuplicate(Rct, &Visc); CHKERRQ(ierr);
1236 ierr = VecSet(Visc, 0.0); CHKERRQ(ierr);
1243 ierr = VecWAXPY(Rc, -1.0, Conv, Visc); CHKERRQ(ierr);
1247 ierr = DMDAVecGetArray(fda, Rct, &rct); CHKERRQ(ierr);
1248 ierr = DMDAVecGetArray(fda, Rc, &rc); CHKERRQ(ierr);
1250 for (k = lzs; k < lze; k++) {
1251 for (j = lys; j < lye; j++) {
1252 for (i = lxs; i < lxe; i++) {
1253 rct[k][j][i].
x = aj[k][j][i] *
1254 (0.5 * (csi[k][j][i].
x + csi[k][j][i-1].
x) * rc[k][j][i].x +
1255 0.5 * (csi[k][j][i].y + csi[k][j][i-1].y) * rc[k][j][i].
y +
1256 0.5 * (csi[k][j][i].
z + csi[k][j][i-1].
z) * rc[k][j][i].z);
1257 rct[k][j][i].
y = aj[k][j][i] *
1258 (0.5 * (eta[k][j][i].
x + eta[k][j-1][i].
x) * rc[k][j][i].x +
1259 0.5 * (eta[k][j][i].y + eta[k][j-1][i].y) * rc[k][j][i].
y +
1260 0.5 * (eta[k][j][i].
z + eta[k][j-1][i].
z) * rc[k][j][i].z);
1261 rct[k][j][i].
z = aj[k][j][i] *
1262 (0.5 * (zet[k][j][i].
x + zet[k-1][j][i].
x) * rc[k][j][i].x +
1263 0.5 * (zet[k][j][i].y + zet[k-1][j][i].y) * rc[k][j][i].
y +
1264 0.5 * (zet[k][j][i].
z + zet[k-1][j][i].
z) * rc[k][j][i].z);
1268 ierr = DMDAVecRestoreArray(fda, Rct, &rct); CHKERRQ(ierr);
1269 ierr = DMDAVecRestoreArray(fda, Rc, &rc); CHKERRQ(ierr);
1273 DMLocalToLocalBegin(fda, Rct, INSERT_VALUES, Rct);
1274 DMLocalToLocalEnd(fda, Rct, INSERT_VALUES, Rct);
1276 DMDAVecGetArray(fda, Rct, &rct);
1281 for (k=lzs; k<lze; k++) {
1282 for (j=lys; j<lye; j++) {
1283 rct[k][j][i].
x=rct[k][j][i-2].
x;
1290 for (k=lzs; k<lze; k++) {
1291 for (j=lys; j<lye; j++) {
1292 rct[k][j][i].
x=rct[k][j][i+2].
x;
1301 for (k=lzs; k<lze; k++) {
1302 for (i=lxs; i<lxe; i++) {
1303 rct[k][j][i].
y=rct[k][j-2][i].
y;
1310 for (k=lzs; k<lze; k++) {
1311 for (i=lxs; i<lxe; i++) {
1312 rct[k][j][i].
y=rct[k][j+2][i].
y;
1320 for (j=lys; j<lye; j++) {
1321 for (i=lxs; i<lxe; i++) {
1322 rct[k][j][i].
z=rct[k-2][j][i].
z;
1328 for (j=lys; j<lye; j++) {
1329 for (i=lxs; i<lxe; i++) {
1330 rct[k][j][i].
z=rct[k+2][j][i].
z;
1341 ierr = DMDAVecRestoreArray(fda, Rct, &rct); CHKERRQ(ierr);
1343 ierr = DMLocalToLocalBegin(fda, Rct, INSERT_VALUES, Rct); CHKERRQ(ierr);
1344 ierr = DMLocalToLocalEnd(fda, Rct, INSERT_VALUES, Rct); CHKERRQ(ierr);
1346 ierr = DMDAVecGetArray(fda, Rct, &rct); CHKERRQ(ierr);
1348 for (k = lzs; k < lze; k++) {
1349 for (j = lys; j < lye; j++) {
1350 for (i = lxs; i < lxe; i++) {
1351 PetscReal dpdc, dpde, dpdz;
1352 dpdc = p[k][j][i+1] - p[k][j][i];
1354 if ((j==my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1355 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1356 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1357 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1360 else if ((j==my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1361 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1) {
1362 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1363 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1366 else if ((j == 1 && user->
bctype[2]!=7) || nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1367 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1368 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1369 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1372 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1373 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1374 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1375 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1379 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1380 p[k][j-1][i] - p[k][j-1][i+1]) * 0.25;
1383 if ((k == mz-2 && user->
bctype[4]!=7) || nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1384 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1385 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1386 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1389 else if ((k == mz-2 || k==1) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1390 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1) {
1391 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1392 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1395 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1396 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1397 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1398 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1401 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1402 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1403 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1404 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1408 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1409 p[k-1][j][i] - p[k-1][j][i+1]) * 0.25;
1412 rhs[k][j][i].
x =0.5 * (rct[k][j][i].
x + rct[k][j][i+1].
x);
1416 (dpdc * (icsi[k][j][i].
x * icsi[k][j][i].
x +
1417 icsi[k][j][i].
y * icsi[k][j][i].
y +
1418 icsi[k][j][i].
z * icsi[k][j][i].
z)+
1419 dpde * (ieta[k][j][i].x * icsi[k][j][i].x +
1420 ieta[k][j][i].y * icsi[k][j][i].y +
1421 ieta[k][j][i].z * icsi[k][j][i].z)+
1422 dpdz * (izet[k][j][i].
x * icsi[k][j][i].
x +
1423 izet[k][j][i].
y * icsi[k][j][i].
y +
1424 izet[k][j][i].
z * icsi[k][j][i].
z)) * iaj[k][j][i];
1426 if ((i == mx-2 && user->
bctype[0]!=7) || nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1427 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1428 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1429 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1432 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1433 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1) {
1434 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1435 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1438 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1439 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1440 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1441 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1444 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1445 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1446 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1447 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1451 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1452 p[k][j][i-1] - p[k][j+1][i-1]) * 0.25;
1455 dpde = p[k][j+1][i] - p[k][j][i];
1457 if ((k == mz-2 && user->
bctype[4]!=7)|| nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1458 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1459 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1460 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1463 else if ((k == mz-2 || k==1) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1464 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1) {
1465 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1466 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1469 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1470 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1471 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1472 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1475 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1476 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1477 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1478 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1482 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1483 p[k-1][j][i] - p[k-1][j+1][i]) * 0.25;
1486 rhs[k][j][i].
y =0.5 * (rct[k][j][i].
y + rct[k][j+1][i].
y);
1490 (dpdc * (jcsi[k][j][i].
x * jeta[k][j][i].
x +
1491 jcsi[k][j][i].
y * jeta[k][j][i].
y +
1492 jcsi[k][j][i].
z * jeta[k][j][i].
z) +
1493 dpde * (jeta[k][j][i].x * jeta[k][j][i].x +
1494 jeta[k][j][i].y * jeta[k][j][i].y +
1495 jeta[k][j][i].z * jeta[k][j][i].z) +
1496 dpdz * (jzet[k][j][i].
x * jeta[k][j][i].
x +
1497 jzet[k][j][i].
y * jeta[k][j][i].
y +
1498 jzet[k][j][i].
z * jeta[k][j][i].
z)) * jaj[k][j][i];
1500 if ((i == mx-2 && user->
bctype[0]!=7)|| nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1501 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1502 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1503 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1506 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1507 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1) {
1508 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1509 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1512 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1513 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1514 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1515 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1518 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1519 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1520 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1521 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1525 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1526 p[k][j][i-1] - p[k+1][j][i-1]) * 0.25;
1529 if ((j == my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1530 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1531 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1532 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1535 else if ((j == my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1536 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1) {
1537 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1538 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1541 else if ((j == 1 && user->
bctype[2]!=7)|| nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1542 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1543 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1544 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1547 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1548 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1549 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1550 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1554 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1555 p[k][j-1][i] - p[k+1][j-1][i]) * 0.25;
1558 dpdz = (p[k+1][j][i] - p[k][j][i]);
1560 rhs[k][j][i].
z =0.5 * (rct[k][j][i].
z + rct[k+1][j][i].
z);
1563 (dpdc * (kcsi[k][j][i].
x * kzet[k][j][i].
x +
1564 kcsi[k][j][i].
y * kzet[k][j][i].
y +
1565 kcsi[k][j][i].
z * kzet[k][j][i].
z) +
1566 dpde * (keta[k][j][i].x * kzet[k][j][i].x +
1567 keta[k][j][i].y * kzet[k][j][i].y +
1568 keta[k][j][i].z * kzet[k][j][i].z) +
1569 dpdz * (kzet[k][j][i].
x * kzet[k][j][i].
x +
1570 kzet[k][j][i].
y * kzet[k][j][i].
y +
1571 kzet[k][j][i].
z * kzet[k][j][i].
z)) * kaj[k][j][i];
1581 if (user->
bctype[0]==7 && xs==0){
1582 for (k=lzs; k<lze; k++) {
1583 for (j=lys; j<lye; j++) {
1586 dpdc = p[k][j][i+1] - p[k][j][i];
1588 if ((j==my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1589 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1590 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1591 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1594 else if ((j==my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i]+nvert[k][j+1][i+1] > 0.1) {
1595 if (nvert[k][j-1][i] + nvert[k][j-1][i+1] < 0.1) {
1596 dpde = (p[k][j ][i] + p[k][j ][i+1] -
1597 p[k][j-1][i] - p[k][j-1][i+1]) * 0.5;
1600 else if ((j == 1 && user->
bctype[2]!=7) || nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1601 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1602 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1603 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1606 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k][j-1][i+1] > 0.1) {
1607 if (nvert[k][j+1][i] + nvert[k][j+1][i+1] < 0.1) {
1608 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1609 p[k][j ][i] - p[k][j ][i+1]) * 0.5;
1613 dpde = (p[k][j+1][i] + p[k][j+1][i+1] -
1614 p[k][j-1][i] - p[k][j-1][i+1]) * 0.25;
1617 if ((k == mz-2 && user->
bctype[4]!=7) || nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1618 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1619 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1620 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1623 else if ((k == mz-2 || k==1) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j][i+1] > 0.1) {
1624 if (nvert[k-1][j][i] + nvert[k-1][j][i+1] < 0.1) {
1625 dpdz = (p[k ][j][i] + p[k ][j][i+1] -
1626 p[k-1][j][i] - p[k-1][j][i+1]) * 0.5;
1629 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1630 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1631 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1632 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1635 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j][i+1] > 0.1) {
1636 if (nvert[k+1][j][i] + nvert[k+1][j][i+1] < 0.1) {
1637 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1638 p[k ][j][i] - p[k ][j][i+1]) * 0.5;
1642 dpdz = (p[k+1][j][i] + p[k+1][j][i+1] -
1643 p[k-1][j][i] - p[k-1][j][i+1]) * 0.25;
1646 rhs[k][j][i].
x =0.5 * (rct[k][j][i].
x + rct[k][j][i+1].
x);
1648 (dpdc * (icsi[k][j][i].
x * icsi[k][j][i].
x +
1649 icsi[k][j][i].
y * icsi[k][j][i].
y +
1650 icsi[k][j][i].
z * icsi[k][j][i].
z)+
1651 dpde * (ieta[k][j][i].x * icsi[k][j][i].x +
1652 ieta[k][j][i].y * icsi[k][j][i].y +
1653 ieta[k][j][i].z * icsi[k][j][i].z)+
1654 dpdz * (izet[k][j][i].
x * icsi[k][j][i].
x +
1655 izet[k][j][i].
y * icsi[k][j][i].
y +
1656 izet[k][j][i].
z * icsi[k][j][i].
z)) * iaj[k][j][i];
1662 if (user->
bctype[2]==7 && ys==0){
1663 for (k=lzs; k<lze; k++) {
1664 for (i=lxs; i<lxe; i++) {
1668 if ((i == mx-2 && user->
bctype[0]!=7) || nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1669 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1670 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1671 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1674 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k][j+1][i+1] > 0.1) {
1675 if (nvert[k][j][i-1] + nvert[k][j+1][i-1] < 0.1) {
1676 dpdc = (p[k][j][i ] + p[k][j+1][i ] -
1677 p[k][j][i-1] - p[k][j+1][i-1]) * 0.5;
1680 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1681 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1682 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1683 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1686 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k][j+1][i-1] > 0.1) {
1687 if (nvert[k][j][i+1] + nvert[k][j+1][i+1] < 0.1) {
1688 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1689 p[k][j][i ] - p[k][j+1][i ]) * 0.5;
1693 dpdc = (p[k][j][i+1] + p[k][j+1][i+1] -
1694 p[k][j][i-1] - p[k][j+1][i-1]) * 0.25;
1697 dpde = p[k][j+1][i] - p[k][j][i];
1699 if ((k == mz-2 && user->
bctype[4]!=7)|| nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1700 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1 && (k!=1 || (k==1 && user->
bctype[4]==7))) {
1701 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1702 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1705 else if ((k == mz-2 || k==1 ) && user->
bctype[4]==7 && nvert[k+1][j][i] + nvert[k+1][j+1][i] > 0.1) {
1706 if (nvert[k-1][j][i] + nvert[k-1][j+1][i] < 0.1) {
1707 dpdz = (p[k ][j][i] + p[k ][j+1][i] -
1708 p[k-1][j][i] - p[k-1][j+1][i]) * 0.5;
1711 else if ((k == 1 && user->
bctype[4]!=7)|| nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1712 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1713 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1714 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1717 else if ((k == 1 || k==mz-2) && user->
bctype[4]==7 && nvert[k-1][j][i] + nvert[k-1][j+1][i] > 0.1) {
1718 if (nvert[k+1][j][i] + nvert[k+1][j+1][i] < 0.1) {
1719 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1720 p[k ][j][i] - p[k ][j+1][i]) * 0.5;
1724 dpdz = (p[k+1][j][i] + p[k+1][j+1][i] -
1725 p[k-1][j][i] - p[k-1][j+1][i]) * 0.25;
1728 rhs[k][j][i].
y =0.5 * (rct[k][j][i].
y + rct[k][j+1][i].
y);
1731 (dpdc * (jcsi[k][j][i].
x * jeta[k][j][i].
x +
1732 jcsi[k][j][i].
y * jeta[k][j][i].
y +
1733 jcsi[k][j][i].
z * jeta[k][j][i].
z)+
1734 dpde * (jeta[k][j][i].x * jeta[k][j][i].x +
1735 jeta[k][j][i].y * jeta[k][j][i].y +
1736 jeta[k][j][i].z * jeta[k][j][i].z)+
1737 dpdz * (jzet[k][j][i].
x * jeta[k][j][i].
x +
1738 jzet[k][j][i].
y * jeta[k][j][i].
y +
1739 jzet[k][j][i].
z * jeta[k][j][i].
z)) * jaj[k][j][i];
1746 if (user->
bctype[4]==7&& zs==0){
1747 for (j=lys; j<lye; j++) {
1748 for (i=lxs; i<lxe; i++) {
1752 if ((i == mx-2 && user->
bctype[0]!=7)|| nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1753 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1 && (i!=1 || (i==1 && user->
bctype[0]==7))) {
1754 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1755 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1758 else if ((i == mx-2 || i==1) && user->
bctype[0]==7 && nvert[k][j][i+1] + nvert[k+1][j][i+1] > 0.1) {
1759 if (nvert[k][j][i-1] + nvert[k+1][j][i-1] < 0.1) {
1760 dpdc = (p[k][j][i ] + p[k+1][j][i ] -
1761 p[k][j][i-1] - p[k+1][j][i-1]) * 0.5;
1764 else if ((i == 1 && user->
bctype[0]!=7)|| nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1765 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1766 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1767 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1770 else if ((i == 1 || i==mx-2) && user->
bctype[0]==7 && nvert[k][j][i-1] + nvert[k+1][j][i-1] > 0.1) {
1771 if (nvert[k][j][i+1] + nvert[k+1][j][i+1] < 0.1) {
1772 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1773 p[k][j][i ] - p[k+1][j][i ]) * 0.5;
1777 dpdc = (p[k][j][i+1] + p[k+1][j][i+1] -
1778 p[k][j][i-1] - p[k+1][j][i-1]) * 0.25;
1781 if ((j == my-2 && user->
bctype[2]!=7)|| nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1782 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1 && (j!=1 || (j==1 && user->
bctype[2]==7))) {
1783 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1784 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1787 else if ((j == my-2 || j==1) && user->
bctype[2]==7 && nvert[k][j+1][i] + nvert[k+1][j+1][i] > 0.1) {
1788 if (nvert[k][j-1][i] + nvert[k+1][j-1][i] < 0.1) {
1789 dpde = (p[k][j ][i] + p[k+1][j ][i] -
1790 p[k][j-1][i] - p[k+1][j-1][i]) * 0.5;
1793 else if ((j == 1 && user->
bctype[2]!=7)|| nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1794 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1795 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1796 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1799 else if ((j == 1 || j==my-2) && user->
bctype[2]==7 && nvert[k][j-1][i] + nvert[k+1][j-1][i] > 0.1) {
1800 if (nvert[k][j+1][i] + nvert[k+1][j+1][i] < 0.1) {
1801 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1802 p[k][j ][i] - p[k+1][j ][i]) * 0.5;
1806 dpde = (p[k][j+1][i] + p[k+1][j+1][i] -
1807 p[k][j-1][i] - p[k+1][j-1][i]) * 0.25;
1810 dpdz = (p[k+1][j][i] - p[k][j][i]);
1812 rhs[k][j][i].
z =0.5 * (rct[k][j][i].
z + rct[k+1][j][i].
z);
1815 (dpdc * (kcsi[k][j][i].
x * kzet[k][j][i].
x +
1816 kcsi[k][j][i].
y * kzet[k][j][i].
y +
1817 kcsi[k][j][i].
z * kzet[k][j][i].
z)+
1818 dpde * (keta[k][j][i].x * kzet[k][j][i].x +
1819 keta[k][j][i].y * kzet[k][j][i].y +
1820 keta[k][j][i].z * kzet[k][j][i].z)+
1821 dpdz * (kzet[k][j][i].
x * kzet[k][j][i].
x +
1822 kzet[k][j][i].
y * kzet[k][j][i].
y +
1823 kzet[k][j][i].
z * kzet[k][j][i].
z)) * kaj[k][j][i];
1829 ierr = DMDAVecRestoreArray(fda, Rct, &rct); CHKERRQ(ierr);
1832 PetscInt TwoD = simCtx->
TwoD;
1837 for (k=lzs; k<lze; k++) {
1838 for (j=lys; j<lye; j++) {
1839 for (i=lxs; i<lxe; i++) {
1847 if (nvert[k][j][i]>0.1) {
1852 if (nvert[k][j][i+1]>0.1) {
1855 if (nvert[k][j+1][i]>0.1) {
1858 if (nvert[k+1][j][i]>0.1) {
1870 DMDAVecRestoreArray(fda, Rhs, &rhs);
1873 DMDAVecRestoreArray(fda, user->
lCsi, &csi);
1874 DMDAVecRestoreArray(fda, user->
lEta, &eta);
1875 DMDAVecRestoreArray(fda, user->
lZet, &zet);
1876 DMDAVecRestoreArray(da, user->
lAj, &aj);
1879 DMDAVecRestoreArray(fda, user->
lICsi, &icsi);
1880 DMDAVecRestoreArray(fda, user->
lIEta, &ieta);
1881 DMDAVecRestoreArray(fda, user->
lIZet, &izet);
1882 DMDAVecRestoreArray(da, user->
lIAj, &iaj);
1885 DMDAVecRestoreArray(fda, user->
lJCsi, &jcsi);
1886 DMDAVecRestoreArray(fda, user->
lJEta, &jeta);
1887 DMDAVecRestoreArray(fda, user->
lJZet, &jzet);
1888 DMDAVecRestoreArray(da, user->
lJAj, &jaj);
1891 DMDAVecRestoreArray(fda, user->
lKCsi, &kcsi);
1892 DMDAVecRestoreArray(fda, user->
lKEta, &keta);
1893 DMDAVecRestoreArray(fda, user->
lKZet, &kzet);
1894 DMDAVecRestoreArray(da, user->
lKAj, &kaj);
1897 DMDAVecRestoreArray(da, user->
lP, &p);
1900 DMDAVecRestoreArray(da, user->
lNvert, &nvert);
1906 ierr = VecDestroy(&Conv); CHKERRQ(ierr);
1907 ierr = VecDestroy(&Visc); CHKERRQ(ierr);
1908 ierr = VecDestroy(&Rc); CHKERRQ(ierr);
1909 ierr = VecDestroy(&Rct); CHKERRQ(ierr);
1917 PetscFunctionReturn(0);