Changeset 15127 for NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/OCE/LBC/lbc_lnk_neicoll_generic.h90
- Timestamp:
- 2021-07-16T20:00:12+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette@14244 sette 11 ^/utils/CI/sette@HEAD sette 12
-
- Property svn:externals
-
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/OCE/LBC/lbc_lnk_neicoll_generic.h90
r14448 r15127 26 26 INTEGER, DIMENSION(8) :: isizej, ishtSj, ishtRj, ishtPj 27 27 INTEGER, DIMENSION(8) :: ifill, iszall 28 INTEGER, DIMENSION(8) :: jnf 28 29 INTEGER, DIMENSION(:), ALLOCATABLE :: iScnt, iRcnt ! number of elements to be sent/received 29 30 INTEGER, DIMENSION(:), ALLOCATABLE :: iSdpl, iRdpl ! displacement in halos arrays … … 31 32 REAL(PRECISION) :: zland 32 33 LOGICAL :: ll4only ! default: 8 neighbourgs 33 LOGICAL :: ll_IdoNFold34 34 !!---------------------------------------------------------------------- 35 35 ! … … 101 101 END DO 102 102 ! north fold treatment 103 ll_IdoNFold = l_IdoNFold .AND. ifill(jpno) /= jpfillnothing 104 IF( ll_IdoNFold ) THEN 103 IF( l_IdoNFold ) THEN 105 104 ifill_nfd = ifill(jpno) ! if we are here, this means llrecv(jpno) = .false. and l_SelfPerio(jpno) = .false. 106 105 ifill( (/jpno/) ) = jpfillnothing ! we do north fold -> do nothing for northern halo … … 192 191 ! 193 192 idx = 1 193 ! MPI3 bug fix when domain decomposition has 2 columns/rows 194 IF (jpni .eq. 2) THEN 195 IF (jpnj .eq. 2) THEN 196 jnf(1:8) = (/ 2, 1, 4, 3, 8, 7, 6, 5 /) 197 ELSE 198 jnf(1:8) = (/ 2, 1, 3, 4, 6, 5, 8, 7 /) 199 ENDIF 200 ELSE 201 IF (jpnj .eq. 2) THEN 202 jnf(1:8) = (/ 1, 2, 4, 3, 7, 8, 5, 6 /) 203 ELSE 204 jnf(1:8) = (/ 1, 2, 3, 4, 5, 6, 7, 8 /) 205 ENDIF 206 ENDIF 207 194 208 DO jn = 1, 8 195 ishti = ishtRi(jn )196 ishtj = ishtRj(jn )197 SELECT CASE ( ifill(jn ) )209 ishti = ishtRi(jnf(jn)) 210 ishtj = ishtRj(jnf(jn)) 211 SELECT CASE ( ifill(jnf(jn)) ) 198 212 CASE ( jpfillnothing ) ! no filling 199 213 CASE ( jpfillmpi ) ! fill with data received by MPI 200 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jn ) ; DO ji = 1,isizei(jn)214 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jnf(jn)) ; DO ji = 1,isizei(jnf(jn)) 201 215 ptab(jf)%pt4d(ishti+ji,ishtj+jj,jk,jl) = BUFFRCV(idx) 202 216 idx = idx + 1 203 217 END DO ; END DO ; END DO ; END DO ; END DO 204 218 CASE ( jpfillperio ) ! use periodicity 205 ishti2 = ishtPi(jn )206 ishtj2 = ishtPj(jn )207 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jn ) ; DO ji = 1,isizei(jn)219 ishti2 = ishtPi(jnf(jn)) 220 ishtj2 = ishtPj(jnf(jn)) 221 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jnf(jn)) ; DO ji = 1,isizei(jnf(jn)) 208 222 ptab(jf)%pt4d(ishti+ji,ishtj+jj,jk,jl) = ptab(jf)%pt4d(ishti2+ji,ishtj2+jj,jk,jl) 209 223 END DO ; END DO ; END DO ; END DO ; END DO 210 224 CASE ( jpfillcopy ) ! filling with inner domain values 211 ishti2 = ishtSi(jn )212 ishtj2 = ishtSj(jn )213 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jn ) ; DO ji = 1,isizei(jn)225 ishti2 = ishtSi(jnf(jn)) 226 ishtj2 = ishtSj(jnf(jn)) 227 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jnf(jn)) ; DO ji = 1,isizei(jnf(jn)) 214 228 ptab(jf)%pt4d(ishti+ji,ishtj+jj,jk,jl) = ptab(jf)%pt4d(ishti2+ji,ishtj2+jj,jk,jl) 215 229 END DO ; END DO ; END DO ; END DO ; END DO 216 230 CASE ( jpfillcst ) ! filling with constant value 217 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jn ) ; DO ji = 1,isizei(jn)231 DO jf = 1, ipf ; DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1,isizej(jnf(jn)) ; DO ji = 1,isizei(jnf(jn)) 218 232 ptab(jf)%pt4d(ishti+ji,ishtj+jj,jk,jl) = zland 219 233 END DO ; END DO ; END DO ; END DO ; END DO … … 251 265 ! ------------------------------- ! 252 266 ! 253 IF( l l_IdoNFold ) THEN267 IF( l_IdoNFold ) THEN 254 268 IF( jpni == 1 ) THEN ; CALL lbc_nfd( ptab, cd_nat, psgn , ihls, ipf ) ! self NFold 255 269 ELSE ; CALL mpp_nfd( ptab, cd_nat, psgn, ifill_nfd, zland, ihls, ipf ) ! mpi NFold
Note: See TracChangeset
for help on using the changeset viewer.