How to achieve (approx) unit scaling of a non-linear diffusion (heat) equation with a wildly varying diffusion coefficient?

21 Views Asked by At

I have numerical issues with a poorly scaled one-dimensional non-linear diffusion equation in physical co-ordinates

$$ \frac{\partial{u}}{\partial{t}}(x,t) = \frac{\partial}{\partial{x}}\left(D(u) \frac{\partial{u}(x,t)}{\partial{x}}\right)$$

$$x \in (0,L),\ t \in (0,t_\text{f}) $$

with initial conditions $$u(x,0) = u_0(x)$$ and Double-Neumann Boundary Conditions $$D(u)\frac{\partial{u}}{\partial{x}}_{\Large\mid \normalsize{x=0}} = f(t); \quad D(u)\frac{\partial{u}}{\partial{x}}_{\Large\mid \normalsize{x=L}} = 0$$.

In numerically solving this PDE, I end up with convergence errors due to poor scaling of the problem with $u \approx \mathcal{O}(10^3)$, $x \approx \mathcal{O}(10^-6)$, and the most problematic of them all $D(u) \approx \mathcal{O}(10^{-12})\text{ to }\mathcal{O}(10^{-16}) $.

By applying standard scaling techniques $\bar{t} = \frac{t}{t_\text{c}}$, $\bar{x} = \frac{x}{x_\text{c}}$, $\bar{u} = \frac{u}{u_\text{c}}$, $\bar{D} = \frac{D}{D_\text{c}}$, and setting $x_\text{c} = L$, $D_\text{c} = D_{\max}$, $t_\text{c} = \frac{L^2}{D_{\max}}$ and $u_\text{c} = {u_{\max}}$, I was able to arrive at a better-scaled non-dimensionalised version of the PDE as

$$ \frac{\partial{\bar{u}}}{\partial{\bar{t}}}(\bar{x},\bar{t}) = \frac{\partial}{\partial{\bar{x}}}\left(\bar{D}(\bar{u}) \frac{\partial{\bar{u}}(\bar{x},\bar{t})}{\partial{\bar{x}}}\right)$$

in the unit interval $\bar{x} \in (0,1)$ with $\bar{u} \in (0,1)$. However, due to the 4 orders of magnitude variation in $\bar{D}$ as well as the poor resolution of its values, it doesn't look like the linear scaling $\bar{D} = \frac{D}{D_\text{max}}$ is the correct one to use.

Can someone please help to scale this PDE for better numerical conditioning?