Changeset 12726
- Timestamp:
- 2020-04-09T16:30:48+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/ice.F90
r12725 r12726 279 279 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_snw !: heat flux for snow melt [W.m-2] 280 280 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_err_dif !: heat flux remaining due to change in non-solar flux [W.m-2] 281 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_err_rem !: heat flux error after heat remapping => must be 0 [W.m-2]282 281 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qt_atm_oi !: heat flux at the interface atm-[oce+ice] [W.m-2] 283 282 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qt_oce_ai !: heat flux at the interface oce-[atm+ice] [W.m-2] … … 437 436 & hfx_sum (jpi,jpj) , hfx_bom (jpi,jpj) , hfx_bog(jpi,jpj) , hfx_dif(jpi,jpj) , & 438 437 & hfx_opw (jpi,jpj) , hfx_thd (jpi,jpj) , hfx_dyn(jpi,jpj) , hfx_spr(jpi,jpj) , & 439 & hfx_err_dif(jpi,jpj) , hfx_err_rem(jpi,jpj) , wfx_err_sub(jpi,jpj) ,STAT=ierr(ii) )438 & hfx_err_dif(jpi,jpj) , wfx_err_sub(jpi,jpj) , STAT=ierr(ii) ) 440 439 441 440 ! * Ice global state variables -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/ice1d.F90
r12725 r12726 51 51 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hfx_snw_1d 52 52 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hfx_dyn_1d 53 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hfx_err_rem_1d54 53 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hfx_err_dif_1d 55 54 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qt_oce_ai_1d … … 127 126 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: v_ip_1d !: 128 127 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: h_ip_1d !: 129 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: a_ip_frac_1d !:130 128 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: v_il_1d !: Ice pond lid 131 129 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: h_il_1d !: … … 192 190 & hfx_thd_1d(jpij) , hfx_spr_1d (jpij) , & 193 191 & hfx_snw_1d(jpij) , hfx_sub_1d (jpij) , & 194 & hfx_res_1d(jpij) , hfx_err_ rem_1d(jpij) , hfx_err_dif_1d(jpij) , qt_oce_ai_1d(jpij), STAT=ierr(ii) )192 & hfx_res_1d(jpij) , hfx_err_dif_1d(jpij) , qt_oce_ai_1d(jpij), STAT=ierr(ii) ) 195 193 ! 196 194 ii = ii + 1 … … 212 210 & dh_i_sub(jpij) , dh_s_mlt(jpij) , dh_snowice(jpij) , s_i_1d (jpij) , s_i_new (jpij) , & 213 211 & a_ip_1d (jpij) , v_ip_1d (jpij) , v_i_1d (jpij) , v_s_1d (jpij) , v_il_1d (jpij) , & 214 & h_il_1d (jpij) , h_ip_1d (jpij) , a_ip_frac_1d(jpij) ,&212 & h_il_1d (jpij) , h_ip_1d (jpij) , & 215 213 & sv_i_1d (jpij) , oa_i_1d (jpij) , o_i_1d (jpij) , STAT=ierr(ii) ) 216 214 ! -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/iceistate.F90
r12725 r12726 157 157 v_ip (:,:,:) = 0._wp 158 158 v_il (:,:,:) = 0._wp 159 a_ip_frac(:,:,:) = 0._wp160 159 a_ip_eff (:,:,:) = 0._wp 161 160 h_ip (:,:,:) = 0._wp … … 377 376 378 377 ! Melt ponds 379 WHERE( a_i > epsi10 ) ; a_ip_ frac(:,:,:) = a_ip(:,:,:) / a_i(:,:,:)380 ELSEWHERE ; a_ip_ frac(:,:,:) = 0._wp378 WHERE( a_i > epsi10 ) ; a_ip_eff(:,:,:) = a_ip(:,:,:) / a_i(:,:,:) 379 ELSEWHERE ; a_ip_eff(:,:,:) = 0._wp 381 380 END WHERE 382 a_ip_eff(:,:,:) = a_ip_frac(:,:,:)383 381 v_ip(:,:,:) = h_ip(:,:,:) * a_ip(:,:,:) 384 382 v_il(:,:,:) = h_il(:,:,:) * a_ip(:,:,:) -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icestp.F90
r12725 r12726 414 414 hfx_res(:,:) = 0._wp ; hfx_sub(:,:) = 0._wp 415 415 hfx_spr(:,:) = 0._wp ; hfx_dif(:,:) = 0._wp 416 hfx_err_rem(:,:) = 0._wp417 416 hfx_err_dif(:,:) = 0._wp 418 417 wfx_err_sub(:,:) = 0._wp -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd.F90
r12725 r12726 354 354 CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_1d (1:npti), a_ip (:,:,kl) ) 355 355 CALL tab_2d_1d( npti, nptidx(1:npti), h_ip_1d (1:npti), h_ip (:,:,kl) ) 356 CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_frac_1d(1:npti), a_ip_frac(:,:,kl) )357 356 CALL tab_2d_1d( npti, nptidx(1:npti), h_il_1d (1:npti), h_il (:,:,kl) ) 358 357 ! … … 407 406 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_res_1d (1:npti), hfx_res ) 408 407 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_err_dif_1d(1:npti), hfx_err_dif ) 409 CALL tab_2d_1d( npti, nptidx(1:npti), hfx_err_rem_1d(1:npti), hfx_err_rem )410 408 CALL tab_2d_1d( npti, nptidx(1:npti), qt_oce_ai_1d (1:npti), qt_oce_ai ) 411 409 ! … … 462 460 CALL tab_1d_2d( npti, nptidx(1:npti), a_ip_1d (1:npti), a_ip (:,:,kl) ) 463 461 CALL tab_1d_2d( npti, nptidx(1:npti), h_ip_1d (1:npti), h_ip (:,:,kl) ) 464 CALL tab_1d_2d( npti, nptidx(1:npti), a_ip_frac_1d(1:npti), a_ip_frac(:,:,kl) )465 462 CALL tab_1d_2d( npti, nptidx(1:npti), h_il_1d (1:npti), h_il (:,:,kl) ) 466 463 ! … … 501 498 CALL tab_1d_2d( npti, nptidx(1:npti), hfx_res_1d (1:npti), hfx_res ) 502 499 CALL tab_1d_2d( npti, nptidx(1:npti), hfx_err_dif_1d(1:npti), hfx_err_dif ) 503 CALL tab_1d_2d( npti, nptidx(1:npti), hfx_err_rem_1d(1:npti), hfx_err_rem )504 500 CALL tab_1d_2d( npti, nptidx(1:npti), qt_oce_ai_1d (1:npti), qt_oce_ai ) 505 501 ! -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_ent.F90
r10069 r12726 128 128 ! comment: if input h_i_old and eh_i_old are already multiplied by a_i (as in icethd_do), 129 129 ! then we should not (* a_i) again but not important since this is just to check that remap error is ~0 130 DO ji = 1, npti131 hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_1d(ji) * r1_rdtice * &132 & ( SUM( qnew(ji,1:nlay_i) ) * zhnew(ji) - SUM( eh_i_old(ji,0:nlay_i+1) ) )133 END DO130 !DO ji = 1, npti 131 ! hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_1d(ji) * r1_rdtice * & 132 ! & ( SUM( qnew(ji,1:nlay_i) ) * zhnew(ji) - SUM( eh_i_old(ji,0:nlay_i+1) ) ) 133 !END DO 134 134 135 135 END SUBROUTINE ice_thd_ent -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_pnd.F90
r12725 r12726 88 88 ! 89 89 IF( a_i_1d(ji) > 0._wp .AND. t_su_1d(ji) >= rt0 ) THEN 90 a_ip_frac_1d(ji) = rn_apnd91 90 h_ip_1d(ji) = rn_hpnd 92 a_ip_1d(ji) = a_ip_frac_1d(ji)* a_i_1d(ji)91 a_ip_1d(ji) = rn_apnd * a_i_1d(ji) 93 92 h_il_1d(ji) = 0._wp ! no pond lids whatsoever 94 93 ELSE 95 a_ip_frac_1d(ji) = 0._wp96 94 h_ip_1d(ji) = 0._wp 97 95 a_ip_1d(ji) = 0._wp … … 184 182 !--- Remove ponds on thin ice or tiny ice fractions 185 183 a_ip_1d(ji) = 0._wp 186 a_ip_frac_1d(ji) = 0._wp187 184 h_ip_1d(ji) = 0._wp 188 185 h_il_1d(ji) = 0._wp … … 261 258 ! a_ip/a_i = a_ip_frac = h_ip / zaspect (cf Holland 2012, fitting SHEBA so that knowing v_ip we can distribute it to a_ip and h_ip) 262 259 a_ip_1d(ji) = MIN( a_i_1d(ji), SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) ) ! make sure a_ip < a_i 263 a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 264 h_ip_1d(ji) = zaspect * a_ip_frac_1d(ji) 260 h_ip_1d(ji) = zaspect * a_ip_1d(ji) / a_i_1d(ji) 265 261 266 262 !---------------! … … 269 265 IF( ln_pnd_flush ) THEN 270 266 ! height of top of the pond above sea-level 271 zhp = ( h_i_1d(ji) * ( rau0 - rhoi ) + h_ip_1d(ji) * ( rau0 - rhow * a_ip_ frac_1d(ji) ) ) * r1_rau0267 zhp = ( h_i_1d(ji) * ( rau0 - rhoi ) + h_ip_1d(ji) * ( rau0 - rhow * a_ip_1d(ji) / a_i_1d(ji) ) ) * r1_rau0 272 268 273 269 ! Calculate the permeability of the ice (Assur 1958) … … 288 284 !--- Set new pond area and depth ---! assuming linear relation between h_ip and a_ip_frac 289 285 a_ip_1d(ji) = MIN( a_i_1d(ji), SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) ) ! make sure a_ip < a_i 290 a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 291 h_ip_1d(ji) = zaspect * a_ip_frac_1d(ji) 286 h_ip_1d(ji) = zaspect * a_ip_1d(ji) / a_i_1d(ji) 292 287 293 288 ENDIF … … 302 297 IF ( h_il_1d(ji) > h_ip_1d(ji) * 10._wp ) THEN 303 298 a_ip_1d(ji) = 0._wp 304 a_ip_frac_1d(ji) = 0._wp305 299 h_ip_1d(ji) = 0._wp 306 300 h_il_1d(ji) = 0._wp -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/BDY/bdyice.F90
r12720 r12726 271 271 ! 272 272 ! melt ponds 273 IF( a_i(ji,jj,jl) > epsi10 ) THEN274 a_ip_frac(ji,jj,jl) = a_ip(ji,jj,jl) / a_i (ji,jj,jl)275 ELSE276 a_ip_frac(ji,jj,jl) = 0._wp277 ENDIF278 273 v_ip(ji,jj,jl) = h_ip(ji,jj,jl) * a_ip(ji,jj,jl) 279 274 v_il(ji,jj,jl) = h_il(ji,jj,jl) * a_ip(ji,jj,jl) … … 289 284 t_i (ji,jj,:,jl) = rt0 290 285 291 a_ip_frac(ji,jj,jl) = 0._wp 292 a_ip (ji,jj,jl) = 0._wp 293 h_ip (ji,jj,jl) = 0._wp 294 h_il (ji,jj,jl) = 0._wp 286 a_ip(ji,jj,jl) = 0._wp 287 h_ip(ji,jj,jl) = 0._wp 288 h_il(ji,jj,jl) = 0._wp 295 289 296 290 IF( nn_icesal == 1 ) THEN ! if constant salinity
Note: See TracChangeset
for help on using the changeset viewer.