Skip to content

Commit e184f7b

Browse files
committed
requested changes
1 parent 752e5fc commit e184f7b

File tree

8 files changed

+129
-119
lines changed

8 files changed

+129
-119
lines changed

src/common/m_helper.fpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ module m_helper
3838
factorial, &
3939
f_cut_on, &
4040
f_cut_off, &
41-
s_downsample_data
41+
s_downsample_data, &
42+
s_upsample_data
4243

4344
contains
4445

@@ -671,4 +672,42 @@ contains
671672
672673
end subroutine s_downsample_data
673674
675+
subroutine s_upsample_data(q_cons_vf, q_cons_temp)
676+
677+
type(scalar_field), intent(inout), dimension(sys_size) :: q_cons_vf, q_cons_temp
678+
integer :: i, j, k, l
679+
integer :: ix, iy, iz
680+
integer :: x_id, y_id, z_id
681+
real(wp), dimension(4) :: temp
682+
683+
do l = 0, p
684+
do k = 0, n
685+
do j = 0, m
686+
do i = 1, sys_size
687+
688+
ix = int(j/3._wp)
689+
iy = int(k/3._wp)
690+
iz = int(l/3._wp)
691+
692+
x_id = j - int(3*ix) - 1
693+
y_id = k - int(3*iy) - 1
694+
z_id = l - int(3*iz) - 1
695+
696+
temp(1) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy, iz) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy, iz)
697+
temp(2) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy + y_id, iz) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy + y_id, iz)
698+
temp(3) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
699+
700+
temp(1) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy, iz + z_id) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy, iz + z_id)
701+
temp(2) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy + y_id, iz + z_id) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy + y_id, iz + z_id)
702+
temp(4) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
703+
704+
q_cons_vf(i)%sf(j, k, l) = (2._wp/3._wp)*temp(3) + (1._wp/3._wp)*temp(4)
705+
706+
end do
707+
end do
708+
end do
709+
end do
710+
711+
end subroutine s_upsample_data
712+
674713
end module m_helper

