- Timestamp:
- 2017-07-12T16:51:20+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r8321 r8325 131 131 CALL lbc_lnk( zfric, 'T', 1. ) 132 132 ! 133 !----------------------------------! 134 ! Initialization and units change 135 !----------------------------------! 136 ftr_ice(:,:,:) = 0._wp ! part of solar radiation transmitted through the ice 137 138 ! Change the units of heat content; from J/m2 to J/m3 139 DO jl = 1, jpl 140 DO jk = 1, nlay_i 141 DO jj = 1, jpj 142 DO ji = 1, jpi 143 rswitch = MAX( 0._wp , SIGN( 1._wp , v_i(ji,jj,jl) - epsi20 ) ) 144 !Energy of melting q(S,T) [J.m-3] 145 e_i(ji,jj,jk,jl) = rswitch * e_i(ji,jj,jk,jl) / MAX( v_i(ji,jj,jl) , epsi20 ) * REAL( nlay_i ) 146 END DO 147 END DO 148 END DO 149 DO jk = 1, nlay_s 150 DO jj = 1, jpj 151 DO ji = 1, jpi 152 rswitch = MAX( 0._wp , SIGN( 1._wp , v_s(ji,jj,jl) - epsi20 ) ) 153 !Energy of melting q(S,T) [J.m-3] 154 e_s(ji,jj,jk,jl) = rswitch * e_s(ji,jj,jk,jl) / MAX( v_s(ji,jj,jl) , epsi20 ) * REAL( nlay_s ) 155 END DO 156 END DO 157 END DO 158 END DO 133 ftr_ice(:,:,:) = 0._wp ! initialization (part of solar radiation transmitted through the ice) 159 134 160 135 !--------------------------------------------------------------------! … … 269 244 CALL lim_thd_1d2d( nbpb, jl, 1 ) ! --- Move to 1D arrays --- ! 270 245 ! 246 DO jk = 1, nlay_i ! --- Change units from J/m2 to J/m3 --- ! 247 WHERE( ht_i_1d(:)>0._wp ) e_i_1d(:,jk) = e_i_1d(:,jk) / (ht_i_1d(:) * a_i_1d(:)) * nlay_i 248 ENDDO 249 DO jk = 1, nlay_s 250 WHERE( ht_s_1d(:)>0._wp ) e_s_1d(:,jk) = e_s_1d(:,jk) / (ht_s_1d(:) * a_i_1d(:)) * nlay_s 251 ENDDO 252 ! 271 253 IF( ln_limdH ) CALL lim_thd_dif( 1, nbpb ) ! --- Ice/Snow Temperature profile --- ! 272 254 ! 273 255 IF( ln_limdH ) CALL lim_thd_dh( 1, nbpb ) ! --- Ice/Snow thickness --- ! 274 256 ! 275 IF( ln_limdH ) CALL lim_thd_ent( 1, nbpb, q_i_1d(1:nbpb,:) ) ! --- Ice enthalpy remapping --- !257 IF( ln_limdH ) CALL lim_thd_ent( 1, nbpb, e_i_1d(1:nbpb,:) ) ! --- Ice enthalpy remapping --- ! 276 258 ! 277 259 CALL lim_thd_sal( 1, nbpb ) ! --- Ice salinity --- ! … … 285 267 END IF 286 268 ! 269 DO jk = 1, nlay_i ! --- Change units from J/m3 to J/m2 --- ! 270 e_i_1d(:,jk) = e_i_1d(:,jk) * ht_i_1d(:) * a_i_1d(:) * r1_nlay_i 271 ENDDO 272 DO jk = 1, nlay_s 273 e_s_1d(:,jk) = e_s_1d(:,jk) * ht_s_1d(:) * a_i_1d(:) * r1_nlay_s 274 ENDDO 275 ! 287 276 CALL lim_thd_1d2d( nbpb, jl, 2 ) ! --- Move to 2D arrays --- ! 288 277 ! … … 294 283 IF( ln_limdA) CALL lim_thd_da ! --- lateral melting --- ! 295 284 296 ! Enthalpies are global variables we have to readjust the units (heat content in J/m2)297 DO jl = 1, jpl298 DO jk = 1, nlay_i299 e_i(:,:,jk,jl) = e_i(:,:,jk,jl) * a_i(:,:,jl) * ht_i(:,:,jl) * r1_nlay_i300 END DO301 DO jk = 1, nlay_s302 e_s(:,:,jk,jl) = e_s(:,:,jk,jl) * a_i(:,:,jl) * ht_s(:,:,jl) * r1_nlay_s303 END DO304 END DO305 306 285 ! Change thickness to volume 307 286 v_i(:,:,:) = ht_i(:,:,:) * a_i(:,:,:) … … 375 354 ! Conversion q(S,T) -> T (second order equation) 376 355 zaaa = cpic 377 zbbb = ( rcp - cpic ) * ( ztmelts - rt0 ) + q_i_1d(ji,jk) * r1_rhoic - lfus356 zbbb = ( rcp - cpic ) * ( ztmelts - rt0 ) + e_i_1d(ji,jk) * r1_rhoic - lfus 378 357 zccc = lfus * ( ztmelts - rt0 ) 379 358 zdiscrim = SQRT( MAX( zbbb * zbbb - 4._wp * zaaa * zccc, 0._wp ) ) … … 451 430 DO jk = 1, nlay_s 452 431 CALL tab_2d_1d( nbpb, t_s_1d(1:nbpb,jk), t_s(:,:,jk,jl) , jpi, jpj, npb(1:nbpb) ) 453 CALL tab_2d_1d( nbpb, q_s_1d(1:nbpb,jk), e_s(:,:,jk,jl) , jpi, jpj, npb(1:nbpb) )432 CALL tab_2d_1d( nbpb, e_s_1d(1:nbpb,jk), e_s(:,:,jk,jl) , jpi, jpj, npb(1:nbpb) ) 454 433 END DO 455 434 DO jk = 1, nlay_i 456 435 CALL tab_2d_1d( nbpb, t_i_1d(1:nbpb,jk), t_i(:,:,jk,jl) , jpi, jpj, npb(1:nbpb) ) 457 CALL tab_2d_1d( nbpb, q_i_1d(1:nbpb,jk), e_i(:,:,jk,jl) , jpi, jpj, npb(1:nbpb) )436 CALL tab_2d_1d( nbpb, e_i_1d(1:nbpb,jk), e_i(:,:,jk,jl) , jpi, jpj, npb(1:nbpb) ) 458 437 CALL tab_2d_1d( nbpb, s_i_1d(1:nbpb,jk), s_i(:,:,jk,jl) , jpi, jpj, npb(1:nbpb) ) 459 438 END DO … … 523 502 DO jk = 1, nlay_s 524 503 CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_1d (1:nbpb,jk), jpi, jpj) 525 CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_1d (1:nbpb,jk), jpi, jpj)504 CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, e_s_1d (1:nbpb,jk), jpi, jpj) 526 505 END DO 527 506 DO jk = 1, nlay_i 528 507 CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_1d (1:nbpb,jk), jpi, jpj) 529 CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_1d (1:nbpb,jk), jpi, jpj)508 CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, e_i_1d (1:nbpb,jk), jpi, jpj) 530 509 CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_1d (1:nbpb,jk), jpi, jpj) 531 510 END DO
Note: See TracChangeset
for help on using the changeset viewer.