Skip to content

Commit cba5e32

Browse files
Set patch_ib back to being statically allocated array, for optimization and cleanliness
1 parent 6faf896 commit cba5e32

3 files changed

Lines changed: 14 additions & 17 deletions

File tree

src/common/m_constants.fpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,18 @@ module m_constants
1616
real(wp), parameter :: verysmall = 1.e-12_wp !< Very small number
1717
!> Radius cutoff to avoid division by zero for 3D spherical harmonic patch (geometry 14)
1818
real(wp), parameter :: small_radius = 1.e-32_wp
19-
integer, parameter :: num_stcls_min = 5 !< Minimum # of stencils
20-
integer, parameter :: path_len = 400 !< Maximum path length
21-
integer, parameter :: name_len = 50 !< Maximum name length
22-
integer, parameter :: dflt_int = -100 !< Default integer value
23-
integer, parameter :: fourier_rings = 5 !< Fourier filter ring limit
24-
integer, parameter :: num_fluids_max = 10 !< Maximum number of fluids in the simulation
25-
integer, parameter :: num_probes_max = 10 !< Maximum number of flow probes in the simulation
26-
integer, parameter :: num_patches_max = 10 !< Maximum number of IC patches
27-
integer, parameter :: num_ib_patches_max = 2050000 !< Maximum number of immersed boundary patches (patch_ib)
28-
!> Max patches readable from the namelist; patch_ib grows to num_ib_patches_max only when particle beds are used
29-
integer, parameter :: num_ib_patches_max_namelist = 50000
19+
integer, parameter :: num_stcls_min = 5 !< Minimum # of stencils
20+
integer, parameter :: path_len = 400 !< Maximum path length
21+
integer, parameter :: name_len = 50 !< Maximum name length
22+
integer, parameter :: dflt_int = -100 !< Default integer value
23+
integer, parameter :: fourier_rings = 5 !< Fourier filter ring limit
24+
integer, parameter :: num_fluids_max = 10 !< Maximum number of fluids in the simulation
25+
integer, parameter :: num_probes_max = 10 !< Maximum number of flow probes in the simulation
26+
integer, parameter :: num_patches_max = 10 !< Maximum number of IC patches
27+
!> Maximum number of immersed boundary patches (legacy, not used for patch_ib sizing)
28+
integer, parameter :: num_ib_patches_max = 2050000
29+
!> Fixed capacity of patch_ib (namelist patches + local particle bed subset after reduction)
30+
integer, parameter :: num_ib_patches_max_namelist = 54000
3031
integer, parameter :: num_local_ibs_max = 2000 !< Maximum number of immersed boundary patches (patch_ib)
3132
integer, parameter :: num_particle_beds_max = 10 !< Maximum number of particle bed patch specifications
3233
integer, parameter :: num_bc_patches_max = 10 !< Maximum number of boundary condition patches

src/simulation/m_global_parameters.fpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ module m_global_parameters
261261

262262
!> @name Immersed Boundaries
263263
!> @{
264-
type(ib_patch_parameters), allocatable, dimension(:) :: patch_ib !< Immersed boundary patch parameters
264+
type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) :: patch_ib !< Immersed boundary patch parameters
265265
integer, dimension(num_local_ibs_max) :: local_ib_patch_ids !< lookup table of IBs in the local compute domain
266266
integer :: num_particle_beds !< Number of particle bed specifications
267267
type(particle_bed_parameters), dimension(num_particle_beds_max) :: particle_bed !< Particle bed specifications
@@ -697,7 +697,6 @@ contains
697697
particle_bed(i)%seed = 0
698698
end do
699699
700-
allocate (patch_ib(num_ib_patches_max_namelist))
701700
do i = 1, num_ib_patches_max_namelist
702701
patch_ib(i)%gbl_patch_id = i
703702
patch_ib(i)%geometry = dflt_int

src/simulation/m_start_up.fpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ contains
889889
if (ib) then
890890
block
891891
type(ib_patch_parameters), allocatable :: particle_bed_ibs(:)
892-
892+
893893
if (cfl_dt .and. n_start > 0) then
894894
call s_read_ib_restart_data(n_start)
895895
allocate (particle_bed_ibs(0))
@@ -998,8 +998,6 @@ contains
998998
#else
999999
"on CPUs"
10001000
#endif
1001-
else
1002-
allocate (patch_ib(num_ib_patches_max_namelist))
10031001
end if
10041002

10051003
call s_mpi_bcast_user_inputs()
@@ -1274,7 +1272,6 @@ contains
12741272
end do
12751273
#endif
12761274

1277-
$:GPU_ENTER_DATA(create='[patch_ib]')
12781275
@:ALLOCATE(ib_gbl_idx_lookup(1:num_gbl_ibs))
12791276

12801277
end subroutine s_reduce_ib_patch_array

0 commit comments

Comments
 (0)