MPI-AMRVAC  3.1
The MPI - Adaptive Mesh Refinement - Versatile Advection Code
Functions/Subroutines | Variables
mod_rd_phys Module Reference

Reaction-diffusion module (physics routines) More...

Functions/Subroutines

subroutine rd_write_info (fh)
 Write this module's parameters to a snapshot. More...
 
subroutine, public rd_phys_init ()
 
subroutine rd_check_params
 
subroutine rd_to_conserved (ixIL, ixOL, w, x)
 
subroutine rd_to_primitive (ixIL, ixOL, w, x)
 
subroutine rd_get_cmax (w, x, ixIL, ixOL, idim, cmax)
 
subroutine rd_get_cbounds (wLC, wRC, wLp, wRp, x, ixIL, ixOL, idim, Hspeed, cmax, cmin)
 
subroutine rd_get_dt (w, ixIL, ixOL, dtnew, dxD, x)
 
subroutine rd_get_flux (wC, w, x, ixIL, ixOL, idim, f)
 
subroutine rd_add_source (qdt, dtfactor, ixIL, ixOL, wCT, wCTprim, w, x, qsourcesplit, active)
 
subroutine rd_laplacian (ixIL, ixOL, var, lpl)
 Compute the Laplacian using a standard second order scheme. For now this method only works in slab geometries. Requires one ghost cell only. More...
 
subroutine put_laplacians_onegrid (ixIL, ixOL, w)
 
subroutine rd_evaluate_implicit (qtC, psa)
 inplace update of psa==>F_im(psa) More...
 
subroutine rd_implicit_update (dtfactor, qdt, qtC, psa, psb)
 Implicit solve of psa=psb+dtfactor*dt*F_im(psa) More...
 

Variables

integer, public, protected u_ = 1
 
integer, public, protected v_ = 2
 For 2 or more equations. More...
 
integer, public, protected w_ = 3
 For 3 or more equations. More...
 
logical, public, protected rd_particles = .false.
 Whether particles module is added. More...
 
double precision, public, protected dtreacpar = 0.5d0
 Parameter with which to multiply the reaction timestep restriction. More...
 
character(len=20), public, protected equation_name = "gray-scott"
 Name of the system to be solved. More...
 
double precision, public, protected d1 = 0.05d0
 Diffusion coefficient for first species (u) More...
 
double precision, public, protected d2 = 1.0d0
 Diffusion coefficient for second species (v) (if applicable) More...
 
double precision, public, protected d3 = 1.0d0
 Diffusion coefficient for third species (w) (if applicable) More...
 
double precision, public, protected sb_alpha = 0.1305d0
 Parameter for Schnakenberg model. More...
 
double precision, public, protected sb_beta = 0.7695d0
 Parameter for Schnakenberg model. More...
 
double precision, public, protected sb_kappa = 100.0d0
 Parameter for Schnakenberg model. More...
 
double precision, public, protected gs_f = 0.046d0
 Feed rate for Gray-Scott model. More...
 
double precision, public, protected gs_k = 0.063d0
 Kill rate for Gray-Scott model. More...
 
double precision, public, protected br_a = 4.5d0
 Parameter for Brusselator model. More...
 
double precision, public, protected br_b = 8.0d0
 Parameter for Brusselator model. More...
 
double precision, public, protected br_c = 1.0d0
 Parameter for extended Brusselator model. More...
 
double precision, public, protected br_d = 1.0d0
 Parameter for extended Brusselator model. More...
 
double precision, public, protected lg_lambda = 1.0d0
 Parameter for logistic model (Fisher / KPP equation) More...
 
double precision, public, protected bzfn_epsilon = 1.0d0
 Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction. More...
 
double precision, public, protected bzfn_delta = 1.0d0
 Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction. More...
 
double precision, public, protected bzfn_lambda = 1.0d0
 Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction. More...
 
double precision, public, protected bzfn_mu = 1.0d0
 Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction. More...
 
double precision, public, protected lor_r = 28.0d0
 Parameter for Lorenz system (Rayleigh number) More...
 
double precision, public, protected lor_sigma = 10.0d0
 Parameter for Lorenz system (Prandtl number) More...
 
double precision, public, protected lor_b = 8.0d0 / 3.0d0
 Parameter for Lorenz system (aspect ratio of the convection rolls) More...
 
type(mg_bc_t), dimension(3, mg_num_neighbors), public rd_mg_bc
 Boundary condition information for the multigrid method. More...
 

Detailed Description

Reaction-diffusion module (physics routines)

Multiple reaction-diffusion systems are included: the Gray-Scott model, the Schnakenberg model, the Brusselator model, the diffusive logistic equation, an analytical testcase from "Numerical solution of time-dependent advection- diffusion-reaction equations" by Hundsdorfer & Verwer, the Oregonator model, the extended Brusselator model, and the diffusive Lorenz system. See the documentation of the reaction-diffusion module for more information.

