501 subroutine s_muscl(v_vf, vL_rs_vf_x, vR_rs_vf_x, muscl_dir, is1_muscl_d, is2_muscl_d, is3_muscl_d)
503 type(scalar_field),
dimension(1:),
intent(in) :: v_vf
504 real(wp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:),
intent(inout) :: vl_rs_vf_x, vr_rs_vf_x
505 integer,
intent(in) :: muscl_dir
506 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
507 integer ::
j,
k,
l, i
508 real(wp) :: slopel, sloper, slope
515# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
516#if defined(MFC_OpenACC)
517# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
519# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
520#elif defined(MFC_OpenMP)
521# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
523# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
525# 101 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
527 if (muscl_order == muscl_order_first_order)
then
528 if (muscl_dir == 1)
then
530# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
532# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
533#if defined(MFC_OpenACC)
534# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
536# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
537#elif defined(MFC_OpenMP)
538# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
540# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
542# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
544# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
546# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
548# 105 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
549 do i = 1, ubound(v_vf, 1)
553 vl_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
554 vr_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
560# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
561#if defined(MFC_OpenACC)
562# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
564# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
565#elif defined(MFC_OpenMP)
566# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
568# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
570# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
572# 116 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
573 else if (muscl_dir == 2)
then
575# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
577# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
578#if defined(MFC_OpenACC)
579# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
581# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
582#elif defined(MFC_OpenMP)
583# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
585# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
587# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
589# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
591# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
593# 118 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
594 do i = 1, ubound(v_vf, 1)
598 vl_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
599 vr_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
605# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
606#if defined(MFC_OpenACC)
607# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
609# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
610#elif defined(MFC_OpenMP)
611# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
613# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
615# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
617# 129 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
618 else if (muscl_dir == 3)
then
620# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
622# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
623#if defined(MFC_OpenACC)
624# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
626# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
627#elif defined(MFC_OpenMP)
628# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
630# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
632# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
634# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
636# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
638# 131 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
639 do i = 1, ubound(v_vf, 1)
643 vl_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
644 vr_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
650# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
651#if defined(MFC_OpenACC)
652# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
654# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
655#elif defined(MFC_OpenMP)
656# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
658# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
660# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
662# 142 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
668# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
669#if defined(MFC_OpenACC)
670# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
672# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
673#elif defined(MFC_OpenMP)
674# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
676# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
678# 147 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
680 if (muscl_order /= muscl_order_first_order)
then
682# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
684# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
685#if defined(MFC_OpenACC)
686# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
688# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
689#elif defined(MFC_OpenMP)
690# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
692# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
694# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
696# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
698# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
700# 150 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
702 do l = idwbuff(3)%beg, idwbuff(3)%end
703 do k = idwbuff(2)%beg, idwbuff(2)%end
704 do j = idwbuff(1)%beg, idwbuff(1)%end
711# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
712#if defined(MFC_OpenACC)
713# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
715# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
716#elif defined(MFC_OpenMP)
717# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
719# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
721# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
723# 160 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
726 if (muscl_order == muscl_order_second_order)
then
728# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
729# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
730# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
731 if (muscl_dir == 1)
then
732# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
734# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
736# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
737#if defined(MFC_OpenACC)
738# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
740# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
741#elif defined(MFC_OpenMP)
742# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
744# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
746# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
748# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
750# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
752# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
754# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
756# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
758# 174 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
760# 175 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
763# 177 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
765# 178 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
768 if (muscl_lim == muscl_lim_unlimited)
then
769 slope = 5e-1_wp*(slopel + sloper)
770 else if (muscl_lim == muscl_lim_minmod)
then
771 if (slopel*sloper > muscl_eps)
then
772 slope = min(abs(slopel), abs(sloper))
774 if (slopel < 0._wp) slope = -slope
775 else if (muscl_lim == muscl_lim_mc)
then
776 if (slopel*sloper > muscl_eps)
then
777 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
778 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
780 if (slopel < 0._wp) slope = -slope
781 else if (muscl_lim == muscl_lim_van_albada)
then
782 if (slopel*sloper > muscl_eps)
then
783 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
785 else if (muscl_lim == muscl_lim_van_leer)
then
786 if (slopel*sloper > muscl_eps)
then
787 slope = 2._wp*slopel*sloper/(slopel + sloper)
789 else if (muscl_lim == muscl_lim_superbee)
then
790 if (slopel*sloper > muscl_eps)
then
791 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
792 & 2._wp*abs(sloper)))
798# 210 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
802# 213 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
808# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
809#if defined(MFC_OpenACC)
810# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
812# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
813#elif defined(MFC_OpenMP)
814# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
816# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
818# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
820# 218 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
822# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
823# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
824# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
825 if (muscl_dir == 2)
then
826# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
828# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
830# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
831#if defined(MFC_OpenACC)
832# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
834# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
835#elif defined(MFC_OpenMP)
836# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
838# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
840# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
842# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
844# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
846# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
848# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
850# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
852# 174 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
854# 175 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
857# 177 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
859# 178 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
862 if (muscl_lim == muscl_lim_unlimited)
then
863 slope = 5e-1_wp*(slopel + sloper)
864 else if (muscl_lim == muscl_lim_minmod)
then
865 if (slopel*sloper > muscl_eps)
then
866 slope = min(abs(slopel), abs(sloper))
868 if (slopel < 0._wp) slope = -slope
869 else if (muscl_lim == muscl_lim_mc)
then
870 if (slopel*sloper > muscl_eps)
then
871 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
872 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
874 if (slopel < 0._wp) slope = -slope
875 else if (muscl_lim == muscl_lim_van_albada)
then
876 if (slopel*sloper > muscl_eps)
then
877 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
879 else if (muscl_lim == muscl_lim_van_leer)
then
880 if (slopel*sloper > muscl_eps)
then
881 slope = 2._wp*slopel*sloper/(slopel + sloper)
883 else if (muscl_lim == muscl_lim_superbee)
then
884 if (slopel*sloper > muscl_eps)
then
885 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
886 & 2._wp*abs(sloper)))
892# 210 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
896# 213 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
902# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
903#if defined(MFC_OpenACC)
904# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
906# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
907#elif defined(MFC_OpenMP)
908# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
910# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
912# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
914# 218 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
916# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
917# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
918# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
919 if (muscl_dir == 3)
then
920# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
922# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
924# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
925#if defined(MFC_OpenACC)
926# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
928# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
929#elif defined(MFC_OpenMP)
930# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
932# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
934# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
936# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
938# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
940# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
942# 172 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
944# 173 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
946# 174 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
948# 175 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
951# 177 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
953# 178 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
956 if (muscl_lim == muscl_lim_unlimited)
then
957 slope = 5e-1_wp*(slopel + sloper)
958 else if (muscl_lim == muscl_lim_minmod)
then
959 if (slopel*sloper > muscl_eps)
then
960 slope = min(abs(slopel), abs(sloper))
962 if (slopel < 0._wp) slope = -slope
963 else if (muscl_lim == muscl_lim_mc)
then
964 if (slopel*sloper > muscl_eps)
then
965 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
966 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
968 if (slopel < 0._wp) slope = -slope
969 else if (muscl_lim == muscl_lim_van_albada)
then
970 if (slopel*sloper > muscl_eps)
then
971 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
973 else if (muscl_lim == muscl_lim_van_leer)
then
974 if (slopel*sloper > muscl_eps)
then
975 slope = 2._wp*slopel*sloper/(slopel + sloper)
977 else if (muscl_lim == muscl_lim_superbee)
then
978 if (slopel*sloper > muscl_eps)
then
979 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
980 & 2._wp*abs(sloper)))
986# 210 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
990# 213 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
996# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
997#if defined(MFC_OpenACC)
998# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1000# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1001#elif defined(MFC_OpenMP)
1002# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1004# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1006# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1008# 218 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1010# 220 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1013 if (int_comp > 0 .and.
v_size >= eqn_idx%adv%end)
then
1014 call nvtxstartrange(
"WENO-INTCOMP")
1015# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1016 if (muscl_dir == 1)
then
1017# 226 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1020# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1021 if (muscl_dir == 2)
then
1022# 226 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1025# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1026 if (muscl_dir == 3)
then
1027# 226 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
1030# 229 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"