Changeset 13589 for NEMO/releases/r4.0/r4.0-HEAD/src/ICE/iceupdate.F90
- Timestamp:
- 2020-10-14T15:35:49+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/releases/r4.0/r4.0-HEAD/src/ICE/iceupdate.F90
r13284 r13589 25 25 USE traqsr ! add penetration of solar flux in the calculation of heat budget 26 26 USE icectl ! sea-ice: control prints 27 USE bdy_oce , ONLY : ln_bdy28 27 USE zdfdrg , ONLY : ln_drgice_imp 29 28 ! … … 93 92 ! 94 93 INTEGER :: ji, jj, jl, jk ! dummy loop indices 95 REAL(wp) :: zqmass ! Heat flux associated with mass exchange ice->ocean (W.m-2)96 94 REAL(wp) :: zqsr ! New solar flux received by the ocean 97 95 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2D workspace … … 104 102 WRITE(numout,*)'~~~~~~~~~~~~~~' 105 103 ENDIF 104 105 ! Net heat flux on top of the ice-ocean (W.m-2) 106 !---------------------------------------------- 107 qt_atm_oi(:,:) = qns_tot(:,:) + qsr_tot(:,:) 106 108 107 109 ! --- case we bypass ice thermodynamics --- ! … … 117 119 DO ji = 1, jpi 118 120 119 ! Solar heat flux reaching the ocean = zqsr (W.m-2)121 ! Solar heat flux reaching the ocean (max) = zqsr (W.m-2) 120 122 !--------------------------------------------------- 121 123 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) … … 123 125 ! Total heat flux reaching the ocean = qt_oce_ai (W.m-2) 124 126 !--------------------------------------------------- 125 zqmass = hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) ! heat flux from snow is 0 (T=0 degC) 126 qt_oce_ai(ji,jj) = qt_oce_ai(ji,jj) + zqmass + zqsr 127 128 ! Add the residual from heat diffusion equation and sublimation (W.m-2) 129 !---------------------------------------------------------------------- 130 qt_oce_ai(ji,jj) = qt_oce_ai(ji,jj) + hfx_err_dif(ji,jj) + & 131 & ( hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) ) 132 127 qt_oce_ai(ji,jj) = qt_atm_oi(ji,jj) - hfx_sum(ji,jj) - hfx_bom(ji,jj) - hfx_bog(ji,jj) & 128 & - hfx_dif(ji,jj) - hfx_opw(ji,jj) - hfx_snw(ji,jj) & 129 & + hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) & 130 & + hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) + hfx_spr(ji,jj) 131 133 132 ! New qsr and qns used to compute the oceanic heat flux at the next time step 134 133 !---------------------------------------------------------------------------- 135 qsr(ji,jj) = zqsr 134 ! if warming and some ice remains, then we suppose that the whole solar flux has been consumed to melt the ice 135 ! else ( cooling or no ice left ), then we suppose that no solar flux has been consumed 136 ! 137 IF( fhld(ji,jj) > 0._wp .AND. at_i(ji,jj) > 0._wp ) THEN !-- warming and some ice remains 138 ! solar flux transmitted thru the 1st level of the ocean (i.e. not used by sea-ice) 139 qsr(ji,jj) = ( 1._wp - at_i_b(ji,jj) ) * qsr_oce(ji,jj) * ( 1._wp - frq_m(ji,jj) ) & 140 ! + solar flux transmitted thru ice (also not used by sea-ice) 141 & + SUM( a_i_b(ji,jj,:) * qtr_ice_bot(ji,jj,:) ) 142 ! 143 ELSE !-- cooling or no ice left 144 qsr(ji,jj) = zqsr 145 ENDIF 146 ! 147 ! the non-solar is simply derived from the solar flux 136 148 qns(ji,jj) = qt_oce_ai(ji,jj) - zqsr 137 149 … … 142 154 ! Mass flux at the ocean surface 143 155 !------------------------------------ 144 ! case of realistic freshwater flux (Tartinville et al., 2001) (presently ACTIVATED) 145 ! ------------------------------------------------------------------------------------- 146 ! The idea of this approach is that the system that we consider is the ICE-OCEAN system 147 ! Thus FW flux = External ( E-P+snow melt) 148 ! Salt flux = Exchanges in the ice-ocean system then converted into FW 149 ! Associated to Ice formation AND Ice melting 150 ! Even if i see Ice melting as a FW and SALT flux 151 ! 152 ! mass flux from ice/ocean 156 ! ice-ocean mass flux 153 157 wfx_ice(ji,jj) = wfx_bog(ji,jj) + wfx_bom(ji,jj) + wfx_sum(ji,jj) + wfx_sni(ji,jj) & 154 158 & + wfx_opw(ji,jj) + wfx_dyn(ji,jj) + wfx_res(ji,jj) + wfx_lam(ji,jj) + wfx_pnd(ji,jj) 155 159 156 ! add the snow melt water to snow mass flux to the ocean160 ! snw-ocean mass flux 157 161 wfx_snw(ji,jj) = wfx_snw_sni(ji,jj) + wfx_snw_dyn(ji,jj) + wfx_snw_sum(ji,jj) 158 162 159 ! mass flux at the ocean/ice interface 160 fmmflx(ji,jj) = - ( wfx_ice(ji,jj) + wfx_snw(ji,jj) + wfx_err_sub(ji,jj) ) ! F/M mass flux save at least for biogeochemical model 161 emp(ji,jj) = emp_oce(ji,jj) - wfx_ice(ji,jj) - wfx_snw(ji,jj) - wfx_err_sub(ji,jj) ! mass flux + F/M mass flux (always ice/ocean mass exchange) 162 163 ! total mass flux at the ocean/ice interface 164 fmmflx(ji,jj) = - wfx_ice(ji,jj) - wfx_snw(ji,jj) - wfx_err_sub(ji,jj) ! ice-ocean mass flux saved at least for biogeochemical model 165 emp (ji,jj) = emp_oce(ji,jj) - wfx_ice(ji,jj) - wfx_snw(ji,jj) - wfx_err_sub(ji,jj) ! atm-ocean + ice-ocean mass flux 163 166 164 167 ! Salt flux at the ocean surface … … 265 268 CALL iom_put ('hfxdif' , hfx_dif ) ! heat flux used for ice temperature change 266 269 CALL iom_put ('hfxsnw' , hfx_snw ) ! heat flux used for snow melt 267 CALL iom_put ('hfxerr' , hfx_err_dif ) ! heat flux error after heat diffusion (included in qt_oce_ai)270 CALL iom_put ('hfxerr' , hfx_err_dif ) ! heat flux error after heat diffusion 268 271 269 272 ! heat fluxes associated with mass exchange (freeze/melt/precip...) … … 282 285 !--------- 283 286 #if ! defined key_agrif 284 IF( ln_icediachk .AND. .NOT. ln_bdy) CALL ice_cons_final('iceupdate') ! conservation287 IF( ln_icediachk ) CALL ice_cons_final('iceupdate') ! conservation 285 288 #endif 286 IF( ln_icectl 287 IF( ln_ctl 288 IF( ln_timing 289 IF( ln_icectl ) CALL ice_prt (kt, iiceprt, jiceprt, 3, 'Final state ice_update') ! prints 290 IF( ln_ctl ) CALL ice_prt3D ('iceupdate') ! prints 291 IF( ln_timing ) CALL timing_stop ('ice_update') ! timing 289 292 ! 290 293 END SUBROUTINE ice_update_flx
Note: See TracChangeset
for help on using the changeset viewer.