IMEX methods are also supported. The implicit system is solved by a multigrid solver coupled into MPI-AMRVAC.

Function/Subroutine Documentation

◆ put_laplacians_onegrid()

subroutine mod_rd_phys::put_laplacians_onegrid ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, 1:nw), intent(inout)  w 
)

Definition at line 505 of file mod_rd_phys.t.

Here is the call graph for this function:

◆ rd_add_source()

subroutine mod_rd_phys::rd_add_source ( double precision, intent(in)  qdt,
double precision, intent(in)  dtfactor,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, 1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(in)  wCTprim,
double precision, dimension(ixi^s, 1:nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x,
logical, intent(in)  qsourcesplit,
logical, intent(inout)  active 
)

Definition at line 386 of file mod_rd_phys.t.

Here is the call graph for this function:

◆ rd_check_params()

subroutine mod_rd_phys::rd_check_params

Definition at line 215 of file mod_rd_phys.t.

◆ rd_evaluate_implicit()

subroutine mod_rd_phys::rd_evaluate_implicit ( double precision, intent(in)  qtC,
type(state), dimension(max_blocks), target  psa 
)

inplace update of psa==>F_im(psa)

Definition at line 531 of file mod_rd_phys.t.

Here is the call graph for this function:

◆ rd_get_cbounds()

subroutine mod_rd_phys::rd_get_cbounds ( double precision, dimension(ixi^s, nw), intent(in)  wLC,
double precision, dimension(ixi^s,nw), intent(in)  wRC,
double precision, dimension(ixi^s, nw), intent(in)  wLp,
double precision, dimension(ixi^s,nw), intent(in)  wRp,
double precision, dimension(ixi^s, 1:^nd), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s,1:number_species), intent(in)  Hspeed,
double precision, dimension(ixi^s,1:number_species), intent(inout)  cmax,
double precision, dimension(ixi^s,1:number_species), intent(inout), optional  cmin 
)

Definition at line 297 of file mod_rd_phys.t.

◆ rd_get_cmax()

subroutine mod_rd_phys::rd_get_cmax ( double precision, dimension(ixi^s, nw), intent(in)  w,
double precision, dimension(ixi^s, 1:^nd), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s), intent(inout)  cmax 
)

Definition at line 288 of file mod_rd_phys.t.

◆ rd_get_dt()

subroutine mod_rd_phys::rd_get_dt ( double precision, dimension(ixi^s, 1:nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(inout)  dtnew,
double precision, intent(in)  dx,
double precision, intent(in)  D,
double precision, dimension(ixi^s, 1:^nd), intent(in)  x 
)

Definition at line 317 of file mod_rd_phys.t.

◆ rd_get_flux()

subroutine mod_rd_phys::rd_get_flux ( double precision, dimension(ixi^s, 1:nw), intent(in)  wC,
double precision, dimension(ixi^s, 1:nw), intent(in)  w,
double precision, dimension(ixi^s, 1:^nd), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s, nwflux), intent(out)  f 
)

Definition at line 374 of file mod_rd_phys.t.

◆ rd_implicit_update()

subroutine mod_rd_phys::rd_implicit_update ( double precision, intent(in)  dtfactor,
double precision, intent(in)  qdt,
double precision, intent(in)  qtC,
type(state), dimension(max_blocks), target  psa,
type(state), dimension(max_blocks), target  psb 
)

Implicit solve of psa=psb+dtfactor*dt*F_im(psa)

Definition at line 551 of file mod_rd_phys.t.

◆ rd_laplacian()

subroutine mod_rd_phys::rd_laplacian ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(in)  var,
double precision, dimension(ixo^s), intent(out)  lpl 
)

Compute the Laplacian using a standard second order scheme. For now this method only works in slab geometries. Requires one ghost cell only.

Definition at line 482 of file mod_rd_phys.t.

◆ rd_phys_init()

subroutine, public mod_rd_phys::rd_phys_init

Definition at line 161 of file mod_rd_phys.t.

Here is the call graph for this function:

◆ rd_to_conserved()

subroutine mod_rd_phys::rd_to_conserved ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:^nd), intent(in)  x 
)

Definition at line 270 of file mod_rd_phys.t.

◆ rd_to_primitive()

subroutine mod_rd_phys::rd_to_primitive ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:^nd), intent(in)  x 
)

Definition at line 279 of file mod_rd_phys.t.

◆ rd_write_info()

subroutine mod_rd_phys::rd_write_info ( integer, intent(in)  fh)

Write this module's parameters to a snapshot.

Definition at line 150 of file mod_rd_phys.t.

Variable Documentation

◆ br_a

double precision, public, protected mod_rd_phys::br_a = 4.5d0

Parameter for Brusselator model.

Definition at line 64 of file mod_rd_phys.t.

◆ br_b

double precision, public, protected mod_rd_phys::br_b = 8.0d0

