Advection¶
Wall-normal component¶
\[\dmomadv{1}{1}\]
src/fluid/predict/ux.c¶
120 BEGIN
121 const double hx_xm = HXXF(i-1);
122 const double hx_x0 = HXXF(i );
123 const double hx_xp = HXXF(i+1);
124 const double jd_xm = JDXF(i-1);
125 const double jd_x0 = JDXF(i );
126 const double jd_xp = JDXF(i+1);
127#if NDIMS == 2
128 const double ux_xm = + 0.5 * jd_xm / hx_xm * UX(i-1, j )
129 + 0.5 * jd_x0 / hx_x0 * UX(i , j );
130 const double ux_xp = + 0.5 * jd_x0 / hx_x0 * UX(i , j )
131 + 0.5 * jd_xp / hx_xp * UX(i+1, j );
132#else
133 const double ux_xm = + 0.5 * jd_xm / hx_xm * UX(i-1, j , k )
134 + 0.5 * jd_x0 / hx_x0 * UX(i , j , k );
135 const double ux_xp = + 0.5 * jd_x0 / hx_x0 * UX(i , j , k )
136 + 0.5 * jd_xp / hx_xp * UX(i+1, j , k );
137#endif
138 const double l = - 0.5 * ux_xm;
139 const double u = + 0.5 * ux_xp;
140 const double c = - l - u;
141 src[cnt] -= 1. / jd_x0 * (
142#if NDIMS == 2
143 + l * UX(i-1, j )
144 + c * UX(i , j )
145 + u * UX(i+1, j )
146#else
147 + l * UX(i-1, j , k )
148 + c * UX(i , j , k )
149 + u * UX(i+1, j , k )
150#endif
151 );
152 END
Stream-wise component¶
\[\dmomadv{1}{2}\]
src/fluid/predict/ux.c¶
171 BEGIN
172 const double hy_xm = HYXC(i-1);
173 const double hy_xp = HYXC(i );
174 const double jd_xm = JDXC(i-1);
175 const double jd_x0 = JDXF(i );
176 const double jd_xp = JDXC(i );
177#if NDIMS == 2
178 const double uy_ym = + 0.5 * jd_xm / hy_xm * UY(i-1, j )
179 + 0.5 * jd_xp / hy_xp * UY(i , j );
180 const double uy_yp = + 0.5 * jd_xm / hy_xm * UY(i-1, j+1)
181 + 0.5 * jd_xp / hy_xp * UY(i , j+1);
182#else
183 const double uy_ym = + 0.5 * jd_xm / hy_xm * UY(i-1, j , k )
184 + 0.5 * jd_xp / hy_xp * UY(i , j , k );
185 const double uy_yp = + 0.5 * jd_xm / hy_xm * UY(i-1, j+1, k )
186 + 0.5 * jd_xp / hy_xp * UY(i , j+1, k );
187#endif
188 const double l = - 0.5 * uy_ym;
189 const double u = + 0.5 * uy_yp;
190 const double c = - l - u;
191 src[cnt] -= 1. / jd_x0 * (
192#if NDIMS == 2
193 + l * UX(i , j-1)
194 + c * UX(i , j )
195 + u * UX(i , j+1)
196#else
197 + l * UX(i , j-1, k )
198 + c * UX(i , j , k )
199 + u * UX(i , j+1, k )
200#endif
201 );
202 END
Span-wise component¶
\[\dmomadv{1}{3}\]
src/fluid/predict/ux.c¶
220BEGIN
221 const double jd_xm = JDXC(i-1);
222 const double jd_x0 = JDXF(i );
223 const double jd_xp = JDXC(i );
224 const double uz_zm = + 0.5 * jd_xm / hz * UZ(i-1, j , k )
225 + 0.5 * jd_xp / hz * UZ(i , j , k );
226 const double uz_zp = + 0.5 * jd_xm / hz * UZ(i-1, j , k+1)
227 + 0.5 * jd_xp / hz * UZ(i , j , k+1);
228 const double l = - 0.5 * uz_zm;
229 const double u = + 0.5 * uz_zp;
230 const double c = - l - u;
231 src[cnt] -= 1. / jd_x0 * (
232 + l * UX(i , j , k-1)
233 + c * UX(i , j , k )
234 + u * UX(i , j , k+1)
235 );
236END
Additional component¶
\[\dmomadvx\]
src/fluid/predict/ux.c¶
254 BEGIN
255 const double hx_xm = HXXF(i-1);
256 const double hx_x0 = HXXF(i );
257 const double hx_xp = HXXF(i+1);
258 const double jd_xm = JDXF(i-1);
259 const double jd_x0 = JDXF(i );
260 const double jd_xp = JDXF(i+1);
261 const double djdhx_xm = - jd_xm / hx_xm
262 + jd_x0 / hx_x0;
263 const double djdhx_xp = - jd_x0 / hx_x0
264 + jd_xp / hx_xp;
265#if NDIMS == 2
266 const double uy_xm = + 0.5 * UY(i-1, j )
267 + 0.5 * UY(i-1, j+1);
268 const double uy_xp = + 0.5 * UY(i , j )
269 + 0.5 * UY(i , j+1);
270#else
271 const double uy_xm = + 0.5 * UY(i-1, j , k )
272 + 0.5 * UY(i-1, j+1, k );
273 const double uy_xp = + 0.5 * UY(i , j , k )
274 + 0.5 * UY(i , j+1, k );
275#endif
276 src[cnt] += 1. / jd_x0 * (
277 + 0.5 * djdhx_xm * uy_xm * uy_xm
278 + 0.5 * djdhx_xp * uy_xp * uy_xp
279 );
280 END