Skip to content

Commit 04b0f9e

Browse files
committed
Updated start point
1 parent e873338 commit 04b0f9e

File tree

1 file changed

+102
-1
lines changed

1 file changed

+102
-1
lines changed

src/simulation/m_viscous.f90

Lines changed: 102 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ end subroutine s_compute_fd_gradient ! --------------------------------------
646646
!! @param q_cons_vf Cell-averaged conservative variables
647647
!! @param q_prim_vf Cell-averaged primitive variables
648648
!! @param rhs_vf Cell-averaged RHS variables
649-
subroutine s_get_viscous() ! -------
649+
subroutine s_get_viscous()
650650

651651
integer :: i, j, k, l, r !< Generic loop iterators
652652

@@ -1185,4 +1185,105 @@ subroutine s_apply_scalar_divergence_theorem(vL_vf, vR_vf, & ! --------
11851185

11861186
end subroutine s_apply_scalar_divergence_theorem ! ---------------------
11871187

1188+
subroutine s_reconstruct_cell_boundary_values_visc(v_vf, vL_x_flat, vL_y_flat, vL_z_flat, vR_x_flat, vR_y_flat, vR_z_flat, & ! -
1189+
norm_dir, vL_prim_vf, vR_prim_vf)
1190+
1191+
type(scalar_field), dimension(iv%beg:iv%end), intent(IN) :: v_vf
1192+
type(scalar_field), dimension(iv%beg:iv%end), intent(INOUT) :: vL_prim_vf, vR_prim_vf
1193+
1194+
real(kind(0d0)), dimension(startx:, starty:, startz:, 1:), intent(INOUT) :: vL_x_flat, vL_y_flat, vL_z_flat, vR_x_flat, vR_y_flat, vR_z_flat
1195+
1196+
integer, intent(IN) :: norm_dir
1197+
1198+
integer :: weno_dir !< Coordinate direction of the WENO reconstruction
1199+
1200+
integer :: i, j, k, l
1201+
! Reconstruction in s1-direction ===================================
1202+
1203+
if (norm_dir == 1) then
1204+
is1 = ix; is2 = iy; is3 = iz
1205+
weno_dir = 1; is1%beg = is1%beg + weno_polyn
1206+
is1%end = is1%end - weno_polyn
1207+
1208+
elseif (norm_dir == 2) then
1209+
is1 = iy; is2 = ix; is3 = iz
1210+
weno_dir = 2; is1%beg = is1%beg + weno_polyn
1211+
is1%end = is1%end - weno_polyn
1212+
1213+
else
1214+
is1 = iz; is2 = iy; is3 = ix
1215+
weno_dir = 3; is1%beg = is1%beg + weno_polyn
1216+
is1%end = is1%end - weno_polyn
1217+
1218+
end if
1219+
1220+
!$acc update device(is1, is2, is3, iv)
1221+
1222+
if (n > 0) then
1223+
if (p > 0) then
1224+
1225+
call s_weno_alt(v_vf(iv%beg:iv%end), &
1226+
vL_x_flat(:, :, :, iv%beg:iv%end), vL_y_flat(:, :, :, iv%beg:iv%end), vL_z_flat(:, :, :, iv%beg:iv%end), vR_x_flat(:, :, :, iv%beg:iv%end), vR_y_flat(:, :, :, iv%beg:iv%end), vR_z_flat(:, :, :, iv%beg:iv%end), &
1227+
norm_dir, weno_dir, &
1228+
is1, is2, is3)
1229+
else
1230+
call s_weno_alt(v_vf(iv%beg:iv%end), &
1231+
vL_x_flat(:, :, :, iv%beg:iv%end), vL_y_flat(:, :, :, iv%beg:iv%end), vL_z_flat(:, :, :, :), vR_x_flat(:, :, :, iv%beg:iv%end), vR_y_flat(:, :, :, iv%beg:iv%end), vR_z_flat(:, :, :, :), &
1232+
norm_dir, weno_dir, &
1233+
is1, is2, is3)
1234+
end if
1235+
else
1236+
1237+
call s_weno_alt(v_vf(iv%beg:iv%end), &
1238+
vL_x_flat(:, :, :, iv%beg:iv%end), vL_y_flat(:, :, :, :), vL_z_flat(:, :, :, :), vR_x_flat(:, :, :, iv%beg:iv%end), vR_y_flat(:, :, :, :), vR_z_flat(:, :, :, :), &
1239+
norm_dir, weno_dir, &
1240+
is1, is2, is3)
1241+
end if
1242+
1243+
if (any(Re_size > 0)) then
1244+
if (weno_Re_flux) then
1245+
if (norm_dir == 2) then
1246+
!$acc parallel loop collapse(4) gang vector default(present)
1247+
do i = iv%beg, iv%end
1248+
do l = is3%beg, is3%end
1249+
do j = is1%beg, is1%end
1250+
do k = is2%beg, is2%end
1251+
vL_prim_vf(i)%sf(k, j, l) = vL_y_flat(j, k, l, i)
1252+
vR_prim_vf(i)%sf(k, j, l) = vR_y_flat(j, k, l, i)
1253+
end do
1254+
end do
1255+
end do
1256+
end do
1257+
elseif (norm_dir == 3) then
1258+
!$acc parallel loop collapse(4) gang vector default(present)
1259+
do i = iv%beg, iv%end
1260+
do j = is1%beg, is1%end
1261+
do k = is2%beg, is2%end
1262+
do l = is3%beg, is3%end
1263+
vL_prim_vf(i)%sf(l, k, j) = vL_z_flat(j, k, l, i)
1264+
vR_prim_vf(i)%sf(l, k, j) = vR_z_flat(j, k, l, i)
1265+
end do
1266+
end do
1267+
end do
1268+
end do
1269+
elseif (norm_dir == 1) then
1270+
!$acc parallel loop collapse(4) gang vector default(present)
1271+
do i = iv%beg, iv%end
1272+
do l = is3%beg, is3%end
1273+
do k = is2%beg, is2%end
1274+
do j = is1%beg, is1%end
1275+
vL_prim_vf(i)%sf(j, k, l) = vL_x_flat(j, k, l, i)
1276+
vR_prim_vf(i)%sf(j, k, l) = vR_x_flat(j, k, l, i)
1277+
end do
1278+
end do
1279+
end do
1280+
end do
1281+
end if
1282+
end if
1283+
end if
1284+
1285+
! ==================================================================
1286+
1287+
end subroutine s_reconstruct_cell_boundary_values_visc ! --------------------
1288+
11881289
end module m_viscous

0 commit comments

Comments
 (0)