- Timestamp:
- 2015-06-04T20:39:20+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5218_CNRS17_coupling/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r5352 r5357 48 48 PRIVATE 49 49 50 PUBLIC lim_thd ! called by limstp module51 PUBLIC lim_thd_init ! called by sbc_lim_init50 PUBLIC lim_thd ! called by limstp module 51 PUBLIC lim_thd_init ! called by sbc_lim_init 52 52 53 53 !! * Substitutions … … 90 90 REAL(wp), PARAMETER :: zch = 0.0057_wp ! heat transfer coefficient 91 91 ! 92 REAL(wp), POINTER, DIMENSION(:,:) :: zqsr, zqns93 92 !!------------------------------------------------------------------- 94 CALL wrk_alloc( jpi,jpj, zqsr, zqns )95 93 96 94 IF( nn_timing == 1 ) CALL timing_start('limthd') … … 134 132 ! 2) Partial computation of forcing for the thermodynamic sea ice model. ! 135 133 !-----------------------------------------------------------------------------! 136 137 !--- Ocean solar and non solar fluxes to be used in zqld138 IF ( .NOT. ln_cpl ) THEN ! --- forced case, fluxes to the lead are the same as over the ocean139 !140 zqsr(:,:) = qsr(:,:) ; zqns(:,:) = qns(:,:)141 !142 ELSE ! --- coupled case, fluxes to the lead are total - intercepted143 !144 zqsr(:,:) = qsr_tot(:,:) ; zqns(:,:) = qns_tot(:,:)145 !146 DO jl = 1, jpl147 DO jj = 1, jpj148 DO ji = 1, jpi149 zqsr(ji,jj) = zqsr(ji,jj) - qsr_ice(ji,jj,jl) * a_i_b(ji,jj,jl)150 zqns(ji,jj) = zqns(ji,jj) - qns_ice(ji,jj,jl) * a_i_b(ji,jj,jl)151 END DO152 END DO153 END DO154 !155 ENDIF156 157 134 DO jj = 1, jpj 158 135 DO ji = 1, jpi … … 165 142 ! ! temperature and turbulent mixing (McPhee, 1992) 166 143 ! 167 168 144 ! --- Energy received in the lead, zqld is defined everywhere (J.m-2) --- ! 169 ! REMARK valid at least in forced mode from clem 170 ! precip is included in qns but not in qns_ice 171 IF ( ln_cpl ) THEN 172 zqld = tmask(ji,jj,1) * rdt_ice * & 173 & ( zqsr(ji,jj) * frq_m(ji,jj) + zqns(ji,jj) & ! pfrld already included in coupled mode 174 & + ( pfrld(ji,jj)**rn_betas - pfrld(ji,jj) ) * sprecip(ji,jj) * & ! heat content of precip 175 & ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus ) & 176 & + ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 ) ) 177 ELSE 178 zqld = tmask(ji,jj,1) * rdt_ice * & 179 & ( pfrld(ji,jj) * ( zqsr(ji,jj) * frq_m(ji,jj) + zqns(ji,jj) ) & 180 & + ( pfrld(ji,jj)**rn_betas - pfrld(ji,jj) ) * sprecip(ji,jj) * & ! heat content of precip 181 & ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus ) & 182 & + ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 ) ) 183 ENDIF 145 zqld = tmask(ji,jj,1) * rdt_ice * & 146 & ( pfrld(ji,jj) * qsr_oce(ji,jj) * frq_m(ji,jj) + pfrld(ji,jj) * qns_oce(ji,jj) + qemp_oce(ji,jj) ) 184 147 185 148 ! --- Energy needed to bring ocean surface layer until its freezing (<0, J.m-2) --- ! … … 208 171 ! Net heat flux on top of ice-ocean [W.m-2] 209 172 ! ----------------------------------------- 210 ! heat flux at the ocean surface + precip 211 ! + heat flux at the ice surface 212 hfx_in(ji,jj) = hfx_in(ji,jj) & 213 ! heat flux above the ocean 214 & + pfrld(ji,jj) * ( zqns(ji,jj) + zqsr(ji,jj) ) & 215 ! latent heat of precip (note that precip is included in qns but not in qns_ice) 216 & + ( 1._wp - pfrld(ji,jj) ) * sprecip(ji,jj) * ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus ) & 217 & + ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 ) & 218 ! heat flux above the ice 219 & + SUM( a_i_b(ji,jj,:) * ( qns_ice(ji,jj,:) + qsr_ice(ji,jj,:) ) ) 173 hfx_in(ji,jj) = qns_tot(ji,jj) + qsr_tot(ji,jj) 220 174 221 175 ! ----------------------------------------------------------------------------- 222 ! Net heat flux that is retroceded to the ocean or taken from the ocean[W.m-2]176 ! Net heat flux on top of the ocean after ice thermo (1st step) [W.m-2] 223 177 ! ----------------------------------------------------------------------------- 224 178 ! First step here : non solar + precip - qlead - qturb 225 179 ! Second step in limthd_dh : heat remaining if total melt (zq_rema) 226 180 ! Third step in limsbc : heat from ice-ocean mass exchange (zf_mass) + solar 227 hfx_out(ji,jj) = hfx_out(ji,jj) & 228 ! Non solar heat flux received by the ocean 229 & + pfrld(ji,jj) * zqns(ji,jj) & 230 ! latent heat of precip (note that precip is included in qns but not in qns_ice) 231 & + ( pfrld(ji,jj)**rn_betas - pfrld(ji,jj) ) * sprecip(ji,jj) & 232 & * ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus ) & 233 & + ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 ) & 234 ! heat flux taken from the ocean where there is open water ice formation 235 & - qlead(ji,jj) * r1_rdtice & 236 ! heat flux taken from the ocean during bottom growth/melt (fhld should be 0 while bott growth) 237 & - at_i(ji,jj) * fhtur(ji,jj) & 238 & - at_i(ji,jj) * fhld(ji,jj) 239 181 hfx_out(ji,jj) = pfrld(ji,jj) * qns_oce(ji,jj) + qemp_oce(ji,jj) & ! Non solar heat flux received by the ocean 182 & - qlead(ji,jj) * r1_rdtice & ! heat flux taken from the ocean where there is open water ice formation 183 & - at_i(ji,jj) * fhtur(ji,jj) & ! heat flux taken by turbulence 184 & - at_i(ji,jj) * fhld(ji,jj) ! heat flux taken during bottom growth/melt 185 ! (fhld should be 0 while bott growth) 240 186 END DO 241 187 END DO … … 410 356 IF( ln_limdiahsb ) CALL lim_cons_hsm(1, 'limthd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 411 357 412 CALL wrk_dealloc( jpi,jpj, zqsr, zqns )413 414 358 !------------------------------------------------------------------------------| 415 359 ! 6) Transport of ice between thickness categories. | … … 470 414 END SUBROUTINE lim_thd 471 415 416 472 417 SUBROUTINE lim_thd_temp( kideb, kiut ) 473 418 !!----------------------------------------------------------------------- … … 568 513 END DO 569 514 570 CALL tab_2d_1d( nbpb, tatm_ice_1d(1:nbpb), tatm_ice(:,:), jpi, jpj, npb(1:nbpb) )515 CALL tab_2d_1d( nbpb, qprec_ice_1d(1:nbpb), qprec_ice(:,:) , jpi, jpj, npb(1:nbpb) ) 571 516 CALL tab_2d_1d( nbpb, qsr_ice_1d (1:nbpb), qsr_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 572 517 CALL tab_2d_1d( nbpb, fr1_i0_1d (1:nbpb), fr1_i0 , jpi, jpj, npb(1:nbpb) ) … … 574 519 CALL tab_2d_1d( nbpb, qns_ice_1d (1:nbpb), qns_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 575 520 CALL tab_2d_1d( nbpb, ftr_ice_1d (1:nbpb), ftr_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 576 IF( .NOT. ln_cpl ) THEN 577 CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb), qla_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 578 CALL tab_2d_1d( nbpb, dqla_ice_1d(1:nbpb), dqla_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 579 ENDIF 521 CALL tab_2d_1d( nbpb, evap_ice_1d (1:nbpb), evap_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 580 522 CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 581 523 CALL tab_2d_1d( nbpb, t_bo_1d (1:nbpb), t_bo , jpi, jpj, npb(1:nbpb) )
Note: See TracChangeset
for help on using the changeset viewer.