Skip to content

Commit 0f01a60

Browse files
committed
dev notes
1 parent 886ca57 commit 0f01a60

3 files changed

Lines changed: 455 additions & 0 deletions

File tree

docs/documentation/equations.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,13 @@ The solver uses an **anchored dual-pass** formulation. Each Riemann solve at int
895895

896896
This formulation enables HLLD to be used with the non-conservative terms that affect the eigenstructure of the quasi-linear Jacobian. Volume fraction advection is built into the HLLD flux rather than treated as a separate non-conservative step.
897897

898+
#### Developer Notes on Non-Conservative Term Implementation
899+
900+
For details on how the Riemann solvers discretize non-conservative terms (volume fraction advection, Kapila \f$K\,\nabla\!\cdot\!\mathbf{u}\f$, and hypoelastic velocity gradients) and hand off interface quantities to the RHS, see the notes in `misc/dev_notes/`:
901+
902+
- `HLL_HLLC_non_conservative_terms_derivations.md` — Mathematical derivation of HLL Method 1 (alpha-interface), Method 2 (u-interface), and HLLC transport traces, including the \f$S_M\zeta_K\f$ star-branch construction and ADC blending.
903+
- `Riemann_and_RHS_source_terms_explanations.md` — Code dataflow: which arrays carry what between `m_riemann_solvers` and `m_rhs`, overloading of `flux_src`, the three NC advection modes (`adv_src_alpha_iface`, `adv_src_vel_iface`, `adv_src_none`), and the `nc_iface_vel` second export channel.
904+
898905
### 15.3 Time Integration
899906

