Following "A conservative DGM for Convection-Diffusion and Navier-Stokes Problems" (Oden and Baumann), if we have a linear convection-diffusion equation of the following form: $$ \nabla\cdot(\mathbf{b}u) - \nabla\cdot(a\nabla u) = f $$

with BC's $$ u = u_{D} \;\;\text{on} \;{\Gamma_{D}} \;\;\;\text{and}\;\;\;a\nabla u\cdot\mathbf{n}=u_{N} \;\;\text{on} \;\Gamma_{N} $$

Then we have the variational formulation of the convection term as follows: $$ A_{\mathbf{b}}(u,v) = -\sum_{K\in\mathcal{M}_{h}}\int_{K}\nabla v\cdot(\mathbf{b}u) + \sum_{e\in\Gamma_{h}^{i}}\int_{e}\left\{\mathbf{b}\cdot\mathbf{n}\right\}u^{\uparrow}[v] + \sum_{e\in\Gamma_{\text{out}}}\int_{e}(\mathbf{b}\cdot\mathbf{n})uv $$

and $$ L_{\mathbf{b}}(v) = -\sum_{e\in\Gamma_{\text{in}}}\int_{e}(\mathbf{b}\cdot\mathbf{n})u_{D}v $$

where $\Gamma_{h}^{i}$ is the set of interior edges, $\Gamma_{\text{in}} = \left\{\mathbf{x}\in\partial\Omega:\;\mathbf{b}\cdot\mathbf{n} < 0\right\}$ and $\Gamma_{\text{out}} = \partial\Omega\backslash\Gamma_{\text{in}}$. Also, we have the following upwind term: $$ u^{\uparrow} = \begin{cases} u|_{K_{-}}, &\left\{\mathbf{b}\cdot\mathbf{n}\right\} \geqslant0\\ u|_{K_{+}}, &\left\{\mathbf{b}\cdot\mathbf{n}\right\} < 0\end{cases} $$

where $K_{-}$ is the element to the "left" of an interior edge $e$ and $K_{+}$ is the element to the "right", using a fixed convention for defining the neighbors of an edge.

So I can implement this without much trouble. However, I'm trying to solve a non-linear equation in the following form: $$ \nabla\cdot(\gamma(u)\mathbf{b}(u)) - \nabla\cdot(a(u)\nabla u) = f(x,y) $$

I'm having some trouble figuring out the convective term here. I have: $$ A_{\mathbf{b}}(u,v) = -\sum_{K\in\mathcal{M}_{h}}\int_{K}\nabla v\cdot(\gamma(u)\mathbf{b}(u)) + \sum_{e\in\Gamma_{h}^{i}}\int_{e}\left\{\mathbf{b}(u)\cdot\mathbf{n}\right\}(\gamma(u))^{\uparrow}[v] + \sum_{e\in\Gamma_{\text{out}}}\int_{e}(\mathbf{b}(u)\cdot\mathbf{n})\gamma(u)v $$

and $$ L_{\mathbf{b}}(u) = -\sum_{e\in\Gamma_{\text{in}}}\int_{e}(\mathbf{b}(u)\cdot\mathbf{n})\gamma(u_{D})v $$

1) I'm trying to compute a Jacobian from these terms and I think there may be something wrong with my integration by parts. Is my averaging and upwinding correct? Namely, I'm a bit unsure of where the $\uparrow$ should go.

2) On the inflow integral, do I evaluate $\mathbf{b}(u_{D})$ AND $\gamma(u_{D})$? Or just $\gamma(u_{D})$? In the first case, this inflow term wouldn't contribute to the Jacobian. In the latter case, it would. Does it matter which way I do it?


I do not quite see why you separate $\gamma(u)$ and $\mathbf b(u)$.

Do the integration by parts, that should yield on interior faces the consistency term \begin{equation} \{\gamma(u)\mathbf b(u)\cdot\mathbf n\}[v] \end{equation} To this, you can add a consistent stabilization term like multiples of $[\gamma(u)\mathbf b(u)\cdot\mathbf n][v]$, possibly of $[\gamma(u)\{\mathbf b(u)\cdot\mathbf n\}[v]$. But only if your interface term is the sum of the consistency term above and a stabilization term which vanishes if applied to continuous functions, will you discretization be conservative.

If this holds, you might still be in trouble with stability. Have you tried local Lax-Friedrichs fluxes?

By the way, you know about the stability issues with the Baumann-Oden method?

| cite | improve this answer | |
  • $\begingroup$ I was separating $\gamma(u)$ and $\mathbf{b}(u)$ mainly because I wanted to be able to put the upwinding term in. But I guess using the consistency term you have above will eliminate that. If I am testing on sufficiently smooth solutions (with continuous coefficients), is the difference between putting $\gamma(u)$ in the average term vs. moving it outside w/ upwind really significant? also, are there any particularly references on the stability issues that would be helpful? $\endgroup$ – Justin Dong Feb 19 '14 at 21:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.