MPI-AMRVAC
3.1
The MPI - Adaptive Mesh Refinement - Versatile Advection Code
|
This page describes the current (22/06/2022) functionality of the advection-reaction-diffusion (ard) module. This module extends the reaction-diffusion module with the possibility of adding an advection term. The source code can be found in src/ard/mod_ard_phys.t
.
Systems of \( s \) advection-reaction-diffusion equations are of the form
\[ \frac{\partial u_i}{\partial t} + \nabla(a_i(u_1, \ldots, u_s) u_i) = \nabla(D_i \nabla u_i) + f_i(u_1, \ldots, u_s) \qquad i \in \{1,\ldots, s\} \]
where \( a_i \) are the advection coefficients which potentially depend on the solution values themselves. \( D_i \) are the diffusion coefficients and \( f_i \) the reaction functions. In the ard module in MPI-AMRVAC, several such systems are available with an advection term of the form:
\[ \nabla(a_i(u_1, \ldots, u_s) u_i) = \nabla(\frac{A_i}{p} u_i^p) = A_i u_i^{p-1} \nabla u_i, \]
for some integer power \( p \). The systems of interest are given below. The prefixes relate to the names given to the systems in the code, to be supplied in the .par
file or prefixing the variables. Some systems have a good starting resource linked to them.
nr
= no_reac
: No reaction term or the pure advection-diffusion equation
\[ \frac{\partial u}{\partial t} + A u^{p-1} \nabla u = D \nabla^2 u \]
lg
= logistic
: Fisher-KPP or the diffusive logistic equation
\[ \frac{\partial u}{\partial t} + A u^{p-1} \nabla u = D \nabla^2 u + \lambda u(1-u) \]
gs
= gray-scott
: Gray-Scott
\begin{eqnarray*} \frac{\partial u}{\partial t} + A_1 u^{p-1} \nabla u &=& D_1 \nabla^2 u - uv^2 + F(1-u) \\ \frac{\partial v}{\partial t} + A_2 v^{p-1} \nabla v &=& D_2 \nabla^2 v + uv^2 - (F+k)v \end{eqnarray*}
br
= brusselator
: Brusselator
\begin{eqnarray*} \frac{\partial u}{\partial t} + A_1 u^{p-1} \nabla u &=& D_1 \nabla^2 u + u^2 v + A - (B+1) u \\ \frac{\partial v}{\partial t} + A_2 v^{p-1} \nabla v &=& D_2 \nabla^2 v - u^2 v + Bu \end{eqnarray*}
sb
= schnakenberg
: Schnakenberg
\begin{eqnarray*} \frac{\partial u}{\partial t} + A_1 u^{p-1} \nabla u &=& D_1 \nabla^2 u + \gamma (\alpha + u^2 v - u) \\ \frac{\partial v}{\partial t} + A_2 v^{p-1} \nabla v &=& D_2 \nabla^2 v + \gamma (\beta - u^2 v) \end{eqnarray*}
ebr
= ext-brusselator
: Extended Brusselator (where \( f(u,v) \) and \( g(u,v) \) are the reaction functions in the Brusselator model (see above))
\begin{eqnarray*} \frac{\partial u}{\partial t} + A_1 u^{p-1} \nabla u &=& D_1 \nabla^2 u + f(u,v) - Cu + Dw \\ \frac{\partial v}{\partial t} + A_2 v^{p-1} \nabla v &=& D_2 \nabla^2 v + g(u,v) \\ \frac{\partial w}{\partial t} + A_3 w^{p-1} \nabla w &=& D_3 \nabla^2 w + Cu - Dw \end{eqnarray*}
bzfn
= belousov_fieldnoyes
: Oregonator (Field-Noyes model of the Belousov-Zhabotinski reaction)
\begin{eqnarray*} \frac{\partial u}{\partial t} + A_1 u^{p-1} \nabla u &=& D_1 \nabla^2 u + \frac{1}{\epsilon} (\lambda u - u w + u - u^2) \\ \frac{\partial v}{\partial t} + A_2 v^{p-1} \nabla v &=& D_2 \nabla^2 v + u - v \\ \frac{\partial w}{\partial t} + A_3 w^{p-1} \nabla w &=& D_3 \nabla^2 w + \frac{1}{\delta} (-\lambda w - u w + \mu v)) \end{eqnarray*}
lor
= lorenz
: The Lorenz system
\begin{eqnarray*} \frac{\partial u}{\partial t} + A_1 u^{p-1} \nabla u &=& D_1 \nabla^2 u + \sigma (v-u) \\ \frac{\partial v}{\partial t} + A_2 v^{p-1} \nabla v &=& D_2 \nabla^2 v + u(r - w) - v \\ \frac{\partial w}{\partial t} + A_3 w^{p-1} \nabla w &=& D_3 \nabla^2 w + uv - bw \end{eqnarray*}
Unlike for the reaction-diffusion module, the flux schemes and slope limiters are applicable to this advection-reaction-diffusion module. There is a possibility to use IMEX schemes, where the diffusion part is handled implicitly and reaction explicitly. The implicit system is then solved using the AMR-compatible multigrid solver coupled to MPI-AMRVAC.
<!-- J. Teunissen, R. Keppens, A geometric multigrid library for quadtree/octree AMR grids coupled to MPI-AMRVAC, Computer Physics Communications, Volume 245, 2019, 106866, ISSN 0010-4655, https://doi.org/10.1016/j.cpc.2019.106866. -->
A number of examples can be found in tests/ard/
. The namelist for the advection-reaction-diffusion module is as follows:
&rd_list D1, D2, D3, ! Diffusion coefficients adv_pow, ! Power p of the unknown in the advection term A1, A2, A3, ! Advection coefficients (d-dimensional) sb_alpha, sb_beta, sb_kappa, ! Parameters for Schnakenberg gs_F, gs_k, ! Parameters for Gray-Scott br_A, br_B, ! Parameters for Brusselator br_C, br_D, ! Parameters for extended Brusselator lg_lambda, ! Parameter for Fisher-KPP equation bzfn_epsilon, bzfn_delta, bzfn_lambda, bzfn_mu, ! Parameters for Oregonator model lor_r, lor_sigma, lor_b, ! Parameters for Lorenz system equation_name, ! Name of the system to simulate dtreacpar, ! Timestep restriction parameter ard_particles, ard_source_split /