### Cleaned up some equations in Gizmo's hydro_iact and hydro_gradients. Moved the...

`Cleaned up some equations in Gizmo's hydro_iact and hydro_gradients. Moved the gradient prediction to before the velocity boost.`
parent a0148917
 ... ... @@ -98,8 +98,7 @@ __attribute__((always_inline)) INLINE static void hydro_gradients_predict( /* perform gradient reconstruction in space and time */ /* Compute interface position (relative to pj, since we don't need the actual * position) eqn. (8) */ const float xfac = hj / (hi + hj); const float xij_j = {xfac * dx, xfac * dx, xfac * dx}; const float xij_j = {xij_i + dx, xij_i + dx, xij_i + dx}; float dWi; dWi = pi->primitives.gradients.rho * xij_i + ... ...
 ... ... @@ -375,11 +375,9 @@ __attribute__((always_inline)) INLINE static void runner_iact_fluxes_common( /* Compute interface velocity */ /* eqn. (9) */ float xijdotdx = xij_i * dx + xij_i * dx + xij_i * dx; xijdotdx *= r_inv * r_inv; const float vij = {vi + (vi - vj) * xijdotdx, vi + (vi - vj) * xijdotdx, vi + (vi - vj) * xijdotdx}; const float vij = {vi + (vi - vj) * xfac, vi + (vi - vj) * xfac, vi + (vi - vj) * xfac}; /* complete calculation of position of interface */ /* NOTE: dx is not necessarily just pi->x - pj->x but can also contain ... ... @@ -391,6 +389,8 @@ __attribute__((always_inline)) INLINE static void runner_iact_fluxes_common( // for ( k = 0 ; k < 3 ; k++ ) // xij[k] += pi->x[k]; hydro_gradients_predict(pi, pj, hi, hj, dx, r, xij_i, Wi, Wj); /* Boost the primitive variables to the frame of reference of the interface */ /* Note that velocities are indices 1-3 in W */ Wi -= vij; ... ... @@ -400,8 +400,6 @@ __attribute__((always_inline)) INLINE static void runner_iact_fluxes_common( Wj -= vij; Wj -= vij; hydro_gradients_predict(pi, pj, hi, hj, dx, r, xij_i, Wi, Wj); /* we don't need to rotate, we can use the unit vector in the Riemann problem * itself (see GIZMO) */ ... ...
 ... ... @@ -98,8 +98,7 @@ __attribute__((always_inline)) INLINE static void hydro_gradients_predict( /* perform gradient reconstruction in space and time */ /* Compute interface position (relative to pj, since we don't need the actual * position) eqn. (8) */ const float xfac = hj / (hi + hj); const float xij_j = {xfac * dx, xfac * dx, xfac * dx}; const float xij_j = {xij_i + dx, xij_i + dx, xij_i + dx}; float dWi; dWi = pi->primitives.gradients.rho * xij_i + ... ...
 ... ... @@ -375,21 +375,11 @@ __attribute__((always_inline)) INLINE static void runner_iact_fluxes_common( /* Compute interface velocity */ /* eqn. (9) */ float xijdotdx = xij_i * dx + xij_i * dx + xij_i * dx; xijdotdx *= r_inv * r_inv; const float vij = {vi + (vi - vj) * xijdotdx, vi + (vi - vj) * xijdotdx, vi + (vi - vj) * xijdotdx}; /* complete calculation of position of interface */ /* NOTE: dx is not necessarily just pi->x - pj->x but can also contain correction terms for periodicity. If we do the interpolation, we have to use xij w.r.t. the actual particle. => we need a separate xij for pi and pj... */ /* tldr: we do not need the code below, but we do need the same code as above but then with i and j swapped */ // for ( k = 0 ; k < 3 ; k++ ) // xij[k] += pi->x[k]; const float vij = {vi + xfac * (vi - vj), vi + xfac * (vi - vj), vi + xfac * (vi - vj)}; hydro_gradients_predict(pi, pj, hi, hj, dx, r, xij_i, Wi, Wj); /* Boost the primitive variables to the frame of reference of the interface */ /* Note that velocities are indices 1-3 in W */ ... ... @@ -400,8 +390,6 @@ __attribute__((always_inline)) INLINE static void runner_iact_fluxes_common( Wj -= vij; Wj -= vij; hydro_gradients_predict(pi, pj, hi, hj, dx, r, xij_i, Wi, Wj); /* we don't need to rotate, we can use the unit vector in the Riemann problem * itself (see GIZMO) */ ... ...
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment