MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_reactive_burn Module Reference

Condensed-phase reactive burn: a pressure-driven programmed-burn source that converts a "reactant" fluid into a "product" fluid on the multi-fluid model (num_fluids=2, chemistry='F'). The two fluids share the same stiffened-gas EOS (gamma, pi_inf) and differ only in their reference energy qv, so the reactant->product conversion releases (qv_reactant - qv_product) per unit mass through the mixture EOS with no explicit energy source. Because the two fluids are mechanically identical the volume-fraction swap is exact (the product volume fraction is the reaction progress), making this a reactive-Euler/ZND detonation model expressed through the diffuse-interface framework. A shock raises the pressure above rburnpign, the reactant burns, and the energy release sustains the shock – a self-propagating condensed-phase detonation. More...

Functions/Subroutines

subroutine s_burn_rate (pres, lambda, alpha_rho_react, alpha_react, rate)
 Programmed-burn rate dlambda/dt for one cell state. Both the RHS source and the operator-split integrator call this, so the rate law is stated once.
subroutine, public s_compute_reactive_burn (rhs_vf, q_cons_vf, q_prim_vf, bounds)
 Add the programmed-burn reaction source to the continuity and volume-fraction RHS.
subroutine, public s_reactive_burn_substep (q_cons_vf, dtime, bounds)
 Operator-split alternative to s_compute_reactive_burn, used when rburnsubsteps > 0. The flow is frozen and the burn ODE is integrated over one time step in equal sub-steps, so the reaction time scale is decoupled from the acoustic CFL. The mixture pressure is re-evaluated from the frozen internal energy each sub-step, which is what carries the rate's own feedback: the coefficients move as the reactant becomes product.

Detailed Description

Condensed-phase reactive burn: a pressure-driven programmed-burn source that converts a "reactant" fluid into a "product" fluid on the multi-fluid model (num_fluids=2, chemistry='F'). The two fluids share the same stiffened-gas EOS (gamma, pi_inf) and differ only in their reference energy qv, so the reactant->product conversion releases (qv_reactant - qv_product) per unit mass through the mixture EOS with no explicit energy source. Because the two fluids are mechanically identical the volume-fraction swap is exact (the product volume fraction is the reaction progress), making this a reactive-Euler/ZND detonation model expressed through the diffuse-interface framework. A shock raises the pressure above rburnpign, the reactant burns, and the energy release sustains the shock – a self-propagating condensed-phase detonation.

Function/Subroutine Documentation

◆ s_burn_rate()

subroutine m_reactive_burn::s_burn_rate ( real(wp), intent(in) pres,
real(wp), intent(in) lambda,
real(wp), intent(in) alpha_rho_react,
real(wp), intent(in) alpha_react,
real(wp), intent(out) rate )

Programmed-burn rate dlambda/dt for one cell state. Both the RHS source and the operator-split integrator call this, so the rate law is stated once.

Parameters
presMixture pressure
lambdaReaction progress, i.e. the product volume fraction
alpha_rho_reactReactant partial density, for the optional Arrhenius factor
alpha_reactReactant volume fraction, for the optional Arrhenius factor
ratedlambda/dt; zero below the ignition pressure and once the reactant is spent

Definition at line 370 of file m_reactive_burn.fpp.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_compute_reactive_burn()

subroutine, public m_reactive_burn::s_compute_reactive_burn ( type(scalar_field), dimension(sys_size), intent(inout) rhs_vf,
type(scalar_field), dimension(sys_size), intent(in) q_cons_vf,
type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(int_bounds_info), dimension(1:3), intent(in) bounds )

Add the programmed-burn reaction source to the continuity and volume-fraction RHS.

Parameters
rhs_vfRight-hand-side accumulator (inout)
q_cons_vfConserved variables (partial densities live here)
q_prim_vfPrimitive variables (pressure and volume fractions live here)
boundsInterior cell bounds

Definition at line 433 of file m_reactive_burn.fpp.f90.

Here is the call graph for this function:

◆ s_reactive_burn_substep()

subroutine, public m_reactive_burn::s_reactive_burn_substep ( type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf,
real(wp), intent(in) dtime,
type(int_bounds_info), dimension(1:3), intent(in) bounds )

Operator-split alternative to s_compute_reactive_burn, used when rburnsubsteps > 0. The flow is frozen and the burn ODE is integrated over one time step in equal sub-steps, so the reaction time scale is decoupled from the acoustic CFL. The mixture pressure is re-evaluated from the frozen internal energy each sub-step, which is what carries the rate's own feedback: the coefficients move as the reactant becomes product.

Parameters
q_cons_vfConserved variables, updated in place
dtimeTime step to integrate across
boundsInterior cell bounds

Definition at line 511 of file m_reactive_burn.fpp.f90.

Here is the call graph for this function: