Diffusion¶
Wall-normal derivative¶
\[\dmomdif{1}{1}
=
2
\mu
\frac{1}{J}
\dif{}{\gcs{1}}
\left(
\frac{J}{\sfact{1}}
\vgt{1}{1}
\right)
=
2
\mu
\frac{1}{J}
\dif{}{\gcs{1}}
\left(
\frac{J}{\sfact{1}}
\dlxx
\right)\]
src/fluid/predict/ux.c¶
49for(size_t i = 2; i <= isize; i++){
50 const double l = 1. / JDXF(i ) * JDXC(i-1) / HXXC(i-1) / HXXC(i-1);
51 const double u = 1. / JDXF(i ) * JDXC(i ) / HXXC(i ) / HXXC(i );
52 const double c = - l - u;
53 laplacians.LAPX(i).l = l;
54 laplacians.LAPX(i).c = c;
55 laplacians.LAPX(i).u = u;
56}
src/fluid/predict/ux.c¶
297 BEGIN
298 // NOTE: txx = "2" lxx
299 src[cnt] += 2. * diffusivity * (
300#if NDIMS == 2
301 + LAPX(i).l * UX(i-1, j )
302 + LAPX(i).c * UX(i , j )
303 + LAPX(i).u * UX(i+1, j )
304#else
305 + LAPX(i).l * UX(i-1, j , k )
306 + LAPX(i).c * UX(i , j , k )
307 + LAPX(i).u * UX(i+1, j , k )
308#endif
309 );
310 END
Stream-wise derivative¶
\[\dmomdif{2}{1}
=
\mu
\frac{1}{J}
\dif{}{\gcs{2}}
\left(
\frac{J}{\sfact{2}}
\vgt{2}{1}
\right)
+
\mu
\frac{1}{J}
\dif{}{\gcs{2}}
\left(
\frac{J}{\sfact{2}}
\vgt{1}{2}
\right)\]
Diagonal part¶
\[\mu
\frac{1}{J}
\dif{}{\gcs{2}}
\left(
\frac{J}{\sfact{2}}
\vgt{2}{1}^{\prime}
\right)
=
\mu
\frac{1}{J}
\dif{}{\gcs{2}}
\left(
\frac{J}{\sfact{2}}
\dlyxa
\right)\]
src/fluid/predict/ux.c¶
63for(size_t i = 2; i <= isize; i++){
64 const double l = 1. / HYXF(i ) / HYXF(i );
65 const double u = 1. / HYXF(i ) / HYXF(i );
66 const double c = - l - u;
67 laplacians.LAPY(i).l = l;
68 laplacians.LAPY(i).c = c;
69 laplacians.LAPY(i).u = u;
70}
src/fluid/predict/ux.c¶
327 BEGIN
328 src[cnt] += diffusivity * (
329#if NDIMS == 2
330 + LAPY(i).l * UX(i , j-1)
331 + LAPY(i).c * UX(i , j )
332 + LAPY(i).u * UX(i , j+1)
333#else
334 + LAPY(i).l * UX(i , j-1, k )
335 + LAPY(i).c * UX(i , j , k )
336 + LAPY(i).u * UX(i , j+1, k )
337#endif
338 );
339 END
Non-diagonal part¶
\[\mu
\frac{1}{J}
\dif{}{\gcs{2}}
\left(
\frac{J}{\sfact{2}}
\vgt{2}{1}^{\prime\prime}
\right)
+
\mu
\frac{1}{J}
\dif{}{\gcs{2}}
\left(
\frac{J}{\sfact{2}}
\vgt{1}{2}
\right)\]
src/fluid/predict/ux.c¶
358 BEGIN
359 const double hy = HYXF(i );
360 const double jd = JDXF(i );
361#if NDIMS == 2
362 const double lyx_ym = LYX1(i , j );
363 const double lyx_yp = LYX1(i , j+1);
364 const double lxy_ym = LXY(i , j );
365 const double lxy_yp = LXY(i , j+1);
366#else
367 const double lyx_ym = LYX1(i , j , k );
368 const double lyx_yp = LYX1(i , j+1, k );
369 const double lxy_ym = LXY(i , j , k );
370 const double lxy_yp = LXY(i , j+1, k );
371#endif
372 src[cnt] += diffusivity / jd * (
373 - jd / hy * (lyx_ym + lxy_ym)
374 + jd / hy * (lyx_yp + lxy_yp)
375 );
376 END
Span-wise derivative¶
\[\dmomdif{3}{1}
=
\mu
\frac{1}{J}
\dif{}{\gcs{3}}
\left(
\frac{J}{\sfact{3}}
\vgt{3}{1}
\right)
+
\mu
\frac{1}{J}
\dif{}{\gcs{3}}
\left(
\frac{J}{\sfact{3}}
\vgt{1}{3}
\right)\]
Diagonal part¶
\[\mu
\frac{1}{J}
\dif{}{\gcs{3}}
\left(
\frac{J}{\sfact{3}}
\vgt{3}{1}
\right)
=
\mu
\frac{1}{J}
\dif{}{\gcs{3}}
\left(
\frac{J}{\sfact{3}}
\dlzx
\right)\]
src/fluid/predict/ux.c¶
77const double l = 1. / hz / hz;
78const double u = 1. / hz / hz;
79const double c = - l - u;
80laplacians.lapz.l = l;
81laplacians.lapz.c = c;
82laplacians.lapz.u = u;
src/fluid/predict/ux.c¶
392BEGIN
393 src[cnt] += diffusivity * (
394 + (*lapz).l * UX(i , j , k-1)
395 + (*lapz).c * UX(i , j , k )
396 + (*lapz).u * UX(i , j , k+1)
397 );
398END
Non-diagonal part¶
\[\mu
\frac{1}{J}
\dif{}{\gcs{3}}
\left(
\frac{J}{\sfact{3}}
\vgt{1}{3}
\right)\]
src/fluid/predict/ux.c¶
416BEGIN
417 const double jd = JDXF(i );
418 const double lxz_zm = LXZ(i , j , k );
419 const double lxz_zp = LXZ(i , j , k+1);
420 src[cnt] += diffusivity / jd * (
421 - jd / hz * lxz_zm
422 + jd / hz * lxz_zp
423 );
424END
Additional term¶
\[\dmomdifx
=
-
2
\mu
\frac{1}{J}
\ave{
\dif{
\left(
\frac{J}{\sfact{1}}
\right)
}{\gcs{1}}
\vgt{2}{2}
}{\gcs{1}}\]
src/fluid/predict/ux.c¶
444 BEGIN
445 const double hx_xm = HXXF(i-1);
446 const double hx_x0 = HXXF(i );
447 const double hx_xp = HXXF(i+1);
448 const double jd_xm = JDXF(i-1);
449 const double jd_x0 = JDXF(i );
450 const double jd_xp = JDXF(i+1);
451 const double djdhx_xm = - jd_xm / hx_xm + jd_x0 / hx_x0;
452 const double djdhx_xp = - jd_x0 / hx_x0 + jd_xp / hx_xp;
453#if NDIMS == 2
454 const double lyy_xm = LYY0(i-1, j ) + LYY1(i-1, j );
455 const double lyy_xp = LYY0(i , j ) + LYY1(i , j );
456#else
457 const double lyy_xm = LYY0(i-1, j , k ) + LYY1(i-1, j , k );
458 const double lyy_xp = LYY0(i , j , k ) + LYY1(i , j , k );
459#endif
460 // NOTE: tyy = "2" lyy
461 src[cnt] -= 2. * diffusivity / jd_x0 * (
462 + 0.5 * djdhx_xm * lyy_xm
463 + 0.5 * djdhx_xp * lyy_xp
464 );
465 END