476 subroutine s_muscl(v_vf, vL_rs_vf_x, vR_rs_vf_x, muscl_dir, is1_muscl_d, is2_muscl_d, is3_muscl_d)
478 type(scalar_field),
dimension(1:),
intent(in) :: v_vf
479 real(wp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:),
intent(inout) :: vl_rs_vf_x, vr_rs_vf_x
480 integer,
intent(in) :: muscl_dir
481 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
482 integer ::
j,
k,
l, i
483 real(wp) :: slopel, sloper, slope
490# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
491#if defined(MFC_OpenACC)
492# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
494# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
495#elif defined(MFC_OpenMP)
496# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
498# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
501 if (muscl_order == muscl_order_first_order)
then
502 if (muscl_dir == 1)
then
504# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
506# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
507#if defined(MFC_OpenACC)
508# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
510# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
511#elif defined(MFC_OpenMP)
512# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
514# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
516# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
518# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
520# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
522 do i = 1, ubound(v_vf, 1)
526 vl_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
527 vr_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
533# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
534#if defined(MFC_OpenACC)
535# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
537# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
538#elif defined(MFC_OpenMP)
539# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
541# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
543# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
545 else if (muscl_dir == 2)
then
547# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
549# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
550#if defined(MFC_OpenACC)
551# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
553# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
554#elif defined(MFC_OpenMP)
555# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
557# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
559# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
561# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
563# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
565 do i = 1, ubound(v_vf, 1)
569 vl_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
570 vr_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
576# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
577#if defined(MFC_OpenACC)
578# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
580# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
581#elif defined(MFC_OpenMP)
582# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
584# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
586# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
588 else if (muscl_dir == 3)
then
590# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
592# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
593#if defined(MFC_OpenACC)
594# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
596# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
597#elif defined(MFC_OpenMP)
598# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
600# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
602# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
604# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
606# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
608 do i = 1, ubound(v_vf, 1)
612 vl_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
613 vr_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
619# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
620#if defined(MFC_OpenACC)
621# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
623# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
624#elif defined(MFC_OpenMP)
625# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
627# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
629# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
636# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
637#if defined(MFC_OpenACC)
638# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
640# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
641#elif defined(MFC_OpenMP)
642# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
644# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
647 if (muscl_order /= muscl_order_first_order)
then
649# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
651# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
652#if defined(MFC_OpenACC)
653# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
655# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
656#elif defined(MFC_OpenMP)
657# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
659# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
661# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
663# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
665# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
668 do l = idwbuff(3)%beg, idwbuff(3)%end
669 do k = idwbuff(2)%beg, idwbuff(2)%end
670 do j = idwbuff(1)%beg, idwbuff(1)%end
677# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
678#if defined(MFC_OpenACC)
679# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
681# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
682#elif defined(MFC_OpenMP)
683# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
685# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
687# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
691 if (muscl_order == muscl_order_second_order)
then
693# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
694# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
695# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
696 if (muscl_dir == 1)
then
698# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
700# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
701#if defined(MFC_OpenACC)
702# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
704# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
705#elif defined(MFC_OpenMP)
706# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
708# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
710# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
712# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
714# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
716# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
726 if (muscl_lim == muscl_lim_unlimited)
then
727 slope = 5e-1_wp*(slopel + sloper)
728 else if (muscl_lim == muscl_lim_minmod)
then
729 if (slopel*sloper > muscl_eps)
then
730 slope = min(abs(slopel), abs(sloper))
732 if (slopel < 0._wp) slope = -slope
733 else if (muscl_lim == muscl_lim_mc)
then
734 if (slopel*sloper > muscl_eps)
then
735 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
736 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
738 if (slopel < 0._wp) slope = -slope
739 else if (muscl_lim == muscl_lim_van_albada)
then
740 if (slopel*sloper > muscl_eps)
then
741 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
743 else if (muscl_lim == muscl_lim_van_leer)
then
744 if (slopel*sloper > muscl_eps)
then
745 slope = 2._wp*slopel*sloper/(slopel + sloper)
747 else if (muscl_lim == muscl_lim_superbee)
then
748 if (slopel*sloper > muscl_eps)
then
749 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
750 & 2._wp*abs(sloper)))
764# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
765#if defined(MFC_OpenACC)
766# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
768# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
769#elif defined(MFC_OpenMP)
770# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
772# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
774# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
777# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
778# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
779# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
780 if (muscl_dir == 2)
then
782# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
784# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
785#if defined(MFC_OpenACC)
786# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
788# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
789#elif defined(MFC_OpenMP)
790# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
792# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
794# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
796# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
798# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
800# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
810 if (muscl_lim == muscl_lim_unlimited)
then
811 slope = 5e-1_wp*(slopel + sloper)
812 else if (muscl_lim == muscl_lim_minmod)
then
813 if (slopel*sloper > muscl_eps)
then
814 slope = min(abs(slopel), abs(sloper))
816 if (slopel < 0._wp) slope = -slope
817 else if (muscl_lim == muscl_lim_mc)
then
818 if (slopel*sloper > muscl_eps)
then
819 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
820 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
822 if (slopel < 0._wp) slope = -slope
823 else if (muscl_lim == muscl_lim_van_albada)
then
824 if (slopel*sloper > muscl_eps)
then
825 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
827 else if (muscl_lim == muscl_lim_van_leer)
then
828 if (slopel*sloper > muscl_eps)
then
829 slope = 2._wp*slopel*sloper/(slopel + sloper)
831 else if (muscl_lim == muscl_lim_superbee)
then
832 if (slopel*sloper > muscl_eps)
then
833 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
834 & 2._wp*abs(sloper)))
848# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
849#if defined(MFC_OpenACC)
850# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
852# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
853#elif defined(MFC_OpenMP)
854# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
856# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
858# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
861# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
862# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
863# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
864 if (muscl_dir == 3)
then
866# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
868# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
869#if defined(MFC_OpenACC)
870# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
872# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
873#elif defined(MFC_OpenMP)
874# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
876# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
878# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
880# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
882# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
884# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
894 if (muscl_lim == muscl_lim_unlimited)
then
895 slope = 5e-1_wp*(slopel + sloper)
896 else if (muscl_lim == muscl_lim_minmod)
then
897 if (slopel*sloper > muscl_eps)
then
898 slope = min(abs(slopel), abs(sloper))
900 if (slopel < 0._wp) slope = -slope
901 else if (muscl_lim == muscl_lim_mc)
then
902 if (slopel*sloper > muscl_eps)
then
903 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
904 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
906 if (slopel < 0._wp) slope = -slope
907 else if (muscl_lim == muscl_lim_van_albada)
then
908 if (slopel*sloper > muscl_eps)
then
909 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
911 else if (muscl_lim == muscl_lim_van_leer)
then
912 if (slopel*sloper > muscl_eps)
then
913 slope = 2._wp*slopel*sloper/(slopel + sloper)
915 else if (muscl_lim == muscl_lim_superbee)
then
916 if (slopel*sloper > muscl_eps)
then
917 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
918 & 2._wp*abs(sloper)))
932# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
933#if defined(MFC_OpenACC)
934# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
936# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
937#elif defined(MFC_OpenMP)
938# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
940# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
942# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
945# 220 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
948 if (int_comp > 0 .and.
v_size >= eqn_idx%adv%end)
then
949 call nvtxstartrange(
"WENO-INTCOMP")
950# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
951 if (muscl_dir == 1)
then
954# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
955 if (muscl_dir == 2)
then
958# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
959 if (muscl_dir == 3)
then
962# 229 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"