Parameter for Brusselator model.

Definition at line 66 of file mod_rd_phys.t.

◆ br_c

double precision, public, protected mod_rd_phys::br_c = 1.0d0

Parameter for extended Brusselator model.

Definition at line 68 of file mod_rd_phys.t.

◆ br_d

double precision, public, protected mod_rd_phys::br_d = 1.0d0

Parameter for extended Brusselator model.

Definition at line 70 of file mod_rd_phys.t.

◆ bzfn_delta

double precision, public, protected mod_rd_phys::bzfn_delta = 1.0d0

Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction.

Definition at line 78 of file mod_rd_phys.t.

◆ bzfn_epsilon

double precision, public, protected mod_rd_phys::bzfn_epsilon = 1.0d0

Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction.

Definition at line 76 of file mod_rd_phys.t.

◆ bzfn_lambda

double precision, public, protected mod_rd_phys::bzfn_lambda = 1.0d0

Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction.

Definition at line 80 of file mod_rd_phys.t.

◆ bzfn_mu

double precision, public, protected mod_rd_phys::bzfn_mu = 1.0d0

Parameter for the Field-Noyes model of the Belousov-Zhabotinsky reaction.

Definition at line 82 of file mod_rd_phys.t.

◆ d1

double precision, public, protected mod_rd_phys::d1 = 0.05d0

Diffusion coefficient for first species (u)

Definition at line 45 of file mod_rd_phys.t.

◆ d2

double precision, public, protected mod_rd_phys::d2 = 1.0d0

Diffusion coefficient for second species (v) (if applicable)

Definition at line 47 of file mod_rd_phys.t.

◆ d3

double precision, public, protected mod_rd_phys::d3 = 1.0d0

Diffusion coefficient for third species (w) (if applicable)

Definition at line 49 of file mod_rd_phys.t.

◆ dtreacpar

double precision, public, protected mod_rd_phys::dtreacpar = 0.5d0

Parameter with which to multiply the reaction timestep restriction.

Definition at line 29 of file mod_rd_phys.t.

◆ equation_name

character(len=20), public, protected mod_rd_phys::equation_name = "gray-scott"

Name of the system to be solved.

Definition at line 32 of file mod_rd_phys.t.

◆ gs_f

double precision, public, protected mod_rd_phys::gs_f = 0.046d0

Feed rate for Gray-Scott model.

Definition at line 59 of file mod_rd_phys.t.

◆ gs_k

double precision, public, protected mod_rd_phys::gs_k = 0.063d0

Kill rate for Gray-Scott model.

Definition at line 61 of file mod_rd_phys.t.

◆ lg_lambda

double precision, public, protected mod_rd_phys::lg_lambda = 1.0d0

Parameter for logistic model (Fisher / KPP equation)

Definition at line 73 of file mod_rd_phys.t.

◆ lor_b

double precision, public, protected mod_rd_phys::lor_b = 8.0d0 / 3.0d0

Parameter for Lorenz system (aspect ratio of the convection rolls)

Definition at line 89 of file mod_rd_phys.t.

◆ lor_r

double precision, public, protected mod_rd_phys::lor_r = 28.0d0

Parameter for Lorenz system (Rayleigh number)

Definition at line 85 of file mod_rd_phys.t.

◆ lor_sigma

double precision, public, protected mod_rd_phys::lor_sigma = 10.0d0

Parameter for Lorenz system (Prandtl number)

Definition at line 87 of file mod_rd_phys.t.

◆ rd_mg_bc

type(mg_bc_t), dimension(3, mg_num_neighbors), public mod_rd_phys::rd_mg_bc

Boundary condition information for the multigrid method.

Definition at line 95 of file mod_rd_phys.t.

◆ rd_particles

logical, public, protected mod_rd_phys::rd_particles = .false.

Whether particles module is added.

Definition at line 26 of file mod_rd_phys.t.

◆ sb_alpha

double precision, public, protected mod_rd_phys::sb_alpha = 0.1305d0

Parameter for Schnakenberg model.

Definition at line 52 of file mod_rd_phys.t.

◆ sb_beta

double precision, public, protected mod_rd_phys::sb_beta = 0.7695d0

Parameter for Schnakenberg model.

Definition at line 54 of file mod_rd_phys.t.

◆ sb_kappa

double precision, public, protected mod_rd_phys::sb_kappa = 100.0d0

Parameter for Schnakenberg model.

Definition at line 56 of file mod_rd_phys.t.

◆ u_

integer, public, protected mod_rd_phys::u_ = 1

Definition at line 21 of file mod_rd_phys.t.

◆ v_

integer, public, protected mod_rd_phys::v_ = 2

For 2 or more equations.

Definition at line 22 of file mod_rd_phys.t.

◆ w_

integer, public, protected mod_rd_phys::w_ = 3

For 3 or more equations.

Definition at line 23 of file mod_rd_phys.t.