@@ -134,10 +134,12 @@ module m_cbc
134134
135135 integer :: bcxb, bcxe, bcyb, bcye, bczb, bcze
136136
137+ integer :: cbc_dir, cbc_loc
138+
137139!$acc declare create(q_prim_rsx_vf, q_prim_rsy_vf, q_prim_rsz_vf, F_rsx_vf, F_src_rsx_vf,flux_rsx_vf, flux_src_rsx_vf, &
138140!$acc F_rsy_vf, F_src_rsy_vf,flux_rsy_vf, flux_src_rsy_vf, F_rsz_vf, F_src_rsz_vf,flux_rsz_vf, flux_src_rsz_vf,alpha_rho,vel,adv,mf,Re, &
139141!$acc dalpha_rho_ds,dvel_ds,dadv_ds,lambda,L,ds,fd_coef_x,fd_coef_y,fd_coef_z, &
140- !$acc pi_coef_x,pi_coef_y,pi_coef_z, bcxb, bcxe, bcyb, bcye, bczb, bcze, is1, is2, is3, dj)
142+ !$acc pi_coef_x,pi_coef_y,pi_coef_z, bcxb, bcxe, bcyb, bcye, bczb, bcze, is1, is2, is3, dj, cbc_dir, cbc_loc )
141143
142144contains
143145
@@ -633,7 +635,7 @@ contains
633635 !! @param iy Index bound in the second coordinate direction
634636 !! @param iz Index bound in the third coordinate direction
635637 subroutine s_cbc (q_prim_vf , flux_vf , flux_src_vf , & ! -----------------
636- cbc_dir , cbc_loc , &
638+ cbc_dir_norm , cbc_loc_norm , &
637639 ix , iy , iz )
638640
639641 type(scalar_field), &
@@ -644,7 +646,7 @@ contains
644646 dimension (sys_size), &
645647 intent (INOUT ) :: flux_vf, flux_src_vf
646648
647- integer , intent (IN ) :: cbc_dir, cbc_loc
649+ integer , intent (IN ) :: cbc_dir_norm, cbc_loc_norm
648650
649651 type(int_bounds_info), intent (IN ) :: ix, iy, iz
650652
@@ -685,6 +687,12 @@ contains
685687
686688 ! Allocating L, see Thompson (1987 , 1990 )
687689
690+ cbc_dir = cbc_dir_norm
691+ cbc_loc = cbc_loc_norm
692+
693+ !$acc update device(cbc_dir, cbc_loc)
694+
695+
688696 call s_initialize_cbc(q_prim_vf, flux_vf, flux_src_vf, &
689697 cbc_dir, cbc_loc, &
690698 ix, iy, iz)
@@ -729,7 +737,6 @@ contains
729737
730738 ! PI4 of flux_rs_vf and flux_src_rs_vf at j = 1 / 2 , 3 / 2 =============
731739 elseif (weno_order == 5 ) then
732-
733740 call s_convert_primitive_to_flux_variables(q_prim_rs${XYZ}$_vf, &
734741 F_rs${XYZ}$_vf, &
735742 F_src_rs${XYZ}$_vf, &
@@ -905,19 +912,19 @@ contains
905912
906913 ! call s_compute_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
907914
908- if ((cbc_loc == - 1 .and. bcxb == - 5 ) .or. (cbc_loc == 1 .and. bcxe == - 5 )) then
915+ if ((cbc_loc == - 1 .and. bc${XYZ}$b == - 5 ) .or. (cbc_loc == 1 .and. bc${XYZ}$e == - 5 )) then
909916 call s_compute_slip_wall_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
910- else if ((cbc_loc == - 1 .and. bcxb == - 6 ) .or. (cbc_loc == 1 .and. bcxe == - 6 )) then
911- call s_compute_nonreflecting_subsonic_buffer_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
912- else if ((cbc_loc == - 1 .and. bcxb == - 7 ) .or. (cbc_loc == 1 .and. bcxe == - 7 )) then
913- call s_compute_nonreflecting_subsonic_inflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
914- else if ((cbc_loc == - 1 .and. bcxb == - 8 ) .or. (cbc_loc == 1 .and. bcxe == - 8 )) then
915- call s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
916- else if ((cbc_loc == - 1 .and. bcxb == - 9 ) .or. (cbc_loc == 1 .and. bcxe == - 9 )) then
917- call s_compute_force_free_subsonic_outflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
918- else if ((cbc_loc == - 1 .and. bcxb == - 10 ) .or. (cbc_loc == 1 .and. bcxe == - 10 )) then
919- call s_compute_constant_pressure_subsonic_outflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
920- else if ((cbc_loc == - 1 .and. bcxb == - 11 ) .or. (cbc_loc == 1 .and. bcxe == - 11 )) then
917+ else if ((cbc_loc == - 1 .and. bc${XYZ}$b == - 6 ) .or. (cbc_loc == 1 .and. bc${XYZ}$e == - 6 )) then
918+ call s_compute_nonreflecting_subsonic_buffer_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
919+ else if ((cbc_loc == - 1 .and. bc${XYZ}$b == - 7 ) .or. (cbc_loc == 1 .and. bc${XYZ}$e == - 7 )) then
920+ call s_compute_nonreflecting_subsonic_inflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
921+ else if ((cbc_loc == - 1 .and. bc${XYZ}$b == - 8 ) .or. (cbc_loc == 1 .and. bc${XYZ}$e == - 8 )) then
922+ call s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
923+ else if ((cbc_loc == - 1 .and. bc${XYZ}$b == - 9 ) .or. (cbc_loc == 1 .and. bc${XYZ}$e == - 9 )) then
924+ call s_compute_force_free_subsonic_outflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
925+ else if ((cbc_loc == - 1 .and. bc${XYZ}$b == - 10 ) .or. (cbc_loc == 1 .and. bc${XYZ}$e == - 10 )) then
926+ call s_compute_constant_pressure_subsonic_outflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
927+ else if ((cbc_loc == - 1 .and. bc${XYZ}$b == - 11 ) .or. (cbc_loc == 1 .and. bc${XYZ}$e == - 11 )) then
921928 call s_compute_supersonic_inflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
922929 else
923930 call s_compute_supersonic_outflow_L(dflt_int, lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds) ! --------------
@@ -942,7 +949,7 @@ call s_compute_constant_pressure_subsonic_outflow_L(dflt_int, lambda, L, rho, c,
942949 dvel_dt(dir_idx(i)) = dir_flg(dir_idx(i))* &
943950 (L(1 ) - L(advxe))/ (2d0 * rho* c) + &
944951 (dir_flg(dir_idx(i)) - 1d0 )* &
945- L(momxb + i)
952+ L(momxb + i - 1 )
946953 end do
947954
948955 vel_dv_dt_sum = 0d0
@@ -984,18 +991,18 @@ call s_compute_constant_pressure_subsonic_outflow_L(dflt_int, lambda, L, rho, c,
984991 !$acc loop seq
985992 do i = 1 , contxe
986993 flux_rs${XYZ}$_vf(- 1 , k, r, i) = flux_rs${XYZ}$_vf(0 , k, r, i) &
987- + ds(0 )* dalpha_rho_dt(i)
994+ + ds(0 )* sign ( 1d0 , - real (cbc_loc, kind ( 0d0 ))) * dalpha_rho_dt(i)
988995 end do
989996
990997 !$acc loop seq
991998 do i = momxb, momxe
992999 flux_rs${XYZ}$_vf(- 1 , k, r, i) = flux_rs${XYZ}$_vf(0 , k, r, i) &
993- + ds(0 )* (vel(i - contxe)* drho_dt &
1000+ + ds(0 )* sign ( 1d0 , - real (cbc_loc, kind ( 0d0 ))) * (vel(i - contxe)* drho_dt &
9941001 + rho* dvel_dt(i - contxe))
9951002 end do
9961003
9971004 flux_rs${XYZ}$_vf(- 1 , k, r, E_idx) = flux_rs${XYZ}$_vf(0 , k, r, E_idx) &
998- + ds(0 )* (pres* dgamma_dt &
1005+ + ds(0 )* sign ( 1d0 , - real (cbc_loc, kind ( 0d0 ))) * (pres* dgamma_dt &
9991006 + gamma* dpres_dt &
10001007 + dpi_inf_dt &
10011008 + rho* vel_dv_dt_sum &
@@ -1015,21 +1022,20 @@ call s_compute_constant_pressure_subsonic_outflow_L(dflt_int, lambda, L, rho, c,
10151022 * (flux_rs${XYZ}$_vf(0 , k, r, i) &
10161023 + vel(dir_idx(1 )) &
10171024 * flux_src_rs${XYZ}$_vf(0 , k, r, i) &
1018- + ds(0 )* dadv_dt(i - E_idx))
1025+ + ds(0 )* sign ( 1d0 , - real (cbc_loc, kind ( 0d0 ))) * dadv_dt(i - E_idx))
10191026 end do
10201027
10211028 else
10221029
10231030 !$acc loop seq
10241031 do i = advxb, advxe
1025- flux_rs${XYZ}$_vf(- 1 , k, r, i) = flux_rs${XYZ}$_vf(0 , k, r, i) - &
1026- adv(i - E_idx)* flux_src_rs${XYZ}$_vf(0 , k, r, i) + &
1027- ds(0 )* dadv_dt(i - E_idx)
1032+ flux_rs${XYZ}$_vf(- 1 , k, r, i) = flux_rs${XYZ}$_vf(0 , k, r, i) + &
1033+ sign (1d0 , - real (cbc_loc, kind (0d0 )))* ds(0 )* dadv_dt(i - E_idx)
10281034 end do
10291035
10301036 !$acc loop seq
10311037 do i = advxb, advxe
1032- flux_src_rs${XYZ}$_vf(- 1 , k, r, i) = 0d0
1038+ flux_src_rs${XYZ}$_vf(- 1 , k, r, i) = flux_src_rs${XYZ}$_vf( 0 , k, r, i)
10331039 end do
10341040
10351041 end if
@@ -1157,7 +1163,7 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
11571163
11581164 integer :: i !> Generic loop iterator
11591165
1160- L(1 ) = lambda(1 )* (dpres_ds - rho* c* dvel_ds(dir_idx(1 )))
1166+ L(1 ) = lambda(1 )* (dpres_ds - rho* c* dvel_ds(dir_idx(1 )))
11611167
11621168 do i = 2 , momxb
11631169 L(i) = lambda(2 )* (c* c* dalpha_rho_ds(i - 1 ) - mf(i - 1 )* dpres_ds)
@@ -1403,19 +1409,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
14031409 end do
14041410 end do
14051411
1406- !$acc parallel loop collapse(3 ) gang vector default(present)
1407- do r = is3%beg, is3%end
1408- do k = is2%beg, is2%end
1409- do j = - 1 , buff_size
1410- flux_src_rsx_vf(j, k, r, advxb) = &
1411- flux_src_vf(advxb)%sf(dj* ((m - 1 ) - 2 * j) + j, k, r)
1412- end do
1413- end do
1414- end do
1415-
1416- if (riemann_solver == 1 ) then
1412+ if (riemann_solver == 1 ) then
14171413!$acc parallel loop collapse(4 ) gang vector default(present)
1418- do i = advxb + 1 , advxe
1414+ do i = 1 , advxe
14191415 do r = is3%beg, is3%end
14201416 do k = is2%beg, is2%end
14211417 do j = - 1 , buff_size
@@ -1437,6 +1433,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
14371433 end do
14381434 end do
14391435 end if
1436+
1437+
1438+
14401439 ! END: Reshaping Inputted Data in x- direction ======================
14411440
14421441 ! Reshaping Inputted Data in y- direction ===========================
@@ -1488,19 +1487,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
14881487 end do
14891488 end do
14901489
1491- !$acc parallel loop collapse(3 ) gang vector default(present)
1492- do r = is3%beg, is3%end
1493- do k = is2%beg, is2%end
1494- do j = - 1 , buff_size
1495- flux_src_rsy_vf(j, k, r, advxb) = &
1496- flux_src_vf(advxb)%sf(k, dj* ((n - 1 ) - 2 * j) + j, r)
1497- end do
1498- end do
1499- end do
1500-
1501- if (riemann_solver == 1 ) then
1490+ if (riemann_solver == 1 ) then
15021491!$acc parallel loop collapse(4 ) gang vector default(present)
1503- do i = advxb + 1 , advxe
1492+ do i = 1 , advxe
15041493 do r = is3%beg, is3%end
15051494 do k = is2%beg, is2%end
15061495 do j = - 1 , buff_size
@@ -1521,7 +1510,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
15211510 end do
15221511 end do
15231512 end do
1524- end if
1513+ end if
1514+
1515+
15251516 ! END: Reshaping Inputted Data in y- direction ======================
15261517
15271518 ! Reshaping Inputted Data in z- direction ===========================
@@ -1573,19 +1564,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
15731564 end do
15741565 end do
15751566
1576- !$acc parallel loop collapse(3 ) gang vector default(present)
1577- do r = is3%beg, is3%end
1578- do k = is2%beg, is2%end
1579- do j = - 1 , buff_size
1580- flux_src_rsz_vf(j, k, r, advxb) = &
1581- flux_src_vf(advxb)%sf(r, k, dj* ((p - 1 ) - 2 * j) + j)
1582- end do
1583- end do
1584- end do
1585-
1586- if (riemann_solver == 1 ) then
1567+ if (riemann_solver == 1 ) then
15871568!$acc parallel loop collapse(4 ) gang vector default(present)
1588- do i = advxb + 1 , advxe
1569+ do i = 1 , advxe
15891570 do r = is3%beg, is3%end
15901571 do k = is2%beg, is2%end
15911572 do j = - 1 , buff_size
@@ -1605,9 +1586,10 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
16051586 sign (1d0 , - real (cbc_loc, kind (0d0 )))
16061587 end do
16071588 end do
1608- end do
1589+ end do
16091590 end if
16101591
1592+
16111593 end if
16121594 ! END: Reshaping Inputted Data in z- direction ======================
16131595
@@ -1671,19 +1653,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
16711653 end do
16721654 end do
16731655
1674- !$acc parallel loop collapse(3 ) gang vector default(present)
1675- do r = is3%beg, is3%end
1676- do k = is2%beg, is2%end
1677- do j = - 1 , buff_size
1678- flux_src_vf(advxb)%sf(dj* ((m - 1 ) - 2 * j) + j, k, r) = &
1679- flux_src_rsx_vf(j, k, r, advxb)
1680- end do
1681- end do
1682- end do
1683-
1684- if (riemann_solver == 1 ) then
1656+ if (riemann_solver == 1 ) then
16851657!$acc parallel loop collapse(4 ) gang vector default(present)
1686- do i = advxb + 1 , advxe
1658+ do i = 1 , advxe
16871659 do r = is3%beg, is3%end
16881660 do k = is2%beg, is2%end
16891661 do j = - 1 , buff_size
@@ -1700,7 +1672,7 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
17001672 do j = - 1 , buff_size
17011673 flux_src_vf(advxb)%sf(dj* ((m - 1 ) - 2 * j) + j, k, r) = &
17021674 flux_src_rsx_vf(j, k, r, advxb)* &
1703- sign (1d0 , - real (cbc_loc, kind (0d0 )))
1675+ sign (1d0 , - real (cbc_loc, kind (0d0 )))
17041676 end do
17051677 end do
17061678 end do
@@ -1733,19 +1705,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
17331705 end do
17341706 end do
17351707
1736- !$acc parallel loop collapse(3 ) gang vector default(present)
1737- do r = is3%beg, is3%end
1738- do k = is2%beg, is2%end
1739- do j = - 1 , buff_size
1740- flux_src_vf(advxb)%sf(k, dj* ((n - 1 ) - 2 * j) + j, r) = &
1741- flux_src_rsy_vf(j, k, r, advxb)
1742- end do
1743- end do
1744- end do
1745-
1746- if (riemann_solver == 1 ) then
1708+ if (riemann_solver == 1 ) then
17471709!$acc parallel loop collapse(4 ) gang vector default(present)
1748- do i = advxb + 1 , advxe
1710+ do i = 1 , advxe
17491711 do r = is3%beg, is3%end
17501712 do k = is2%beg, is2%end
17511713 do j = - 1 , buff_size
@@ -1762,11 +1724,12 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
17621724 do j = - 1 , buff_size
17631725 flux_src_vf(advxb)%sf(k, dj* ((n - 1 ) - 2 * j) + j, r) = &
17641726 flux_src_rsy_vf(j, k, r, advxb)* &
1765- sign (1d0 , - real (cbc_loc, kind (0d0 )))
1727+ sign (1d0 , - real (cbc_loc, kind (0d0 )))
17661728 end do
17671729 end do
1768- end do
1730+ end do
17691731 end if
1732+
17701733 ! END: Reshaping Outputted Data in y- direction =====================
17711734
17721735 ! Reshaping Outputted Data in z- direction ==========================
@@ -1795,19 +1758,9 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
17951758 end do
17961759 end do
17971760
1798- !$acc parallel loop collapse(3 ) gang vector default(present)
1799- do r = is3%beg, is3%end
1800- do k = is2%beg, is2%end
1801- do j = - 1 , buff_size
1802- flux_src_vf(advxb)%sf(r, k, dj* ((p - 1 ) - 2 * j) + j) = &
1803- flux_src_rsz_vf(j, k, r, advxb)
1804- end do
1805- end do
1806- end do
1807-
1808- if (riemann_solver == 1 ) then
1761+ if (riemann_solver == 1 ) then
18091762!$acc parallel loop collapse(4 ) gang vector default(present)
1810- do i = advxb + 1 , advxe
1763+ do i = 1 , advxe
18111764 do r = is3%beg, is3%end
18121765 do k = is2%beg, is2%end
18131766 do j = - 1 , buff_size
@@ -1824,12 +1777,13 @@ subroutine s_compute_nonreflecting_subsonic_outflow_L(dflt_int, lambda, L, rho,
18241777 do j = - 1 , buff_size
18251778 flux_src_vf(advxb)%sf(r, k, dj* ((p - 1 ) - 2 * j) + j) = &
18261779 flux_src_rsz_vf(j, k, r, advxb)* &
1827- sign (1d0 , - real (cbc_loc, kind (0d0 )))
1780+ sign (1d0 , - real (cbc_loc, kind (0d0 )))
18281781 end do
18291782 end do
18301783 end do
18311784 end if
18321785
1786+
18331787 end if
18341788 ! END: Reshaping Outputted Data in z- direction =====================
18351789
0 commit comments