Velocity-gradient tensor¶
For later convenience, 9 tensor components are pre-computed and stored to arrays.
11¶
\[\vat{
\vgt{1}{1}
}{
\ccindex{i},
\ccindex{j},
\ccindex{k}
}
=
\dlxx\]
src/fluid/predict/lxx.c¶
42 BEGIN
43 const double hx = HXXC(i );
44#if NDIMS == 2
45 LXX(i, j) = 1. / hx * (
46 - UX(i , j )
47 + UX(i+1, j )
48 );
49#else
50 LXX(i, j, k) = 1. / hx * (
51 - UX(i , j , k )
52 + UX(i+1, j , k )
53 );
54#endif
55 END
21¶
\[\vat{
\vgt{2}{1}
}{
\cpindex{i},
\cpindex{j},
\ccindex{k}
}
=
\vat{
\vgt{2}{1}^{\prime}
}{
\cpindex{i},
\cpindex{j},
\ccindex{k}
}
+
\vat{
\vgt{2}{1}^{\prime\prime}
}{
\cpindex{i},
\cpindex{j},
\ccindex{k}
}
=
\dlyx\]
Two terms are computed and stored separately.
\[\vat{
\vgt{2}{1}^{\prime}
}{
\cpindex{i},
\cpindex{j},
\ccindex{k}
}
=
\dlyxa\]
src/fluid/predict/lyx.c¶
47 BEGIN
48 const double hy = HYXF(i );
49#if NDIMS == 2
50 LYX0(i, j) = 1. / hy * (
51 - UX(i , j-1)
52 + UX(i , j )
53 );
54#else
55 LYX0(i, j, k) = 1. / hy * (
56 - UX(i , j-1, k )
57 + UX(i , j , k )
58 );
59#endif
60 END
\[\vat{
\vgt{2}{1}^{\prime\prime}
}{
\cpindex{i},
\cpindex{j},
\ccindex{k}
}
=
\dlyxb\]
src/fluid/predict/lyx.c¶
94 BEGIN
95 const double hx_xm = HXXC(i-1);
96 const double hx_xp = HXXC(i );
97 const double jd_xm = JDXC(i-1);
98 const double jd_x0 = JDXF(i );
99 const double jd_xp = JDXC(i );
100 const double jdhx_xm = jd_xm / hx_xm;
101 const double jdhx_xp = jd_xp / hx_xp;
102 const double djdhx = - jdhx_xm + jdhx_xp;
103#if NDIMS == 2
104 LYX1(i, j) = - 1. / jd_x0 * djdhx * (
105 + ( 1 == i ? 0. : 0.5) * UY(i-1, j )
106 + (isize + 1 == i ? 0. : 0.5) * UY(i , j )
107 );
108#else
109 LYX1(i, j, k) = - 1. / jd_x0 * djdhx * (
110 + ( 1 == i ? 0. : 0.5) * UY(i-1, j , k )
111 + (isize + 1 == i ? 0. : 0.5) * UY(i , j , k )
112 );
113#endif
114 END
31¶
\[\vat{
\vgt{3}{1}
}{
\cpindex{i},
\ccindex{j},
\cpindex{k}
}
=
\dlzx\]
src/fluid/predict/lzx.c¶
22for(int k = 1; k <= ksize; k++){
23 for(int j = 1; j <= jsize; j++){
24 for(int i = 1; i <= isize + 1; i++){
25 LZX(i, j, k) = 1. / hz * (
26 - UX(i , j , k-1)
27 + UX(i , j , k )
28 );
29 }
30 }
31}
12¶
\[\vat{
\vgt{1}{2}
}{
\cpindex{i},
\cpindex{j},
\ccindex{k}
}
=
\dlxy\]
src/fluid/predict/lxy.c¶
42 BEGIN
43 const double hx = HXXF(i );
44#if NDIMS == 2
45 LXY(i, j) = 1. / hx * (
46 - UY(i-1, j )
47 + UY(i , j )
48 );
49#else
50 LXY(i, j, k) = 1. / hx * (
51 - UY(i-1, j , k )
52 + UY(i , j , k )
53 );
54#endif
55 END
22¶
\[\vat{
\vgt{2}{2}
}{
\ccindex{i},
\ccindex{j},
\ccindex{k}
}
=
\vat{
\vgt{2}{2}^{\prime}
}{
\ccindex{i},
\ccindex{j},
\ccindex{k}
}
+
\vat{
\vgt{2}{2}^{\prime\prime}
}{
\ccindex{i},
\ccindex{j},
\ccindex{k}
}
=
\dlyy\]
Two terms are computed and stored separately.
\[\vat{
\vgt{2}{2}^{\prime}
}{
\ccindex{i},
\ccindex{j},
\ccindex{k}
}
=
\dlyya\]
src/fluid/predict/lyy.c¶
47 BEGIN
48 const double hy = HYXC(i );
49#if NDIMS == 2
50 LYY0(i, j) = 1. / hy * (
51 - UY(i , j )
52 + UY(i , j+1)
53 );
54#else
55 LYY0(i, j, k) = 1. / hy * (
56 - UY(i , j , k )
57 + UY(i , j+1, k )
58 );
59#endif
60 END
\[\vat{
\vgt{2}{2}^{\prime\prime}
}{
\ccindex{i},
\ccindex{j},
\ccindex{k}
}
=
\dlyyb\]
src/fluid/predict/lyy.c¶
94 BEGIN
95 const double hx_xm = HXXF(i );
96 const double hx_xp = HXXF(i+1);
97 const double jd_xm = JDXF(i );
98 const double jd_x0 = JDXC(i );
99 const double jd_xp = JDXF(i+1);
100 const double jdhx_xm = jd_xm / hx_xm;
101 const double jdhx_xp = jd_xp / hx_xp;
102 const double djdhx = - jdhx_xm + jdhx_xp;
103#if NDIMS == 2
104 LYY1(i, j) = 1. / jd_x0 * djdhx * (
105 + 0.5 * UX(i , j )
106 + 0.5 * UX(i+1, j )
107 );
108#else
109 LYY1(i, j, k) = 1. / jd_x0 * djdhx * (
110 + 0.5 * UX(i , j , k )
111 + 0.5 * UX(i+1, j , k )
112 );
113#endif
114 END
32¶
\[\vat{
\vgt{3}{2}
}{
\ccindex{i},
\cpindex{j},
\cpindex{k}
}
=
\dlzy\]
src/fluid/predict/lzy.c¶
22for(int k = 1; k <= ksize; k++){
23 for(int j = 1; j <= jsize; j++){
24 for(int i = 1; i <= isize; i++){
25 LZY(i, j, k) = 1. / hz * (
26 - UY(i , j , k-1)
27 + UY(i , j , k )
28 );
29 }
30 }
31}
13¶
\[\vat{
\vgt{1}{3}
}{
\cpindex{i},
\ccindex{j},
\cpindex{k}
}
=
\dlxz\]
src/fluid/predict/lxz.c¶
23for(int k = 1; k <= ksize; k++){
24 for(int j = 1; j <= jsize; j++){
25 for(int i = 1; i <= isize + 1; i++){
26 const double hx = HXXF(i );
27 LXZ(i, j, k) = 1. / hx * (
28 - UZ(i-1, j , k )
29 + UZ(i , j , k )
30 );
31 }
32 }
33}
23¶
\[\vat{
\vgt{2}{3}
}{
\ccindex{i},
\cpindex{j},
\cpindex{k}
}
=
\dlyz\]
src/fluid/predict/lyz.c¶
23for(int k = 1; k <= ksize; k++){
24 for(int j = 1; j <= jsize; j++){
25 for(int i = 1; i <= isize; i++){
26 const double hy = HYXC(i );
27 LYZ(i, j, k) = 1. / hy * (
28 - UZ(i , j-1, k )
29 + UZ(i , j , k )
30 );
31 }
32 }
33}
33¶
\[\vat{
\vgt{3}{3}
}{
\ccindex{i},
\ccindex{j},
\ccindex{k}
}
=
\dlzz\]
src/fluid/predict/lzz.c¶
22for(int k = 1; k <= ksize; k++){
23 for(int j = 1; j <= jsize; j++){
24 for(int i = 1; i <= isize; i++){
25 LZZ(i, j, k) = 1. / hz * (
26 - UZ(i , j , k )
27 + UZ(i , j , k+1)
28 );
29 }
30 }
31}