Changeset 9913 for NEMO/trunk/src/ICE/icethd.F90
- Timestamp:
- 2018-07-10T15:02:00+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ICE/icethd.F90
r9912 r9913 157 157 ! --- Sensible ocean-to-ice heat flux (W/m2) 158 158 zfric_u = MAX( SQRT( zfric(ji,jj) ), zfric_umin ) 159 fhtur(ji,jj) = rswitch * rau0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2160 161 fhtur(ji,jj) = rswitch * MIN( fhtur(ji,jj), - zqfr_neg * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) )162 ! upper bound for fhtur: the heat retrieved from the ocean must be smaller than the heat necessary to reach163 ! the freezing point, so that we do not have SST < T_freeze164 ! This implies: - ( fhtur(ji,jj) * at_i(ji,jj) * rtdice ) - zqfr >= 0165 166 !-- Energy Budget of the leads (J.m-2), source of lateral accretion. Must be < 0 to form ice167 qlead(ji,jj) = MIN( 0._wp , zqld - ( fhtur(ji,jj) * at_i(ji,jj) * rdt_ice ) - zqfr )159 qsb_ice_bot(ji,jj) = rswitch * rau0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 160 161 qsb_ice_bot(ji,jj) = rswitch * MIN( qsb_ice_bot(ji,jj), - zqfr_neg * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ) 162 ! upper bound for qsb_ice_bot: the heat retrieved from the ocean must be smaller than the heat necessary to reach 163 ! the freezing point, so that we do not have SST < T_freeze 164 ! This implies: - ( qsb_ice_bot(ji,jj) * at_i(ji,jj) * rtdice ) - zqfr >= 0 165 166 !-- Energy Budget of the leads (J.m-2), source of ice growth in open water. Must be < 0 to form ice 167 qlead(ji,jj) = MIN( 0._wp , zqld - ( qsb_ice_bot(ji,jj) * at_i(ji,jj) * rdt_ice ) - zqfr ) 168 168 169 169 ! If there is ice and leads are warming, then transfer energy from the lead budget and use it for bottom melting … … 185 185 ! In case we bypass growing/melting from top and bottom: we suppose ice is impermeable => ocean is isolated from atmosphere 186 186 IF( .NOT. ln_icedH ) THEN 187 qt_atm_oi (:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:)188 fhtur(:,:) = 0._wp189 fhld (:,:) = 0._wp187 qt_atm_oi (:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) 188 qsb_ice_bot(:,:) = 0._wp 189 fhld (:,:) = 0._wp 190 190 ENDIF 191 191 … … 193 193 ! Net heat flux on top of the ocean after ice thermo (1st step) [W.m-2] 194 194 ! --------------------------------------------------------------------- 195 ! First step here : non solar + precip - qlead - q turb195 ! First step here : non solar + precip - qlead - qsensible 196 196 ! Second step in icethd_dh : heat remaining if total melt (zq_rema) 197 197 ! Third step in iceupdate.F90 : heat from ice-ocean mass exchange (zf_mass) + solar 198 198 qt_oce_ai(:,:) = ( 1._wp - at_i_b(:,:) ) * qns_oce(:,:) + qemp_oce(:,:) & ! Non solar heat flux received by the ocean 199 199 & - qlead(:,:) * r1_rdtice & ! heat flux taken from the ocean where there is open water ice formation 200 & - at_i (:,:) * fhtur(:,:) & ! heat flux taken by turbulence201 & - at_i (:,:) * fhld(:,:)! heat flux taken during bottom growth/melt202 ! 200 & - at_i (:,:) * qsb_ice_bot(:,:) & ! heat flux taken by sensible flux 201 & - at_i (:,:) * fhld (:,:) ! heat flux taken during bottom growth/melt 202 ! ! (fhld should be 0 while bott growth) 203 203 !-------------------------------------------------------------------------------------------! 204 204 ! Thermodynamic computation (only on grid points covered by ice) => loop over ice categories … … 385 385 CALL tab_2d_1d( npti, nptidx(1:npti), t_bo_1d (1:npti), t_bo ) 386 386 CALL tab_2d_1d( npti, nptidx(1:npti), sprecip_1d (1:npti), sprecip ) 387 CALL tab_2d_1d( npti, nptidx(1:npti), fhtur_1d (1:npti), fhtur)387 CALL tab_2d_1d( npti, nptidx(1:npti), qsb_ice_bot_1d(1:npti), qsb_ice_bot ) 388 388 CALL tab_2d_1d( npti, nptidx(1:npti), fhld_1d (1:npti), fhld ) 389 389 … … 432 432 ! 433 433 ! SIMIP diagnostics 434 CALL tab_2d_1d( npti, nptidx(1:npti), diag_fc_bo_1d(1:npti), diag_fc_bo)435 CALL tab_2d_1d( npti, nptidx(1:npti), diag_fc_su_1d(1:npti), diag_fc_su)434 CALL tab_2d_1d( npti, nptidx(1:npti), qcn_ice_bot_1d(1:npti), qcn_ice_bot ) 435 CALL tab_2d_1d( npti, nptidx(1:npti), qcn_ice_top_1d(1:npti), qcn_ice_top ) 436 436 ! ocean surface fields 437 437 CALL tab_2d_1d( npti, nptidx(1:npti), sst_1d(1:npti), sst_m ) … … 527 527 CALL tab_1d_2d( npti, nptidx(1:npti), t1_ice_1d (1:npti), t1_ice (:,:,kl) ) 528 528 ! SIMIP diagnostics 529 CALL tab_1d_2d( npti, nptidx(1:npti), t_si_1d (1:npti), t_si(:,:,kl) )530 CALL tab_1d_2d( npti, nptidx(1:npti), diag_fc_bo_1d(1:npti), diag_fc_bo)531 CALL tab_1d_2d( npti, nptidx(1:npti), diag_fc_su_1d(1:npti), diag_fc_su)529 CALL tab_1d_2d( npti, nptidx(1:npti), t_si_1d (1:npti), t_si(:,:,kl) ) 530 CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_bot_1d(1:npti), qcn_ice_bot ) 531 CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_top_1d(1:npti), qcn_ice_top ) 532 532 ! extensive variables 533 533 CALL tab_1d_2d( npti, nptidx(1:npti), v_i_1d (1:npti), v_i (:,:,kl) )
Note: See TracChangeset
for help on using the changeset viewer.