514 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, &
516 is1_muscl_d, is2_muscl_d, is3_muscl_d)
518 type(scalar_field),
dimension(1:),
intent(in) :: v_vf
519 real(wp),
dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:),
intent(inout) :: &
520 vl_rs_vf_x, vl_rs_vf_y, &
521 vl_rs_vf_z, vr_rs_vf_x, &
522 vr_rs_vf_y, vr_rs_vf_z
523 integer,
intent(in) :: muscl_dir
524 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
526 integer ::
j,
k,
l, i
527 real(wp) :: slopel, sloper, slope
533# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
534#if defined(MFC_OpenACC)
535# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
537# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
538#elif defined(MFC_OpenMP)
539# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
541# 120 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
544 if (muscl_order /= 1 .or. dummy)
then
548 if (muscl_order == 1 .or. dummy)
then
549 if (muscl_dir == 1)
then
551# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
553# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
554#if defined(MFC_OpenACC)
555# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
557# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
558#elif defined(MFC_OpenMP)
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# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
571 do i = 1, ubound(v_vf, 1)
575 vl_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
576 vr_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
582# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
584# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
585#if defined(MFC_OpenACC)
586# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
588# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
589#elif defined(MFC_OpenMP)
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# 139 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
600 else if (muscl_dir == 2)
then
602# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
604# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
605#if defined(MFC_OpenACC)
606# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
608# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
609#elif defined(MFC_OpenMP)
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# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
622 do i = 1, ubound(v_vf, 1)
626 vl_rs_vf_y(
j,
k,
l, i) = v_vf(i)%sf(
k,
j,
l)
627 vr_rs_vf_y(
j,
k,
l, i) = v_vf(i)%sf(
k,
j,
l)
633# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
635# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
636#if defined(MFC_OpenACC)
637# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
639# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
640#elif defined(MFC_OpenMP)
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# 152 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
651 else if (muscl_dir == 3)
then
653# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
655# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
656#if defined(MFC_OpenACC)
657# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
659# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
660#elif defined(MFC_OpenMP)
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# 154 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
673 do i = 1, ubound(v_vf, 1)
677 vl_rs_vf_z(
j,
k,
l, i) = v_vf(i)%sf(
l,
k,
j)
678 vr_rs_vf_z(
j,
k,
l, i) = v_vf(i)%sf(
l,
k,
j)
684# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
686# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
687#if defined(MFC_OpenACC)
688# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
690# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
691#elif defined(MFC_OpenMP)
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"
700# 165 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
705 if (muscl_order == 2 .or. dummy)
then
707# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
708 if (muscl_dir == 1)
then
710# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
712# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
713#if defined(MFC_OpenACC)
714# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
716# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
717#elif defined(MFC_OpenMP)
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"
728# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
741 if (muscl_lim == 1)
then
742 if (slopel*sloper > 1e-9_wp)
then
743 slope = min(abs(slopel), abs(sloper))
745 if (slopel < 0._wp) slope = -slope
746 elseif (muscl_lim == 2)
then
747 if (slopel*sloper > 1e-9_wp)
then
748 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
749 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
751 if (slopel < 0._wp) slope = -slope
752 elseif (muscl_lim == 3)
then
753 if (abs(slopel) > 1e-6_wp .and. abs(sloper) > 1e-6_wp .and. &
754 abs(slopel + sloper) > 1e-6_wp .and. slopel*sloper > 1e-6_wp)
then
755 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
757 elseif (muscl_lim == 4)
then
758 if (abs(slopel + sloper) > 1.e-6_wp .and. slopel*sloper > 1.e-6_wp)
then
759 slope = 2._wp*slopel*sloper/(slopel + sloper)
761 elseif (muscl_lim == 5)
then
762 if (slopel*sloper > 1e-6_wp)
then
763 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), 2._wp*abs(sloper)))
768 vl_rs_vf_x(
j,
k,
l, i) = &
772 vr_rs_vf_x(
j,
k,
l, i) = &
780# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
782# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
783#if defined(MFC_OpenACC)
784# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
786# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
787#elif defined(MFC_OpenMP)
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"
796# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
799# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
800 if (muscl_dir == 2)
then
802# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
804# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
805#if defined(MFC_OpenACC)
806# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
808# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
809#elif defined(MFC_OpenMP)
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"
820# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
833 if (muscl_lim == 1)
then
834 if (slopel*sloper > 1e-9_wp)
then
835 slope = min(abs(slopel), abs(sloper))
837 if (slopel < 0._wp) slope = -slope
838 elseif (muscl_lim == 2)
then
839 if (slopel*sloper > 1e-9_wp)
then
840 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
841 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
843 if (slopel < 0._wp) slope = -slope
844 elseif (muscl_lim == 3)
then
845 if (abs(slopel) > 1e-6_wp .and. abs(sloper) > 1e-6_wp .and. &
846 abs(slopel + sloper) > 1e-6_wp .and. slopel*sloper > 1e-6_wp)
then
847 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
849 elseif (muscl_lim == 4)
then
850 if (abs(slopel + sloper) > 1.e-6_wp .and. slopel*sloper > 1.e-6_wp)
then
851 slope = 2._wp*slopel*sloper/(slopel + sloper)
853 elseif (muscl_lim == 5)
then
854 if (slopel*sloper > 1e-6_wp)
then
855 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), 2._wp*abs(sloper)))
860 vl_rs_vf_y(
j,
k,
l, i) = &
864 vr_rs_vf_y(
j,
k,
l, i) = &
872# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
874# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
875#if defined(MFC_OpenACC)
876# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
878# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
879#elif defined(MFC_OpenMP)
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"
888# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
891# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
892 if (muscl_dir == 3)
then
894# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
896# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
897#if defined(MFC_OpenACC)
898# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
900# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
901#elif defined(MFC_OpenMP)
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"
912# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
925 if (muscl_lim == 1)
then
926 if (slopel*sloper > 1e-9_wp)
then
927 slope = min(abs(slopel), abs(sloper))
929 if (slopel < 0._wp) slope = -slope
930 elseif (muscl_lim == 2)
then
931 if (slopel*sloper > 1e-9_wp)
then
932 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
933 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
935 if (slopel < 0._wp) slope = -slope
936 elseif (muscl_lim == 3)
then
937 if (abs(slopel) > 1e-6_wp .and. abs(sloper) > 1e-6_wp .and. &
938 abs(slopel + sloper) > 1e-6_wp .and. slopel*sloper > 1e-6_wp)
then
939 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
941 elseif (muscl_lim == 4)
then
942 if (abs(slopel + sloper) > 1.e-6_wp .and. slopel*sloper > 1.e-6_wp)
then
943 slope = 2._wp*slopel*sloper/(slopel + sloper)
945 elseif (muscl_lim == 5)
then
946 if (slopel*sloper > 1e-6_wp)
then
947 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), 2._wp*abs(sloper)))
952 vl_rs_vf_z(
j,
k,
l, i) = &
956 vr_rs_vf_z(
j,
k,
l, i) = &
964# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
966# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
967#if defined(MFC_OpenACC)
968# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
970# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
971#elif defined(MFC_OpenMP)
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"
980# 223 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
983# 226 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
988 vr_rs_vf_x, vr_rs_vf_y, vr_rs_vf_z, &
989 muscl_dir, is1_muscl_d, is2_muscl_d, is3_muscl_d)
997 is1_muscl_d, is2_muscl_d, is3_muscl_d)
999 real(wp),
dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:),
intent(inout) :: &
1000 vl_rs_vf_x, vl_rs_vf_y, &
1001 vl_rs_vf_z, vr_rs_vf_x, &
1002 vr_rs_vf_y, vr_rs_vf_z
1003 integer,
intent(in) :: muscl_dir
1004 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
1008 real(wp) :: acl, acr, ac, athinc, qmin, qmax, a, b, c, sign, moncon
1010# 253 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1011 if (muscl_dir == 1)
then
1014# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1016# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1017#if defined(MFC_OpenACC)
1018# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1020# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1021#elif defined(MFC_OpenMP)
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"
1032# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1042 moncon = (acr - ac)*(ac - acl)
1044 if (ac >= ic_eps .and. ac <= 1._wp - ic_eps .and. moncon > moncon_cutoff)
then
1046 if (acr - acl > 0._wp)
then
1052 qmin = min(acr, acl)
1053 qmax = max(acr, acl) - qmin
1055 c = (ac - qmin + sgm_eps)/(qmax + sgm_eps)
1056 b = exp(sign*ic_beta*(2._wp*c - 1._wp))
1057 a = (b/cosh(ic_beta) - 1._wp)/tanh(ic_beta)
1060 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*a)
1061 if (athinc < ic_eps) athinc = ic_eps
1062 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1063 vl_rs_vf_x(
j,
k,
l, contxb) = vl_rs_vf_x(
j,
k,
l, contxb)/ &
1064 vl_rs_vf_x(
j,
k,
l, advxb)*athinc
1065 vl_rs_vf_x(
j,
k,
l, contxe) = vl_rs_vf_x(
j,
k,
l, contxe)/ &
1066 (1._wp - vl_rs_vf_x(
j,
k,
l, advxb))*(1._wp - athinc)
1067 vl_rs_vf_x(
j,
k,
l, advxb) = athinc
1068 vl_rs_vf_x(
j,
k,
l, advxe) = 1 - athinc
1071 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*(tanh(ic_beta) + a)/(1._wp + a*tanh(ic_beta)))
1072 if (athinc < ic_eps) athinc = ic_eps
1073 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1074 vr_rs_vf_x(
j,
k,
l, contxb) = vl_rs_vf_x(
j,
k,
l, contxb)/ &
1075 vl_rs_vf_x(
j,
k,
l, advxb)*athinc
1076 vr_rs_vf_x(
j,
k,
l, contxe) = vl_rs_vf_x(
j,
k,
l, contxe)/ &
1077 (1._wp - vl_rs_vf_x(
j,
k,
l, advxb))*(1._wp - athinc)
1078 vr_rs_vf_x(
j,
k,
l, advxb) = athinc
1079 vr_rs_vf_x(
j,
k,
l, advxe) = 1 - athinc
1087# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1089# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1090#if defined(MFC_OpenACC)
1091# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1093# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1094#elif defined(MFC_OpenMP)
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"
1103# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1106# 253 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1107 if (muscl_dir == 2)
then
1110# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1112# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1113#if defined(MFC_OpenACC)
1114# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1116# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1117#elif defined(MFC_OpenMP)
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"
1128# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1138 moncon = (acr - ac)*(ac - acl)
1140 if (ac >= ic_eps .and. ac <= 1._wp - ic_eps .and. moncon > moncon_cutoff)
then
1142 if (acr - acl > 0._wp)
then
1148 qmin = min(acr, acl)
1149 qmax = max(acr, acl) - qmin
1151 c = (ac - qmin + sgm_eps)/(qmax + sgm_eps)
1152 b = exp(sign*ic_beta*(2._wp*c - 1._wp))
1153 a = (b/cosh(ic_beta) - 1._wp)/tanh(ic_beta)
1156 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*a)
1157 if (athinc < ic_eps) athinc = ic_eps
1158 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1159 vl_rs_vf_y(
j,
k,
l, contxb) = vl_rs_vf_y(
j,
k,
l, contxb)/ &
1160 vl_rs_vf_y(
j,
k,
l, advxb)*athinc
1161 vl_rs_vf_y(
j,
k,
l, contxe) = vl_rs_vf_y(
j,
k,
l, contxe)/ &
1162 (1._wp - vl_rs_vf_y(
j,
k,
l, advxb))*(1._wp - athinc)
1163 vl_rs_vf_y(
j,
k,
l, advxb) = athinc
1164 vl_rs_vf_y(
j,
k,
l, advxe) = 1 - athinc
1167 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*(tanh(ic_beta) + a)/(1._wp + a*tanh(ic_beta)))
1168 if (athinc < ic_eps) athinc = ic_eps
1169 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1170 vr_rs_vf_y(
j,
k,
l, contxb) = vl_rs_vf_y(
j,
k,
l, contxb)/ &
1171 vl_rs_vf_y(
j,
k,
l, advxb)*athinc
1172 vr_rs_vf_y(
j,
k,
l, contxe) = vl_rs_vf_y(
j,
k,
l, contxe)/ &
1173 (1._wp - vl_rs_vf_y(
j,
k,
l, advxb))*(1._wp - athinc)
1174 vr_rs_vf_y(
j,
k,
l, advxb) = athinc
1175 vr_rs_vf_y(
j,
k,
l, advxe) = 1 - athinc
1183# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1185# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1186#if defined(MFC_OpenACC)
1187# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1189# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1190#elif defined(MFC_OpenMP)
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"
1199# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1202# 253 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1203 if (muscl_dir == 3)
then
1206# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1208# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1209#if defined(MFC_OpenACC)
1210# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1212# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1213#elif defined(MFC_OpenMP)
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"
1224# 255 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1234 moncon = (acr - ac)*(ac - acl)
1236 if (ac >= ic_eps .and. ac <= 1._wp - ic_eps .and. moncon > moncon_cutoff)
then
1238 if (acr - acl > 0._wp)
then
1244 qmin = min(acr, acl)
1245 qmax = max(acr, acl) - qmin
1247 c = (ac - qmin + sgm_eps)/(qmax + sgm_eps)
1248 b = exp(sign*ic_beta*(2._wp*c - 1._wp))
1249 a = (b/cosh(ic_beta) - 1._wp)/tanh(ic_beta)
1252 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*a)
1253 if (athinc < ic_eps) athinc = ic_eps
1254 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1255 vl_rs_vf_z(
j,
k,
l, contxb) = vl_rs_vf_z(
j,
k,
l, contxb)/ &
1256 vl_rs_vf_z(
j,
k,
l, advxb)*athinc
1257 vl_rs_vf_z(
j,
k,
l, contxe) = vl_rs_vf_z(
j,
k,
l, contxe)/ &
1258 (1._wp - vl_rs_vf_z(
j,
k,
l, advxb))*(1._wp - athinc)
1259 vl_rs_vf_z(
j,
k,
l, advxb) = athinc
1260 vl_rs_vf_z(
j,
k,
l, advxe) = 1 - athinc
1263 athinc = qmin + 5e-1_wp*qmax*(1._wp + sign*(tanh(ic_beta) + a)/(1._wp + a*tanh(ic_beta)))
1264 if (athinc < ic_eps) athinc = ic_eps
1265 if (athinc > 1 - ic_eps) athinc = 1 - ic_eps
1266 vr_rs_vf_z(
j,
k,
l, contxb) = vl_rs_vf_z(
j,
k,
l, contxb)/ &
1267 vl_rs_vf_z(
j,
k,
l, advxb)*athinc
1268 vr_rs_vf_z(
j,
k,
l, contxe) = vl_rs_vf_z(
j,
k,
l, contxe)/ &
1269 (1._wp - vl_rs_vf_z(
j,
k,
l, advxb))*(1._wp - athinc)
1270 vr_rs_vf_z(
j,
k,
l, advxb) = athinc
1271 vr_rs_vf_z(
j,
k,
l, advxe) = 1 - athinc
1279# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1281# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1282#if defined(MFC_OpenACC)
1283# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1285# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1286#elif defined(MFC_OpenMP)
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"
1295# 308 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1298# 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.