- Timestamp:
- 2019-02-14T14:08:15+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/fix_ticket2238_solution1/src/OCE/ICB/icbutl.F90
r10673 r10677 100 100 ssh_e(:,:) = 0._wp ; ssh_e(1:jpi, 1:jpj) = ssh_m(:,:) * tmask(:,:,1) 101 101 #endif 102 103 !! special for ssh which is used to calculate slope104 !! so fudge some numbers all the way around the boundary105 ssh_e(0 , :) = ssh_e(1 , :)106 ssh_e(jpi+1, :) = ssh_e(jpi, :)107 ssh_e(: , 0) = ssh_e(: , 1)108 ssh_e(: ,jpj+1) = ssh_e(: ,jpj)109 ssh_e(0,0) = ssh_e(1,1)110 ssh_e(jpi+1,0) = ssh_e(jpi,1)111 ssh_e(0,jpj+1) = ssh_e(1,jpj)112 ssh_e(jpi+1,jpj+1) = ssh_e(jpi,jpj)113 102 CALL lbc_lnk_icb( 'icbutl', ssh_e, 'T', +1._wp, 1, 1 ) 114 103 ! … … 201 190 ! since we're looking for four T points containing quadrant we're in of 202 191 ! current T cell 203 ii = MAX( 1, INT( pi ))204 ij = MAX( 1, INT( pj )) ! T-point192 ii = MAX(0, INT( pi )) 193 ij = MAX(0, INT( pj )) ! T-point 205 194 zi = pi - REAL(ii,wp) 206 195 zj = pj - REAL(ij,wp) 207 196 CASE ( 'U' ) 208 ii = MAX( 1, INT( pi-0.5))209 ij = MAX( 1, INT( pj )) ! U-point210 zi = pi - 0.5 - REAL(ii,wp)197 ii = MAX(0, INT( pi-0.5_wp )) 198 ij = MAX(0, INT( pj )) ! U-point 199 zi = pi - 0.5_wp - REAL(ii,wp) 211 200 zj = pj - REAL(ij,wp) 212 201 CASE ( 'V' ) 213 ii = MAX( 1, INT( pi ))214 ij = MAX( 1, INT( pj-0.5)) ! V-point202 ii = MAX(0, INT( pi )) 203 ij = MAX(0, INT( pj-0.5_wp )) ! V-point 215 204 zi = pi - REAL(ii,wp) 216 zj = pj - 0.5 - REAL(ij,wp)205 zj = pj - 0.5_wp - REAL(ij,wp) 217 206 CASE ( 'F' ) 218 ii = MAX( 1, INT( pi-0.5))219 ij = MAX( 1, INT( pj-0.5)) ! F-point220 zi = pi - 0.5 - REAL(ii,wp)221 zj = pj - 0.5 - REAL(ij,wp)207 ii = MAX(0, INT( pi-0.5_wp )) 208 ij = MAX(0, INT( pj-0.5_wp )) ! F-point 209 zi = pi - 0.5_wp - REAL(ii,wp) 210 zj = pj - 0.5_wp - REAL(ij,wp) 222 211 END SELECT 223 212 ! … … 235 224 ! 236 225 ! 237 icb_utl_bilin_h = ( pfld(ii,ij ) * (1. -zi) + pfld(ii+1,ij ) * zi ) * (1.-zj) &238 & + ( pfld(ii,ij+1) * (1. -zi) + pfld(ii+1,ij+1) * zi ) * zj226 icb_utl_bilin_h = ( pfld(ii,ij ) * (1._wp-zi) + pfld(ii+1,ij ) * zi ) * (1._wp-zj) & 227 & + ( pfld(ii,ij+1) * (1._wp-zi) + pfld(ii+1,ij+1) * zi ) * zj 239 228 ! 240 229 END FUNCTION icb_utl_bilin_h … … 393 382 394 383 ! find position in this processor. Prevent near edge problems (see #1389) 395 IF ( ii < mig( 1 ) ) THEN ; ii = 1 396 ELSEIF( ii > mig(jpi) ) THEN ; ii = jpi 384 IF ( ii < mig( 1 ) ) THEN ; ii = 1 ; PRINT *, 'SHOULD NOT SEE THIS 1' 385 ELSEIF( ii > mig(jpi) ) THEN ; ii = jpi ; PRINT *, 'SHOULD NOT SEE THIS jpi' 397 386 ELSE ; ii = mi1(ii) 398 387 ENDIF 399 IF ( ij < mjg( 1 ) ) THEN ; ij = 1 400 ELSEIF( ij > mjg(jpj) ) THEN ; ij = jpj 388 IF ( ij < mjg( 1 ) ) THEN ; ij = 1 ; PRINT *, 'SHOULD NOT SEE THIS i 1' 389 ELSEIF( ij > mjg(jpj) ) THEN ; ij = jpj ; PRINT *, 'SHOULD NOT SEE THIS jpj' 401 390 ELSE ; ij = mj1(ij) 402 391 ENDIF 403 392 ! 404 IF( ii == jpi ) ii = ii-1405 IF( ij == jpj ) ij = ij-1393 IF( ii == jpi ) THEN ; ii = ii-1 ; PRINT *, 'SHOULD NOT SEE THIS ii-1' ; END IF 394 IF( ij == jpj ) THEN ; ij = ij-1 ; PRINT *, 'SHOULD NOT SEE THIS ij-1' ; END IF 406 395 ! 407 396 IF( 0.0_wp <= zi .AND. zi < 0.5_wp ) THEN … … 435 424 ENDIF 436 425 ! 437 icb_utl_bilin_e = ( ze01 * (1. -zi) + ze11 * zi ) *zj &438 & + ( ze00 * (1. -zi) + ze10 * zi ) * (1.-zj)426 icb_utl_bilin_e = ( ze01 * (1._wp-zi) + ze11 * zi ) * zj & 427 & + ( ze00 * (1._wp-zi) + ze10 * zi ) * (1._wp-zj) 439 428 ! 440 429 END FUNCTION icb_utl_bilin_e
Note: See TracChangeset
for help on using the changeset viewer.