464 subroutine s_muscl(v_vf, vL_rs_vf_x, vR_rs_vf_x, muscl_dir, is1_muscl_d, is2_muscl_d, is3_muscl_d)
466 type(scalar_field),
dimension(1:),
intent(in) :: v_vf
467 real(wp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:),
intent(inout) :: vl_rs_vf_x, vr_rs_vf_x
468 integer,
intent(in) :: muscl_dir
469 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
470 integer ::
j,
k,
l, i
471 real(wp) :: slopel, sloper, slope
478# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
479#if defined(MFC_OpenACC)
480# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
482# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
483#elif defined(MFC_OpenMP)
484# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
486# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
489 if (muscl_order == muscl_order_first_order)
then
490 if (muscl_dir == 1)
then
492# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
494# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
495#if defined(MFC_OpenACC)
496# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
498# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
499#elif defined(MFC_OpenMP)
500# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
502# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
504# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
506# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
508# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
510 do i = 1, ubound(v_vf, 1)
514 vl_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
515 vr_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
521# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
522#if defined(MFC_OpenACC)
523# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
525# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
526#elif defined(MFC_OpenMP)
527# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
529# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
531# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
533 else if (muscl_dir == 2)
then
535# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
537# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
538#if defined(MFC_OpenACC)
539# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
541# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
542#elif defined(MFC_OpenMP)
543# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
545# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
547# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
549# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
551# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
553 do i = 1, ubound(v_vf, 1)
557 vl_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
558 vr_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
564# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
565#if defined(MFC_OpenACC)
566# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
568# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
569#elif defined(MFC_OpenMP)
570# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
572# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
574# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
576 else if (muscl_dir == 3)
then
578# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
580# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
581#if defined(MFC_OpenACC)
582# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
584# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
585#elif defined(MFC_OpenMP)
586# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
588# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
590# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
592# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
594# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
596 do i = 1, ubound(v_vf, 1)
600 vl_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
601 vr_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
607# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
608#if defined(MFC_OpenACC)
609# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
611# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
612#elif defined(MFC_OpenMP)
613# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
615# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
617# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
624# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
625#if defined(MFC_OpenACC)
626# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
628# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
629#elif defined(MFC_OpenMP)
630# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
632# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
635 if (muscl_order /= muscl_order_first_order)
then
637# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
639# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
640#if defined(MFC_OpenACC)
641# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
643# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
644#elif defined(MFC_OpenMP)
645# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
647# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
649# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
651# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
653# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
656 do l = idwbuff(3)%beg, idwbuff(3)%end
657 do k = idwbuff(2)%beg, idwbuff(2)%end
658 do j = idwbuff(1)%beg, idwbuff(1)%end
665# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
666#if defined(MFC_OpenACC)
667# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
669# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
670#elif defined(MFC_OpenMP)
671# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
673# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
675# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
679 if (muscl_order == muscl_order_second_order)
then
681# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
682# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
683# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
684 if (muscl_dir == 1)
then
686# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
688# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
689#if defined(MFC_OpenACC)
690# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
692# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
693#elif defined(MFC_OpenMP)
694# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
696# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
698# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
700# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
702# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
704# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
714 if (muscl_lim == muscl_lim_unlimited)
then
715 slope = 5e-1_wp*(slopel + sloper)
716 else if (muscl_lim == muscl_lim_minmod)
then
717 if (slopel*sloper > muscl_eps)
then
718 slope = min(abs(slopel), abs(sloper))
720 if (slopel < 0._wp) slope = -slope
721 else if (muscl_lim == muscl_lim_mc)
then
722 if (slopel*sloper > muscl_eps)
then
723 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
724 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
726 if (slopel < 0._wp) slope = -slope
727 else if (muscl_lim == muscl_lim_van_albada)
then
728 if (slopel*sloper > muscl_eps)
then
729 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
731 else if (muscl_lim == muscl_lim_van_leer)
then
732 if (slopel*sloper > muscl_eps)
then
733 slope = 2._wp*slopel*sloper/(slopel + sloper)
735 else if (muscl_lim == muscl_lim_superbee)
then
736 if (slopel*sloper > muscl_eps)
then
737 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
738 & 2._wp*abs(sloper)))
752# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
753#if defined(MFC_OpenACC)
754# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
756# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
757#elif defined(MFC_OpenMP)
758# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
760# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
762# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
765# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
766# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
767# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
768 if (muscl_dir == 2)
then
770# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
772# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
773#if defined(MFC_OpenACC)
774# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
776# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
777#elif defined(MFC_OpenMP)
778# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
780# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
782# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
784# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
786# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
788# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
798 if (muscl_lim == muscl_lim_unlimited)
then
799 slope = 5e-1_wp*(slopel + sloper)
800 else if (muscl_lim == muscl_lim_minmod)
then
801 if (slopel*sloper > muscl_eps)
then
802 slope = min(abs(slopel), abs(sloper))
804 if (slopel < 0._wp) slope = -slope
805 else if (muscl_lim == muscl_lim_mc)
then
806 if (slopel*sloper > muscl_eps)
then
807 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
808 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
810 if (slopel < 0._wp) slope = -slope
811 else if (muscl_lim == muscl_lim_van_albada)
then
812 if (slopel*sloper > muscl_eps)
then
813 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
815 else if (muscl_lim == muscl_lim_van_leer)
then
816 if (slopel*sloper > muscl_eps)
then
817 slope = 2._wp*slopel*sloper/(slopel + sloper)
819 else if (muscl_lim == muscl_lim_superbee)
then
820 if (slopel*sloper > muscl_eps)
then
821 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
822 & 2._wp*abs(sloper)))
836# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
837#if defined(MFC_OpenACC)
838# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
840# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
841#elif defined(MFC_OpenMP)
842# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
844# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
846# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
849# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
850# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
851# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
852 if (muscl_dir == 3)
then
854# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
856# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
857#if defined(MFC_OpenACC)
858# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
860# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
861#elif defined(MFC_OpenMP)
862# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
864# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
866# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
868# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
870# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
872# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
882 if (muscl_lim == muscl_lim_unlimited)
then
883 slope = 5e-1_wp*(slopel + sloper)
884 else if (muscl_lim == muscl_lim_minmod)
then
885 if (slopel*sloper > muscl_eps)
then
886 slope = min(abs(slopel), abs(sloper))
888 if (slopel < 0._wp) slope = -slope
889 else if (muscl_lim == muscl_lim_mc)
then
890 if (slopel*sloper > muscl_eps)
then
891 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
892 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
894 if (slopel < 0._wp) slope = -slope
895 else if (muscl_lim == muscl_lim_van_albada)
then
896 if (slopel*sloper > muscl_eps)
then
897 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
899 else if (muscl_lim == muscl_lim_van_leer)
then
900 if (slopel*sloper > muscl_eps)
then
901 slope = 2._wp*slopel*sloper/(slopel + sloper)
903 else if (muscl_lim == muscl_lim_superbee)
then
904 if (slopel*sloper > muscl_eps)
then
905 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
906 & 2._wp*abs(sloper)))
920# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
921#if defined(MFC_OpenACC)
922# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
924# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
925#elif defined(MFC_OpenMP)
926# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
928# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
930# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
933# 220 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
936 if (int_comp > 0 .and.
v_size >= eqn_idx%adv%end)
then
937 call nvtxstartrange(
"WENO-INTCOMP")
938# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
939 if (muscl_dir == 1)
then
942# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
943 if (muscl_dir == 2)
then
946# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
947 if (muscl_dir == 3)
then
950# 229 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"