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