Rayleigh-Bénard convection of a Darcy fluid in a porous annulus#
\[\begin{split}
\mathbb{S}_{\psi,c}
\begin{cases}
\Omega = \Omega = \{(x, y)~:~(\mathcal{A}X)^2 < x^2 + y^2 < X^2\} & \text{aspect ratio } 0<\mathcal{A}<1 \\
\partial\Omega_{\text{inner}} = \{(x, y)~:~ x^2 + y^2 = (\mathcal{A}X)^2 \} \\
\partial\Omega_{\text{outer}} = \{(x, y)~:~ x^2 + y^2 = X^2 \} \\
c_0(x,y)=\frac{\ln(X/\sqrt{x^2 + y^2})}{\ln(1/\mathcal{A})}+\mathcal{N}(x,y) & \text{perturbed initial radial concentration} \\
c_{\text{D}}\vert_{\partial\Omega_{\text{inner}}}=1 & \text{light inner boundary} \\
c_{\text{D}}\vert_{\partial\Omega_{\text{outer}}}=0 & \text{heavy outer boundary} \\
\psi_{\text{D}}\vert_{\partial\Omega}=0 & \text{no-penetration on entire boundary} \\
\mathsf{D} = \mathsf{I} & \text{constant isotropic dispersion}\\
\mathsf{K} = \mathsf{I} & \text{constant isotropic permeability}\\
\mu = 1 & \text{constant viscosity} \\
\rho(c) = -c & \text{linear density}\\
\textbf{e}_g = -\frac{x}{\sqrt{x^2+y^2}}\textbf{e}_x -\frac{y}{\sqrt{x^2+y^2}}\textbf{e}_y & \text{radially inward gravity} \\
\end{cases}
\end{split}\]
from lucifex.fdm import AB2, CN
from lucifex.sim import run
from lucifex.utils.npy_utils import as_index
from lucifex.plt import plot_colormap, plot_mesh, create_animation, save_figure, display_animation
from py.C11_darcy_rayleigh_benard import darcy_rayleigh_benard_annulus
simulation = darcy_rayleigh_benard_annulus(
Rratio = 0.5,
Nradial=32,
scaling='advective',
Ra=300.0,
c_ampl=1e-3,
c_freq=6,
D_adv=AB2,
D_diff=CN,
)
n_stop = 200
dt_init = 1e-6
n_init = 5
run(simulation, n_stop=n_stop, dt_init=dt_init, n_init=n_init)
c = simulation['c']
time_slice = slice(0, None, 2)
titles = [f'$c(t={t:.3f})$' for t in c.time_series[time_slice]]
anim = create_animation(
plot_colormap,
colorbar=False,
)(c.series[time_slice], title=titles)
anim_path = save_figure('c(x,y,t)', return_path=True)(anim)
display_animation(anim_path)
mesh = c.function_space.mesh
c_base, c_pert = c.ics_perturbation
fig, ax = plot_colormap(c_pert, title=f'$\mathcal{{N}}$')
plot_mesh(fig, ax, mesh, color='cyan', linewidth=0.5)
save_figure('N(x,y)_mesh')(fig)
time_indices = as_index(c.time_series, (0, 0.5, -1), fraction=True)
for i in time_indices:
fig, ax = plot_colormap(
c.series[i],
title=f'$c(t={c.time_series[i]:.2f})$',
)
save_figure(f'c(x,y,t={c.time_series[i]:.2f})', thumbnail=(i == -1))(fig)