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)