900907
**Source:** `src/simulation/m_time_steppers.fpp`
Lines changed: 273 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,273 @@
1+
# Notes on HLL / HLLC Treatment of NC Terms
2+
3+
This note describes the numerical constructions themselves and intentionally avoids implementation-specific option names.
4+
5+
## 1. Two equivalent forms
6+
7+
For the volume-fraction coupling, the product rule gives two equivalent forms:
8+
9+
$$
10+
\partial_t \alpha + u\,\partial_x \alpha = 0,
11+
$$
12+
13+
$$
14+
\partial_t \alpha + \partial_x(\alpha u) = \alpha\,\partial_x u.
15+
$$
16+
17+
With the Kapila correction, these become
18+
19+
$$
20+
\partial_t \alpha + u\,\partial_x \alpha = \pm K\,\partial_x u,
21+
$$
22+
23+
$$
24+
\partial_t \alpha + \partial_x(\alpha u) = (\alpha \pm K)\,\partial_x u.
25+
$$
26+
27+
Numerically, these lead to two methods:
28+
29+
Method 1, or alpha-interface:
30+
31+
$$
32+
\text{flux side: } (U,F)=(\alpha,0),
33+
\qquad
34+
\text{NC side: } (U,F)=(1,\alpha).
35+
$$
36+
37+
This is not a separate physical auxiliary PDE. It is simply the HLL evaluation obtained when the left-hand transport part is written with zero flux, so that the same HLL diffusion and regularization are retained.
38+
39+
Method 2, or u-interface:
40+
41+
$$
42+
\text{flux side: } (U,F)=(\alpha,\alpha u),
43+
\qquad
44+
\text{NC side: } (U,F)=(1,u).
45+
$$
46+
47+
For tangential hypo terms, the same Method 2 idea is used with
48+
49+
$$
50+
(U,F)=(1,u_t).
51+
$$
52+
53+
## 2. Which method is used
54+
55+
For the volume-fraction term:
56+
57+
- HLL uses both Method 1 and Method 2.
58+
- HLLC uses Method 2 only.
59+
60+
For all other NC terms:
61+
62+
- The $K\,\partial_x u$ term always uses Method 2.
63+
- The hypoelastic terms involving $\partial_x u_n$ always use Method 2.
64+
- The hypoelastic terms involving $\partial_x u_t$ always use Method 2.
65+
66+
For example, in the 1D $x$-directed hypo subsystem one has terms such as
67+
68+
$$
69+
\partial_t(\rho\tau_{xx})+\partial_x(\rho u\tau_{xx})
70+
=
71+
\rho\left(\frac{4G}{3}+\tau_{xx}\right)\partial_x u,
72+
$$
73+
74+
$$
75+
\partial_t(\rho\tau_{xy})+\partial_x(\rho u\tau_{xy})
76+
=
77+
\rho\left(G+\tau_{xx}\right)\partial_x v.
78+
$$
79+
80+
So these terms explicitly require consistent approximations of both the normal velocity gradient $\partial_x u$ and the tangential velocity gradient $\partial_x v$.
81+
82+
So even when HLL uses alpha-interface for the pure $\alpha$ transport part, the $K\,\partial_x u$ and hypo terms are still built from interface-consistent velocity traces.
83+
84+
## 3. HLL
85+
86+
With wave-speed bounds $S_L<S_R$, the HLL flux is
87+
88+
$$
89+
F_{\mathrm{HLL}}(U,F)=
90+
\begin{cases}
91+
F_L, & 0\le S_L,\\[4pt]
92+
\dfrac{S_R F_L-S_L F_R+S_LS_R(U_R-U_L)}{S_R-S_L}, & S_L\le 0\le S_R,\\[10pt]
93+
F_R, & S_R\le 0.
94+
\end{cases}
95+
$$
96+
97+
### HLL Method 1: alpha-interface
98+
99+
For the flux side,
100+
101+
$$
102+
F_{\mathrm{HLL}}^{(\alpha,\;0)}=
103+
F_{\mathrm{HLL}}(U=\alpha,F=0)=
104+
\begin{cases}
105+
0, & 0\le S_L,\\[4pt]
106+
\dfrac{S_LS_R(\alpha_R-\alpha_L)}{S_R-S_L}, & S_L\le 0\le S_R,\\[10pt]
107+
0, & S_R\le 0.
108+
\end{cases}
109+
$$
110+
111+
For the interface-consistent $\alpha$ trace on the NC side,
112+
113+
$$
114+
\Psi_{\alpha,\mathrm{HLL}}=
115+
F_{\mathrm{HLL}}(U=1,F=\alpha)=
116+
\begin{cases}
117+
\alpha_L, & 0\le S_L,\\[4pt]
118+
\dfrac{S_R\alpha_L-S_L\alpha_R}{S_R-S_L}, & S_L\le 0\le S_R,\\[10pt]
119+
\alpha_R, & S_R\le 0.
120+
\end{cases}
121+
$$
122+
123+
### HLL Method 2: u-interface
124+
125+
For the flux side,
126+
127+
$$
128+
F_{\mathrm{HLL}}^{(\alpha,\;\alpha u)}=
129+
F_{\mathrm{HLL}}(U=\alpha,F=\alpha u)=
130+
\begin{cases}
131+
\alpha_L u_L, & 0\le S_L,\\[4pt]
132+
\dfrac{S_R\alpha_Lu_L-S_L\alpha_Ru_R+S_LS_R(\alpha_R-\alpha_L)}{S_R-S_L},
133+
& S_L\le 0\le S_R,\\[10pt]
134+
\alpha_R u_R, & S_R\le 0.
135+
\end{cases}
136+
$$
137+
138+
For the normal velocity trace on the NC side,
139+
140+
$$
141+
\Psi_{u,\mathrm{HLL}}=
142+
F_{\mathrm{HLL}}(U=1,F=u)=
143+
\begin{cases}
144+
u_L, & 0\le S_L,\\[4pt]
145+
\dfrac{S_Ru_L-S_Lu_R}{S_R-S_L}, & S_L\le 0\le S_R,\\[10pt]
146+
u_R, & S_R\le 0.
147+
\end{cases}
148+
$$
149+
150+
For tangential hypo terms,
151+
152+
$$
153+
\Psi_{u_t,\mathrm{HLL}}=
154+
F_{\mathrm{HLL}}(U=1,F=u_t)=
155+
\begin{cases}
156+
u_{t,L}, & 0\le S_L,\\[4pt]
157+
\dfrac{S_Ru_{t,L}-S_Lu_{t,R}}{S_R-S_L}, & S_L\le 0\le S_R,\\[10pt]
158+
u_{t,R}, & S_R\le 0.
159+
\end{cases}
160+
$$
161+
162+
## 4. HLLC
163+
164+
HLLC uses Method 2 only. Let
165+
166+
$$
167+
S_L<S_M<S_R,
168+
$$
169+
170+
and define
171+
172+
$$
173+
\zeta_K=\frac{S_K-u_K}{S_K-S_M}
174+
=\frac{\rho_K^*}{\rho_K},
175+
\qquad K\in\{L,R\}.
176+
$$
177+
178+
In this construction, HLLC is used only in Method 2.
179+
180+
### HLLC Method 2: u-interface
181+
182+
For the flux side,
183+
184+
$$
185+
F_{\mathrm{HLLC}}^{(\alpha,\;\alpha u)}=
186+
\begin{cases}
187+
\alpha_L u_L, & 0\le S_L,\\[4pt]
188+
\alpha_L S_M\zeta_L, & S_L\le 0\le S_M,\\[4pt]
189+
\alpha_R S_M\zeta_R, & S_M\le 0\le S_R,\\[4pt]
190+
\alpha_R u_R, & S_R\le 0.
191+
\end{cases}
192+
$$
193+
194+
For the normal velocity trace on the NC side,
195+
196+
$$
197+
\Psi_{u,\mathrm{HLLC}}=
198+
F_{\mathrm{HLLC}}(U=1,F=u)=
199+
\begin{cases}
200+
u_L, & 0\le S_L,\\[4pt]
201+
S_M\zeta_L, & S_L\le 0\le S_M,\\[4pt]
202+
S_M\zeta_R, & S_M\le 0\le S_R,\\[4pt]
203+
u_R, & S_R\le 0.
204+
\end{cases}
205+
$$
206+
207+
For tangential hypo terms, the tangential trace comes from the HLLC tangential star state:
208+
209+
$$
210+
\Psi_{u_t,\mathrm{HLLC}}=
211+
\begin{cases}
212+
u_{t,L}, & 0\le S_L,\\[4pt]
213+
u_t^*, & S_L\le 0\le S_R,\\[4pt]
214+
u_{t,R}, & S_R\le 0.
215+
\end{cases}
216+
$$
217+
218+
### Why the star-branch trace is $S_M\zeta_L$
219+
220+
Take any co-moving scalar $z$ on the left star branch. The HLLC jump condition gives
221+
222+
$$
223+
S_L(z_L^*-z_L)=z_L^*S_M-z_Lu_L.
224+
$$
225+
226+
Hence
227+
228+
$$
229+
z_L^*=z_L\,\frac{S_L-u_L}{S_L-S_M}
230+
=z_L\zeta_L.
231+
$$
232+
233+
The left star-branch HLLC flux is then
234+
235+
$$
236+
F_{\mathrm{HLLC},L}(z)
237+
=z_Lu_L+S_L(z_L^*-z_L).
238+
$$
239+
240+
Substituting $z_L^*=z_L\zeta_L$ gives
241+
242+
$$
243+
F_{\mathrm{HLLC},L}(z)
244+
=z_L\left[u_L+S_L(\zeta_L-1)\right]
245+
=z_L S_M\zeta_L.
246+
$$
247+
248+
Therefore, for the unit-variable problem $z=1$,
249+
250+
$$
251+
\Psi_{u,\mathrm{HLLC},L}=S_M\zeta_L.
252+
$$
253+
254+
The right branch is identical:
255+
256+
$$
257+
\Psi_{u,\mathrm{HLLC},R}=S_M\zeta_R.
258+
$$
259+
260+
This is the key nonstandard point in HLLC: the transport trace entering the NC terms is not $S_M$, but $S_M\zeta_K$.
261+
262+
## 5. ADC remark
263+
264+
With ADC, the non-conservative transport traces should be blended between HLL Method 2 and HLLC:
265+
266+
$$
267+
\Psi^{\mathrm{ADC}}
268+
=
269+
\Psi^{\mathrm{HLL,\,M2}}
270+
+\phi\left(\Psi^{\mathrm{HLLC}}-\Psi^{\mathrm{HLL,\,M2}}\right),
271+
$$
272+
273+
applied to both the normal and tangential traces, with the conservative transport flux blended by the same sensor. This is the mathematically consistent pairing because both endpoints are transport-consistent velocity-trace constructions for gradient-driven NC terms, whereas Method 1 is based on an $\alpha$-interface construction and is not the correct low-order partner for terms involving velocity gradients.

0 commit comments

Comments
 (0)