or,
$$\frac{d\phi}{dx} = \frac{\Gamma}{u}\frac{d^2\phi}{dx^2}.$$* If $P_e=0$, then $u$ is very small compared to $\Gamma$ and we have a diffusion problem.
* The solution is linear.
* If $P_e \gg 0$, then $u$ is large in the positive direction and we have positively curved solution where $\phi_0$ persists over most of the domain.
* The gradient becomes large at the right.
* This large gradient is needed to offset the relatively small $\Gamma$ so that diffusion can balance advection.
* For $P_e \ll 0$, $u$ is large in the negative direction and we have a negatively curved solution where $\phi_L$ persists over most of the domain.
* The gradient becomes large at the left.
* Again, this large gradient is needed to offset the relatively small $\Gamma$ so that diffusion can balance advection.
using Plots
using LaTeXStrings
xL = LinRange(0,1,1000)
function phihat(xL, Pe)
return (exp.(Pe*xL).-1)./(exp(Pe)-1)
end
plot(xL, phihat(xL,-20), label="Pe=-20")
plot!(xL, phihat(xL,-5), label="Pe=-5")
plot!(xL, phihat(xL,1E-12), label="Pe=0")
plot!(xL, phihat(xL,5), label="Pe=5")
plot!(xL, phihat(xL,20), label="Pe=20")
plot!(legend_foreground_color=nothing)
plot!(xlabel="x/L")
plot!(ylabel=L"\hat{\phi}")
For mixed problems, we can do better by using the exact solution to construct an exact finite difference method.
$$\frac{d\phi}{dx} = \frac{\Gamma}{u}\frac{d^2\phi}{dx^2} \rightarrow \frac{d}{dx}\underbrace{\left(u\phi - \Gamma\frac{d\phi}{dx}\right)}_{\mbox{Flux: F}} = 0.$$Hence, our equation is
$$\frac{dF}{dx} = 0.$$For finite volume we have
$$F_e - F_w = 0.$$$$F_e = u_e\phi_e - \Gamma_e\left(\frac{d\phi}{dx}\right)_e,$$$$F_w = u_w\phi_w - \Gamma_w\left(\frac{d\phi}{dx}\right)_w.$$Here, we are using $(x/\Delta x)_e=1/2$, that is Practice A, where the face is midway between grid points. The above expression simplifies nicely (by cancellation of the exponential terms) to
$$F_e = u_e(\phi_P - \gamma),$$Now, we insert $\gamma$, and repeat all of this for $F_w$ to obtain
$$F_e = u_e\left(\phi_P + \frac{\phi_P-\phi_E}{e^{P_e}-1}\right).$$ $$F_w = u_w\left(\phi_W + \frac{\phi_W-\phi_P}{e^{P_w}-1}\right).$$Finally, for $F_e-F_w=0$ we can write our scheme in terms of coefficients of $\phi_W$, $\phi_P$ and $\phi_E$:
$$ \phi_W\left[-u_w-\frac{u_w}{e^{P_w}-1}\right] + \phi_P\left[u_e+\frac{u_e}{e^{P_e}-1} + \frac{u_w}{e^{P_w}-1}\right] + \phi_E\left[\frac{-u_e}{e^{P_e}-1}\right] = 0. $$If we know the exact solution, why bother going through the effort to use it in a finite volume method using a grid? Why not just use the solution?
We can use this method to treat the combined advection and diffusion fluxes $F$ for more complicated situations that we don't know (or don't want to find) the exact solution for. For example:
Exponentials are computationally expensive to compute.
Replace the exponential terms in the above coefficients with polynomial approximations.
$$\frac{u}{e^P-1} = \frac{\Gamma}{\Delta x}\frac{P}{e^P-1}.$$
Consider the last exponential term, call it $T$:
P = LinRange(-5,8,1001) # 1001 to avoid 0 in the list
T = P./(exp.(P) .-1)
Tfit = zeros(length(P))
Tfit[P .<= 2] = 1 .- 0.5*P[P .<= 2]
Tfit[P .< -2] = -P[P .< -2]
plot(P,T, label="exp", color="black", lw=2)
plot!(P,Tfit, label="fit", color="red", lw=2)
plot!([0], seriestype=:vline, color="gray", linestyle=:dash, label=nothing)
plot!([0], seriestype=:hline, color="gray", linestyle=:dash, label=nothing)
plot!(xlim=[-6,9], ylim=[-2,6])
plot!(legend_foreground_color=nothing)
plot!(xlabel="P")
plot!(ylabel=L"\frac{P}{e^P-1}")