Changeset 13814
- Timestamp:
- 2020-11-18T18:09:48+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/SI3-05_MP
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/SI3-05_MP/cfgs/SHARED/namelist_ice_ref
r13346 r13814 195 195 !------------------------------------------------------------------------------ 196 196 ln_pnd = .true. ! activate melt ponds or not 197 ln_pnd_TOPO = .false. ! constant melt ponds 197 198 ln_pnd_LEV = .true. ! level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 198 199 rn_apnd_min = 0.15 ! minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? -
NEMO/branches/2020/SI3-05_MP/src/ICE/ice.F90
r13346 r13814 208 208 ! !!** ice-ponds namelist (namthd_pnd) 209 209 LOGICAL , PUBLIC :: ln_pnd !: Melt ponds (T) or not (F) 210 LOGICAL , PUBLIC :: ln_pnd_LEV !: Melt ponds scheme from Holland et al (2012), Flocco et al (2007, 2010)210 LOGICAL , PUBLIC :: ln_pnd_LEV !: Simple "level-ice" melt pond scheme, hybrid CESM (Holland et al 2012) + lids and drainage 211 211 REAL(wp), PUBLIC :: rn_apnd_min !: Minimum ice fraction that contributes to melt ponds 212 212 REAL(wp), PUBLIC :: rn_apnd_max !: Maximum ice fraction that contributes to melt ponds … … 214 214 REAL(wp), PUBLIC :: rn_apnd !: prescribed pond fraction (0<rn_apnd<1) 215 215 REAL(wp), PUBLIC :: rn_hpnd !: prescribed pond depth (0<rn_hpnd<1) 216 LOGICAL , PUBLIC :: ln_pnd_TOPO !: Topographic melt pond scheme (Flocco and Feltham, 2007) 216 217 LOGICAL, PUBLIC :: ln_pnd_lids !: Allow ponds to have frozen lids 217 218 LOGICAL , PUBLIC :: ln_pnd_alb !: melt ponds affect albedo -
NEMO/branches/2020/SI3-05_MP/src/ICE/icethd_pnd.F90
r13811 r13814 69 69 SELECT CASE ( nice_pnd ) 70 70 ! 71 CASE (np_pndCST) ; CALL pnd_CST !== Constant melt ponds ==!71 CASE (np_pndCST) ; CALL pnd_CST !== Constant melt ponds ==! 72 72 ! 73 CASE (np_pndLEV) ; CALL pnd_LEV !== Level ice melt ponds ==!73 CASE (np_pndLEV) ; CALL pnd_LEV !== Level ice melt ponds ==! 74 74 ! 75 CASE (np_pndTOPO) ; CALL pnd_TOPO !== Topographic melt ponds ==! 75 CASE (np_pndTOPO) ; CALL pnd_TOPO & !== Topographic melt ponds ==! 76 ( at_i, a_i, & 77 & vt_i, v_i, & 78 & v_s, & 79 & t_i, s_i, & 80 & a_ip_frac, h_ip, & 81 & t_su ) 76 82 ! 77 83 END SELECT … … 419 425 REAL (wp), PARAMETER :: & 420 426 ! MV ouate de phoque!!! constants hard coded ???? 421 ! 917 = rhoi ce427 ! 917 = rhoi 422 428 ! 0.334 =Lfus!!!! 423 429 zr1_rlfus = 1._wp / 0.334e+6 / 917._wp , & ! (J/m^3) … … 440 446 zTsfcn(:,:,:) = Tsfc(:,:,:) - rt0 ! Convert in Celsius 441 447 442 443 444 445 446 448 ! IF ( ln_pnd_fw ) THEN 449 ! v_ip_b(:,:,:) = v_ip(:,:,:) 450 ! ELSE 451 ! v_ip_b(:,:,:) = 0._wp 452 ! ENDIF 447 453 448 454 !------------------------------------------------------------------ … … 490 496 !!! zrfrac(:,:,:) = rn_pnd_fracmin + ( rn_pnd_fracmax - rn_pnd_fracmin ) * aicen(:,:,:) 491 497 ! MV2020 492 zrfrac(:,:,:) = rn_apnd_min + ( rn_apnd_max - rn_apnd_min ) * at_i_1d(:) ! = ( 1 - r ) = fraction of melt water that is not flushed493 zwfx_tmp(:,:) = 0._wp498 !!!jzrfrac(:,:,:) = rn_apnd_min + ( rn_apnd_max - rn_apnd_min ) * at_i_1d(:) ! = ( 1 - r ) = fraction of melt water that is not flushed 499 !!!zwfx_tmp(:,:) = 0._wp 494 500 495 501 !--- Add retained melt water to melt ponds … … 507 513 DO jl = 1, jpl 508 514 ! Melt water, to be distributed as melt ponds 509 510 * ( dh_i_pnd(:,:,jl)*rhoic+ dh_s_pnd(:,:,jl)*rhosn ) &511 515 ! zvolp(:,:) = zvolp(:,:) - zrfrac(:,:,jl) & 516 ! * ( dh_i_pnd(:,:,jl)*rhoi + dh_s_pnd(:,:,jl)*rhosn ) & 517 ! * z1_rhow * a_i(:,:,jl) 512 518 ! MV ---> use expression from level ice melt ponds (dv_mlt) 513 519 … … 530 536 531 537 532 533 538 ! ! Fresh water flux going into the ponds 539 ! wfx_pnd_in(:,:) = wfx_pnd_in(:,:) + rhow * ( zvolp(:,:) - vt_ip(:,:) ) * r1_rdtice 534 540 535 541 !--- Remove retained meltwater from surface fluxes 536 542 ! IF ( ln_pnd_fw ) THEN 537 543 !wfx_snw_sum(:,:) = wfx_snw_sum(:,:) * ( 1. - zrfrac(:,:) ) 538 544 !wfx_sum(:,:) = wfx_sum(:,:) * ( 1. - zrfrac(:,:) ) … … 543 549 zwfx_tmp(:,:) = MAX( wfx_sum(:,:) + wfx_snw_sum(:,:) , epsi10 ) & 544 550 & * MAX( 0._wp, SIGN( 1._wp, ABS(wfx_sum(:,:) + wfx_snw_sum(:,:)) - epsi10 ) ) 545 546 547 548 549 551 ! WHERE ( ABS(zwfx_tmp(:,:)) > epsi10 ) 552 ! zwfx_tmp(:,:) = wfx_pnd_in(:,:) / zwfx_tmp(:,:) 553 ! ELSEWHERE 554 ! zwfx_tmp(:,:) = 0._wp 555 ! ENDWHERE 550 556 551 557 wfx_sum(:,:) = ( 1._wp - zwfx_tmp(:,:) ) * wfx_sum(:,:) 552 558 wfx_snw_sum(:,:) = ( 1._wp - zwfx_tmp(:,:) ) * wfx_snw_sum(:,:) 553 559 ! ENDIF 554 560 555 561 … … 676 682 END DO ! ij 677 683 678 684 ! IF ( ln_pnd_fw ) THEN 679 685 !js 15/05/19: water going out of the ponds give a positive freshwater 680 686 ! flux. 681 682 683 684 687 ! wfx_pnd_out(:,:) = SUM(MAX(0._wp, v_ip_b(:,:,:) - v_ip(:,:,:)), DIM=3) * rhow * r1_rdtice 688 ! ELSE 689 ! wfx_pnd_out(:,:) = 0._wp 690 ! ENDIF 685 691 686 692 END SUBROUTINE pnd_TOPO … … 728 734 hsnon, & 729 735 asnon, & 730 rhos, & ! OLI 07/2017 : for now this is useless, but will be useful with new snow scheme731 736 alfan, & 732 737 betan, & … … 781 786 !------------------------------------------------------------------- 782 787 783 rhos(:) = rhosn ! OLI 07/2017 : same has above784 785 788 DO n = 1, jpl 786 789 … … 867 870 DO ns = 1, n 868 871 cum_max_vol_tmp(n) = cum_max_vol_tmp(n) & 869 - rhos (ns)/rhow * & ! free air fraction that can be filled by water872 - rhos/rhow * & ! free air fraction that can be filled by water 870 873 asnon(ns) * & ! effective areal fraction of snow in that category 871 874 max(min(hsnon(ns)+alfan(ns)-alfan(n), alfan(n+1)-alfan(n)), z0) … … 897 900 ! height and area corresponding to the remaining volume 898 901 899 CALL ice_thd_pnd_depth(reduced_aicen, asnon, hsnon, rhos,alfan, zvolp, cum_max_vol, hpond, m_index)902 CALL ice_thd_pnd_depth(reduced_aicen, asnon, hsnon, alfan, zvolp, cum_max_vol, hpond, m_index) 900 903 901 904 DO n=1, m_index … … 917 920 msno = z0 918 921 DO n=1,jpl 919 msno = msno + vsnon(n) * rhos (n)922 msno = msno + vsnon(n) * rhos 920 923 END DO 921 floe_weight = (msno + rhoi c*vice + rau0*zvolp) / aice924 floe_weight = (msno + rhoi*vice + rau0*zvolp) / aice 922 925 hsl_rel = floe_weight / rau0 & 923 926 - ((sum(betan(:)*aicen(:))/aice) + alfan(1)) … … 950 953 IF (permflag > 0) THEN 951 954 ! recompute pond depth 952 CALL ice_thd_pnd_depth(reduced_aicen, asnon, hsnon, rhos,alfan, zvolp, cum_max_vol, hpond, m_index)955 CALL ice_thd_pnd_depth(reduced_aicen, asnon, hsnon, alfan, zvolp, cum_max_vol, hpond, m_index) 953 956 DO n=1, m_index 954 957 zhpondn(n) = hpond - alfan(n) + alfan(1) … … 970 973 DO n=1,m_index-1 971 974 zvolpn(n) = zapondn(n) * zhpondn(n) & ! what is not in the snow 972 - (rhos (n)/rhow) * asnon(n) * min(hsnon(n), zhpondn(n))975 - (rhos/rhow) * asnon(n) * min(hsnon(n), zhpondn(n)) 973 976 END DO 974 977 … … 1015 1018 1016 1019 1017 SUBROUTINE ice_thd_pnd_depth(aicen, asnon, hsnon, rhos,alfan, zvolp, cum_max_vol, hpond, m_index)1020 SUBROUTINE ice_thd_pnd_depth(aicen, asnon, hsnon, alfan, zvolp, cum_max_vol, hpond, m_index) 1018 1021 !!------------------------------------------------------------------- 1019 1022 !! *** ROUTINE ice_thd_pnd_depth *** … … 1026 1029 asnon, & 1027 1030 hsnon, & 1028 rhos, &1029 1031 alfan, & 1030 1032 cum_max_vol … … 1161 1163 1162 1164 area = sum(aicetl(:)) - & ! total area of sub-layer 1163 (rhos (n)/rau0) * sum(aicetl(n:jpl+1)) ! area of sub-layer occupied by snow1165 (rhos/rau0) * sum(aicetl(n:jpl+1)) ! area of sub-layer occupied by snow 1164 1166 1165 1167 vol = (hitl(n) - hitl(n-1)) * area ! thickness of sub-layer times area
Note: See TracChangeset
for help on using the changeset viewer.