Changeset 5143 for trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90
 Timestamp:
 20150311T16:49:05+01:00 (6 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90
r5140 r5143 41 41 PRIVATE 42 42 43 PUBLIC bdy_ice_lim ! routine called in sbcmod43 PUBLIC bdy_ice_lim ! routine called in sbcmod 44 44 PUBLIC bdy_ice_lim_dyn ! routine called in limrhg 45 45 … … 89 89 TYPE(OBC_DATA), INTENT(in) :: dta ! OBC external data 90 90 INTEGER, INTENT(in) :: kt ! main timestep counter 91 INTEGER, INTENT(in) :: ib_bdy ! BDY set index !!91 INTEGER, INTENT(in) :: ib_bdy ! BDY set index 92 92 93 93 INTEGER :: jpbound ! 0 = incoming ice … … 169 169 jpbound = 0; ii = ji; ij = jj; 170 170 171 IF ( u_ice(ji+1,jj ) < 0. .AND. umask(ji1,jj ,1) == 0. ) jpbound = 1; ii = ji+1; ij = jj 172 IF ( u_ice(ji1,jj ) > 0. .AND. umask(ji+1,jj ,1) == 0. ) jpbound = 1; ii = ji1; ij = jj 173 IF ( v_ice(ji ,jj+1) < 0. .AND. vmask(ji ,jj1,1) == 0. ) jpbound = 1; ii = ji ; ij = jj+1 174 IF ( v_ice(ji ,jj1) > 0. .AND. vmask(ji ,jj+1,1) == 0. ) jpbound = 1; ii = ji ; ij = jj1 171 IF( u_ice(ji+1,jj ) < 0. .AND. umask(ji1,jj ,1) == 0. ) jpbound = 1; ii = ji+1; ij = jj 172 IF( u_ice(ji1,jj ) > 0. .AND. umask(ji+1,jj ,1) == 0. ) jpbound = 1; ii = ji1; ij = jj 173 IF( v_ice(ji ,jj+1) < 0. .AND. vmask(ji ,jj1,1) == 0. ) jpbound = 1; ii = ji ; ij = jj+1 174 IF( v_ice(ji ,jj1) > 0. .AND. vmask(ji ,jj+1,1) == 0. ) jpbound = 1; ii = ji ; ij = jj1 175 176 IF( nn_ice_lim_dta(ib_bdy) == 0 ) jpbound = 0; ii = ji; ij = jj ! case ice boundaries = initial conditions 177 ! do not make state variables dependent on velocity 178 175 179 176 180 rswitch = 1.0  MAX( 0.0_wp , SIGN ( 1.0_wp ,  at_i(ii,ij) + 0.01 ) ) ! 0 if no ice … … 286 290 !! 287 291 CHARACTER(len=1), INTENT(in) :: cd_type ! nature of velocity gridpoints 288 INTEGER :: jb, jgrd ! dummy loop indices292 INTEGER :: jb, jgrd ! dummy loop indices 289 293 INTEGER :: ji, jj ! local scalar 290 INTEGER :: ib_bdy ! Loop index294 INTEGER :: ib_bdy ! Loop index 291 295 REAL(wp) :: zmsk1, zmsk2, zflag 292 296 !! … … 304 308 CASE('frs') 305 309 306 310 IF( nn_ice_lim_dta(ib_bdy) == 0 ) CYCLE ! case ice boundaries = initial conditions 311 ! do not change ice velocity (it is only computed by rheology) 312 307 313 SELECT CASE ( cd_type ) 308 314 309 315 CASE ( 'U' ) 310 316 … … 321 327 322 328 ! u_ice = u_ice of the adjacent grid point except if this grid point is icefree (then u_ice = u_oce) 323 u_ice (ji,jj) = u_ice(ji+1,jj) * 0.5 * ABS( zflag + 1._wp ) * zmsk1 + &324 & u_ice(ji1,jj) * 0.5 * ABS( zflag  1._wp ) * zmsk2 + &329 u_ice (ji,jj) = u_ice(ji+1,jj) * 0.5_wp * ABS( zflag + 1._wp ) * zmsk1 + & 330 & u_ice(ji1,jj) * 0.5_wp * ABS( zflag  1._wp ) * zmsk2 + & 325 331 & u_oce(ji ,jj) * ( 1._wp  MIN( 1._wp, zmsk1 + zmsk2 ) ) 326 332 ELSE ! everywhere else … … 329 335 ENDIF 330 336 ! mask ice velocities 331 rswitch = 1.0  MAX( 0.0_wp , SIGN ( 1.0_wp ,  at_i(ji,jj) + 0.01) ) ! 0 if no ice337 rswitch = MAX( 0.0_wp , SIGN ( 1.0_wp , at_i(ji,jj)  0.01_wp ) ) ! 0 if no ice 332 338 u_ice(ji,jj) = rswitch * u_ice(ji,jj) 333 339 334 340 ENDDO 335 341 336 342 CALL lbc_bdy_lnk( u_ice(:,:), 'U', 1., ib_bdy ) 337 343 … … 350 356 351 357 ! u_ice = u_ice of the adjacent grid point except if this grid point is icefree (then u_ice = u_oce) 352 v_ice (ji,jj) = v_ice(ji,jj+1) * 0.5 * ABS( zflag + 1._wp ) * zmsk1 + &353 & v_ice(ji,jj1) * 0.5 * ABS( zflag  1._wp ) * zmsk2 + &358 v_ice (ji,jj) = v_ice(ji,jj+1) * 0.5_wp * ABS( zflag + 1._wp ) * zmsk1 + & 359 & v_ice(ji,jj1) * 0.5_wp * ABS( zflag  1._wp ) * zmsk2 + & 354 360 & v_oce(ji,jj ) * ( 1._wp  MIN( 1._wp, zmsk1 + zmsk2 ) ) 355 361 ELSE ! everywhere else … … 358 364 ENDIF 359 365 ! mask ice velocities 360 rswitch = 1.0  MAX( 0.0_wp , SIGN ( 1.0_wp ,  at_i(ji,jj) +0.01 ) ) ! 0 if no ice366 rswitch = MAX( 0.0_wp , SIGN ( 1.0_wp , at_i(ji,jj)  0.01 ) ) ! 0 if no ice 361 367 v_ice(ji,jj) = rswitch * v_ice(ji,jj) 362 368 … … 364 370 365 371 CALL lbc_bdy_lnk( v_ice(:,:), 'V', 1., ib_bdy ) 366 372 367 373 END SELECT 368 374
Note: See TracChangeset
for help on using the changeset viewer.