src/post_process/m_data_input.f90

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -504,29 +504,20 @@ impure subroutine s_read_parallel_conservative_data(t_step, m_MOK, n_MOK, p_MOK,
504504
if (down_sample) then
505505
! Size of local arrays
506506
data_size = (m + 3)*(n + 3)*(p + 3)
507-
508-
! Resize some integers so MPI can read even the biggest file
509-
m_MOK = int(m_glb + 1, MPI_OFFSET_KIND)
510-
n_MOK = int(n_glb + 1, MPI_OFFSET_KIND)
511-
p_MOK = int(p_glb + 1, MPI_OFFSET_KIND)
512-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
513-
MOK = int(1._wp, MPI_OFFSET_KIND)
514-
str_MOK = int(name_len, MPI_OFFSET_KIND)
515-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
516507
else
517508
! Size of local arrays
518509
data_size = (m + 1)*(n + 1)*(p + 1)
519-
520-
! Resize some integers so MPI can read even the biggest file
521-
m_MOK = int(m_glb + 1, MPI_OFFSET_KIND)
522-
n_MOK = int(n_glb + 1, MPI_OFFSET_KIND)
523-
p_MOK = int(p_glb + 1, MPI_OFFSET_KIND)
524-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
525-
MOK = int(1._wp, MPI_OFFSET_KIND)
526-
str_MOK = int(name_len, MPI_OFFSET_KIND)
527-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
528510
end if
529511

512+
! Resize some integers so MPI can read even the biggest file
513+
m_MOK = int(m_glb + 1, MPI_OFFSET_KIND)
514+
n_MOK = int(n_glb + 1, MPI_OFFSET_KIND)
515+
p_MOK = int(p_glb + 1, MPI_OFFSET_KIND)
516+
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
517+
MOK = int(1._wp, MPI_OFFSET_KIND)
518+
str_MOK = int(name_len, MPI_OFFSET_KIND)
519+
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
520+
530521
! Read the data for each variable
531522
if (bubbles_euler .or. elasticity .or. mhd) then
532523
do i = 1, sys_size

src/pre_process/m_data_output.fpp

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ module m_data_output
3939

4040
implicit none
4141

42-
private;
42+
private;
4343
public :: s_write_serial_data_files, &
4444
s_write_parallel_data_files, &
4545
s_write_data_files, &
@@ -602,13 +602,21 @@ contains
602602

603603
! Generic loop iterators
604604
integer :: i, j, k, l
605+
real(wp) :: loc_violations, glb_violations
605606

606607
! Downsample variables
607-
integer :: m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds
608+
integer :: m_ds, n_ds, p_ds
609+
integer :: m_glb_ds, n_glb_ds, p_glb_ds
610+
integer :: m_glb_save, n_glb_save, p_glb_save ! Size of array being saved
608611

609612
if (down_sample) then
610613
if ((mod(m + 1, 3) > 0) .or. (mod(n + 1, 3) > 0) .or. (mod(p + 1, 3) > 0)) then
611-
print *, "WARNING: ATTEMPTING TO RUN DOWN SAMPLING WITH local problem size not divisible by 3"
614+
loc_violations = 1._wp
615+
end if
616+
call s_mpi_allreduce_sum(loc_violations, glb_violations)
617+
if (proc_rank == 0 .and. nint(glb_violations) > 0) then
618+
print*, "WARNING: Attempting to downsample data but there are" // &
619+
"processors with local problem sizes that are not divisible by 3."
612620
end if
613621
call s_populate_variables_buffers(bc_type, q_cons_vf)
614622
call s_downsample_data(q_cons_vf, q_cons_temp, &
@@ -657,29 +665,26 @@ contains
657665
if (down_sample) then
658666
! Size of local arrays
659667
data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
660-
661-
! Resize some integers so MPI can write even the biggest files
662-
m_MOK = int(m_glb_ds + 3, MPI_OFFSET_KIND)
663-
n_MOK = int(n_glb_ds + 3, MPI_OFFSET_KIND)
664-
p_MOK = int(p_glb_ds + 3, MPI_OFFSET_KIND)
665-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
666-
MOK = int(1._wp, MPI_OFFSET_KIND)
667-
str_MOK = int(name_len, MPI_OFFSET_KIND)
668-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
668+
m_glb_save = m_glb_ds + 3
669+
n_glb_save = n_glb_ds + 3
670+
p_glb_save = p_glb_ds + 3
669671
else
670672
! Size of local arrays
671673
data_size = (m + 1)*(n + 1)*(p + 1)
672-
673-
! Resize some integers so MPI can write even the biggest files
674-
m_MOK = int(m_glb + 1, MPI_OFFSET_KIND)
675-
n_MOK = int(n_glb + 1, MPI_OFFSET_KIND)
676-
p_MOK = int(p_glb + 1, MPI_OFFSET_KIND)
677-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
678-
MOK = int(1._wp, MPI_OFFSET_KIND)
679-
str_MOK = int(name_len, MPI_OFFSET_KIND)
680-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
674+
m_glb_save = m_glb + 1
675+
n_glb_save = n_glb + 1
676+
p_glb_save = p_glb + 1
681677
end if
682678

679+
! Resize some integers so MPI can write even the biggest files
680+
m_MOK = int(m_glb_save, MPI_OFFSET_KIND)
681+
n_MOK = int(n_glb_save, MPI_OFFSET_KIND)
682+
p_MOK = int(p_glb_save, MPI_OFFSET_KIND)
683+
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
684+
MOK = int(1._wp, MPI_OFFSET_KIND)
685+
str_MOK = int(name_len, MPI_OFFSET_KIND)
686+
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
687+
683688
! Write the data for each variable
684689
if (bubbles_euler) then
685690
do i = 1, sys_size! adv_idx%end

src/pre_process/m_global_parameters.fpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,9 +612,17 @@ contains
612612
adv_idx%end = E_idx + num_fluids
613613

614614
if (igr) then
615+
! Volume fractions are stored in the indicies immediately following
616+
! the energy equation. IGR tracks a total of (N-1) volume fractions
617+
! for N fluids, hence the "-1" in adv_idx%end. If num_fluids = 1
618+
! then adv_idx%end < adv_idx%beg, which skips all loops over the
619+
! volume fractions since there is no volume fraction to track
615620
adv_idx%beg = E_idx + 1
616621
adv_idx%end = E_idx + num_fluids - 1
617622
else
623+
! Volume fractions are stored in the indicies immediately following
624+
! the energy equation. WENO/MUSCL + Riemann tracks a total of (N)
625+
! volume fractions for N fluids, hence the lack of "-1" in adv_idx%end
618626
adv_idx%beg = E_idx + 1
619627
adv_idx%end = E_idx + num_fluids
620628
end if

src/simulation/m_data_output.fpp

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,9 @@ contains
818818
integer :: alt_sys !< Altered system size for the lagrangian subgrid bubble model
819819

820820
! Down sampling variables
821-
integer :: m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds
821+
integer :: m_ds, n_ds, p_ds
822+
integer :: m_glb_ds, n_glb_ds, p_glb_ds
823+
integer :: m_glb_save, n_glb_save, p_glb_save ! Global save size
822824

823825
if (down_sample) then
824826
call s_populate_variables_buffers(bc_type, q_cons_vf)
@@ -874,29 +876,26 @@ contains
874876
if (down_sample) then
875877
! Size of local arrays
876878
data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
877-
878-
! Resize some integers so MPI can write even the biggest files
879-
m_MOK = int(m_glb_ds + 1, MPI_OFFSET_KIND)
880-
n_MOK = int(n_glb_ds + 1, MPI_OFFSET_KIND)
881-
p_MOK = int(p_glb_ds + 1, MPI_OFFSET_KIND)
882-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
883-
MOK = int(1._wp, MPI_OFFSET_KIND)
884-
str_MOK = int(name_len, MPI_OFFSET_KIND)
885-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
879+
m_glb_save = m_glb_ds + 1
880+
n_glb_save = n_glb_ds + 1
881+
p_glb_save = p_glb_ds + 1
886882
else
887883
! Size of local arrays
888884
data_size = (m + 1)*(n + 1)*(p + 1)
889-
890-
! Resize some integers so MPI can write even the biggest files
891-
m_MOK = int(m_glb + 1, MPI_OFFSET_KIND)
892-
n_MOK = int(n_glb + 1, MPI_OFFSET_KIND)
893-
p_MOK = int(p_glb + 1, MPI_OFFSET_KIND)
894-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
895-
MOK = int(1._wp, MPI_OFFSET_KIND)
896-
str_MOK = int(name_len, MPI_OFFSET_KIND)
897-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
885+
m_glb_save = m_glb + 1
886+
n_glb_save = n_glb + 1
887+
p_glb_save = p_glb + 1
898888
end if
899889

890+
! Resize some integers so MPI can write even the biggest files
891+
m_MOK = int(m_glb_save + 1, MPI_OFFSET_KIND)
892+
n_MOK = int(n_glb_save + 1, MPI_OFFSET_KIND)
893+
p_MOK = int(p_glb_save + 1, MPI_OFFSET_KIND)
894+
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
895+
MOK = int(1._wp, MPI_OFFSET_KIND)
896+
str_MOK = int(name_len, MPI_OFFSET_KIND)
897+
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
898+
900899
if (bubbles_euler) then
901900
! Write the data for each variable
902901
do i = 1, sys_size

src/simulation/m_global_parameters.fpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -884,9 +884,17 @@ contains
884884
E_idx = mom_idx%end + 1
885885
886886
if (igr) then
887-
adv_idx%beg = E_idx + 1
887+
! Volume fractions are stored in the indicies immediately following
888+
! the energy equation. IGR tracks a total of (N-1) volume fractions
889+
! for N fluids, hence the "-1" in adv_idx%end. If num_fluids = 1
890+
! then adv_idx%end < adv_idx%beg, which skips all loops over the
891+
! volume fractions since there is no volume fraction to track
892+
adv_idx%beg = E_idx + 1 ! Alpha for fluid 1
888893
adv_idx%end = E_idx + num_fluids - 1
889894
else
895+
! Volume fractions are stored in the indicies immediately following
896+
! the energy equation. WENO/MUSCL + Riemann tracks a total of (N)
897+
! volume fractions for N fluids, hence the lack of "-1" in adv_idx%end
890898
adv_idx%beg = E_idx + 1
891899
adv_idx%end = E_idx + num_fluids
892900
end if

src/simulation/m_sim_helpers.fpp

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ module m_sim_helpers
1212

1313
private; public :: s_compute_enthalpy, &
1414
s_compute_stability_from_dt, &
15-
s_compute_dt_from_cfl, &
16-
s_upsample_data
15+
s_compute_dt_from_cfl
1716

1817
contains
1918

@@ -294,42 +293,4 @@ contains
294293

295294
end subroutine s_compute_dt_from_cfl
296295

297-
subroutine s_upsample_data(q_cons_vf, q_cons_temp)
298-
299-
type(scalar_field), intent(inout), dimension(sys_size) :: q_cons_vf, q_cons_temp
300-
integer :: i, j, k, l
301-
integer :: ix, iy, iz
302-
integer :: x_id, y_id, z_id
303-
real(wp), dimension(4) :: temp
304-
305-
do l = 0, p
306-
do k = 0, n
307-
do j = 0, m
308-
do i = 1, sys_size
309-
310-
ix = int(j/3._wp)
311-
iy = int(k/3._wp)
312-
iz = int(l/3._wp)
313-
314-
x_id = j - int(3*ix) - 1
315-
y_id = k - int(3*iy) - 1
316-
z_id = l - int(3*iz) - 1
317-
318-
temp(1) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy, iz) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy, iz)
319-
temp(2) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy + y_id, iz) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy + y_id, iz)
320-
temp(3) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
321-
322-
temp(1) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy, iz + z_id) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy, iz + z_id)
323-
temp(2) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy + y_id, iz + z_id) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy + y_id, iz + z_id)
324-
temp(4) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
325-
326-
q_cons_vf(i)%sf(j, k, l) = (2._wp/3._wp)*temp(3) + (1._wp/3._wp)*temp(4)
327-
328-
end do
329-
end do
330-
end do
331-
end do
332-
333-
end subroutine s_upsample_data
334-
335296
end module m_sim_helpers

