370 subroutine s_burn_rate(pres, lambda, alpha_rho_react, alpha_react, rate)
373# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
375# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
377# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
379# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
381# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
383# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
385# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
387# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
389# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
391# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
393# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
395# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
397# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
399# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
401# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
403# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
405# 35 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
408 real(wp),
intent(in) :: pres, lambda, alpha_rho_react, alpha_react
409 real(wp),
intent(out) :: rate
410 real(wp) :: drive, T_r
413 drive = (pres - rburn%pign)/rburn%pref
414 if (drive > 0._wp .and. lambda < 1._wp)
then
415 rate = rburn%k*(1._wp - lambda)*drive**rburn%n
418 if (rburn%ta > 0._wp)
then
420 rate = rate*exp(-rburn%ta/t_r)
435 type(scalar_field),
dimension(sys_size),
intent(inout) :: rhs_vf
436 type(scalar_field),
dimension(sys_size),
intent(in) ::
q_cons_vf, q_prim_vf
437 type(int_bounds_info),
dimension(1:3),
intent(in) :: bounds
439 real(wp) :: rho, pres, lambda, rate, mdot
440 real(wp) :: alpha_rho_react, alpha_react
443# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
445# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
446#if defined(MFC_OpenACC)
447# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
449# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
450#elif defined(MFC_OpenMP)
451# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
453# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
455# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
457# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
459# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
461# 71 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
463 do z = bounds(3)%beg, bounds(3)%end
464 do y = bounds(2)%beg, bounds(2)%end
465 do x = bounds(1)%beg, bounds(1)%end
467 rho =
q_cons_vf(eqn_idx%cont%beg)%sf(x, y, z) +
q_cons_vf(eqn_idx%cont%beg + 1)%sf(x, y, z)
468 pres = q_prim_vf(eqn_idx%E)%sf(x, y, z)
469 lambda = q_prim_vf(eqn_idx%adv%beg + 1)%sf(x, y, z)
471 alpha_rho_react =
q_cons_vf(eqn_idx%cont%beg)%sf(x, y, z)
472 alpha_react = q_prim_vf(eqn_idx%adv%beg)%sf(x, y, z)
473 call s_burn_rate(pres, lambda, alpha_rho_react, alpha_react, rate)
474 if (rate > 0._wp)
then
478 rhs_vf(eqn_idx%cont%beg)%sf(x, y, z) = rhs_vf(eqn_idx%cont%beg)%sf(x, y, z) - mdot
479 rhs_vf(eqn_idx%cont%beg + 1)%sf(x, y, z) = rhs_vf(eqn_idx%cont%beg + 1)%sf(x, y, z) + mdot
482 rhs_vf(eqn_idx%adv%beg)%sf(x, y, z) = rhs_vf(eqn_idx%adv%beg)%sf(x, y, z) - rate
483 rhs_vf(eqn_idx%adv%beg + 1)%sf(x, y, z) = rhs_vf(eqn_idx%adv%beg + 1)%sf(x, y, z) + rate
489# 97 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
490#if defined(MFC_OpenACC)
491# 97 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
493# 97 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
494#elif defined(MFC_OpenMP)
495# 97 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
497# 97 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
499# 97 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
513 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf
514 real(wp),
intent(in) :: dtime
515 type(int_bounds_info),
dimension(1:3),
intent(in) :: bounds
516 integer :: x, y, z, i, sub
517 real(wp) :: rho, pres, lambda, rate
518 real(wp) :: dt_sub, e_int, gamma_mix, pi_inf_mix, qv_mix
519 real(wp) :: rho_mix, dlambda, dmass
520 real(wp) :: alpha_rho_react, alpha_react
525 real(wp),
dimension(num_fluids_max) :: alpha_rho, alpha
527 dt_sub = dtime/real(rburn%substeps, wp)
530# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
532# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
533#if defined(MFC_OpenACC)
534# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
536# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
538# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
539#elif defined(MFC_OpenMP)
540# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
542# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
544# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
546# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
548# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
550# 126 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
552# 128 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
553 do z = bounds(3)%beg, bounds(3)%end
554 do y = bounds(2)%beg, bounds(2)%end
555 do x = bounds(1)%beg, bounds(1)%end
557# 131 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
558#if defined(MFC_OpenACC)
559# 131 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
561# 131 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
562#elif defined(MFC_OpenMP)
563# 131 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
565# 131 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
568 alpha_rho(i) =
q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(x, y, z)
569 alpha(i) =
q_cons_vf(i + eqn_idx%adv%beg - 1)%sf(x, y, z)
571 rho = alpha_rho(1) + alpha_rho(2)
577# 141 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
578#if defined(MFC_OpenACC)
579# 141 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
581# 141 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
582#elif defined(MFC_OpenMP)
583# 141 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
585# 141 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
587 do i = eqn_idx%mom%beg, eqn_idx%mom%end
588 e_int = e_int - 0.5_wp*
q_cons_vf(i)%sf(x, y, z)**2/rho
592# 146 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
593#if defined(MFC_OpenACC)
594# 146 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
596# 146 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
597#elif defined(MFC_OpenMP)
598# 146 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
600# 146 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
602 do sub = 1, rburn%substeps
605 pres =
f_pressure(e_int, gamma_mix, pi_inf_mix, qv_mix)
606 alpha_rho_react = alpha_rho(1)
607 alpha_react = alpha(1)
608 call s_burn_rate(pres, lambda, alpha_rho_react, alpha_react, rate)
609 if (rate <= 0._wp)
exit
613 if (rate*dt_sub >= 1._wp - lambda)
then
614 dlambda = 1._wp - lambda
617 dlambda = rate*dt_sub
618 dmass = min(rho*dlambda, alpha_rho(1))
620 alpha(1) = alpha(1) - dlambda
621 alpha(2) = alpha(2) + dlambda
622 alpha_rho(1) = alpha_rho(1) - dmass
623 alpha_rho(2) = alpha_rho(2) + dmass
627# 171 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
628#if defined(MFC_OpenACC)
629# 171 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
631# 171 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
632#elif defined(MFC_OpenMP)
633# 171 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
635# 171 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
638 q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(x, y, z) = alpha_rho(i)
639 q_cons_vf(i + eqn_idx%adv%beg - 1)%sf(x, y, z) = alpha(i)
645# 179 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
646#if defined(MFC_OpenACC)
647# 179 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
649# 179 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
650#elif defined(MFC_OpenMP)
651# 179 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
653# 179 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
655# 179 "/home/runner/work/MFC/MFC/src/simulation/m_reactive_burn.fpp"
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...
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...