Skip to content

Commit 3728b45

Browse files
Dimitrios AdamDimitrios Adam
authored andcommitted
opalakia
1 parent b2603ce commit 3728b45

3 files changed

Lines changed: 130 additions & 12 deletions

File tree

examples/2D_riemann_test/case.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
"n": 499,
2929
"p": 0,
3030
"dt": 4.0e-08,
31-
"t_step_start": 10000,
32-
"t_step_stop": 17000,
31+
"t_step_start": 0,
32+
"t_step_stop": 10000,
3333
"t_step_save": 1000,
3434
# Simulation Algorithm Parameters
3535
"num_patches": 1,

src/common/m_mpi_common.fpp

Lines changed: 119 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ contains
5959
6060
if (qbmm .and. .not. polytropic) then
6161
v_size = sys_size + 2*nb*4
62+
else if (chemistry) then
63+
v_size = sys_size + 1
6264
else
6365
v_size = sys_size
6466
end if
@@ -705,11 +707,12 @@ contains
705707
mpi_dir, &
706708
pbc_loc, &
707709
nVar, &
708-
pb_in, mv_in)
710+
pb_in, mv_in, q_T_sf)
709711
710712
type(scalar_field), dimension(1:), intent(inout) :: q_comm
711713
real(stp), optional, dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:, 1:), intent(inout) :: pb_in, mv_in
712714
integer, intent(in) :: mpi_dir, pbc_loc, nVar
715+
type(scalar_field), optional, intent(inout) :: q_T_sf
713716
714717
integer :: i, j, k, l, r, q !< Generic loop iterators
715718
@@ -733,6 +736,13 @@ contains
733736
if (present(pb_in) .and. present(mv_in) .and. qbmm .and. .not. polytropic) then
734737
qbmm_comm = .true.
735738
v_size = nVar + 2*nb*4
739+
buffer_counts = (/ &
740+
buff_size*v_size*(n + 1)*(p + 1), &
741+
buff_size*v_size*(m + 2*buff_size + 1)*(p + 1), &
742+
buff_size*v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1) &
743+
/)
744+
else if (chemistry) then
745+
v_size = nVar + 1
736746
buffer_counts = (/ &
737747
buff_size*v_size*(n + 1)*(p + 1), &
738748
buff_size*v_size*(m + 2*buff_size + 1)*(p + 1), &
@@ -795,6 +805,20 @@ contains
795805
end do
796806
end do
797807
$:END_GPU_PARALLEL_LOOP()
808+
if (chemistry) then
809+
$:GPU_PARALLEL_LOOP(collapse=3,private='[r]')
810+
do l = 0, p
811+
do k = 0, n
812+
do j = 0, buff_size - 1
813+
! (v_size - 1) puts T at the end of the cell's buffer chunk
814+
r = (v_size - 1) + v_size* &
815+
(j + buff_size*(k + (n + 1)*l))
816+
buff_send(r) = real(q_T_sf%sf(j + pack_offset, k, l), kind=wp)
817+
end do
818+
end do
819+
end do
820+
$:END_GPU_PARALLEL_LOOP()
821+
end if
798822

799823
if (qbmm_comm) then
800824
$:GPU_PARALLEL_LOOP(collapse=4,private='[r]')
@@ -845,6 +869,21 @@ contains
845869
end do
846870
$:END_GPU_PARALLEL_LOOP()
847871

872+
if (chemistry) then
873+
$:GPU_PARALLEL_LOOP(collapse=3,private='[r]')
874+
do l = 0, p
875+
do k = 0, buff_size - 1
876+
do j = -buff_size, m + buff_size
877+
r = nVar + v_size* &
878+
((j + buff_size) + (m + 2*buff_size + 1)* &
879+
(k + buff_size*l))
880+
buff_send(r) = real(q_T_sf%sf(j, k + pack_offset, l), kind=wp)
881+
end do
882+
end do
883+
end do
884+
$:END_GPU_PARALLEL_LOOP()
885+
end if
886+
848887
if (qbmm_comm) then
849888
$:GPU_PARALLEL_LOOP(collapse=5,private='[r]')
850889
do i = nVar + 1, nVar + 4
@@ -896,6 +935,22 @@ contains
896935
end do
897936
$:END_GPU_PARALLEL_LOOP()
898937

938+
if (chemistry) then
939+
$:GPU_PARALLEL_LOOP(collapse=3,private='[r]')
940+
do l = 0, buff_size - 1
941+
do k = -buff_size, n + buff_size
942+
do j = -buff_size, m + buff_size
943+
r = nVar + v_size* &
944+
((j + buff_size) + (m + 2*buff_size + 1)* &
945+
((k + buff_size) + (n + 2*buff_size + 1)*l))
946+
buff_send(r) = real(q_T_sf%sf(j, k, l + pack_offset), kind=wp)
947+
end do
948+
end do
949+
end do
950+
$:END_GPU_PARALLEL_LOOP()
951+
end if
952+
953+
899954
if (qbmm_comm) then
900955
$:GPU_PARALLEL_LOOP(collapse=5,private='[r]')
901956
do i = nVar + 1, nVar + 4
@@ -1004,6 +1059,26 @@ contains
10041059
end do
10051060
$:END_GPU_PARALLEL_LOOP()
10061061

1062+
if (chemistry) then
1063+
$:GPU_PARALLEL_LOOP(collapse=3,private='[r]')
1064+
do l = 0, p
1065+
do k = 0, n
1066+
do j = -buff_size, -1
1067+
r = nVar + v_size* &
1068+
(j + buff_size*((k + 1) + (n + 1)*l))
1069+
q_T_sf%sf(j + unpack_offset, k, l) = real(buff_recv(r), kind=stp)
1070+
#if defined(__INTEL_COMPILER)
1071+
if (ieee_is_nan(q_T_sf%sf(j, k, l))) then
1072+
print *, "Error", j, k, l, i
1073+
error stop "NaN(s) in recv"
1074+
end if
1075+
#endif
1076+
end do
1077+
end do
1078+
end do
1079+
$:END_GPU_PARALLEL_LOOP()
1080+
end if
1081+
10071082
if (qbmm_comm) then
10081083
$:GPU_PARALLEL_LOOP(collapse=5,private='[r]')
10091084
do l = 0, p
@@ -1059,6 +1134,27 @@ contains
10591134
end do
10601135
$:END_GPU_PARALLEL_LOOP()
10611136

1137+
if (chemistry) then
1138+
$:GPU_PARALLEL_LOOP(collapse=3,private='[r]')
1139+
do l = 0, p
1140+
do k = -buff_size, -1
1141+
do j = -buff_size, m + buff_size
1142+
r = nVar + v_size* &
1143+
((j + buff_size) + (m + 2*buff_size + 1)* &
1144+
((k + buff_size) + buff_size*l))
1145+
q_T_sf%sf(j, k + unpack_offset, l) = real(buff_recv(r), kind=stp)
1146+
#if defined(__INTEL_COMPILER)
1147+
if (ieee_is_nan(q_T_sf%sf(j, k, l))) then
1148+
print *, "Error", j, k, l, i
1149+
error stop "NaN(s) in recv"
1150+
end if
1151+
#endif
1152+
end do
1153+
end do
1154+
end do
1155+
$:END_GPU_PARALLEL_LOOP()
1156+
end if
1157+
10621158
if (qbmm_comm) then
10631159
$:GPU_PARALLEL_LOOP(collapse=5,private='[r]')
10641160
do i = nVar + 1, nVar + 4
@@ -1118,6 +1214,28 @@ contains
11181214
end do
11191215
$:END_GPU_PARALLEL_LOOP()
11201216

1217+
if (chemistry) then
1218+
$:GPU_PARALLEL_LOOP(collapse=3,private='[r]')
1219+
do l = -buff_size, -1
1220+
do k = -buff_size, n + buff_size
1221+
do j = -buff_size, m + buff_size
1222+
r = nVar + v_size* &
1223+
((j + buff_size) + (m + 2*buff_size + 1)* &
1224+
((k + buff_size) + (n + 2*buff_size + 1)* &
1225+
(l + buff_size)))
1226+
q_T_sf%sf(j, k, l + unpack_offset) = real(buff_recv(r), kind=stp)
1227+
#if defined(__INTEL_COMPILER)
1228+
if (ieee_is_nan(q_T_sf%sf(j, k, l))) then
1229+
print *, "Error", j, k, l, i
1230+
error stop "NaN(s) in recv"
1231+
end if
1232+
#endif
1233+
end do
1234+
end do
1235+
end do
1236+
$:END_GPU_PARALLEL_LOOP()
1237+
end if
1238+
11211239
if (qbmm_comm) then
11221240
$:GPU_PARALLEL_LOOP(collapse=5,private='[r]')
11231241
do i = nVar + 1, nVar + 4

src/common/m_variables_conversion.fpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -814,21 +814,21 @@ contains
814814
qv_K, rhoYks, pres, T, pres_mag=pres_mag)
815815

