544# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_assign_variables.fpp"
546# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_assign_variables.fpp"
548# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_assign_variables.fpp"
550# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_assign_variables.fpp"
552# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_assign_variables.fpp"
554# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_assign_variables.fpp"
556# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_assign_variables.fpp"
559 integer,
intent(in) :: patch_id
560 integer,
intent(in) ::
j,
k,
l
561 real(wp),
intent(in) :: eta
562#ifdef MFC_MIXED_PRECISION
563 integer(kind=1),
dimension(0:m,0:n,0:p),
intent(inout) :: patch_id_fp
565 integer,
dimension(0:m,0:n,0:p),
intent(inout) :: patch_id_fp
567 type(scalar_field),
dimension(1:sys_size),
intent(inout) :: q_prim_vf
572 real(wp) :: lit_gamma
576 real(wp) :: orig_gamma
577 real(wp) :: orig_pi_inf
581 real(wp) :: rcoord, theta, phi, xi_sph
582 real(wp),
dimension(3) :: xi_cart
583 real(wp) :: ys(1:num_species)
584 real(stp),
dimension(sys_size) :: orig_prim_vf
586 integer :: smooth_patch_id
588 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
591 orig_prim_vf(i) = q_prim_vf(i)%sf(
j,
k,
l)
594 if (mpp_lim .and. bubbles_euler)
then
597 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
601 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
602 q_prim_vf(i)%sf = q_prim_vf(i)%sf*(1._wp - q_prim_vf(eqn_idx%alf)%sf)/
alf_sum%sf
606 call s_convert_to_mixture_variables(q_prim_vf,
j,
k,
l, orig_rho, orig_gamma, orig_pi_inf, orig_qv)
608 if (.not. igr .or. num_fluids > 1)
then
609 do i = eqn_idx%adv%beg, eqn_idx%adv%end
610 q_prim_vf(i)%sf(
j,
k,
l) = patch_icpp(patch_id)%alpha(i - eqn_idx%E)
614 if (mpp_lim .and. bubbles_euler)
then
617 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
621 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
622 q_prim_vf(i)%sf = q_prim_vf(i)%sf*(1._wp - q_prim_vf(eqn_idx%alf)%sf)/
alf_sum%sf
626 if (model_eqns /= model_eqns_4eq)
then
627 do i = 1, eqn_idx%cont%end
628 q_prim_vf(i)%sf(
j,
k,
l) = patch_icpp(patch_id)%alpha_rho(i)
632 call s_convert_to_mixture_variables(q_prim_vf,
j,
k,
l, patch_icpp(patch_id)%rho, patch_icpp(patch_id)%gamma, &
633 & patch_icpp(patch_id)%pi_inf, patch_icpp(patch_id)%qv)
635 if (model_eqns /= model_eqns_4eq)
then
636 do i = 1, eqn_idx%cont%end
637 q_prim_vf(i)%sf(
j,
k,
l) = patch_icpp(smooth_patch_id)%alpha_rho(i)
641 if (.not. igr .or. num_fluids > 1)
then
642 do i = eqn_idx%adv%beg, eqn_idx%adv%end
643 q_prim_vf(i)%sf(
j,
k,
l) = patch_icpp(smooth_patch_id)%alpha(i - eqn_idx%E)
647 if (mpp_lim .and. bubbles_euler)
then
650 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
654 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
655 q_prim_vf(i)%sf = q_prim_vf(i)%sf*(1._wp - q_prim_vf(eqn_idx%alf)%sf)/
alf_sum%sf
659 if (bubbles_euler)
then
661 mur = r0(i)*patch_icpp(smooth_patch_id)%r0/r0ref
662 muv = patch_icpp(smooth_patch_id)%v0
665 if (dist_type == 1)
then
666 q_prim_vf(qbmm_idx%fullmom(i, 0, 0))%sf(
j,
k,
l) = 1._wp
667 q_prim_vf(qbmm_idx%fullmom(i, 1, 0))%sf(
j,
k,
l) = mur
668 q_prim_vf(qbmm_idx%fullmom(i, 0, 1))%sf(
j,
k,
l) = muv
669 q_prim_vf(qbmm_idx%fullmom(i, 2, 0))%sf(
j,
k,
l) = mur**2 + (sigr*r0ref)**2
670 q_prim_vf(qbmm_idx%fullmom(i, 1, 1))%sf(
j,
k,
l) = mur*muv + rhorv*(sigr*r0ref)*(sigv*sqrt(p0ref/rho0ref))
671 q_prim_vf(qbmm_idx%fullmom(i, 0, 2))%sf(
j,
k,
l) = muv**2 + (sigv*sqrt(p0ref/rho0ref))**2
672 else if (dist_type == 2)
then
673 q_prim_vf(qbmm_idx%fullmom(i, 0, 0))%sf(
j,
k,
l) = 1._wp
674 q_prim_vf(qbmm_idx%fullmom(i, 1, 0))%sf(
j,
k,
l) = exp((sigr**2)/2._wp)*mur
675 q_prim_vf(qbmm_idx%fullmom(i, 0, 1))%sf(
j,
k,
l) = muv
676 q_prim_vf(qbmm_idx%fullmom(i, 2, 0))%sf(
j,
k,
l) = exp((sigr**2)*2._wp)*(mur**2)
677 q_prim_vf(qbmm_idx%fullmom(i, 1, 1))%sf(
j,
k,
l) = exp((sigr**2)/2._wp)*mur*muv
678 q_prim_vf(qbmm_idx%fullmom(i, 0, 2))%sf(
j,
k,
l) = muv**2 + (sigv*sqrt(p0ref/rho0ref))**2
681 q_prim_vf(qbmm_idx%rs(i))%sf(
j,
k,
l) = mur
682 q_prim_vf(qbmm_idx%vs(i))%sf(
j,
k,
l) = muv
683 if (.not. polytropic)
then
684 q_prim_vf(qbmm_idx%ps(i))%sf(
j,
k,
l) = patch_icpp(patch_id)%p0
685 q_prim_vf(qbmm_idx%ms(i))%sf(
j,
k,
l) = patch_icpp(patch_id)%m0
694 r3bar = r3bar + weight(i)*(q_prim_vf(qbmm_idx%rs(i))%sf(
j,
k,
l))**3._wp
696 q_prim_vf(eqn_idx%n)%sf(
j,
k,
l) = 3*q_prim_vf(eqn_idx%alf)%sf(
j,
k,
l)/(4*pi*r3bar)
700 call s_convert_to_mixture_variables(q_prim_vf,
j,
k,
l, patch_icpp(smooth_patch_id)%rho, &
701 & patch_icpp(smooth_patch_id)%gamma, patch_icpp(smooth_patch_id)%pi_inf, &
702 & patch_icpp(smooth_patch_id)%qv)
704 q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = (eta*patch_icpp(patch_id)%pres + (1._wp - eta)*orig_prim_vf(eqn_idx%E))
706 if (.not. igr .or. num_fluids > 1)
then
707 do i = eqn_idx%adv%beg, eqn_idx%adv%end
708 q_prim_vf(i)%sf(
j,
k,
l) = eta*patch_icpp(patch_id)%alpha(i - eqn_idx%E) + (1._wp - eta)*orig_prim_vf(i)
714 q_prim_vf(eqn_idx%B%beg)%sf(
j,
k,
l) = eta*patch_icpp(patch_id)%By + (1._wp - eta)*orig_prim_vf(eqn_idx%B%beg)
715 q_prim_vf(eqn_idx%B%beg + 1)%sf(
j,
k, &
716 &
l) = eta*patch_icpp(patch_id)%Bz + (1._wp - eta)*orig_prim_vf(eqn_idx%B%beg + 1)
718 q_prim_vf(eqn_idx%B%beg)%sf(
j,
k,
l) = eta*patch_icpp(patch_id)%Bx + (1._wp - eta)*orig_prim_vf(eqn_idx%B%beg)
719 q_prim_vf(eqn_idx%B%beg + 1)%sf(
j,
k, &
720 &
l) = eta*patch_icpp(patch_id)%By + (1._wp - eta)*orig_prim_vf(eqn_idx%B%beg + 1)
721 q_prim_vf(eqn_idx%B%beg + 2)%sf(
j,
k, &
722 &
l) = eta*patch_icpp(patch_id)%Bz + (1._wp - eta)*orig_prim_vf(eqn_idx%B%beg + 2)
727 do i = 1, (eqn_idx%stress%end - eqn_idx%stress%beg) + 1
728 q_prim_vf(i + eqn_idx%stress%beg - 1)%sf(
j,
k, &
729 &
l) = (eta*patch_icpp(patch_id)%tau_e(i) + (1._wp - eta)*orig_prim_vf(i + eqn_idx%stress%beg - 1))
733 if (hyperelasticity)
then
735 rcoord = sqrt((x_cc(
j)**2 + y_cc(
k)**2 + z_cc(
l)**2))
736 theta = atan2(y_cc(
k), x_cc(
j))
737 phi = atan2(sqrt(x_cc(
j)**2 + y_cc(
k)**2), z_cc(
l))
739 xi_sph = (rcoord**3 - r0ref**3 + 1._wp)**(1._wp/3._wp)
740 xi_cart(1) = xi_sph*sin(phi)*cos(theta)
741 xi_cart(2) = xi_sph*sin(phi)*sin(theta)
742 xi_cart(3) = xi_sph*cos(phi)
751 q_prim_vf(i + eqn_idx%xi%beg - 1)%sf(
j,
k,
l) = eta*xi_cart(i) + (1._wp - eta)*orig_prim_vf(i + eqn_idx%xi%beg - 1)
755 if (mpp_lim .and. bubbles_euler)
then
758 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
762 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
763 q_prim_vf(i)%sf = q_prim_vf(i)%sf*(1._wp - q_prim_vf(eqn_idx%alf)%sf)/
alf_sum%sf
767 if (model_eqns /= model_eqns_4eq)
then
769 do i = 1, eqn_idx%cont%end
770 q_prim_vf(i)%sf(
j,
k,
l) = eta*patch_icpp(patch_id)%alpha_rho(i) + (1._wp - eta)*orig_prim_vf(i)
776 lit_gamma = gs_min(1)
779 q_prim_vf(1)%sf(
j,
k,
l) = (((q_prim_vf(eqn_idx%E)%sf(
j,
k, &
780 &
l) + pi_inf)/(pref + pi_inf))**(1/lit_gamma))*rhoref*(1 - q_prim_vf(eqn_idx%alf)%sf(
j,
k,
l))
783 call s_convert_to_mixture_variables(q_prim_vf,
j,
k,
l, rho, gamma, pi_inf, qv)
785 do i = 1, eqn_idx%E - eqn_idx%mom%beg
786 q_prim_vf(i + eqn_idx%cont%end)%sf(
j,
k, &
787 &
l) = (eta*patch_icpp(patch_id)%vel(i) + (1._wp - eta)*orig_prim_vf(i + eqn_idx%cont%end))
792 real(wp) :: sum, term
795 do i = 1, num_species
796 term = eta*patch_icpp(patch_id)%Y(i) + (1._wp - eta)*patch_icpp(smooth_patch_id)%Y(i)
797 q_prim_vf(eqn_idx%species%beg + i - 1)%sf(
j,
k,
l) = term
801 if (sum < verysmall)
then
805 do i = 1, num_species
806 q_prim_vf(eqn_idx%species%beg + i - 1)%sf(
j,
k,
l) = q_prim_vf(eqn_idx%species%beg + i - 1)%sf(
j,
k,
l)/sum
807 ys(i) = q_prim_vf(eqn_idx%species%beg + i - 1)%sf(
j,
k,
l)
813 if (mixlayer_vel_profile)
then
814 q_prim_vf(1 + eqn_idx%cont%end)%sf(
j,
k, &
815 &
l) = (eta*patch_icpp(patch_id)%vel(1)*tanh(y_cc(
k)*mixlayer_vel_coef) + (1._wp - eta)*orig_prim_vf(1 &
816 & + eqn_idx%cont%end))
820 if (model_eqns == model_eqns_6eq)
then
821 do i = eqn_idx%int_en%beg, eqn_idx%int_en%end
822 q_prim_vf(i)%sf(
j,
k,
l) = q_prim_vf(eqn_idx%E)%sf(
j,
k,
l)
826 if (bubbles_euler)
then
828 mur = r0(i)*patch_icpp(patch_id)%r0/r0ref
829 muv = patch_icpp(patch_id)%v0
832 if (dist_type == 1)
then
833 q_prim_vf(qbmm_idx%fullmom(i, 0, 0))%sf(
j,
k,
l) = 1._wp
834 q_prim_vf(qbmm_idx%fullmom(i, 1, 0))%sf(
j,
k,
l) = mur
835 q_prim_vf(qbmm_idx%fullmom(i, 0, 1))%sf(
j,
k,
l) = muv
836 q_prim_vf(qbmm_idx%fullmom(i, 2, 0))%sf(
j,
k,
l) = mur**2 + (sigr*r0ref)**2
837 q_prim_vf(qbmm_idx%fullmom(i, 1, 1))%sf(
j,
k,
l) = mur*muv + rhorv*(sigr*r0ref)*(sigv*sqrt(p0ref/rho0ref))
838 q_prim_vf(qbmm_idx%fullmom(i, 0, 2))%sf(
j,
k,
l) = muv**2 + (sigv*sqrt(p0ref/rho0ref))**2
839 else if (dist_type == 2)
then
840 q_prim_vf(qbmm_idx%fullmom(i, 0, 0))%sf(
j,
k,
l) = 1._wp
841 q_prim_vf(qbmm_idx%fullmom(i, 1, 0))%sf(
j,
k,
l) = exp((sigr**2)/2._wp)*mur
842 q_prim_vf(qbmm_idx%fullmom(i, 0, 1))%sf(
j,
k,
l) = muv
843 q_prim_vf(qbmm_idx%fullmom(i, 2, 0))%sf(
j,
k,
l) = exp((sigr**2)*2._wp)*(mur**2)
844 q_prim_vf(qbmm_idx%fullmom(i, 1, 1))%sf(
j,
k,
l) = exp((sigr**2)/2._wp)*mur*muv
845 q_prim_vf(qbmm_idx%fullmom(i, 0, 2))%sf(
j,
k,
l) = muv**2 + (sigv*sqrt(p0ref/rho0ref))**2
848 q_prim_vf(qbmm_idx%rs(i))%sf(
j,
k,
l) = mur
849 q_prim_vf(qbmm_idx%vs(i))%sf(
j,
k,
l) = muv
851 if (.not. polytropic)
then
852 q_prim_vf(qbmm_idx%ps(i))%sf(
j,
k,
l) = patch_icpp(patch_id)%p0
853 q_prim_vf(qbmm_idx%ms(i))%sf(
j,
k,
l) = patch_icpp(patch_id)%m0
862 r3bar = r3bar + weight(i)*(q_prim_vf(qbmm_idx%rs(i))%sf(
j,
k,
l))**3._wp
864 q_prim_vf(eqn_idx%n)%sf(
j,
k,
l) = 3*q_prim_vf(eqn_idx%alf)%sf(
j,
k,
l)/(4*pi*r3bar)
868 if (mpp_lim .and. bubbles_euler)
then
871 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
875 do i = eqn_idx%adv%beg, eqn_idx%adv%end - 1
876 q_prim_vf(i)%sf = q_prim_vf(i)%sf*(1._wp - q_prim_vf(eqn_idx%alf)%sf)/
alf_sum%sf
880 if (bubbles_euler .and. (.not. polytropic) .and. (.not. qbmm))
then
882 if (f_is_default(real(q_prim_vf(qbmm_idx%ps(i))%sf(
j,
k,
l), kind=wp)))
then
883 q_prim_vf(qbmm_idx%ps(i))%sf(
j,
k,
l) = pb0(i)
885 if (f_is_default(real(q_prim_vf(qbmm_idx%ms(i))%sf(
j,
k,
l), kind=wp)))
then
886 q_prim_vf(qbmm_idx%ms(i))%sf(
j,
k,
l) = mass_v0(i)
891 if (surface_tension)
then
892 q_prim_vf(eqn_idx%c)%sf(
j,
k,
l) = eta*patch_icpp(patch_id)%cf_val + (1._wp - eta)*orig_prim_vf(eqn_idx%c)
895 if (1._wp - eta < 1.e-16_wp) patch_id_fp(
j,
k,
l) = patch_id