Changeset 4872 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90
- Timestamp:
- 2014-11-18T18:03:00+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90
r4869 r4872 166 166 REAL(wp), POINTER, DIMENSION(:,:,:) :: hL ! left boundary for the ITD for each thickness 167 167 REAL(wp), POINTER, DIMENSION(:,:,:) :: hR ! left boundary for the ITD for each thickness 168 REAL(wp), POINTER, DIMENSION(:,:,:) :: zht_i_ o! old ice thickness168 REAL(wp), POINTER, DIMENSION(:,:,:) :: zht_i_b ! old ice thickness 169 169 REAL(wp), POINTER, DIMENSION(:,:,:) :: dummy_es 170 170 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdaice, zdvice ! local increment of ice area and volume … … 184 184 CALL wrk_alloc( jpi,jpj, zremap_flag ) ! integer 185 185 CALL wrk_alloc( jpi,jpj,jpl-1, zdonor ) ! integer 186 CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_ o, dummy_es )186 CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 187 187 CALL wrk_alloc( jpi,jpj,jpl-1, zdaice, zdvice ) 188 188 CALL wrk_alloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 ) … … 221 221 zindb = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i(ji,jj,jl) + epsi10 ) ) !0 if no ice and 1 if yes 222 222 ht_i(ji,jj,jl) = v_i(ji,jj,jl) / MAX( a_i(ji,jj,jl), epsi10 ) * zindb 223 zindb = 1.0 - MAX( 0.0, SIGN( 1.0, - old_a_i(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes224 zht_i_ o(ji,jj,jl) = old_v_i(ji,jj,jl) / MAX( old_a_i(ji,jj,jl), epsi10 ) * zindb225 IF( a_i(ji,jj,jl) > epsi10 ) zdhice(ji,jj,jl) = ht_i(ji,jj,jl) - zht_i_ o(ji,jj,jl)223 zindb = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i_b(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes 224 zht_i_b(ji,jj,jl) = v_i_b(ji,jj,jl) / MAX( a_i_b(ji,jj,jl), epsi10 ) * zindb 225 IF( a_i(ji,jj,jl) > epsi10 ) zdhice(ji,jj,jl) = ht_i(ji,jj,jl) - zht_i_b(ji,jj,jl) 226 226 END DO 227 227 END DO … … 268 268 ! 269 269 zhbnew(ii,ij,jl) = hi_max(jl) 270 IF ( old_a_i(ii,ij,jl) > epsi10 .AND. old_a_i(ii,ij,jl+1) > epsi10 ) THEN270 IF ( a_i_b(ii,ij,jl) > epsi10 .AND. a_i_b(ii,ij,jl+1) > epsi10 ) THEN 271 271 !interpolate between adjacent category growth rates 272 zslope = ( zdhice(ii,ij,jl+1) - zdhice(ii,ij,jl) ) / ( zht_i_ o(ii,ij,jl+1) - zht_i_o(ii,ij,jl) )273 zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) + zslope * ( hi_max(jl) - zht_i_ o(ii,ij,jl) )274 ELSEIF ( old_a_i(ii,ij,jl) > epsi10) THEN272 zslope = ( zdhice(ii,ij,jl+1) - zdhice(ii,ij,jl) ) / ( zht_i_b(ii,ij,jl+1) - zht_i_b(ii,ij,jl) ) 273 zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) + zslope * ( hi_max(jl) - zht_i_b(ii,ij,jl) ) 274 ELSEIF ( a_i_b(ii,ij,jl) > epsi10) THEN 275 275 zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) 276 ELSEIF ( old_a_i(ii,ij,jl+1) > epsi10) THEN276 ELSEIF ( a_i_b(ii,ij,jl+1) > epsi10) THEN 277 277 zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl+1) 278 278 ENDIF … … 337 337 !----------------------------------------------------------------------------------------------- 338 338 !- 7.1 g(h) for category 1 at start of time step 339 CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_ o(:,:,klbnd), &339 CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_b(:,:,klbnd), & 340 340 & g0(:,:,klbnd), g1(:,:,klbnd), hL(:,:,klbnd), & 341 341 & hR(:,:,klbnd), zremap_flag ) … … 362 362 ! Constrain new thickness <= ht_i 363 363 zdamax = a_i(ii,ij,klbnd) * & 364 (1.0 - ht_i(ii,ij,klbnd)/zht_i_ o(ii,ij,klbnd)) ! zdamax > 0364 (1.0 - ht_i(ii,ij,klbnd)/zht_i_b(ii,ij,klbnd)) ! zdamax > 0 365 365 !ice area lost due to melting of thin ice 366 366 zda0 = MIN(zda0, zdamax) … … 484 484 CALL wrk_dealloc( jpi,jpj, zremap_flag ) ! integer 485 485 CALL wrk_dealloc( jpi,jpj,jpl-1, zdonor ) ! integer 486 CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_ o, dummy_es )486 CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 487 487 CALL wrk_dealloc( jpi,jpj,jpl-1, zdaice, zdvice ) 488 488 CALL wrk_dealloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )
Note: See TracChangeset
for help on using the changeset viewer.