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