Changeset 9935 for NEMO/trunk/src/ICE/icevar.F90
- Timestamp:
- 2018-07-12T16:12:48+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ICE/icevar.F90
r9888 r9935 226 226 ! 227 227 ze_i = e_i (ji,jj,jk,jl) * z1_v_i(ji,jj,jl) * zlay_i ! Energy of melting e(S,T) [J.m-3] 228 ztmelts = - sz_i(ji,jj,jk,jl) * tmut ! Ice layer melt temperature [C]228 ztmelts = - sz_i(ji,jj,jk,jl) * rTmlt ! Ice layer melt temperature [C] 229 229 ! Conversion q(S,T) -> T (second order equation) 230 zbbb = ( rcp - cpic ) * ztmelts + ze_i * r1_rhoic - lfus231 zccc = SQRT( MAX( zbbb * zbbb - 4._wp * cpic * lfus * ztmelts , 0._wp) )232 t_i(ji,jj,jk,jl) = MAX( -100._wp , MIN( -( zbbb + zccc ) * 0.5_wp * r1_ cpic, ztmelts ) ) + rt0 ! [K] with bounds: -100 < t_i < ztmelts230 zbbb = ( rcp - rcpi ) * ztmelts + ze_i * r1_rhoi - rLfus 231 zccc = SQRT( MAX( zbbb * zbbb - 4._wp * rcpi * rLfus * ztmelts , 0._wp) ) 232 t_i(ji,jj,jk,jl) = MAX( -100._wp , MIN( -( zbbb + zccc ) * 0.5_wp * r1_rcpi , ztmelts ) ) + rt0 ! [K] with bounds: -100 < t_i < ztmelts 233 233 ! 234 234 ELSE !--- no ice … … 247 247 WHERE( v_s(:,:,:) > epsi20 ) !--- icy area 248 248 t_s(:,:,jk,:) = rt0 + MAX( -100._wp , & 249 & MIN( r1_ cpic * ( -r1_rhosn * ( e_s(:,:,jk,:) / v_s(:,:,:) * zlay_s ) + lfus ) , 0._wp ) )249 & MIN( r1_rcpi * ( -r1_rhos * ( e_s(:,:,jk,:) / v_s(:,:,:) * zlay_s ) + rLfus ) , 0._wp ) ) 250 250 ELSEWHERE !--- no ice 251 251 t_s(:,:,jk,:) = rt0 … … 498 498 DO ji = 1 , jpi 499 499 ! update exchanges with ocean 500 sfx_res(ji,jj) = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl) * rhoi c* r1_rdtice501 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i (ji,jj,jl) * rhoi c* r1_rdtice502 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl) * rhos n* r1_rdtice500 sfx_res(ji,jj) = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl) * rhoi * r1_rdtice 501 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i (ji,jj,jl) * rhoi * r1_rdtice 502 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl) * rhos * r1_rdtice 503 503 ! 504 504 !----------------------------------------------------------------- … … 669 669 ! In case snow load is in excess that would lead to transformation from snow to ice 670 670 ! Then, transfer the snow excess into the ice (different from icethd_dh) 671 zdh = MAX( 0._wp, ( rhos n * zh_s(ji,jl) + ( rhoic- rau0 ) * zh_i(ji,jl) ) * r1_rau0 )671 zdh = MAX( 0._wp, ( rhos * zh_s(ji,jl) + ( rhoi - rau0 ) * zh_i(ji,jl) ) * r1_rau0 ) 672 672 ! recompute h_i, h_s avoiding out of bounds values 673 673 zh_i(ji,jl) = MIN( hi_max(jl), zh_i(ji,jl) + zdh ) 674 zh_s(ji,jl) = MAX( 0._wp, zh_s(ji,jl) - zdh * rhoi c * r1_rhosn)674 zh_s(ji,jl) = MAX( 0._wp, zh_s(ji,jl) - zdh * rhoi * r1_rhos ) 675 675 ENDIF 676 676 END DO … … 827 827 DO jk = 1, nlay_i 828 828 WHERE( t_i(:,:,jk,jl) < rt0 - epsi10 ) 829 bv_i(:,:,jl) = bv_i(:,:,jl) - tmut * sz_i(:,:,jk,jl) * r1_nlay_i / ( t_i(:,:,jk,jl) - rt0 )829 bv_i(:,:,jl) = bv_i(:,:,jl) - rTmlt * sz_i(:,:,jk,jl) * r1_nlay_i / ( t_i(:,:,jk,jl) - rt0 ) 830 830 END WHERE 831 831 END DO … … 852 852 DO jk = 1, nlay_i ! Sea ice energy of melting 853 853 DO ji = 1, npti 854 ztmelts = - tmut * sz_i_1d(ji,jk)854 ztmelts = - rTmlt * sz_i_1d(ji,jk) 855 855 t_i_1d(ji,jk) = MIN( t_i_1d(ji,jk), ztmelts + rt0 ) ! Force t_i_1d to be lower than melting point => likely conservation issue 856 856 ! (sometimes zdf scheme produces abnormally high temperatures) 857 e_i_1d(ji,jk) = rhoi c * ( cpic* ( ztmelts - ( t_i_1d(ji,jk) - rt0 ) ) &858 & + lfus * ( 1._wp - ztmelts / ( t_i_1d(ji,jk) - rt0 ) ) &859 & - rcp *ztmelts )857 e_i_1d(ji,jk) = rhoi * ( rcpi * ( ztmelts - ( t_i_1d(ji,jk) - rt0 ) ) & 858 & + rLfus * ( 1._wp - ztmelts / ( t_i_1d(ji,jk) - rt0 ) ) & 859 & - rcp * ztmelts ) 860 860 END DO 861 861 END DO 862 862 DO jk = 1, nlay_s ! Snow energy of melting 863 863 DO ji = 1, npti 864 e_s_1d(ji,jk) = rhos n * ( cpic * ( rt0 - t_s_1d(ji,jk) ) + lfus )864 e_s_1d(ji,jk) = rhos * ( rcpi * ( rt0 - t_s_1d(ji,jk) ) + rLfus ) 865 865 END DO 866 866 END DO
Note: See TracChangeset
for help on using the changeset viewer.