|
94 | 94 | call_assert_describe(i+1<=my_nx, "laplacian: westernmost subdomain too small") |
95 | 95 |
|
96 | 96 | associate( laplacian_phi => laplacian_rhs%s_, inbox => halo_west, phi=>rhs%s_) |
| 97 | +#if HAVE_2018_LOCALITY_SPECIFIERS |
97 | 98 | do concurrent(j=2:ny-1, k=2:nz-1) & |
98 | 99 | 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 |
99 | 103 | laplacian_phi(i,j,k) = (inbox(j,k ) - 2*phi(i,j,k) + phi(i+1,j ,k ))/dx_**2 + & |
100 | 104 | (phi(i,j-1,k ) - 2*phi(i,j,k) + phi(i ,j+1,k ))/dy_**2 + & |
101 | 105 | (phi(i,j ,k-1) - 2*phi(i,j,k) + phi(i ,j ,k+1))/dz_**2 |
102 | 106 | end do |
103 | 107 | end associate |
104 | 108 |
|
105 | 109 | associate(laplacian_phi => laplacian_rhs%s_, phi=>rhs%s_) |
| 110 | +#if HAVE_2018_LOCALITY_SPECIFIERS |
106 | 111 | do concurrent(i=my_internal_west+1:my_internal_east-1, j=2:ny-1, k=2:nz-1) & |
107 | 112 | 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 |
108 | 116 | laplacian_phi(i,j,k) = (phi(i-1,j ,k ) - 2*phi(i,j,k) + phi(i+1,j ,k ))/dx_**2 + & |
109 | 117 | (phi(i ,j-1,k ) - 2*phi(i,j,k) + phi(i ,j+1,k ))/dy_**2 + & |
110 | 118 | (phi(i ,j ,k-1) - 2*phi(i,j,k) + phi(i ,j ,k+1))/dz_**2 |
|
116 | 124 | call_assert_describe(i-1>0, "laplacian: easternmost subdomain too small") |
117 | 125 |
|
118 | 126 | associate(laplacian_phi => laplacian_rhs%s_, inbox => halo_east, phi=>rhs%s_) |
| 127 | +#if HAVE_2018_LOCALITY_SPECIFIERS |
119 | 128 | do concurrent(j=2:ny-1, k=2:nz-1) & |
120 | 129 | 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 |
121 | 133 | laplacian_phi(i,j,k) = (phi(i-1,j ,k ) - 2*phi(i,j,k) + inbox( j ,k ))/dx_**2 + & |
122 | 134 | (phi(i ,j-1,k ) - 2*phi(i,j,k) + phi(i ,j+1,k ))/dy_**2 + & |
123 | 135 | (phi(i ,j ,k-1) - 2*phi(i,j,k) + phi(i ,j ,k+1))/dz_**2 |
124 | 136 | end do |
125 | 137 | end associate |
126 | 138 |
|
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 |
133 | 145 | end procedure |
134 | 146 |
|
135 | 147 | module procedure multiply |
|
0 commit comments