Changeset 12353 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF
- Timestamp:
- 2020-01-29T17:15:37+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfcpl.F90
r12343 r12353 177 177 ! 178 178 zdssmask(:,:) = ssmask(:,:) - zssmask0(:,:) 179 DO jj = 2,jpj-1 180 DO ji = 2,jpi-1 181 jip1=ji+1; jim1=ji-1; 182 jjp1=jj+1; jjm1=jj-1; 183 ! 184 zsummsk = zssmask0(jip1,jj) + zssmask0(jim1,jj) + zssmask0(ji,jjp1) + zssmask0(ji,jjm1) 185 ! 186 IF (zdssmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp) THEN 187 ssh(ji,jj,Kmm)=( zssh(jip1,jj)*zssmask0(jip1,jj) & 188 & + zssh(jim1,jj)*zssmask0(jim1,jj) & 189 & + zssh(ji,jjp1)*zssmask0(ji,jjp1) & 190 & + zssh(ji,jjm1)*zssmask0(ji,jjm1)) / zsummsk 191 zssmask_b(ji,jj) = 1._wp 192 ENDIF 193 END DO 194 END DO 179 DO_2D_00_00 180 jip1=ji+1; jim1=ji-1; 181 jjp1=jj+1; jjm1=jj-1; 182 ! 183 zsummsk = zssmask0(jip1,jj) + zssmask0(jim1,jj) + zssmask0(ji,jjp1) + zssmask0(ji,jjm1) 184 ! 185 IF (zdssmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp) THEN 186 ssh(ji,jj,Kmm)=( zssh(jip1,jj)*zssmask0(jip1,jj) & 187 & + zssh(jim1,jj)*zssmask0(jim1,jj) & 188 & + zssh(ji,jjp1)*zssmask0(ji,jjp1) & 189 & + zssh(ji,jjm1)*zssmask0(ji,jjm1)) / zsummsk 190 zssmask_b(ji,jj) = 1._wp 191 ENDIF 192 END_2D 195 193 ! 196 194 zssh(:,:) = ssh(:,:,Kmm) … … 300 298 zdmask(:,:) = tmask(:,:,jk) - ztmask0(:,:,jk); 301 299 ! 302 DO jj = 2,jpj-1 303 DO ji = 2,jpi-1 304 jip1=ji+1; jim1=ji-1; 305 jjp1=jj+1; jjm1=jj-1; 300 DO_2D_00_00 301 jip1=ji+1; jim1=ji-1; 302 jjp1=jj+1; jjm1=jj-1; 303 ! 304 ! check if a wet neigbourg cell is present 305 zsummsk = ztmask0(jip1,jj ,jk) + ztmask0(jim1,jj ,jk) & 306 + ztmask0(ji ,jjp1,jk) + ztmask0(ji ,jjm1,jk) 307 ! 308 ! if neigbourg wet cell available at the same level 309 IF ( zdmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp ) THEN 310 ! 311 ! horizontal basic extrapolation 312 ts(ji,jj,jk,1,Kmm)=( zts0(jip1,jj ,jk,1) * ztmask0(jip1,jj ,jk) & 313 & + zts0(jim1,jj ,jk,1) * ztmask0(jim1,jj ,jk) & 314 & + zts0(ji ,jjp1,jk,1) * ztmask0(ji ,jjp1,jk) & 315 & + zts0(ji ,jjm1,jk,1) * ztmask0(ji ,jjm1,jk) ) / zsummsk 316 ts(ji,jj,jk,2,Kmm)=( zts0(jip1,jj ,jk,2) * ztmask0(jip1,jj ,jk) & 317 & + zts0(jim1,jj ,jk,2) * ztmask0(jim1,jj ,jk) & 318 & + zts0(ji ,jjp1,jk,2) * ztmask0(ji ,jjp1,jk) & 319 & + zts0(ji ,jjm1,jk,2) * ztmask0(ji ,jjm1,jk) ) / zsummsk 320 ! 321 ! update mask for next pass 322 ztmask1(ji,jj,jk)=1 323 ! 324 ! in case no neigbourg wet cell available at the same level 325 ! check if a wet cell is available below 326 ELSEIF (zdmask(ji,jj) == 1._wp .AND. zsummsk == 0._wp) THEN 327 ! 328 ! vertical extrapolation if horizontal extrapolation failed 329 jkm1=max(1,jk-1) ; jkp1=min(jpk,jk+1) 306 330 ! 307 331 ! check if a wet neigbourg cell is present 308 zsummsk = ztmask0(jip1,jj ,jk) + ztmask0(jim1,jj ,jk) & 309 + ztmask0(ji ,jjp1,jk) + ztmask0(ji ,jjm1,jk) 310 ! 311 ! if neigbourg wet cell available at the same level 312 IF ( zdmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp ) THEN 313 ! 314 ! horizontal basic extrapolation 315 ts(ji,jj,jk,1,Kmm)=( zts0(jip1,jj ,jk,1) * ztmask0(jip1,jj ,jk) & 316 & + zts0(jim1,jj ,jk,1) * ztmask0(jim1,jj ,jk) & 317 & + zts0(ji ,jjp1,jk,1) * ztmask0(ji ,jjp1,jk) & 318 & + zts0(ji ,jjm1,jk,1) * ztmask0(ji ,jjm1,jk) ) / zsummsk 319 ts(ji,jj,jk,2,Kmm)=( zts0(jip1,jj ,jk,2) * ztmask0(jip1,jj ,jk) & 320 & + zts0(jim1,jj ,jk,2) * ztmask0(jim1,jj ,jk) & 321 & + zts0(ji ,jjp1,jk,2) * ztmask0(ji ,jjp1,jk) & 322 & + zts0(ji ,jjm1,jk,2) * ztmask0(ji ,jjm1,jk) ) / zsummsk 332 zsummsk = ztmask0(ji,jj,jkm1) + ztmask0(ji,jj,jkp1) 333 IF (zdmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp ) THEN 334 ts(ji,jj,jk,1,Kmm)=( zts0(ji,jj,jkp1,1)*ztmask0(ji,jj,jkp1) & 335 & + zts0(ji,jj,jkm1,1)*ztmask0(ji,jj,jkm1)) / zsummsk 336 ts(ji,jj,jk,2,Kmm)=( zts0(ji,jj,jkp1,2)*ztmask0(ji,jj,jkp1) & 337 & + zts0(ji,jj,jkm1,2)*ztmask0(ji,jj,jkm1)) / zsummsk 323 338 ! 324 339 ! update mask for next pass 325 ztmask1(ji,jj,jk)=1 326 ! 327 ! in case no neigbourg wet cell available at the same level 328 ! check if a wet cell is available below 329 ELSEIF (zdmask(ji,jj) == 1._wp .AND. zsummsk == 0._wp) THEN 330 ! 331 ! vertical extrapolation if horizontal extrapolation failed 332 jkm1=max(1,jk-1) ; jkp1=min(jpk,jk+1) 333 ! 334 ! check if a wet neigbourg cell is present 335 zsummsk = ztmask0(ji,jj,jkm1) + ztmask0(ji,jj,jkp1) 336 IF (zdmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp ) THEN 337 ts(ji,jj,jk,1,Kmm)=( zts0(ji,jj,jkp1,1)*ztmask0(ji,jj,jkp1) & 338 & + zts0(ji,jj,jkm1,1)*ztmask0(ji,jj,jkm1)) / zsummsk 339 ts(ji,jj,jk,2,Kmm)=( zts0(ji,jj,jkp1,2)*ztmask0(ji,jj,jkp1) & 340 & + zts0(ji,jj,jkm1,2)*ztmask0(ji,jj,jkm1)) / zsummsk 341 ! 342 ! update mask for next pass 343 ztmask1(ji,jj,jk)=1._wp 344 END IF 340 ztmask1(ji,jj,jk)=1._wp 345 341 END IF 346 END DO347 END DO342 END IF 343 END_2D 348 344 END DO 349 345 !
Note: See TracChangeset
for help on using the changeset viewer.