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 8098 – NEMO

Changeset 8098


Ignore:
Timestamp:
2017-05-30T13:17:53+02:00 (7 years ago)
Author:
vancop
Message:

Further melt pond work

Location:
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r8061 r8098  
    285285   INTEGER , PUBLIC ::   nn_pnd_cpl       !: type of melt pond coupling: =0 passive, =1 full, =2 radiation only, =3 freshwater only 
    286286   REAL(wp), PUBLIC ::   rn_apnd          !: prescribed pond fraction (0<rn_apnd<1), only if nn_pnd_scheme = 0 
     287   REAL(wp), PUBLIC ::   rn_hpnd          !: prescribed pond depth    (0<rn_hpnd<1), only if nn_pnd_scheme = 0 
    287288   ! END MV MP 2016 
    288289 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r8085 r8098  
    8888      REAL(wp)   :: ztmelts, zdh 
    8989      INTEGER    :: i_hemis, i_fill, jl0 
    90       REAL(wp)   :: zarg, zV, zconv, zdv, z1_jpl  
     90      REAL(wp)   :: zarg, zV, zconv, zdv 
    9191      REAL(wp), POINTER, DIMENSION(:,:)   :: zswitch    ! ice indicator 
    9292      REAL(wp), POINTER, DIMENSION(:,:)   :: zht_i_ini, zat_i_ini, zvt_i_ini            !data from namelist or nc file 
     
    380380         ! MV MP 2016 
    381381         ! Melt pond volume and fraction 
    382           
    383          z1_jpl =  1. / REAL(jpl) 
    384     
    385          SELECT CASE ( nn_pnd_scheme ) 
    386     
    387             CASE ( 0 )           !--- Prescribed melt ponds 
    388     
    389                DO jl = 1, jpl 
    390     
    391                   a_ip(:,:,jl) = rn_apnd * z1_jpl * zswitch(:,:) 
    392                   v_ip(:,:,jl) = 0.1 * zswitch(:,:) * a_ip(:,:,jl) 
    393     
    394                END DO 
    395     
    396             CASE ( 1, 2 )        !--- Prognostic melt ponds 
    397     
    398                DO jl = 1, jpl 
    399     
    400                   a_ip(:,:,jl) = 0.1 * zswitch(:,:) 
    401                   v_ip(:,:,jl) = 0.1 * zswitch(:,:) * a_ip(:,:,jl) 
    402     
    403                END DO 
    404     
    405          END SELECT 
    406     
     382         IF ( ln_pnd ) THEN 
     383 
     384            DO jl = 1, jpl 
     385               a_ip(:,:,jl) = 0.1 * zswitch(:,:) 
     386               v_ip(:,:,jl) = 0.1 * zswitch(:,:) * a_ip(:,:,jl) 
     387            END DO 
     388 
     389         ELSE 
     390 
     391            a_ip = 0._wp 
     392            v_ip = 0._wp 
     393 
     394         ENDIF 
    407395         ! END MV MP 2016 
    408396 
     
    433421         a_ip(:,:,:)      = 0._wp 
    434422         v_ip(:,:,:)      = 0._wp 
    435          h_ip(:,:,:)      = 0._wp 
    436          a_ip_frac(:,:,:) = 0._wp 
    437423         ! END MV MP 2016 
    438424 
     
    488474 
    489475      ! MV MP 2016 
    490       IF ( nn_pnd_scheme >= 1 ) THEN 
     476      IF ( nn_pnd_scheme > 0 ) THEN 
    491477         sxap  (:,:,:) = 0._wp    ; sxvp  (:,:,:) = 0._wp  
    492478         syap  (:,:,:) = 0._wp    ; syvp  (:,:,:) = 0._wp  
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90

    r8085 r8098  
    8383      !!------------------------------------------------------------------- 
    8484      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    85       NAMELIST/namicemp/  ln_pnd, nn_pnd_scheme, nn_pnd_cpl, rn_apnd 
     85      NAMELIST/namicemp/  ln_pnd, nn_pnd_scheme, nn_pnd_cpl, rn_apnd, rn_hpnd 
    8686      !!------------------------------------------------------------------- 
    8787 
     
    103103         WRITE(numout,*)'    Type of melt pond coupling =0 pass., =1 full, =2 rad, 3=fw  nn_pnd_cpl    = ', nn_pnd_cpl 
    104104         WRITE(numout,*)'    Prescribed pond fraction                                    rn_apnd       = ', rn_apnd 
     105         WRITE(numout,*)'    Prescribed pond depth                                       rn_hpnd       = ', rn_hpnd 
    105106      ENDIF 
    106107 
    107       IF ( ln_pnd == .FALSE. ) THEN 
    108          WRITE(numout) ' Melt ponds are not activated ' 
    109          WRITE(numout) ' nn_pnd_scheme, nn_pnd_cpl and rn_apnd are set to zero ' 
     108      IF ( .NOT. ln_pnd ) THEN 
     109         WRITE(numout,*) ' Melt ponds are not activated ' 
     110         WRITE(numout,*) ' nn_pnd_scheme, nn_pnd_cpl, rn_apnd and rn_hpnd are set to zero ' 
    110111         nn_pnd_scheme = 0 
    111112         nn_pnd_cpl    = 0 
    112113         rn_apnd       = 0._wp 
     114         rn_hpnd       = 0._wp 
    113115      ENDIF 
     116 
    114117      ! 
    115118   END SUBROUTINE lim_mp_init 
    116  
     119    
    117120 
    118121 
     
    142145      SELECT CASE ( nn_pnd_scheme ) 
    143146 
     147         CASE (0) 
     148 
     149            CALL lim_mp_cstt       ! staircase melt ponds 
     150 
    144151         CASE (1) 
    145152 
    146             CALL lim_mp_cesm ! empirical melt ponds 
     153            CALL lim_mp_cesm       ! empirical melt ponds 
    147154 
    148155         CASE (2) 
    149156 
    150             CALL lim_mp_topo    (at_i, a_i,                                       & 
    151                       &          vt_i, v_i, v_s,            t_i, s_i, a_ip_frac,  & 
     157            CALL lim_mp_topo   &   ! topographic melt ponds  
     158                      &          (at_i, a_i,                                       & 
     159                      &          vt_i, v_i, v_s,            t_i, s_i, a_ip_frac,   & 
    152160                      &          h_ip,     t_su) 
    153161 
     
    162170   END SUBROUTINE lim_mp  
    163171 
    164  
     172   SUBROUTINE lim_mp_cstt  
     173       !!------------------------------------------------------------------- 
     174       !!                ***  ROUTINE lim_mp_cstt  *** 
     175       !! 
     176       !! ** Purpose    : Compute melt pond evolution 
     177       !! 
     178       !! ** Method     : Melt pond fraction and thickness are prescribed  
     179       !!                 to non-zero values when t_su = 0C 
     180       !! 
     181       !! ** Tunable parameters : pond fraction (rn_apnd), pond depth (rn_hpnd) 
     182       !!                 
     183       !! ** Note       : Coupling with such melt ponds is only radiative 
     184       !!                 Advection, ridging, rafting... are bypassed 
     185       !! 
     186       !! ** References : Bush, G.W., and Trump, D.J. (2017) 
     187       !!     
     188       !!------------------------------------------------------------------- 
     189       INTEGER                             :: ji, jj, jl 
     190       REAL(wp)                            :: z1_jpl            ! 1/jpl 
     191       !!------------------------------------------------------------------- 
     192 
     193       z1_jpl     = 1. / FLOAT(jpl) 
     194 
     195       WHERE ( ( a_i > epsi10 ) .AND. ( t_su >= rt0-epsi06 ) )  
     196          a_ip      = rn_apnd * z1_jpl  
     197          h_ip      = rn_hpnd     
     198          v_ip      = a_ip * h_ip  
     199          a_ip_frac = a_ip / a_i 
     200       ELSE WHERE 
     201          a_ip      = 0._wp 
     202          h_ip      = 0._wp 
     203          v_ip      = 0._wp 
     204          a_ip_frac = 0._wp 
     205       END WHERE 
     206 
     207       wfx_pnd(:,:) = 0._wp 
     208 
     209   END SUBROUTINE lim_mp_cstt 
    165210 
    166211   SUBROUTINE lim_mp_cesm 
     
    172217       !! ** Method     : Empirical method. A fraction of meltwater is accumulated  
    173218       !!                 in pond volume. It is then released exponentially when 
    174        !!                 surface is freezingAccumulation of meltwater and exponential release 
     219       !!                 surface is freezing. 
    175220       !! 
    176        !! ** Tunable parameters : 
    177        !!                 
     221       !! ** Tunable parameters : (no expertise yet) 
    178222       !!  
    179223       !! ** Note       : Stolen from CICE for quick test of the melt pond 
    180224       !!                 radiation and freshwater interfaces 
     225       !!                 Coupling can be radiative AND freshwater 
     226       !!                 Advection, ridging, rafting are called 
    181227       !! 
    182228       !! ** References : Holland, M. M. et al (J Clim 2012) 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r8085 r8098  
    9292 
    9393      ! MV MP 2016 
    94       IF ( nn_pnd_scheme > 0 ) THEN 
     94      IF ( ln_pnd ) THEN 
    9595         at_ip(:,:) = SUM( a_ip, dim=3 ) 
    9696         vt_ip(:,:) = SUM( v_ip, dim=3 ) 
     
    566566               zvs  = v_s  (ji,jj,  jl) 
    567567               zes  = e_s  (ji,jj,1,jl) 
    568                zvp  = v_ip (ji,jj  ,jl) 
     568               IF ( ln_pnd ) zvp  = v_ip (ji,jj  ,jl) 
    569569               !----------------------------------------------------------------- 
    570570               ! Zap snow energy  
     
    585585 
    586586               ! MV MP 2016 
    587                a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * rswitch 
    588                v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * rswitch 
    589                wfx_res(ji,jj)  = wfx_res(ji,jj) - ( v_ip(ji,jj,jl)  - zvp  ) * rhofw * r1_rdtice 
     587               IF ( ln_pnd ) THEN  
     588                  a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * rswitch 
     589                  v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * rswitch 
     590                  wfx_res(ji,jj)  = wfx_res(ji,jj) - ( v_ip(ji,jj,jl)  - zvp  ) * rhofw * r1_rdtice 
     591               ENDIF 
    590592               ! END MV MP 2016 
    591593 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r8085 r8098  
    171171      CALL iom_put( "vfxice"     , wfx_ice * ztmp       )        ! total ice growth/melt  
    172172 
    173       IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) & 
     173      IF ( ln_pnd ) & 
    174174         CALL iom_put( "vfxpnd"  , wfx_pnd * ztmp       )        ! melt pond water flux 
    175175 
     
    235235 
    236236      ! MV MP 2016 
    237       IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN 
     237      IF ( ln_pnd ) THEN 
    238238         IF ( iom_use( "iceamp_cat"  ) )  CALL iom_put( "iceamp_cat"     , a_ip   * zswi2   )       ! melt pond frac for categories 
    239239         IF ( iom_use( "icevmp_cat"  ) )  CALL iom_put( "icevmp_cat"     , v_ip   * zswi2   )       ! melt pond frac for categories 
     
    304304 
    305305      ! MV MP 2016 
    306       IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN 
     306      IF ( ln_pnd ) THEN 
    307307         CALL histdef( kid, "si_amp", "Melt pond fraction"      , "%"      ,   & 
    308308      &         jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     
    357357 
    358358      ! MV MP 2016 
    359       IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN 
     359      IF ( ln_pnd ) THEN 
    360360         CALL histwrite( kid, "si_amp", kt, at_ip         , jpi*jpj, (/1/) ) 
    361361         CALL histwrite( kid, "si_vmp", kt, vt_ip         , jpi*jpj, (/1/) ) 
     
    370370      CALL histwrite( kid, "vfxbom", kt, wfx_bom        , jpi*jpj, (/1/) ) 
    371371      CALL histwrite( kid, "vfxsum", kt, wfx_sum        , jpi*jpj, (/1/) ) 
    372       IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) & 
     372      IF ( ln_pnd ) & 
    373373         CALL histwrite( kid, "vfxpnd", kt, wfx_pnd     , jpi*jpj, (/1/) ) 
    374374 
Note: See TracChangeset for help on using the changeset viewer.