456 subroutine s_muscl(v_vf, vL_rs_vf_x, vR_rs_vf_x, muscl_dir, is1_muscl_d, &
458 & is2_muscl_d, is3_muscl_d)
460 type(scalar_field),
dimension(1:),
intent(in) :: v_vf
461 real(wp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:),
intent(inout) :: vl_rs_vf_x, vr_rs_vf_x
462 integer,
intent(in) :: muscl_dir
463 type(int_bounds_info),
intent(in) :: is1_muscl_d, is2_muscl_d, is3_muscl_d
464 integer ::
j,
k,
l, i
465 real(wp) :: slopel, sloper, slope
472# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
473#if defined(MFC_OpenACC)
474# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
476# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
477#elif defined(MFC_OpenMP)
478# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
480# 100 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
483 if (muscl_order == 1)
then
484 if (muscl_dir == 1)
then
486# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
488# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
489#if defined(MFC_OpenACC)
490# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
492# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
493#elif defined(MFC_OpenMP)
494# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
496# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
498# 104 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
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 do i = 1, ubound(v_vf, 1)
508 vl_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
509 vr_rs_vf_x(
j,
k,
l, i) = v_vf(i)%sf(
j,
k,
l)
515# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
516#if defined(MFC_OpenACC)
517# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
519# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
520#elif defined(MFC_OpenMP)
521# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
523# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
525# 115 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
527 else if (muscl_dir == 2)
then
529# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
531# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
532#if defined(MFC_OpenACC)
533# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
535# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
536#elif defined(MFC_OpenMP)
537# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
539# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
541# 117 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
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 do i = 1, ubound(v_vf, 1)
551 vl_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
552 vr_rs_vf_x(
k,
j,
l, i) = v_vf(i)%sf(
k,
j,
l)
558# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
559#if defined(MFC_OpenACC)
560# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
562# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
563#elif defined(MFC_OpenMP)
564# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
566# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
568# 128 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
570 else if (muscl_dir == 3)
then
572# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
574# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
575#if defined(MFC_OpenACC)
576# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
578# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
579#elif defined(MFC_OpenMP)
580# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
582# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
584# 130 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
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 do i = 1, ubound(v_vf, 1)
594 vl_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
595 vr_rs_vf_x(
l,
k,
j, i) = v_vf(i)%sf(
l,
k,
j)
601# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
602#if defined(MFC_OpenACC)
603# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
605# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
606#elif defined(MFC_OpenMP)
607# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
609# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
611# 141 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
618# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
619#if defined(MFC_OpenACC)
620# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
622# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
623#elif defined(MFC_OpenMP)
624# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
626# 146 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
629 if (muscl_order /= 1)
then
631# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
633# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
634#if defined(MFC_OpenACC)
635# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
637# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
638#elif defined(MFC_OpenMP)
639# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
641# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
643# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
645# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
647# 149 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
650 do l = idwbuff(3)%beg, idwbuff(3)%end
651 do k = idwbuff(2)%beg, idwbuff(2)%end
652 do j = idwbuff(1)%beg, idwbuff(1)%end
659# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
660#if defined(MFC_OpenACC)
661# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
663# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
664#elif defined(MFC_OpenMP)
665# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
667# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
669# 159 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
673 if (muscl_order == 2)
then
675# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
676# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
677# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
678 if (muscl_dir == 1)
then
680# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
682# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
683#if defined(MFC_OpenACC)
684# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
686# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
687#elif defined(MFC_OpenMP)
688# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
690# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
692# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
694# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
696# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
706 if (muscl_lim == 0)
then
707 slope = 5e-1_wp*(slopel + sloper)
708 else if (muscl_lim == 1)
then
709 if (slopel*sloper > muscl_eps)
then
710 slope = min(abs(slopel), abs(sloper))
712 if (slopel < 0._wp) slope = -slope
713 else if (muscl_lim == 2)
then
714 if (slopel*sloper > muscl_eps)
then
715 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
716 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
718 if (slopel < 0._wp) slope = -slope
719 else if (muscl_lim == 3)
then
720 if (slopel*sloper > muscl_eps)
then
721 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
723 else if (muscl_lim == 4)
then
724 if (slopel*sloper > muscl_eps)
then
725 slope = 2._wp*slopel*sloper/(slopel + sloper)
727 else if (muscl_lim == 5)
then
728 if (slopel*sloper > muscl_eps)
then
729 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
730 & 2._wp*abs(sloper)))
744# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
745#if defined(MFC_OpenACC)
746# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
748# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
749#elif defined(MFC_OpenMP)
750# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
752# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
754# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
757# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
758# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
759# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
760 if (muscl_dir == 2)
then
762# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
764# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
765#if defined(MFC_OpenACC)
766# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
768# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
769#elif defined(MFC_OpenMP)
770# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
772# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
774# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
776# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
778# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
788 if (muscl_lim == 0)
then
789 slope = 5e-1_wp*(slopel + sloper)
790 else if (muscl_lim == 1)
then
791 if (slopel*sloper > muscl_eps)
then
792 slope = min(abs(slopel), abs(sloper))
794 if (slopel < 0._wp) slope = -slope
795 else if (muscl_lim == 2)
then
796 if (slopel*sloper > muscl_eps)
then
797 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
798 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
800 if (slopel < 0._wp) slope = -slope
801 else if (muscl_lim == 3)
then
802 if (slopel*sloper > muscl_eps)
then
803 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
805 else if (muscl_lim == 4)
then
806 if (slopel*sloper > muscl_eps)
then
807 slope = 2._wp*slopel*sloper/(slopel + sloper)
809 else if (muscl_lim == 5)
then
810 if (slopel*sloper > muscl_eps)
then
811 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
812 & 2._wp*abs(sloper)))
826# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
827#if defined(MFC_OpenACC)
828# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
830# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
831#elif defined(MFC_OpenMP)
832# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
834# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
836# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
839# 168 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
840# 169 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
841# 170 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
842 if (muscl_dir == 3)
then
844# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
846# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
847#if defined(MFC_OpenACC)
848# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
850# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
851#elif defined(MFC_OpenMP)
852# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
854# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
856# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
858# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
860# 171 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
870 if (muscl_lim == 0)
then
871 slope = 5e-1_wp*(slopel + sloper)
872 else if (muscl_lim == 1)
then
873 if (slopel*sloper > muscl_eps)
then
874 slope = min(abs(slopel), abs(sloper))
876 if (slopel < 0._wp) slope = -slope
877 else if (muscl_lim == 2)
then
878 if (slopel*sloper > muscl_eps)
then
879 slope = min(2._wp*abs(slopel), 2._wp*abs(sloper))
880 slope = min(slope, 5e-1_wp*(abs(slopel) + abs(sloper)))
882 if (slopel < 0._wp) slope = -slope
883 else if (muscl_lim == 3)
then
884 if (slopel*sloper > muscl_eps)
then
885 slope = ((slopel + sloper)*slopel*sloper)/(slopel**2._wp + sloper**2._wp)
887 else if (muscl_lim == 4)
then
888 if (slopel*sloper > muscl_eps)
then
889 slope = 2._wp*slopel*sloper/(slopel + sloper)
891 else if (muscl_lim == 5)
then
892 if (slopel*sloper > muscl_eps)
then
893 slope = -1._wp*min(-min(2._wp*abs(slopel), abs(sloper)), -min(abs(slopel), &
894 & 2._wp*abs(sloper)))
908# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
909#if defined(MFC_OpenACC)
910# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
912# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
913#elif defined(MFC_OpenMP)
914# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
916# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
918# 217 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
921# 220 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
924 if (int_comp > 0 .and.
v_size >= eqn_idx%adv%end)
then
925 call nvtxstartrange(
"WENO-INTCOMP")
926# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
927 if (muscl_dir == 1)
then
930# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
931 if (muscl_dir == 2)
then
934# 225 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"
935 if (muscl_dir == 3)
then
938# 229 "/home/runner/work/MFC/MFC/src/simulation/m_muscl.fpp"