Skip to content

Commit 0f3c739

Browse files
committed
CI probe: in-situ check of the alt_soundspeed bulk moduli
1 parent fc65f7e commit 0f3c739

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

src/simulation/m_rhs.fpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ module m_rhs
121121
real(wp), allocatable, dimension(:,:,:,:) :: qL_rsx_vf, qR_rsx_vf
122122
real(wp), allocatable, dimension(:,:,:,:) :: dqL_rsx_vf, dqR_rsx_vf
123123
$:GPU_DECLARE(create='[blkmod1, blkmod2, alpha1, alpha2, Kterm]')
124+
logical :: probe_first = .true.
124125
$:GPU_DECLARE(create='[qL_rsx_vf, qR_rsx_vf]')
125126
$:GPU_DECLARE(create='[dqL_rsx_vf, dqR_rsx_vf]')
126127
@@ -1057,6 +1058,8 @@ contains
10571058
real(wp) :: inv_ds, flux_face1, flux_face2
10581059
real(wp) :: advected_qty_val, pressure_val, velocity_val
10591060
real(wp) :: G1_eff, G2_eff
1061+
real(wp) :: probe_ref
1062+
integer :: probe_nbad
10601063

10611064
G1_eff = 0._wp
10621065
G2_eff = 0._wp
@@ -1096,6 +1099,35 @@ contains
10961099
end do
10971100
end do
10981101
$:END_GPU_PARALLEL_LOOP()
1102+
! CI probe: the same bulk moduli recomputed on the host from the same fields, on the first call only.
1103+
if (probe_first) then
1104+
probe_first = .false.
1105+
$:GPU_UPDATE(host='[blkmod1, blkmod2]')
1106+
$:GPU_UPDATE(host='[q_prim_vf%vf(eqn_idx%E)%sf, q_prim_vf%vf(eqn_idx%adv%beg)%sf, q_prim_vf%vf(eqn_idx%adv%end)%sf]')
1107+
$:GPU_UPDATE(host='[q_prim_vf%vf(eqn_idx%cont%beg)%sf, q_prim_vf%vf(eqn_idx%cont%end)%sf]')
1108+
probe_nbad = 0
1109+
do q_loop = 0, p
1110+
do l_loop = 0, n
1111+
do k_loop = 0, m
1112+
call s_phase_bulk_modulus(q_prim_vf%vf(eqn_idx%E)%sf(k_loop, l_loop, q_loop), &
1113+
& q_prim_vf%vf(eqn_idx%adv%beg)%sf(k_loop, l_loop, q_loop), &
1114+
& q_prim_vf%vf(eqn_idx%cont%beg)%sf(k_loop, l_loop, q_loop), 1, probe_ref)
1115+
probe_ref = probe_ref + (4._wp/3._wp)*G1_eff
1116+
if (.not. abs(blkmod1(k_loop, l_loop, q_loop) - probe_ref) <= 1.e-12_wp*abs(probe_ref)) then
1117+
probe_nbad = probe_nbad + 1
1118+
if (probe_nbad == 1 .and. proc_rank == 0) print '(A, 3I6, 2ES24.15)', &
1119+
& ' eos probe rhs blkmod1 first bad cell ', k_loop, l_loop, q_loop, blkmod1(k_loop, l_loop, &
1120+
& q_loop), probe_ref
1121+
end if
1122+
end do
1123+
end do
1124+
end do
1125+
if (proc_rank == 0) print '(A, I8, A, I8)', ' eos probe rhs blkmod1 mismatches ', probe_nbad, ' of ', &
1126+
& (m + 1)*(n + 1)*(p + 1)
1127+
if (proc_rank == 0) print '(A, 4ES24.15)', ' eos probe rhs fields at cell 0: E adv cont blkmod1 ', &
1128+
& q_prim_vf%vf(eqn_idx%E)%sf(0, 0, 0), q_prim_vf%vf(eqn_idx%adv%beg)%sf(0, 0, 0), &
1129+
& q_prim_vf%vf(eqn_idx%cont%beg)%sf(0, 0, 0), blkmod1(0, 0, 0)
1130+
end if
10991131
end if
11001132

11011133
select case (idir)

0 commit comments

Comments
 (0)