392 subroutine s_burn_rate(pres, lambda, alpha_rho_react, alpha_react, rate)
395# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
397# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
399# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
401# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
403# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
405# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
407# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
409# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
411# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
413# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
415# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
417# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
419# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
421# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
423# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
425# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
427# 36 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
429# 37 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
431 real(wp),
intent(in) :: pres, lambda, alpha_rho_react, alpha_react
432 real(wp),
intent(out) :: rate
433 real(wp) :: drive, T_r
436 drive = (pres - rburn%pign)/rburn%pref
437 if (drive > 0._wp .and. lambda < 1._wp)
then
438 rate = rburn%k*(1._wp - lambda)*drive**rburn%n
441 if (rburn%ta > 0._wp)
then
443 rate = rate*exp(-rburn%ta/t_r)
458 type(scalar_field),
dimension(sys_size),
intent(inout) :: rhs_vf
459 type(scalar_field),
dimension(sys_size),
intent(in) ::
q_cons_vf, q_prim_vf
460 type(int_bounds_info),
dimension(1:3),
intent(in) :: bounds
462 real(wp) :: rho, pres, lambda, rate, mdot
463 real(wp) :: alpha_rho_react, alpha_react
466# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
468# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
469#if defined(MFC_OpenACC)
470# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
472# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
473#elif defined(MFC_OpenMP)
474# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
476# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
478# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
480# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
482# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
484# 72 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
486# 73 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
487 do z = bounds(3)%beg, bounds(3)%end
488 do y = bounds(2)%beg, bounds(2)%end
489 do x = bounds(1)%beg, bounds(1)%end
491 rho =
q_cons_vf(eqn_idx%cont%beg)%sf(x, y, z) +
q_cons_vf(eqn_idx%cont%beg + 1)%sf(x, y, z)
492 pres = q_prim_vf(eqn_idx%E)%sf(x, y, z)
493 lambda = q_prim_vf(eqn_idx%adv%beg + 1)%sf(x, y, z)
495 alpha_rho_react =
q_cons_vf(eqn_idx%cont%beg)%sf(x, y, z)
496 alpha_react = q_prim_vf(eqn_idx%adv%beg)%sf(x, y, z)
497 call s_burn_rate(pres, lambda, alpha_rho_react, alpha_react, rate)
498 if (rate > 0._wp)
then
502 rhs_vf(eqn_idx%cont%beg)%sf(x, y, z) = rhs_vf(eqn_idx%cont%beg)%sf(x, y, z) - mdot
503 rhs_vf(eqn_idx%cont%beg + 1)%sf(x, y, z) = rhs_vf(eqn_idx%cont%beg + 1)%sf(x, y, z) + mdot
506 rhs_vf(eqn_idx%adv%beg)%sf(x, y, z) = rhs_vf(eqn_idx%adv%beg)%sf(x, y, z) - rate
507 rhs_vf(eqn_idx%adv%beg + 1)%sf(x, y, z) = rhs_vf(eqn_idx%adv%beg + 1)%sf(x, y, z) + rate
513# 98 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
514#if defined(MFC_OpenACC)
515# 98 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
517# 98 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
518#elif defined(MFC_OpenMP)
519# 98 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
521# 98 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
523# 98 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
525# 99 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
538 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf
539 real(wp),
intent(in) :: dtime
540 type(int_bounds_info),
dimension(1:3),
intent(in) :: bounds
541 integer :: x, y, z, i, sub
542 real(wp) :: rho, pres, lambda, rate
543 real(wp) :: dt_sub, e_int, gamma_mix, pi_inf_mix, qv_mix
544 real(wp) :: rho_mix, dlambda, dmass
545 real(wp) :: alpha_rho_react, alpha_react
550 real(wp),
dimension(num_fluids_max) :: alpha_rho, alpha
552 dt_sub = dtime/real(rburn%substeps, wp)
555# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
557# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
558#if defined(MFC_OpenACC)
559# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
561# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
563# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
564#elif defined(MFC_OpenMP)
565# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
567# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
569# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
571# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
573# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
575# 127 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
577# 129 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
578 do z = bounds(3)%beg, bounds(3)%end
579 do y = bounds(2)%beg, bounds(2)%end
580 do x = bounds(1)%beg, bounds(1)%end
582# 132 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
583#if defined(MFC_OpenACC)
584# 132 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
586# 132 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
587#elif defined(MFC_OpenMP)
588# 132 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
590# 132 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
592# 133 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
594 alpha_rho(i) =
q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(x, y, z)
595 alpha(i) =
q_cons_vf(i + eqn_idx%adv%beg - 1)%sf(x, y, z)
597 rho = alpha_rho(1) + alpha_rho(2)
603# 142 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
604#if defined(MFC_OpenACC)
605# 142 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
607# 142 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
608#elif defined(MFC_OpenMP)
609# 142 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
611# 142 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
613# 143 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
614 do i = eqn_idx%mom%beg, eqn_idx%mom%end
615 e_int = e_int - 0.5_wp*
q_cons_vf(i)%sf(x, y, z)**2/rho
619# 147 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
620#if defined(MFC_OpenACC)
621# 147 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
623# 147 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
624#elif defined(MFC_OpenMP)
625# 147 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
627# 147 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
629# 148 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
630 do sub = 1, rburn%substeps
633 pres =
f_pressure(e_int, gamma_mix, pi_inf_mix, qv_mix)
634 alpha_rho_react = alpha_rho(1)
635 alpha_react = alpha(1)
636 call s_burn_rate(pres, lambda, alpha_rho_react, alpha_react, rate)
637 if (rate <= 0._wp)
exit
641 if (rate*dt_sub >= 1._wp - lambda)
then
642 dlambda = 1._wp - lambda
645 dlambda = rate*dt_sub
646 dmass = min(rho*dlambda, alpha_rho(1))
648 alpha(1) = alpha(1) - dlambda
649 alpha(2) = alpha(2) + dlambda
650 alpha_rho(1) = alpha_rho(1) - dmass
651 alpha_rho(2) = alpha_rho(2) + dmass
655# 172 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
656#if defined(MFC_OpenACC)
657# 172 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
659# 172 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
660#elif defined(MFC_OpenMP)
661# 172 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
663# 172 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
665# 173 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
667 q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(x, y, z) = alpha_rho(i)
668 q_cons_vf(i + eqn_idx%adv%beg - 1)%sf(x, y, z) = alpha(i)
674# 180 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
675#if defined(MFC_OpenACC)
676# 180 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
678# 180 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
679#elif defined(MFC_OpenMP)
680# 180 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
682# 180 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
684# 180 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
686# 181 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
subroutine, public s_phase_temperature(rho, pres, i, t)
Temperature of phase i at (rho, p): the stiffened-gas relation, or T_ref(rho) + (e - e_ref)/c_v.
subroutine, public s_compute_mixture_coefficients(alpha_rho_k, alpha_k, rho_k, gamma_k, pi_inf_k, qv_k)
Mixture coefficients of one state. Under bubbles_euler with num_fluids == 1 the sole advection slot a...
real(wp) function, public f_pressure(e_int, gamma, pi_inf, qv)
Pressure of a stiffened gas from its internal energy density - the inverse of s_compute_energy....
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 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 integr...