src/simulation/m_start_up.fpp

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,9 @@ contains
538538
integer :: i, j
539539

540540
! Downsampled data variables
541-
integer :: m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds
541+
integer :: m_ds, n_ds, p_ds
542+
integer :: m_glb_ds, n_glb_ds, p_glb_ds
543+
integer :: m_glb_read, n_glb_read, p_glb_read ! data size of read
542544

543545
allocate (x_cb_glb(-1:m_glb))
544546
allocate (y_cb_glb(-1:n_glb))
@@ -658,29 +660,26 @@ contains
658660
if(down_sample) then
659661
! Size of local arrays
660662
data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
661-
662-
! Resize some integers so MPI can read even the biggest file
663-
m_MOK = int(m_glb_ds + 1, MPI_OFFSET_KIND)
664-
n_MOK = int(n_glb_ds + 1, MPI_OFFSET_KIND)
665-
p_MOK = int(p_glb_ds + 1, MPI_OFFSET_KIND)
666-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
667-
MOK = int(1._wp, MPI_OFFSET_KIND)
668-
str_MOK = int(name_len, MPI_OFFSET_KIND)
669-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
663+
m_glb_read = m_glb_ds + 1
664+
n_glb_read = n_glb_ds + 1
665+
p_glb_read = p_glb_ds + 1
670666
else
671667
! Size of local arrays
672668
data_size = (m + 1)*(n + 1)*(p + 1)
673-
674-
! Resize some integers so MPI can read even the biggest file
675-
m_MOK = int(m_glb + 1, MPI_OFFSET_KIND)
676-
n_MOK = int(n_glb + 1, MPI_OFFSET_KIND)
677-
p_MOK = int(p_glb + 1, MPI_OFFSET_KIND)
678-
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
679-
MOK = int(1._wp, MPI_OFFSET_KIND)
680-
str_MOK = int(name_len, MPI_OFFSET_KIND)
681-
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
669+
m_glb_read = m_glb + 1
670+
n_glb_read = n_glb + 1
671+
p_glb_read = p_glb + 1
682672
end if
683673

674+
! Resize some integers so MPI can read even the biggest file
675+
m_MOK = int(m_glb_read + 1, MPI_OFFSET_KIND)
676+
n_MOK = int(m_glb_read + 1, MPI_OFFSET_KIND)
677+
p_MOK = int(m_glb_read + 1, MPI_OFFSET_KIND)
678+
WP_MOK = int(8._wp, MPI_OFFSET_KIND)
679+
MOK = int(1._wp, MPI_OFFSET_KIND)
680+
str_MOK = int(name_len, MPI_OFFSET_KIND)
681+
NVARS_MOK = int(sys_size, MPI_OFFSET_KIND)
682+
684683
! Read the data for each variable
685684
if (bubbles_euler .or. elasticity) then
686685

0 commit comments

Comments
 (0)