Skip to content

Commit 073aae1

Browse files
committed
fix(laplacian): no locality specifiers w/GCC 14
1 parent 1592382 commit 073aae1

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

src/matcha/subdomain_s.F90

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,25 @@
9494
call_assert_describe(i+1<=my_nx, "laplacian: westernmost subdomain too small")
9595

9696
associate( laplacian_phi => laplacian_rhs%s_, inbox => halo_west, phi=>rhs%s_)
97+
#if HAVE_2018_LOCALITY_SPECIFIERS
9798
do concurrent(j=2:ny-1, k=2:nz-1) &
9899
default(none) shared(laplacian_phi, inbox, phi, dx_, dy_, dz_, i)
100+
#else
101+
do concurrent(j=2:ny-1, k=2:nz-1)
102+
#endif
99103
laplacian_phi(i,j,k) = (inbox(j,k ) - 2*phi(i,j,k) + phi(i+1,j ,k ))/dx_**2 + &
100104
(phi(i,j-1,k ) - 2*phi(i,j,k) + phi(i ,j+1,k ))/dy_**2 + &
101105
(phi(i,j ,k-1) - 2*phi(i,j,k) + phi(i ,j ,k+1))/dz_**2
102106
end do
103107
end associate
104108

105109
associate(laplacian_phi => laplacian_rhs%s_, phi=>rhs%s_)
110+
#if HAVE_2018_LOCALITY_SPECIFIERS
106111
do concurrent(i=my_internal_west+1:my_internal_east-1, j=2:ny-1, k=2:nz-1) &
107112
default(none) shared(laplacian_phi, phi, dx_, dy_, dz_)
113+
#else
114+
do concurrent(i=my_internal_west+1:my_internal_east-1, j=2:ny-1, k=2:nz-1)
115+
#endif
108116
laplacian_phi(i,j,k) = (phi(i-1,j ,k ) - 2*phi(i,j,k) + phi(i+1,j ,k ))/dx_**2 + &
109117
(phi(i ,j-1,k ) - 2*phi(i,j,k) + phi(i ,j+1,k ))/dy_**2 + &
110118
(phi(i ,j ,k-1) - 2*phi(i,j,k) + phi(i ,j ,k+1))/dz_**2
@@ -116,20 +124,24 @@
116124
call_assert_describe(i-1>0, "laplacian: easternmost subdomain too small")
117125

118126
associate(laplacian_phi => laplacian_rhs%s_, inbox => halo_east, phi=>rhs%s_)
127+
#if HAVE_2018_LOCALITY_SPECIFIERS
119128
do concurrent(j=2:ny-1, k=2:nz-1) &
120129
default(none) shared(laplacian_phi, inbox, phi, dx_, dy_, dz_, i)
130+
#else
131+
do concurrent(j=2:ny-1, k=2:nz-1)
132+
#endif
121133
laplacian_phi(i,j,k) = (phi(i-1,j ,k ) - 2*phi(i,j,k) + inbox( j ,k ))/dx_**2 + &
122134
(phi(i ,j-1,k ) - 2*phi(i,j,k) + phi(i ,j+1,k ))/dy_**2 + &
123135
(phi(i ,j ,k-1) - 2*phi(i,j,k) + phi(i ,j ,k+1))/dz_**2
124136
end do
125137
end associate
126138

127-
laplacian_rhs%s_(:, 1,:) = 0.
128-
laplacian_rhs%s_(:,ny,:) = 0.
129-
laplacian_rhs%s_(:,:, 1) = 0.
130-
laplacian_rhs%s_(:,:,nz) = 0.
131-
if (me==1) laplacian_rhs%s_(1,:,:) = 0.
132-
if (me==num_subdomains) laplacian_rhs%s_(my_nx,:,:) = 0.
139+
laplacian_rhs%s_(:, 1,:) = 0. ! y-direction low boundary
140+
laplacian_rhs%s_(:,ny,:) = 0. ! y-direction high boundary
141+
laplacian_rhs%s_(:,:, 1) = 0. ! z-direction low boundary
142+
laplacian_rhs%s_(:,:,nz) = 0. ! z-direction high boundary
143+
if (me==1) laplacian_rhs%s_(1,:,:) = 0. ! x-direction low boundary
144+
if (me==num_subdomains) laplacian_rhs%s_(my_nx,:,:) = 0. ! x-direction high boundary
133145
end procedure
134146

135147
module procedure multiply

0 commit comments

Comments
 (0)