|
MFC
Exascale flow solver
|
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. | |
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.
| 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.
| pres | Mixture pressure |
| lambda | Reaction progress, i.e. the product volume fraction |
| alpha_rho_react | Reactant partial density, for the optional Arrhenius factor |
| alpha_react | Reactant volume fraction, for the optional Arrhenius factor |
| rate | dlambda/dt; zero below the ignition pressure and once the reactant is spent |
Definition at line 370 of file m_reactive_burn.fpp.f90.
| 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.
| rhs_vf | Right-hand-side accumulator (inout) |
| q_cons_vf | Conserved variables (partial densities live here) |
| q_prim_vf | Primitive variables (pressure and volume fractions live here) |
| bounds | Interior cell bounds |
Definition at line 433 of file m_reactive_burn.fpp.f90.
| 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.
| q_cons_vf | Conserved variables, updated in place |
| dtime | Time step to integrate across |
| bounds | Interior cell bounds |
Definition at line 511 of file m_reactive_burn.fpp.f90.