Changeset 12807 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/mpp_nfd_generic.h90
- Timestamp:
- 2020-04-23T15:14:45+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/mpp_nfd_generic.h90
r12719 r12807 56 56 INTEGER :: ipi, ipk, ipl, ipf ! dimension of the input array 57 57 INTEGER :: imigr, iihom, ijhom ! local integers 58 INTEGER :: ierr, ibuffsize, i lci, ildi, ilei, iilb58 INTEGER :: ierr, ibuffsize, ijpi, iis0, iie0, iilb 59 59 INTEGER :: ij, iproc 60 60 INTEGER, DIMENSION (jpmaxngh) :: ml_req_nf ! for mpi_isend when avoiding mpi_allgather … … 111 111 CASE ( 'T' , 'W' ,'U' ) ! T-, U-, W-point 112 112 DO ji = 1, nn_hls+1 113 jj_s(jf,ji) = nlcj - 2*nn_hls +ji -1113 jj_s(jf,ji) = jpj - 2*nn_hls +ji -1 114 114 ENDDO 115 115 CASE ( 'V' , 'F' ) ! V-, F-point 116 116 DO ji = 1, nn_hls+1 117 jj_s(jf,ji) = nlcj - 2*nn_hls +ji - 2117 jj_s(jf,ji) = jpj - 2*nn_hls +ji - 2 118 118 ENDDO 119 119 END SELECT … … 124 124 CASE ( 'T' , 'W' ,'U' ) ! T-, U-, W-point 125 125 DO ji = 1, nn_hls 126 jj_s(jf,ji) = nlcj - 2*nn_hls + ji126 jj_s(jf,ji) = jpj - 2*nn_hls + ji 127 127 ENDDO 128 128 ipj_s(jf) = nn_hls ! need only one line anyway 129 129 CASE ( 'V' , 'F' ) ! V-, F-point 130 130 DO ji = 1, nn_hls+1 131 jj_s(jf,ji) = nlcj - 2*nn_hls +ji -1131 jj_s(jf,ji) = jpj - 2*nn_hls +ji -1 132 132 ENDDO 133 133 END SELECT … … 175 175 iproc = nfipproc(isendto(jr),jpnj) 176 176 IF(iproc /= -1) THEN 177 iilb = nimppt(iproc+1)178 i lci = nlcit(iproc+1)179 i ldi = nldit(iproc+1) + nn_hls-1180 i lei = nleit(iproc+1) + nn_hls-1181 IF( iilb == 1 ) i ldi= nn_hls ! e-w boundary already done -> force to take 1st column182 IF( iilb + i lci - 1 == jpiglo ) ilei = nlei+1 ! e-w boundary already done -> force to take last column177 iilb = nimppt(iproc+1) 178 ijpi = jpiall(iproc+1) 179 iis0 = nis0all(iproc+1) + nn_hls-1 180 iie0 = nie0all(iproc+1) + nn_hls-1 181 IF( iilb == 1 ) iis0 = nn_hls ! e-w boundary already done -> force to take 1st column 182 IF( iilb + ijpi - 1 == jpiglo ) iie0 = Nie0+1 ! e-w boundary already done -> force to take last column 183 183 iilb = nfiimpp(isendto(jr),jpnj) - nfiimpp(isendto(1),jpnj) 184 184 ENDIF … … 190 190 DO jl = 1, ipl 191 191 DO jk = 1, ipk 192 DO ji = i ldi, ilei192 DO ji = iis0, iie0 193 193 ztabr(iilb-nn_hls+1+ji,jj,jk,jl,jf) = zfoldwk(ji,js,jk,jl,1) 194 194 END DO … … 200 200 DO jl = 1, ipl 201 201 DO jk = 1, ipk 202 DO ji = i ldi, ilei202 DO ji = iis0, iie0 203 203 ztabr(iilb-nn_hls+1+ji,jj,jk,jl,jf) = ARRAY_IN(ji,jj_s(jf,jj),jk,jl,jf) 204 204 END DO … … 233 233 DO jl = 1, ipl 234 234 DO jk = 1, ipk 235 DO jj = nlcj - ijpj +1, nlcj236 ij = jj - nlcj + ijpj235 DO jj = jpj - ijpj +1, jpj 236 ij = jj - jpj + ijpj 237 237 znorthloc(1:jpi,ij,jk,jl,jf) = ARRAY_IN(1:jpi,jj,jk,jl,jf) 238 238 END DO … … 262 262 DO jr = 1, ndim_rank_north ! recover the global north array 263 263 iproc = nrank_north(jr) + 1 264 iilb = nimppt(iproc)265 i lci = nlcit(iproc)266 i ldi = nldit(iproc)267 i lei = nleit(iproc)268 IF( iilb == 1 ) i ldi= 1 ! e-w boundary already done -> force to take 1st column269 IF( iilb + i lci - 1 == jpiglo ) ilei = ilci ! e-w boundary already done -> force to take last column264 iilb = nimppt(iproc) 265 ijpi = jpiall(iproc) 266 iis0 = nis0all(iproc) 267 iie0 = nie0all(iproc) 268 IF( iilb == 1 ) iis0 = 1 ! e-w boundary already done -> force to take 1st column 269 IF( iilb + ijpi - 1 == jpiglo ) iie0 = ijpi ! e-w boundary already done -> force to take last column 270 270 DO jf = 1, ipf 271 271 DO jl = 1, ipl 272 272 DO jk = 1, ipk 273 273 DO jj = 1, ijpj 274 DO ji = i ldi, ilei274 DO ji = iis0, iie0 275 275 ztab(ji+iilb-1,jj,jk,jl,jf) = znorthgloio(ji,jj,jk,jl,jf,jr) 276 276 END DO … … 287 287 DO jl = 1, ipl 288 288 DO jk = 1, ipk 289 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to ARRAY_IN290 ij = jj - nlcj + ijpj291 DO ji= 1, nlci289 DO jj = jpj-ijpj+1, jpj ! Scatter back to ARRAY_IN 290 ij = jj - jpj + ijpj 291 DO ji= 1, jpi 292 292 ARRAY_IN(ji,jj,jk,jl,jf) = ztab(ji+nimpp-1,ij,jk,jl,jf) 293 293 END DO
Note: See TracChangeset
for help on using the changeset viewer.