512 subroutine s_muscl(v_vf, vL_rs_vf_x, vL_rs_vf_y, vL_rs_vf_z, vR_rs_vf_x, vR_rs_vf_y, vR_rs_vf_z, &
514 is1_muscl_d, is2_muscl_d, is3_muscl_d)
516 type(scalar_field),
dimension(1:),
intent(in) :: v_vf
517 real(wp),
dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:),
intent(inout) :: &
518 vl_rs_vf_x, vl_rs_vf_y, &
519 vl_rs_vf_z, vr_rs_vf_x, &
520 vr_rs_vf_y, vr_rs_vf_z
521 integer,
intent(in) :: muscl_dir
522 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
524 integer ::
j,
k,
l, i
525 real(wp) :: slopel, sloper, slope
531# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
532#if defined(MFC_OpenACC)
533# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
535# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
536#elif defined(MFC_OpenMP)
537# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
539# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
542 if (muscl_order /= 1 .or. dummy)
then
546 if (muscl_order == 1 .or. dummy)
then
547 if (muscl_dir == 1)
then
549# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
551# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
552#if defined(MFC_OpenACC)
553# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
555# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
556#elif defined(MFC_OpenMP)
557# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
559# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
561# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
563# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
565# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
567# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
569 do i = 1, ubound(v_vf, 1)
573 vl_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
574 vr_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
580# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
582# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
583#if defined(MFC_OpenACC)
584# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
586# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
587#elif defined(MFC_OpenMP)
588# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
590# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
592# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
594# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
596# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
598 else if (muscl_dir == 2)
then
600# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
602# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
603#if defined(MFC_OpenACC)
604# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
606# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
607#elif defined(MFC_OpenMP)
608# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
610# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
612# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
614# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
616# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
618# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
620 do i = 1, ubound(v_vf, 1)
624 vl_rs_vf_y(
j,
k,
l, i) = v_vf(i)%sf(
k,
j,
l)
625 vr_rs_vf_y(
j,
k,
l, i) = v_vf(i)%sf(
k,
j,
l)
631# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
633# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
634#if defined(MFC_OpenACC)
635# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
637# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
638#elif defined(MFC_OpenMP)
639# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
641# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
643# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
645# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
647# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
649 else if (muscl_dir == 3)
then
651# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
653# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
654#if defined(MFC_OpenACC)
655# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
657# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
658#elif defined(MFC_OpenMP)
659# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
661# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
663# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
665# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
667# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
669# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
671 do i = 1, ubound(v_vf, 1)
675 vl_rs_vf_z(
j,
k,
l, i) = v_vf(i)%sf(
l,
k,
j)
676 vr_rs_vf_z(
j,
k,
l, i) = v_vf(i)%sf(
l,
k,
j)
682# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
684# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
685#if defined(MFC_OpenACC)
686# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
688# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
689#elif defined(MFC_OpenMP)
690# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
692# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
694# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
696# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
698# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
703 if (muscl_order == 2 .or. dummy)
then
705# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
706 if (muscl_dir == 1)
then
708# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
710# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
711#if defined(MFC_OpenACC)
712# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
714# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
715#elif defined(MFC_OpenMP)
716# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
718# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
720# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
722# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
724# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
726# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
739 if (muscl_lim == 1)
then
740 if (slopel*sloper > 1e-9_wp)
then
741 slope = min(abs(slopel), abs(sloper))
743 if (slopel < 0._wp) slope = -slope
744 elseif (muscl_lim == 2)
then
745 if (slopel*sloper > 1e-9_wp)
then
746 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
747 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
749 if (slopel < 0._wp) slope = -slope
750 elseif (muscl_lim == 3)
then
751 if (abs(slopel) > 1e-6_wp .and. abs(sloper) > 1e-6_wp .and. &
752 abs(slopel + sloper) > 1e-6_wp .and. slopel*sloper > 1e-6_wp)
then
753 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
755 elseif (muscl_lim == 4)
then
756 if (abs(slopel + sloper) > 1.e-6_wp .and. slopel*sloper > 1.e-6_wp)
then
757 slope = 2._wp*slopel*sloper/(slopel + sloper)
759 elseif (muscl_lim == 5)
then
760 if (slopel*sloper > 1e-6_wp)
then
761 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), 2._wp*abs(sloper)))
766 vl_rs_vf_x(
j,
k,
l, i) = &
770 vr_rs_vf_x(
j,
k,
l, i) = &
778# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
780# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
781#if defined(MFC_OpenACC)
782# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
784# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
785#elif defined(MFC_OpenMP)
786# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
788# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
790# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
792# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
794# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
797# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
798 if (muscl_dir == 2)
then
800# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
802# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
803#if defined(MFC_OpenACC)
804# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
806# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
807#elif defined(MFC_OpenMP)
808# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
810# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
812# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
814# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
816# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
818# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
831 if (muscl_lim == 1)
then
832 if (slopel*sloper > 1e-9_wp)
then
833 slope = min(abs(slopel), abs(sloper))
835 if (slopel < 0._wp) slope = -slope
836 elseif (muscl_lim == 2)
then
837 if (slopel*sloper > 1e-9_wp)
then
838 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
839 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
841 if (slopel < 0._wp) slope = -slope
842 elseif (muscl_lim == 3)
then
843 if (abs(slopel) > 1e-6_wp .and. abs(sloper) > 1e-6_wp .and. &
844 abs(slopel + sloper) > 1e-6_wp .and. slopel*sloper > 1e-6_wp)
then
845 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
847 elseif (muscl_lim == 4)
then
848 if (abs(slopel + sloper) > 1.e-6_wp .and. slopel*sloper > 1.e-6_wp)
then
849 slope = 2._wp*slopel*sloper/(slopel + sloper)
851 elseif (muscl_lim == 5)
then
852 if (slopel*sloper > 1e-6_wp)
then
853 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), 2._wp*abs(sloper)))
858 vl_rs_vf_y(
j,
k,
l, i) = &
862 vr_rs_vf_y(
j,
k,
l, i) = &
870# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
872# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
873#if defined(MFC_OpenACC)
874# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
876# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
877#elif defined(MFC_OpenMP)
878# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
880# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
882# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
884# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
886# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
889# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
890 if (muscl_dir == 3)
then
892# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
894# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
895#if defined(MFC_OpenACC)
896# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
898# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
899#elif defined(MFC_OpenMP)
900# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
902# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
904# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
906# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
908# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
910# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
923 if (muscl_lim == 1)
then
924 if (slopel*sloper > 1e-9_wp)
then
925 slope = min(abs(slopel), abs(sloper))
927 if (slopel < 0._wp) slope = -slope
928 elseif (muscl_lim == 2)
then
929 if (slopel*sloper > 1e-9_wp)
then
930 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
931 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
933 if (slopel < 0._wp) slope = -slope
934 elseif (muscl_lim == 3)
then
935 if (abs(slopel) > 1e-6_wp .and. abs(sloper) > 1e-6_wp .and. &
936 abs(slopel + sloper) > 1e-6_wp .and. slopel*sloper > 1e-6_wp)
then
937 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
939 elseif (muscl_lim == 4)
then
940 if (abs(slopel + sloper) > 1.e-6_wp .and. slopel*sloper > 1.e-6_wp)
then
941 slope = 2._wp*slopel*sloper/(slopel + sloper)
943 elseif (muscl_lim == 5)
then
944 if (slopel*sloper > 1e-6_wp)
then
945 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), 2._wp*abs(sloper)))
950 vl_rs_vf_z(
j,
k,
l, i) = &
954 vr_rs_vf_z(
j,
k,
l, i) = &
962# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
964# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
965#if defined(MFC_OpenACC)
966# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
968# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
969#elif defined(MFC_OpenMP)
970# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
972# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
974# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
976# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
978# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
981# 226 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
986 vr_rs_vf_x, vr_rs_vf_y, vr_rs_vf_z, &
987 muscl_dir, is1_muscl_d, is2_muscl_d, is3_muscl_d)
995 is1_muscl_d, is2_muscl_d, is3_muscl_d)
997 real(wp),
dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:),
intent(inout) :: &
998 vl_rs_vf_x, vl_rs_vf_y, &
999 vl_rs_vf_z, vr_rs_vf_x, &
1000 vr_rs_vf_y, vr_rs_vf_z
1001 integer,
intent(in) :: muscl_dir
1002 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
1006 real(wp) :: acl, acr, ac, athinc, qmin, qmax, a, b, c, sign, moncon
1008# 253 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1009 if (muscl_dir == 1)
then
1012# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1014# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1015#if defined(MFC_OpenACC)
1016# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1018# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1019#elif defined(MFC_OpenMP)
1020# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1022# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1024# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1026# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1028# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1030# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1040 moncon = (acr - ac)*(ac - acl)
1042 if (ac >= ic_eps .and. ac <= 1._wp - ic_eps .and. moncon > moncon_cutoff)
then
1044 if (acr - acl > 0._wp)
then
1050 qmin = min(acr, acl)
1051 qmax = max(acr, acl) - qmin
1053 c = (ac - qmin + sgm_eps)/(qmax + sgm_eps)
1054 b = exp(sign*ic_beta*(2._wp*c - 1._wp))
1055 a = (b/cosh(ic_beta) - 1._wp)/tanh(ic_beta)
1058 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*a)
1059 if (athinc < ic_eps) athinc = ic_eps
1060 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1061 vl_rs_vf_x(
j,
k,
l, contxb) = vl_rs_vf_x(
j,
k,
l, contxb)/ &
1062 vl_rs_vf_x(
j,
k,
l, advxb)*athinc
1063 vl_rs_vf_x(
j,
k,
l, contxe) = vl_rs_vf_x(
j,
k,
l, contxe)/ &
1064 (1._wp - vl_rs_vf_x(
j,
k,
l, advxb))*(1._wp - athinc)
1065 vl_rs_vf_x(
j,
k,
l, advxb) = athinc
1066 vl_rs_vf_x(
j,
k,
l, advxe) = 1 - athinc
1069 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*(tanh(ic_beta) + a)/(1._wp + a*tanh(ic_beta)))
1070 if (athinc < ic_eps) athinc = ic_eps
1071 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1072 vr_rs_vf_x(
j,
k,
l, contxb) = vl_rs_vf_x(
j,
k,
l, contxb)/ &
1073 vl_rs_vf_x(
j,
k,
l, advxb)*athinc
1074 vr_rs_vf_x(
j,
k,
l, contxe) = vl_rs_vf_x(
j,
k,
l, contxe)/ &
1075 (1._wp - vl_rs_vf_x(
j,
k,
l, advxb))*(1._wp - athinc)
1076 vr_rs_vf_x(
j,
k,
l, advxb) = athinc
1077 vr_rs_vf_x(
j,
k,
l, advxe) = 1 - athinc
1085# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1087# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1088#if defined(MFC_OpenACC)
1089# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1091# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1092#elif defined(MFC_OpenMP)
1093# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1095# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1097# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1099# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1101# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1104# 253 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1105 if (muscl_dir == 2)
then
1108# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1110# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1111#if defined(MFC_OpenACC)
1112# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1114# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1115#elif defined(MFC_OpenMP)
1116# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1118# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1120# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1122# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1124# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1126# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1136 moncon = (acr - ac)*(ac - acl)
1138 if (ac >= ic_eps .and. ac <= 1._wp - ic_eps .and. moncon > moncon_cutoff)
then
1140 if (acr - acl > 0._wp)
then
1146 qmin = min(acr, acl)
1147 qmax = max(acr, acl) - qmin
1149 c = (ac - qmin + sgm_eps)/(qmax + sgm_eps)
1150 b = exp(sign*ic_beta*(2._wp*c - 1._wp))
1151 a = (b/cosh(ic_beta) - 1._wp)/tanh(ic_beta)
1154 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*a)
1155 if (athinc < ic_eps) athinc = ic_eps
1156 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1157 vl_rs_vf_y(
j,
k,
l, contxb) = vl_rs_vf_y(
j,
k,
l, contxb)/ &
1158 vl_rs_vf_y(
j,
k,
l, advxb)*athinc
1159 vl_rs_vf_y(
j,
k,
l, contxe) = vl_rs_vf_y(
j,
k,
l, contxe)/ &
1160 (1._wp - vl_rs_vf_y(
j,
k,
l, advxb))*(1._wp - athinc)
1161 vl_rs_vf_y(
j,
k,
l, advxb) = athinc
1162 vl_rs_vf_y(
j,
k,
l, advxe) = 1 - athinc
1165 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*(tanh(ic_beta) + a)/(1._wp + a*tanh(ic_beta)))
1166 if (athinc < ic_eps) athinc = ic_eps
1167 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1168 vr_rs_vf_y(
j,
k,
l, contxb) = vl_rs_vf_y(
j,
k,
l, contxb)/ &
1169 vl_rs_vf_y(
j,
k,
l, advxb)*athinc
1170 vr_rs_vf_y(
j,
k,
l, contxe) = vl_rs_vf_y(
j,
k,
l, contxe)/ &
1171 (1._wp - vl_rs_vf_y(
j,
k,
l, advxb))*(1._wp - athinc)
1172 vr_rs_vf_y(
j,
k,
l, advxb) = athinc
1173 vr_rs_vf_y(
j,
k,
l, advxe) = 1 - athinc
1181# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1183# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1184#if defined(MFC_OpenACC)
1185# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1187# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1188#elif defined(MFC_OpenMP)
1189# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1191# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1193# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1195# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1197# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1200# 253 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1201 if (muscl_dir == 3)
then
1204# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1206# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1207#if defined(MFC_OpenACC)
1208# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1210# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1211#elif defined(MFC_OpenMP)
1212# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1214# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1216# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1218# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1220# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1222# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1232 moncon = (acr - ac)*(ac - acl)
1234 if (ac >= ic_eps .and. ac <= 1._wp - ic_eps .and. moncon > moncon_cutoff)
then
1236 if (acr - acl > 0._wp)
then
1242 qmin = min(acr, acl)
1243 qmax = max(acr, acl) - qmin
1245 c = (ac - qmin + sgm_eps)/(qmax + sgm_eps)
1246 b = exp(sign*ic_beta*(2._wp*c - 1._wp))
1247 a = (b/cosh(ic_beta) - 1._wp)/tanh(ic_beta)
1250 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*a)
1251 if (athinc < ic_eps) athinc = ic_eps
1252 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1253 vl_rs_vf_z(
j,
k,
l, contxb) = vl_rs_vf_z(
j,
k,
l, contxb)/ &
1254 vl_rs_vf_z(
j,
k,
l, advxb)*athinc
1255 vl_rs_vf_z(
j,
k,
l, contxe) = vl_rs_vf_z(
j,
k,
l, contxe)/ &
1256 (1._wp - vl_rs_vf_z(
j,
k,
l, advxb))*(1._wp - athinc)
1257 vl_rs_vf_z(
j,
k,
l, advxb) = athinc
1258 vl_rs_vf_z(
j,
k,
l, advxe) = 1 - athinc
1261 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*(tanh(ic_beta) + a)/(1._wp + a*tanh(ic_beta)))
1262 if (athinc < ic_eps) athinc = ic_eps
1263 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1264 vr_rs_vf_z(
j,
k,
l, contxb) = vl_rs_vf_z(
j,
k,
l, contxb)/ &
1265 vl_rs_vf_z(
j,
k,
l, advxb)*athinc
1266 vr_rs_vf_z(
j,
k,
l, contxe) = vl_rs_vf_z(
j,
k,
l, contxe)/ &
1267 (1._wp - vl_rs_vf_z(
j,
k,
l, advxb))*(1._wp - athinc)
1268 vr_rs_vf_z(
j,
k,
l, advxb) = athinc
1269 vr_rs_vf_z(
j,
k,
l, advxe) = 1 - athinc
1277# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1279# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1280#if defined(MFC_OpenACC)
1281# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1283# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1284#elif defined(MFC_OpenMP)
1285# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1287# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1289# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1291# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1293# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1296# 311 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
subroutine, public s_interface_compression(vl_rs_vf_x, vl_rs_vf_y, vl_rs_vf_z, vr_rs_vf_x, vr_rs_vf_y, vr_rs_vf_z, muscl_dir, is1_muscl_d, is2_muscl_d, is3_muscl_d)
Applies THINC interface-compression to sharpen volume-fraction reconstructions at material interfaces...
subroutine, public s_muscl(v_vf, vl_rs_vf_x, vl_rs_vf_y, vl_rs_vf_z, vr_rs_vf_x, vr_rs_vf_y, vr_rs_vf_z, muscl_dir, is1_muscl_d, is2_muscl_d, is3_muscl_d)
Performs MUSCL reconstruction of left and right cell-boundary values from cell-averaged variables.