816816

817-
! if (.not. (t_step == 0 .and. stage == 1)) then
817+
if (.not. (t_step == 0 .and. stage == 1)) then
818818
! Safety check: Ensure indices are within the allocated domain (0:m, 0:n, 0:p)
819819
! to prevent segfaults if the loop iterates over buffer zones.
820-
! if (j >= 0 .and. j <= m .and. k >= 0 .and. k <= n .and. l >= 0 .and. l <= p) then
821-
! if (ghost_points_index%sf(j, k, l) == 1) then
822-
! pres = pressure_ghost_point%sf(j, k, l)
820+
if (j >= 0 .and. j <= m .and. k >= 0 .and. k <= n .and. l >= 0 .and. l <= p) then
821+
if (ghost_points_index%sf(j, k, l) == 1) then
822+
pres = pressure_ghost_point%sf(j, k, l)
823823
! if (j .eq. 200) then
824824
! !print *, pres, k, y_cc(k), T
825-
! end if
826-
! end if
825+
! end if
826+
end if
827827

828-
! end if
829-
! end if
828+
end if
829+
end if
830830

831-
qK_prim_vf(E_idx)%sf(j, k, l) = pres
831+
qK_prim_vf(E_idx)%sf(j, k, l) = pres
832832

833833
if (chemistry) then
834834
q_T_sf%sf(j, k, l) = T

0 commit comments

Comments
 (0)