Changeset 9910
- Timestamp:
- 2018-07-10T12:33:32+02:00 (5 years ago)
- Location:
- NEMO/trunk/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ICE/ice.F90
r9604 r9910 270 270 271 271 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rn_amax_2d !: maximum ice concentration 2d array 272 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ftr_ice!: transmitted solar radiation under ice272 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qtr_ice_bot !: transmitted solar radiation under ice 273 273 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t1_ice !: temperature of the first layer (Jules coupling) [K] 274 274 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: cnd_ice !: effective conductivity at the top of ice/snow (Jules coupling) [W.m-2.K-1] … … 405 405 ! * Ice global state variables 406 406 ii = ii + 1 407 ALLOCATE( ftr_ice(jpi,jpj,jpl) , cnd_ice(jpi,jpj,jpl) , t1_ice(jpi,jpj,jpl) , &408 & h_i (jpi,jpj,jpl) , a_i (jpi,jpj,jpl) , v_i (jpi,jpj,jpl) , &409 & v_s (jpi,jpj,jpl) , h_s (jpi,jpj,jpl) , t_su (jpi,jpj,jpl) , &410 & s_i (jpi,jpj,jpl) , sv_i (jpi,jpj,jpl) , o_i (jpi,jpj,jpl) , &411 & oa_i (jpi,jpj,jpl) , bv_i (jpi,jpj,jpl) , STAT=ierr(ii) )407 ALLOCATE( qtr_ice_bot(jpi,jpj,jpl) , cnd_ice(jpi,jpj,jpl) , t1_ice(jpi,jpj,jpl) , & 408 & h_i (jpi,jpj,jpl) , a_i (jpi,jpj,jpl) , v_i (jpi,jpj,jpl) , & 409 & v_s (jpi,jpj,jpl) , h_s (jpi,jpj,jpl) , t_su (jpi,jpj,jpl) , & 410 & s_i (jpi,jpj,jpl) , sv_i (jpi,jpj,jpl) , o_i (jpi,jpj,jpl) , & 411 & oa_i (jpi,jpj,jpl) , bv_i (jpi,jpj,jpl) , STAT=ierr(ii) ) 412 412 413 413 ii = ii + 1 -
NEMO/trunk/src/ICE/ice1d.F90
r9750 r9910 32 32 33 33 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qlead_1d 34 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ftr_ice_1d34 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qtr_ice_bot_1d 35 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qsr_ice_1d 36 36 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qns_ice_1d … … 40 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qml_ice_1d !: heat available for snow / ice surface melting [W/m2] 41 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qcn_ice_1d !: heat available for snow / ice surface sublimation [W/m2] 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: q sr_ice_tr_1d!: solar flux transmitted below the ice surface [W/m2]42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qtr_ice_top_1d !: solar flux transmitted below the ice surface [W/m2] 43 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: t1_ice_1d !: temperature of the 1st layer (Jules coupling) [K] 44 44 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: cnd_ice_1d !: conductivity at the top of ice/snow (Jules coupling) [W/K/m2] … … 182 182 ii = 1 183 183 ALLOCATE( nptidx (jpij) , & 184 & qlead_1d (jpij) , ftr_ice_1d(jpij) , qsr_ice_1d(jpij) , &185 & qns_ice_1d(jpij) , qml_ice_1d (jpij) , qcn_ice_1d(jpij) , qsr_ice_tr_1d(jpij) , &186 & cnd_ice_1d(jpij) , t1_ice_1d (jpij) , t_bo_1d (jpij) , &187 & hfx_sum_1d(jpij) , hfx_bom_1d (jpij) , hfx_bog_1d(jpij) , &188 & hfx_dif_1d(jpij) , hfx_opw_1d (jpij) , hfx_dyn_1d(jpij) , &189 & rn_amax_1d(jpij) , &190 & hfx_thd_1d(jpij) , hfx_spr_1d (jpij) , &191 & hfx_snw_1d(jpij) , hfx_sub_1d (jpij) , &184 & qlead_1d (jpij) , qtr_ice_bot_1d(jpij) , qsr_ice_1d(jpij) , & 185 & qns_ice_1d(jpij) , qml_ice_1d (jpij) , qcn_ice_1d(jpij) , qtr_ice_top_1d(jpij) , & 186 & cnd_ice_1d(jpij) , t1_ice_1d (jpij) , t_bo_1d (jpij) , & 187 & hfx_sum_1d(jpij) , hfx_bom_1d (jpij) , hfx_bog_1d(jpij) , & 188 & hfx_dif_1d(jpij) , hfx_opw_1d (jpij) , hfx_dyn_1d(jpij) , & 189 & rn_amax_1d(jpij) , & 190 & hfx_thd_1d(jpij) , hfx_spr_1d (jpij) , & 191 & hfx_snw_1d(jpij) , hfx_sub_1d (jpij) , & 192 192 & hfx_res_1d(jpij) , hfx_err_rem_1d(jpij) , hfx_err_dif_1d(jpij) , hfx_out_1d(jpij), STAT=ierr(ii) ) 193 193 ! -
NEMO/trunk/src/ICE/icealb.F90
r9604 r9910 16 16 USE ice, ONLY: jpl ! sea-ice: number of categories 17 17 USE phycst ! physical constants 18 USE dom_oce ! domain: ocean 18 19 ! 19 20 USE in_out_manager ! I/O manager … … 160 161 ENDIF 161 162 ! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions 162 palb_os(ji,jj,jl) = zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice 163 palb_os(ji,jj,jl) = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) 164 ! 165 palb_cs(ji,jj,jl) = palb_os(ji,jj,jl) & 166 & - ( - 0.1010 * palb_os(ji,jj,jl) * palb_os(ji,jj,jl) & 167 & + 0.1933 * palb_os(ji,jj,jl) - 0.0148 ) * tmask(ji,jj,1) 163 168 ! 164 169 END DO … … 166 171 END DO 167 172 ! 168 palb_cs(:,:,:) = palb_os(:,:,:) - ( - 0.1010 * palb_os(:,:,:) * palb_os(:,:,:) + 0.1933 * palb_os(:,:,:) - 0.0148 )169 173 ! 170 174 IF( ln_timing ) CALL timing_stop('icealb') -
NEMO/trunk/src/ICE/icethd.F90
r9750 r9910 20 20 USE sbc_oce , ONLY : sss_m, sst_m, e3t_m, utau, vtau, ssu_m, ssv_m, frq_m, qns_tot, qsr_tot, sprecip, ln_cpl 21 21 USE sbc_ice , ONLY : qsr_oce, qns_oce, qemp_oce, qsr_ice, qns_ice, dqns_ice, evap_ice, qprec_ice, qevap_ice, & 22 & qml_ice, qcn_ice, q sr_ice_tr22 & qml_ice, qcn_ice, qtr_ice_top 23 23 USE ice1D ! sea-ice: thermodynamics variables 24 24 USE icethd_zdf ! sea-ice: vertical heat diffusion … … 128 128 CALL lbc_lnk( zfric, 'T', 1. ) 129 129 ! 130 ftr_ice(:,:,:) = 0._wp ! initialization (part of solar radiation transmitted through the ice)130 qtr_ice_bot(:,:,:) = 0._wp ! initialization (part of solar radiation transmitted through the ice) 131 131 132 132 !--------------------------------------------------------------------! … … 377 377 CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_frac_1d(1:npti), a_ip_frac(:,:,kl) ) 378 378 ! 379 CALL tab_2d_1d( npti, nptidx(1:npti), qprec_ice_1d (1:npti), qprec_ice)380 CALL tab_2d_1d( npti, nptidx(1:npti), qsr_ice_1d (1:npti), qsr_ice (:,:,kl))381 CALL tab_2d_1d( npti, nptidx(1:npti), qns_ice_1d (1:npti), qns_ice (:,:,kl))382 CALL tab_2d_1d( npti, nptidx(1:npti), ftr_ice_1d (1:npti), ftr_ice(:,:,kl) )383 CALL tab_2d_1d( npti, nptidx(1:npti), evap_ice_1d (1:npti), evap_ice(:,:,kl))384 CALL tab_2d_1d( npti, nptidx(1:npti), dqns_ice_1d (1:npti), dqns_ice(:,:,kl))385 CALL tab_2d_1d( npti, nptidx(1:npti), t_bo_1d (1:npti), t_bo)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)388 CALL tab_2d_1d( npti, nptidx(1:npti), fhld_1d (1:npti), fhld)379 CALL tab_2d_1d( npti, nptidx(1:npti), qprec_ice_1d (1:npti), qprec_ice ) 380 CALL tab_2d_1d( npti, nptidx(1:npti), qsr_ice_1d (1:npti), qsr_ice (:,:,kl) ) 381 CALL tab_2d_1d( npti, nptidx(1:npti), qns_ice_1d (1:npti), qns_ice (:,:,kl) ) 382 CALL tab_2d_1d( npti, nptidx(1:npti), qtr_ice_bot_1d(1:npti), qtr_ice_bot (:,:,kl) ) 383 CALL tab_2d_1d( npti, nptidx(1:npti), evap_ice_1d (1:npti), evap_ice(:,:,kl) ) 384 CALL tab_2d_1d( npti, nptidx(1:npti), dqns_ice_1d (1:npti), dqns_ice(:,:,kl) ) 385 CALL tab_2d_1d( npti, nptidx(1:npti), t_bo_1d (1:npti), t_bo ) 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 ) 388 CALL tab_2d_1d( npti, nptidx(1:npti), fhld_1d (1:npti), fhld ) 389 389 390 CALL tab_2d_1d( npti, nptidx(1:npti), qml_ice_1d (1:npti), qml_ice (:,:,kl))391 CALL tab_2d_1d( npti, nptidx(1:npti), qcn_ice_1d (1:npti), qcn_ice(:,:,kl) )392 CALL tab_2d_1d( npti, nptidx(1:npti), q sr_ice_tr_1d(1:npti), qsr_ice_tr(:,:,kl) )390 CALL tab_2d_1d( npti, nptidx(1:npti), qml_ice_1d (1:npti), qml_ice (:,:,kl) ) 391 CALL tab_2d_1d( npti, nptidx(1:npti), qcn_ice_1d (1:npti), qcn_ice (:,:,kl) ) 392 CALL tab_2d_1d( npti, nptidx(1:npti), qtr_ice_top_1d(1:npti), qtr_ice_top(:,:,kl) ) 393 393 ! 394 394 CALL tab_2d_1d( npti, nptidx(1:npti), wfx_snw_sni_1d(1:npti), wfx_snw_sni ) … … 417 417 CALL tab_2d_1d( npti, nptidx(1:npti), sfx_lam_1d (1:npti), sfx_lam ) 418 418 ! 419 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_thd_1d (1:npti), hfx_thd)420 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_spr_1d (1:npti), hfx_spr)421 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_sum_1d (1:npti), hfx_sum)422 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_bom_1d (1:npti), hfx_bom)423 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_bog_1d (1:npti), hfx_bog)424 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_dif_1d (1:npti), hfx_dif)425 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_opw_1d (1:npti), hfx_opw)426 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_snw_1d (1:npti), hfx_snw)427 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_sub_1d (1:npti), hfx_sub)428 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_res_1d (1:npti), hfx_res)419 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_thd_1d (1:npti), hfx_thd ) 420 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_spr_1d (1:npti), hfx_spr ) 421 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_sum_1d (1:npti), hfx_sum ) 422 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_bom_1d (1:npti), hfx_bom ) 423 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_bog_1d (1:npti), hfx_bog ) 424 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_dif_1d (1:npti), hfx_dif ) 425 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_opw_1d (1:npti), hfx_opw ) 426 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_snw_1d (1:npti), hfx_snw ) 427 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_sub_1d (1:npti), hfx_sub ) 428 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_res_1d (1:npti), hfx_res ) 429 429 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_err_dif_1d(1:npti), hfx_err_dif ) 430 430 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_err_rem_1d(1:npti), hfx_err_rem ) 431 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_out_1d (1:npti), hfx_out)431 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_out_1d (1:npti), hfx_out ) 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), 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 ) 436 436 ! ocean surface fields 437 437 CALL tab_2d_1d( npti, nptidx(1:npti), sst_1d(1:npti), sst_m ) … … 521 521 CALL tab_1d_2d( npti, nptidx(1:npti), hfx_out_1d (1:npti), hfx_out ) 522 522 ! 523 CALL tab_1d_2d( npti, nptidx(1:npti), qns_ice_1d (1:npti), qns_ice(:,:,kl) )524 CALL tab_1d_2d( npti, nptidx(1:npti), ftr_ice_1d(1:npti), ftr_ice(:,:,kl) )523 CALL tab_1d_2d( npti, nptidx(1:npti), qns_ice_1d (1:npti), qns_ice (:,:,kl) ) 524 CALL tab_1d_2d( npti, nptidx(1:npti), qtr_ice_bot_1d(1:npti), qtr_ice_bot(:,:,kl) ) 525 525 ! effective conductivity and 1st layer temperature (for Jules coupling) 526 526 CALL tab_1d_2d( npti, nptidx(1:npti), cnd_ice_1d(1:npti), cnd_ice(:,:,kl) ) -
NEMO/trunk/src/ICE/icethd_dh.F90
r9767 r9910 137 137 ! 138 138 DO ji = 1, npti 139 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - q sr_ice_tr_1d(ji) - fc_su(ji)139 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - fc_su(ji) 140 140 qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 141 141 zq_su(ji) = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) … … 145 145 ! 146 146 DO ji = 1, npti 147 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - q sr_ice_tr_1d(ji) - fc_su(ji)147 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - fc_su(ji) 148 148 qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 149 149 zq_su(ji) = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) -
NEMO/trunk/src/ICE/icethd_zdf_bl99.F90
r9656 r9910 178 178 !------------- 179 179 ! --- Transmission/absorption of solar radiation in the ice --- ! 180 zradtr_s(1:npti,0) = q sr_ice_tr_1d(1:npti)180 zradtr_s(1:npti,0) = qtr_ice_top_1d(1:npti) 181 181 DO jk = 1, nlay_s 182 182 DO ji = 1, npti … … 188 188 END DO 189 189 ! 190 zradtr_i(1:npti,0) = zradtr_s(1:npti,nlay_s) * isnow(1:npti) + q sr_ice_tr_1d(1:npti) * ( 1._wp - isnow(1:npti) )190 zradtr_i(1:npti,0) = zradtr_s(1:npti,nlay_s) * isnow(1:npti) + qtr_ice_top_1d(1:npti) * ( 1._wp - isnow(1:npti) ) 191 191 DO jk = 1, nlay_i 192 192 DO ji = 1, npti … … 198 198 END DO 199 199 ! 200 ftr_ice_1d(1:npti) = zradtr_i(1:npti,nlay_i) ! record radiation transmitted below the ice200 qtr_ice_bot_1d(1:npti) = zradtr_i(1:npti,nlay_i) ! record radiation transmitted below the ice 201 201 ! 202 202 iconv = 0 ! number of iterations … … 330 330 331 331 DO ji = 1, npti 332 zfnet(ji) = qsr_ice_1d(ji) - q sr_ice_tr_1d(ji) + qns_ice_1d(ji) ! net heat flux = net - transmitted solar + non solar332 zfnet(ji) = qsr_ice_1d(ji) - qtr_ice_top_1d(ji) + qns_ice_1d(ji) ! net heat flux = net - transmitted solar + non solar 333 333 END DO 334 334 ! … … 770 770 771 771 IF( t_su_1d(ji) < rt0 ) THEN ! case T_su < 0degC 772 zhfx_err = ( qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice)*a_i_1d(ji)772 zhfx_err = (qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice)*a_i_1d(ji) 773 773 ELSE ! case T_su = 0degC 774 zhfx_err = ( fc_su(ji) + qsr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice)*a_i_1d(ji)774 zhfx_err = (fc_su(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice)*a_i_1d(ji) 775 775 ENDIF 776 776 777 777 ELSEIF( k_jules == np_jules_ACTIVE ) THEN 778 778 779 zhfx_err = ( fc_su(ji) + q sr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice ) * a_i_1d(ji)779 zhfx_err = ( fc_su(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice ) * a_i_1d(ji) 780 780 781 781 ENDIF -
NEMO/trunk/src/ICE/iceupdate.F90
r9784 r9910 107 107 ! --- case we bypass ice thermodynamics --- ! 108 108 IF( .NOT. ln_icethd ) THEN ! we suppose ice is impermeable => ocean is isolated from atmosphere 109 hfx_in (:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:)110 hfx_out (:,:) = ( 1._wp - at_i_b(:,:) ) * qns_oce(:,:) + qemp_oce(:,:)111 ftr_ice(:,:,:) = 0._wp112 emp_ice (:,:) = 0._wp113 qemp_ice (:,:) = 0._wp114 qevap_ice (:,:,:) = 0._wp109 hfx_in (:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) 110 hfx_out (:,:) = ( 1._wp - at_i_b(:,:) ) * qns_oce(:,:) + qemp_oce(:,:) 111 qtr_ice_bot(:,:,:) = 0._wp 112 emp_ice (:,:) = 0._wp 113 qemp_ice (:,:) = 0._wp 114 qevap_ice (:,:,:) = 0._wp 115 115 ENDIF 116 116 … … 120 120 ! Solar heat flux reaching the ocean = zqsr (W.m-2) 121 121 !--------------------------------------------------- 122 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - ftr_ice(ji,jj,:) ) )122 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) 123 123 124 124 ! Total heat flux reaching the ocean = hfx_out (W.m-2) … … 250 250 IF( iom_use('qsr_ice' ) ) CALL iom_put( "qsr_ice" , SUM( qsr_ice * a_i_b, dim=3 ) ) ! solar flux at ice surface 251 251 IF( iom_use('qns_ice' ) ) CALL iom_put( "qns_ice" , SUM( qns_ice * a_i_b, dim=3 ) + qemp_ice ) ! non-solar flux at ice surface 252 IF( iom_use('qtr_ice_bot') ) CALL iom_put( "qtr_ice_bot", SUM( ftr_ice * a_i_b, dim=3 )) ! solar flux transmitted thru ice253 IF( iom_use('qtr_ice_top') ) CALL iom_put( "qtr_ice_top", SUM( q sr_ice_tr * a_i_b, dim=3 )) ! solar flux transmitted thru ice surface252 IF( iom_use('qtr_ice_bot') ) CALL iom_put( "qtr_ice_bot", SUM( qtr_ice_bot * a_i_b, dim=3 ) ) ! solar flux transmitted thru ice 253 IF( iom_use('qtr_ice_top') ) CALL iom_put( "qtr_ice_top", SUM( qtr_ice_top * a_i_b, dim=3 ) ) ! solar flux transmitted thru ice surface 254 254 IF( iom_use('qt_oce' ) ) CALL iom_put( "qt_oce" , ( qsr_oce + qns_oce ) * ( 1._wp - at_i_b ) + qemp_oce ) 255 255 IF( iom_use('qt_ice' ) ) CALL iom_put( "qt_ice" , SUM( ( qns_ice + qsr_ice ) * a_i_b, dim=3 ) + qemp_ice ) -
NEMO/trunk/src/OCE/SBC/sbc_ice.F90
r9767 r9910 49 49 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qml_ice !: heat available for snow / ice surface melting [W/m2] 50 50 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice !: heat conduction flux in the layer below surface [W/m2] 51 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: q sr_ice_tr!: solar flux transmitted below the ice surface [W/m2]51 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qtr_ice_top !: solar flux transmitted below the ice surface [W/m2] 52 52 53 53 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: utau_ice !: atmos-ice u-stress. VP: I-pt ; EVP: U,V-pts [N/m2] … … 126 126 ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) , & 127 127 & qla_ice (jpi,jpj,jpl) , dqla_ice (jpi,jpj,jpl) , & 128 & dqns_ice(jpi,jpj,jpl) , tn_ice (jpi,jpj,jpl) , alb_ice (jpi,jpj,jpl) , &129 & qml_ice (jpi,jpj,jpl) , qcn_ice (jpi,jpj,jpl) , q sr_ice_tr(jpi,jpj,jpl) , &130 & utau_ice(jpi,jpj) , vtau_ice (jpi,jpj) , wndm_ice (jpi,jpj) , &131 & evap_ice(jpi,jpj,jpl) , devap_ice(jpi,jpj,jpl) , qprec_ice (jpi,jpj) , &132 & qemp_ice(jpi,jpj) , qevap_ice(jpi,jpj,jpl) , qemp_oce (jpi,jpj) , &133 & qns_oce (jpi,jpj) , qsr_oce (jpi,jpj) , emp_oce (jpi,jpj) , &134 & emp_ice (jpi,jpj) , tsfc_ice (jpi,jpj,jpl) , sstfrz (jpi,jpj) , STAT= ierr(2) )128 & dqns_ice(jpi,jpj,jpl) , tn_ice (jpi,jpj,jpl) , alb_ice (jpi,jpj,jpl) , & 129 & qml_ice (jpi,jpj,jpl) , qcn_ice (jpi,jpj,jpl) , qtr_ice_top(jpi,jpj,jpl) , & 130 & utau_ice(jpi,jpj) , vtau_ice (jpi,jpj) , wndm_ice (jpi,jpj) , & 131 & evap_ice(jpi,jpj,jpl) , devap_ice(jpi,jpj,jpl) , qprec_ice (jpi,jpj) , & 132 & qemp_ice(jpi,jpj) , qevap_ice(jpi,jpj,jpl) , qemp_oce (jpi,jpj) , & 133 & qns_oce (jpi,jpj) , qsr_oce (jpi,jpj) , emp_oce (jpi,jpj) , & 134 & emp_ice (jpi,jpj) , tsfc_ice (jpi,jpj,jpl) , sstfrz (jpi,jpj) , STAT= ierr(2) ) 135 135 #endif 136 136 -
NEMO/trunk/src/OCE/SBC/sbcblk.F90
r9767 r9910 907 907 ! 908 908 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 909 q sr_ice_tr(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) )909 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 910 910 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 911 q sr_ice_tr(:,:,:) = qsr_ice(:,:,:) * zfr1911 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 912 912 ELSEWHERE ! zero when hs>0 913 q sr_ice_tr(:,:,:) = 0._wp913 qtr_ice_top(:,:,:) = 0._wp 914 914 END WHERE 915 915 ! … … 1000 1000 ztsu = ptsu(ji,jj,jl) ! Store current iteration temperature 1001 1001 ztsu0 = ptsu(ji,jj,jl) ! Store initial surface temperature 1002 zqa0 = qsr_ice(ji,jj,jl) - q sr_ice_tr(ji,jj,jl) + qns_ice(ji,jj,jl)! Net initial atmospheric heat flux1002 zqa0 = qsr_ice(ji,jj,jl) - qtr_ice_top(ji,jj,jl) + qns_ice(ji,jj,jl) ! Net initial atmospheric heat flux 1003 1003 ! 1004 1004 DO iter = 1, nit ! --- Iterative loop … … 1011 1011 qcn_ice(ji,jj,jl) = zkeff_h * ( ptsu(ji,jj,jl) - ptb(ji,jj) ) 1012 1012 qns_ice(ji,jj,jl) = qns_ice(ji,jj,jl) + dqns_ice(ji,jj,jl) * ( ptsu(ji,jj,jl) - ztsu0 ) 1013 qml_ice(ji,jj,jl) = ( qsr_ice(ji,jj,jl) - q sr_ice_tr(ji,jj,jl) + qns_ice(ji,jj,jl) - qcn_ice(ji,jj,jl) )&1013 qml_ice(ji,jj,jl) = ( qsr_ice(ji,jj,jl) - qtr_ice_top(ji,jj,jl) + qns_ice(ji,jj,jl) - qcn_ice(ji,jj,jl) ) & 1014 1014 & * MAX( 0._wp , SIGN( 1._wp, ptsu(ji,jj,jl) - rt0 ) ) 1015 1015 -
NEMO/trunk/src/OCE/SBC/sbccpl.F90
r9872 r9910 2012 2012 ztri = 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ! surface transmission parameter (Grenfell Maykut 77) 2013 2013 ! 2014 q sr_ice_tr(:,:,:) = ztri * qsr_ice(:,:,:)2015 WHERE( phs(:,:,:) >= 0.0_wp ) q sr_ice_tr(:,:,:) = 0._wp ! snow fully opaque2016 WHERE( phi(:,:,:) <= 0.1_wp ) q sr_ice_tr(:,:,:) = qsr_ice(:,:,:) ! thin ice transmits all solar radiation2014 qtr_ice_top(:,:,:) = ztri * qsr_ice(:,:,:) 2015 WHERE( phs(:,:,:) >= 0.0_wp ) qtr_ice_top(:,:,:) = 0._wp ! snow fully opaque 2016 WHERE( phi(:,:,:) <= 0.1_wp ) qtr_ice_top(:,:,:) = qsr_ice(:,:,:) ! thin ice transmits all solar radiation 2017 2017 ! 2018 2018 CASE( np_jules_ACTIVE ) !== Jules coupler is active ==! 2019 2019 ! 2020 ! ! ===> here we must receive the q sr_ice_trarray from the coupler2020 ! ! ===> here we must receive the qtr_ice_top array from the coupler 2021 2021 ! for now just assume zero (fully opaque ice) 2022 q sr_ice_tr(:,:,:) = 0._wp2022 qtr_ice_top(:,:,:) = 0._wp 2023 2023 ! 2024 2024 END SELECT
Note: See TracChangeset
for help on using the changeset viewer.