New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 13814 – NEMO

Changeset 13814


Ignore:
Timestamp:
2020-11-18T18:09:48+01:00 (3 years ago)
Author:
vancop
Message:

Compiling version

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  
    195195!------------------------------------------------------------------------------ 
    196196   ln_pnd            = .true.         !  activate melt ponds or not 
     197      ln_pnd_TOPO    = .false.        !  constant  melt ponds 
    197198      ln_pnd_LEV     = .true.         !  level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 
    198199         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  
    208208   !                                     !!** ice-ponds namelist (namthd_pnd) 
    209209   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 
    211211   REAL(wp), PUBLIC ::   rn_apnd_min      !: Minimum ice fraction that contributes to melt ponds 
    212212   REAL(wp), PUBLIC ::   rn_apnd_max      !: Maximum ice fraction that contributes to melt ponds 
     
    214214   REAL(wp), PUBLIC ::   rn_apnd          !: prescribed pond fraction (0<rn_apnd<1) 
    215215   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) 
    216217   LOGICAL,  PUBLIC ::   ln_pnd_lids      !: Allow ponds to have frozen lids 
    217218   LOGICAL , PUBLIC ::   ln_pnd_alb       !: melt ponds affect albedo 
  • NEMO/branches/2020/SI3-05_MP/src/ICE/icethd_pnd.F90

    r13811 r13814  
    6969      SELECT CASE ( nice_pnd ) 
    7070      ! 
    71       CASE (np_pndCST)   ;   CALL pnd_CST    !==  Constant melt ponds  ==! 
     71      CASE (np_pndCST)   ;   CALL pnd_CST                              !==  Constant melt ponds  ==! 
    7272         ! 
    73       CASE (np_pndLEV)   ;   CALL pnd_LEV    !==  Level ice melt ponds  ==! 
     73      CASE (np_pndLEV)   ;   CALL pnd_LEV                              !==  Level ice melt ponds  ==! 
    7474         ! 
    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 )    
    7682         ! 
    7783      END SELECT 
     
    419425       REAL (wp), PARAMETER :: & 
    420426          ! MV ouate de phoque!!! constants hard coded ???? 
    421           ! 917 = rhoice 
     427          ! 917 = rhoi 
    422428          ! 0.334 =Lfus!!!! 
    423429          zr1_rlfus = 1._wp / 0.334e+6 / 917._wp , & ! (J/m^3) 
     
    440446      zTsfcn(:,:,:) = Tsfc(:,:,:) - rt0         ! Convert in Celsius 
    441447 
    442       IF ( ln_pnd_fw ) THEN 
    443          v_ip_b(:,:,:) = v_ip(:,:,:) 
    444       ELSE 
    445          v_ip_b(:,:,:) = 0._wp 
    446       ENDIF 
     448!     IF ( ln_pnd_fw ) THEN 
     449!        v_ip_b(:,:,:) = v_ip(:,:,:) 
     450!     ELSE 
     451!        v_ip_b(:,:,:) = 0._wp 
     452!     ENDIF 
    447453 
    448454      !------------------------------------------------------------------ 
     
    490496      !!! zrfrac(:,:,:) = rn_pnd_fracmin + ( rn_pnd_fracmax - rn_pnd_fracmin ) * aicen(:,:,:) 
    491497      ! MV2020 
    492       zrfrac(:,:,:) = rn_apnd_min + ( rn_apnd_max - rn_apnd_min ) * at_i_1d(:) !  = ( 1 - r ) = fraction of melt water that is not flushed 
    493       zwfx_tmp(:,:) = 0._wp 
     498      !!!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 
    494500 
    495501      !--- Add retained melt water to melt ponds 
     
    507513      DO jl = 1, jpl 
    508514         ! Melt water, to be distributed as melt ponds 
    509          zvolp(:,:) = zvolp(:,:) - zrfrac(:,:,jl)                                                  &  
    510                                     * ( dh_i_pnd(:,:,jl)*rhoic + dh_s_pnd(:,:,jl)*rhosn )          &  
    511                                     * z1_rhow * a_i(:,:,jl) 
     515!        zvolp(:,:) = zvolp(:,:) - zrfrac(:,:,jl)                                                  &  
     516!                                   * ( dh_i_pnd(:,:,jl)*rhoi + dh_s_pnd(:,:,jl)*rhosn )          &  
     517!                                   * z1_rhow * a_i(:,:,jl) 
    512518! MV ---> use expression from level ice melt ponds (dv_mlt) 
    513519                                             
     
    530536 
    531537 
    532       ! Fresh water flux going into the ponds 
    533       wfx_pnd_in(:,:) = wfx_pnd_in(:,:) + rhow * ( zvolp(:,:) - vt_ip(:,:) ) * r1_rdtice 
     538!     ! Fresh water flux going into the ponds 
     539!     wfx_pnd_in(:,:) = wfx_pnd_in(:,:) + rhow * ( zvolp(:,:) - vt_ip(:,:) ) * r1_rdtice 
    534540 
    535541      !--- Remove retained meltwater from surface fluxes 
    536       IF ( ln_pnd_fw ) THEN 
     542!     IF ( ln_pnd_fw ) THEN 
    537543         !wfx_snw_sum(:,:) = wfx_snw_sum(:,:) *  ( 1. - zrfrac(:,:) ) 
    538544         !wfx_sum(:,:)     = wfx_sum(:,:)     *  ( 1. - zrfrac(:,:) ) 
     
    543549         zwfx_tmp(:,:) = MAX( wfx_sum(:,:) + wfx_snw_sum(:,:) , epsi10 )                           & 
    544550            &            * MAX( 0._wp, SIGN( 1._wp, ABS(wfx_sum(:,:) + wfx_snw_sum(:,:)) - epsi10 ) ) 
    545          WHERE ( ABS(zwfx_tmp(:,:)) > epsi10 ) 
    546             zwfx_tmp(:,:) = wfx_pnd_in(:,:) / zwfx_tmp(:,:) 
    547          ELSEWHERE 
    548             zwfx_tmp(:,:) = 0._wp 
    549          ENDWHERE 
     551!        WHERE ( ABS(zwfx_tmp(:,:)) > epsi10 ) 
     552!           zwfx_tmp(:,:) = wfx_pnd_in(:,:) / zwfx_tmp(:,:) 
     553!        ELSEWHERE 
     554!           zwfx_tmp(:,:) = 0._wp 
     555!        ENDWHERE 
    550556 
    551557         wfx_sum(:,:)     = ( 1._wp - zwfx_tmp(:,:) ) * wfx_sum(:,:) 
    552558         wfx_snw_sum(:,:) = ( 1._wp - zwfx_tmp(:,:) ) * wfx_snw_sum(:,:) 
    553       ENDIF 
     559!     ENDIF 
    554560       
    555561       
     
    676682       END DO ! ij 
    677683 
    678        IF ( ln_pnd_fw ) THEN 
     684!      IF ( ln_pnd_fw ) THEN 
    679685          !js 15/05/19: water going out of the ponds give a positive freshwater 
    680686          ! flux.  
    681           wfx_pnd_out(:,:) = SUM(MAX(0._wp, v_ip_b(:,:,:) - v_ip(:,:,:)), DIM=3) * rhow * r1_rdtice 
    682        ELSE 
    683          wfx_pnd_out(:,:) = 0._wp 
    684        ENDIF 
     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 
    685691 
    686692   END SUBROUTINE pnd_TOPO 
     
    728734          hsnon, & 
    729735          asnon, & 
    730           rhos,  &  ! OLI 07/2017 : for now this is useless, but will be useful with new snow scheme 
    731736          alfan, & 
    732737          betan, & 
     
    781786       !------------------------------------------------------------------- 
    782787 
    783        rhos(:) = rhosn ! OLI 07/2017 : same has above 
    784  
    785788       DO n = 1, jpl 
    786789 
     
    867870             DO ns = 1, n 
    868871                cum_max_vol_tmp(n) = cum_max_vol_tmp(n) & 
    869                    - rhos(ns)/rhow * &   ! free air fraction that can be filled by water 
     872                   - rhos/rhow * &   ! free air fraction that can be filled by water 
    870873                     asnon(ns)  * &    ! effective areal fraction of snow in that category 
    871874                     max(min(hsnon(ns)+alfan(ns)-alfan(n), alfan(n+1)-alfan(n)), z0) 
     
    897900       ! height and area corresponding to the remaining volume 
    898901 
    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) 
    900903 
    901904       DO n=1, m_index 
     
    917920       msno = z0 
    918921       DO n=1,jpl 
    919          msno = msno + vsnon(n) * rhos(n) 
     922         msno = msno + vsnon(n) * rhos 
    920923       END DO 
    921        floe_weight = (msno + rhoic*vice + rau0*zvolp) / aice 
     924       floe_weight = (msno + rhoi*vice + rau0*zvolp) / aice 
    922925       hsl_rel = floe_weight / rau0 & 
    923926               - ((sum(betan(:)*aicen(:))/aice) + alfan(1)) 
     
    950953          IF (permflag > 0) THEN 
    951954             ! 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) 
    953956             DO n=1, m_index 
    954957                zhpondn(n) = hpond - alfan(n) + alfan(1) 
     
    970973       DO n=1,m_index-1 
    971974          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)) 
    973976       END DO 
    974977 
     
    10151018 
    10161019 
    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) 
    10181021       !!------------------------------------------------------------------- 
    10191022       !!                ***  ROUTINE ice_thd_pnd_depth  *** 
     
    10261029          asnon, & 
    10271030          hsnon, & 
    1028           rhos,  & 
    10291031          alfan, & 
    10301032          cum_max_vol 
     
    11611163 
    11621164           area = sum(aicetl(:)) - &                 ! total area of sub-layer 
    1163                 (rhos(n)/rau0) * sum(aicetl(n:jpl+1)) ! area of sub-layer occupied by snow 
     1165                (rhos/rau0) * sum(aicetl(n:jpl+1)) ! area of sub-layer occupied by snow 
    11641166 
    11651167           vol = (hitl(n) - hitl(n-1)) * area      ! thickness of sub-layer times area 
Note: See TracChangeset for help on using the changeset viewer.