Available callbacks
For each model, callbacks are stored in different factories (std::map storing function pointers) for the initial, boundary, and refine conditions; and for the hyperbolic, diffusion fluxes, and source terms. Limiters for 2nd order spatial reconstructions are also stored in a factory. All the available callbacks are listed below.
Monofluid model
Initial conditions
Functions
-
void ic_monofluid_riemann_problem(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
riemann_problem
The initial condition is a two-state riemann problem See Einfeldt et al. 1999 JCP92(2):pp 273-295 for rarefaction
-
void ic_monofluid_blast(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
blast
The initial solution for rho is a disk which center is (xc,yc,zc) and radius R. Initial V is zero. See http://www.astro.princeton.edu/~jstone/Athena/tests/blast/blast.html
-
void ic_monofluid_gresho(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
gresho
The initial condition is a stationary vortex
Gresho & Chan 1990 Int. J. Numer. Meth. Fluids, 11(5):pp. 621–659
-
void ic_monofluid_rayleigh_taylor(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
Rayleigh_Taylor instability.
See http://www.astro.princeton.edu/~jstone/Athena/tests/rt/rt.html for a description of such initial conditions
-
void ic_monofluid_poiseuille(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
poiseuille
The initial condition is a poiseuille flow generated by boundary conditions
-
void ic_monofluid_conduction(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
conduction
The initial condition for temperature is a disk which center is (xc,yc,zc) and radius R.
Boundary conditions
Functions
-
void bc_monofluid_dirichlet(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
dirichlet boundary condition
Imposed values
-
void bc_monofluid_neuman(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
neuman boundary condition
Imposed null gradient
-
void bc_monofluid_reflective(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
reflective boundary condition
Copy values and switch the sign of normal velocity
-
void bc_monofluid_noslip(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
no-slip boundary condition
change sign of velocity in transverse direction
-
void bc_monofluid_poiseuille(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
poiseuille boundary condition
Imposed pressure gradient in x direction, no-slip otherwise
Refine conditions
Functions
-
double rc_monofluid_m_gradient(qdata_t *cella, qdata_t *cellb)
m gradient refine condition
-
double rc_monofluid_mV_gradient(qdata_t *cella, qdata_t *cellb)
mV gradient refine condition
-
double rc_monofluid_mE_gradient(qdata_t *cella, qdata_t *cellb)
mE gradient refine condition
-
double rc_monofluid_any_gradient(qdata_t *cella, qdata_t *cellb)
any gradient refine condition
Hyperbolic fluxes
Functions
-
void hyperbolic_flux_hllc(prim_t &ql, prim_t &qr, cons_t &ucl, cons_t &ucr, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr, double *extra)
HLLC Conservative flux
see Factory.h for the description of the callback signature
-
void hyperbolic_flux_allregime(prim_t &ql, prim_t &qr, cons_t &ucl, cons_t &ucr, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr, double *extra)
Allregime Conservative flux
see Factory.h for the description of the callback signature
-
void hyperbolic_flux_hll(prim_t &ql, prim_t &qr, cons_t &ucl, cons_t &ucr, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr, double *extra)
HLL Conservative flux
see Factory.h for the description of the callback signature
Diffusion fluxes
Functions
-
void diffusion_flux_viscosity(prim_t &ql, prim_t &qr, array<prim_t> &deltal, array<prim_t> &deltar, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr)
Viscosity diffusion flux
see Factory.h for the description of the callback signature
-
void diffusion_flux_conductivity(prim_t &ql, prim_t &qr, array<prim_t> &deltal, array<prim_t> &deltar, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr)
Conductivity diffusion flux
see Factory.h for the description of the callback signature
Source Terms
Functions
-
void source_term_gravity(prim_t &q, prim_t &qnext, cons_t *wnext, double dt, QdataManager<cons_t> *qdata_mgr)
Gravity source term
see Factory.h for the description of the callback signature
Bifluid5eq model
Initial conditions
Functions
-
void ic_bifluid5eq_riemann_problem(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
riemann_problem
The initial condition is a two-state riemann problem See Einfeldt et al. 1999 JCP92(2):pp 273-295 for rarefaction
-
void ic_bifluid5eq_blast(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
blast
The initial solution for rho is a disk which center is (xc,yc,zc) and radius R. Initial V is zero. See http://www.astro.princeton.edu/~jstone/Athena/tests/blast/blast.html
-
void ic_bifluid5eq_gresho(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
gresho
The initial condition is a stationary vortex
Gresho & Chan 1990 Int. J. Numer. Meth. Fluids, 11(5):pp. 621–659
-
void ic_bifluid5eq_rayleigh_taylor(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
Rayleigh_Taylor instability.
See http://www.astro.princeton.edu/~jstone/Athena/tests/rt/rt.html for a description of such initial conditions
-
void ic_bifluid5eq_poiseuille(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
poiseuille
The initial condition is a poiseuille flow generated by boundary conditions
-
void ic_bifluid5eq_conduction(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
conduction
The initial condition for temperature is a disk which center is (xc,yc,zc) and radius R.
-
void ic_bifluid5eq_underwater_explosion(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
Underwater explosion.
Lochon et al. JCP Volume 326, 1 December 2016, Pages 733-762
-
void ic_bifluid5eq_jet(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
jet, ref: TECNA R4G
Boundary conditions
Functions
-
void bc_bifluid5eq_dirichlet(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
dirichlet boundary condition
Imposed values
-
void bc_bifluid5eq_neuman(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
neuman boundary condition
Imposed null gradient
-
void bc_bifluid5eq_reflective(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
reflective boundary condition
Copy values and switch the sign of normal velocity
-
void bc_bifluid5eq_noslip(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
no-slip boundary condition
change sign of velocity in transverse direction
-
void bc_bifluid5eq_poiseuille(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
poiseuille boundary condition
Imposed pressure gradient in x direction, no-slip otherwise
-
void bc_bifluid5eq_jet(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
jet boundary condition
Imposed values in a opening, reflective otherwise
Refine conditions
Functions
-
double rc_bifluid5eq_m_gradient(qdata_t *cella, qdata_t *cellb)
m gradient refine condition
-
double rc_bifluid5eq_mg_gradient(qdata_t *cella, qdata_t *cellb)
mg gradient refine condition
-
double rc_bifluid5eq_ml_gradient(qdata_t *cella, qdata_t *cellb)
ml gradient refine condition
-
double rc_bifluid5eq_ag_gradient(qdata_t *cella, qdata_t *cellb)
ag gradient refine condition
-
double rc_bifluid5eq_mV_gradient(qdata_t *cella, qdata_t *cellb)
mV gradient refine condition
-
double rc_bifluid5eq_mE_gradient(qdata_t *cella, qdata_t *cellb)
mE gradient refine condition
-
double rc_bifluid5eq_any_gradient(qdata_t *cella, qdata_t *cellb)
any gradient refine condition
Hyperbolic fluxes
Functions
-
void hyperbolic_flux_hllc(prim_t &ql, prim_t &qr, cons_t &ucl, cons_t &ucr, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr, double *extra)
HLLC Non-conservative flux
see Factory.h for the description of the callback signature
-
void hyperbolic_flux_allregime(prim_t &ql, prim_t &qr, cons_t &ucl, cons_t &ucr, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr, double *extra)
Allregime non-conservative flux
see Factory.h for the description of the callback signature
Diffusion fluxes
Functions
-
void diffusion_term_viscosity(prim_t &ql, prim_t &qr, array<prim_t> &deltal, array<prim_t> &deltar, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr)
Viscosity diffusion flux
see Factory.h for the description of the callback signature
-
void diffusion_term_conductivity(prim_t &ql, prim_t &qr, array<prim_t> &deltal, array<prim_t> &deltar, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr)
Conductivity diffusion flux
see Factory.h for the description of the callback signature
Source Terms
Functions
-
void source_term_gravity(prim_t &q, prim_t &qnext, cons_t *wnext, double dt, QdataManager<cons_t> *qdata_mgr)
Gravity source term
see Factory.h for the description of the callback signature
Bifluid7eq model
Initial conditions
Functions
-
void ic_bifluid7eq_riemann_problem(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
riemann_problem
The initial condition is a two-state riemann problem See Einfeldt et al. 1999 JCP92(2):pp 273-295 for rarefaction
-
void ic_bifluid7eq_blast(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
blast
The initial solution for rho is a disk which center is (xc,yc,zc) and radius R. Initial V is zero. See http://www.astro.princeton.edu/~jstone/Athena/tests/blast/blast.html
-
void ic_bifluid7eq_gresho(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
gresho
The initial condition is a stationary vortex
Gresho & Chan 1990 Int. J. Numer. Meth. Fluids, 11(5):pp. 621–659
-
void ic_bifluid7eq_rayleigh_taylor(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
Rayleigh_Taylor instability.
See http://www.astro.princeton.edu/~jstone/Athena/tests/rt/rt.html for a description of such initial conditions
-
void ic_bifluid7eq_poiseuille(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
poiseuille
The initial condition is a poiseuille flow generated by boundary conditions
-
void ic_bifluid7eq_conduction(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
conduction
The initial condition for temperature is a disk which center is (xc,yc,zc) and radius R.
-
void ic_bifluid7eq_underwater_explosion(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
Underwater explosion.
Lochon et al. JCP Volume 326, 1 December 2016, Pages 733-762
-
void ic_bifluid7eq_jet(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad)
jet, ref: TECNA R4G
Boundary conditions
Functions
-
void bc_bifluid7eq_dirichlet(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
dirichlet boundary condition
Imposed values
-
void bc_bifluid7eq_neuman(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
neuman boundary condition
Imposed null gradient
-
void bc_bifluid7eq_reflective(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
reflective boundary condition
Copy values and switch the sign of normal velocity
-
void bc_bifluid7eq_noslip(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
no-slip boundary condition
change sign of velocity in transverse direction
-
void bc_bifluid7eq_poiseuille(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
poiseuille boundary condition
Imposed pressure gradient in x direction, no-slip otherwise
-
void bc_bifluid7eq_jet(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *q, int face, qdata_t *ghost_qdata)
jet boundary condition
Imposed values in a opening, reflective otherwise
Refine conditions
Functions
-
double rc_bifluid7eq_m_gradient(qdata_t *cella, qdata_t *cellb)
m gradient refine condition
-
double rc_bifluid7eq_mg_gradient(qdata_t *cella, qdata_t *cellb)
mg gradient refine condition
-
double rc_bifluid7eq_ml_gradient(qdata_t *cella, qdata_t *cellb)
ml gradient refine condition
-
double rc_bifluid7eq_ag_gradient(qdata_t *cella, qdata_t *cellb)
ag gradient refine condition
-
double rc_bifluid7eq_mV_gradient(qdata_t *cella, qdata_t *cellb)
rhoV gradient refine condition
-
double rc_bifluid7eq_mE_gradient(qdata_t *cella, qdata_t *cellb)
mE gradient refine condition
-
double rc_bifluid7eq_any_gradient(qdata_t *cella, qdata_t *cellb)
any gradient refine condition
Hyperbolic fluxes
Functions
-
void hyperbolic_flux_hll(prim_t &qleft, prim_t &qright, cons_t &ucleft, cons_t &ucright, cons_t *fluxleft, cons_t *fluxright, QdataManager<cons_t> *qdata_mgr, double *extra)
HLL Non-conservative flux
see Factory.h for the description of the callback signature
Diffusion fluxes
Functions
-
void diffusion_flux_viscosity(prim_t &ql, prim_t &qr, array<prim_t> &deltal, array<prim_t> &deltar, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr)
Viscosity diffusion flux
see Factory.h for the description of the callback signature
-
void diffusion_flux_conductivity(prim_t &ql, prim_t &qr, array<prim_t> &deltal, array<prim_t> &deltar, cons_t *fluxl, cons_t *fluxr, QdataManager<cons_t> *qdata_mgr)
Conductivity diffusion flux
see Factory.h for the description of the callback signature
Source Terms
Functions
-
void source_term_gravity(prim_t &q, prim_t &qnext, cons_t *wnext, double dt, QdataManager<cons_t> *qdata_mgr)
Gravity source term
see Factory.h for the description of the callback signature
-
void source_term_velocity_relaxation(prim_t &q, prim_t &qnext, cons_t *wnext, double dt, QdataManager<cons_t> *qdata_mgr)
Velocity relaxation source term
see Factory.h for the description of the callback signature
-
void source_term_pressure_relaxation(prim_t &q, prim_t &qnext, cons_t *wnext, double dt, QdataManager<cons_t> *qdata_mgr)
Pressure relaxation source term
see Factory.h for the description of the callback signature
Limiters
Functions
-
double limiter_minmod(double ul, double ur)
-
double limiter_maxmod(double ul, double ur)
-
double limiter_mc(double ul, double ur)
-
double limiter_smart(double ul, double ur)
-
double limiter_superbee(double ul, double ur)
-
double limiter_sweby(double ul, double ur)
-
double limiter_charm(double ul, double ur)
-
double limiter_osher(double ul, double ur)