@@ -78,6 +78,8 @@ contains
7878 real (wp) :: gamma_avg
7979 real (wp) :: c_avg
8080 real (wp) :: s_L, s_R, s_M, s_P, s_S
81+ real (wp) :: vel_interface
82+ logical :: need_nc_vel
8183 real (wp) :: xi_M, xi_P
8284 real (wp) :: ptilde_L, ptilde_R
8385 real (wp) :: vel_L_rms, vel_R_rms, vel_avg_rms
@@ -100,6 +102,7 @@ contains
100102 ! Reshaping inputted data based on dimensional splitting direction
101103 call s_initialize_riemann_solver(flux_src_vf, norm_dir)
102104 Re_size_loc1 = Re_size(1 ); Re_size_loc2 = Re_size(2 )
105+ need_nc_vel = hypo_nc_mode == hypo_nc_mode_interface .or. (alt_soundspeed .and. .not. hll_u_interface)
103106 #:for NORM_DIR, XYZ, STENCIL_VAR, COORDS, X_BND, Y_BND, Z_BND in &
104107 [(1 , ' x' , ' j' , ' {STENCIL_IDX}, k, l' , ' is1' , ' is2' , ' is3' ), &
105108 (2 , ' y' , ' k' , ' j, {STENCIL_IDX}, l' , ' is2' , ' is1' , ' is3' ), &
@@ -115,8 +118,8 @@ contains
115118 & gamma_L, gamma_R, pi_inf_L, pi_inf_R, qv_L, qv_R, qv_avg, c_L, c_R, G_L, G_R, damage_L, &
116119 & damage_R, solid_partial_density_L, solid_partial_density_R, rho_avg, H_avg, c_avg, &
117120 & gamma_avg, ptilde_L, ptilde_R, vel_L_rms, vel_R_rms, vel_avg_rms, Ms_L, Ms_R, pres_SL, &
118- & pres_SR, alpha_L_sum, alpha_R_sum, flux_tau_L, flux_tau_R] ' , copyin = ' [norm_dir ]' , &
119- & firstprivate= ' [Re_size_loc1, Re_size_loc2]' )
121+ & pres_SR, alpha_L_sum, alpha_R_sum, flux_tau_L, flux_tau_R, vel_interface ]' , &
122+ & copyin = ' [norm_dir] ' , firstprivate= ' [Re_size_loc1, Re_size_loc2, need_nc_vel ]' )
120123 do l = ${Z_BND}$%beg, ${Z_BND}$%end
121124 do k = ${Y_BND}$%beg, ${Y_BND}$%end
122125 do j = ${X_BND}$%beg, ${X_BND}$%end
@@ -547,19 +550,19 @@ contains
547550 & / (s_M - s_P)
548551 end if
549552
550- ! Export interface velocity for NC RHS
551- if (hypo_nc_mode == hypo_nc_mode_interface .or. (alt_soundspeed .and. .not. hll_u_interface) ) then
553+ ! Export interface velocity for NC RHS and viscous work
554+ if (need_nc_vel .or. viscous ) then
552555 $:GPU_LOOP(parallelism= ' [seq]' )
553556 do i = 1 , num_dims
554557 if (0._wp <= s_L) then
555- nc_iface_vel_rsx_vf(${SF( ' ' )}$, dir_idx(i)) = vel_L(dir_idx(i))
558+ vel_interface = vel_L(dir_idx(i))
556559 else if (s_R <= 0._wp ) then
557- nc_iface_vel_rsx_vf(${SF( ' ' )}$, dir_idx(i)) = vel_R(dir_idx(i))
560+ vel_interface = vel_R(dir_idx(i))
558561 else
559- nc_iface_vel_rsx_vf(${SF(' ' )}$, &
560- & dir_idx(i)) = (s_R* vel_L(dir_idx(i)) - s_L* vel_R(dir_idx(i)))/ (s_R &
561- & - s_L)
562+ vel_interface = (s_R* vel_L(dir_idx(i)) - s_L* vel_R(dir_idx(i)))/ (s_R - s_L)
562563 end if
564+ if (need_nc_vel) nc_iface_vel_rsx_vf(${SF(' ' )}$, dir_idx(i)) = vel_interface
565+ if (viscous) vel_src_rsx_vf(${SF(' ' )}$, dir_idx(i)) = vel_interface
563566 end do
564567 end if
565568
0 commit comments