Index: /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
===================================================================
--- /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/ice.F90	(revision 8124)
+++ /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/ice.F90	(revision 8125)
@@ -283,6 +283,6 @@
    LOGICAL , PUBLIC ::   ln_pnd           !: activate ponds or not
    LOGICAL , PUBLIC ::   ln_pnd_rad       !: ponds radiatively active or not
+   LOGICAL , PUBLIC ::   ln_pnd_fw        !: ponds active wrt meltwater or not
    INTEGER , PUBLIC ::   nn_pnd_scheme    !: type of melt pond scheme:   =0 prescribed, =1 empirical, =2 topographic
-   INTEGER , PUBLIC ::   nn_pnd_cpl       !: type of melt pond coupling: =0 passive, =1 full, =2 radiation only, =3 freshwater only
    REAL(wp), PUBLIC ::   rn_apnd          !: prescribed pond fraction (0<rn_apnd<1), only if nn_pnd_scheme = 0
    REAL(wp), PUBLIC ::   rn_hpnd          !: prescribed pond depth    (0<rn_hpnd<1), only if nn_pnd_scheme = 0
Index: /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
===================================================================
--- /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 8124)
+++ /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 8125)
@@ -665,5 +665,5 @@
             !------------------------------------------            
             !  Place part of the melt pond volume into the ocean. 
-            IF ( ( nn_pnd_scheme > 0 ) .AND. ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 3 ) ) ) THEN
+            IF ( ( nn_pnd_scheme > 0 ) .AND. ln_pnd_fw ) THEN
                wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + ( rhofw * vprdg(ij) * ( 1._wp - rn_fpondrdg )   & 
                &                                 + rhofw * vprft(ij) * ( 1._wp - rn_fpondrft ) ) * r1_rdtice  ! fresh water source for ocean
Index: /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90
===================================================================
--- /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90	(revision 8124)
+++ /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90	(revision 8125)
@@ -83,5 +83,5 @@
       !!-------------------------------------------------------------------
       INTEGER  ::   ios                 ! Local integer output status for namelist read
-      NAMELIST/namicemp/  ln_pnd, nn_pnd_scheme, nn_pnd_cpl, rn_apnd, rn_hpnd
+      NAMELIST/namicemp/  ln_pnd, ln_pnd_rad, ln_pnd_fw, nn_pnd_scheme, rn_apnd, rn_hpnd
       !!-------------------------------------------------------------------
 
@@ -95,17 +95,14 @@
       IF(lwm) WRITE ( numoni, namicemp )
       
-      ! Shortcut for radiatively active melt ponds
-      ln_pnd_rad = ln_pnd .AND. ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 2 ) )
-
       IF(lwp) THEN                        ! control print
          WRITE(numout,*)
          WRITE(numout,*) 'lim_mp_init : ice parameters for melt ponds'
          WRITE(numout,*) '~~~~~~~~~~~~'
-         WRITE(numout,*)'    Activate melt ponds                                         ln_pnd        = ', ln_pnd
-         WRITE(numout,*)'    Type of melt pond scheme =0 presc, =1 empirical = 2 topo    nn_pnd_scheme = ', nn_pnd_scheme
-         WRITE(numout,*)'    Type of melt pond coupling =0 pass., =1 full, =2 rad, 3=fw  nn_pnd_cpl    = ', nn_pnd_cpl
-         WRITE(numout,*)'    Prescribed pond fraction                                    rn_apnd       = ', rn_apnd
-         WRITE(numout,*)'    Prescribed pond depth                                       rn_hpnd       = ', rn_hpnd
-         WRITE(numout,*)'    Melt ponds radiatively active                               ln_pnd_rad    = ', ln_pnd_rad
+         WRITE(numout,*) '   Active melt ponds                                           ln_pnd        = ', ln_pnd
+         WRITE(numout,*) '   Active melt ponds radiative coupling                        ln_pnd_rad    = ', ln_pnd_rad
+         WRITE(numout,*) '   Active melt ponds freshwater coupling                       ln_pnd_fw     = ', ln_pnd_fw
+         WRITE(numout,*) '   Type of melt pond scheme =0 presc, =1 empirical = 2 topo    nn_pnd_scheme = ', nn_pnd_scheme
+         WRITE(numout,*) '   Prescribed pond fraction                                    rn_apnd       = ', rn_apnd
+         WRITE(numout,*) '   Prescribed pond depth                                       rn_hpnd       = ', rn_hpnd
       ENDIF
 
@@ -113,9 +110,25 @@
          WRITE(numout,*)
          WRITE(numout,*) ' Melt ponds are not activated '
-         WRITE(numout,*) ' nn_pnd_scheme, nn_pnd_cpl, rn_apnd and rn_hpnd are set to zero '
+         WRITE(numout,*) ' ln_pnd_rad and ln_pnd_fw set to .FALSE. '
+         WRITE(numout,*) ' nn_pnd_scheme, rn_apnd, rn_hpnd set to zero '
+         ln_pnd_rad    = .FALSE.
+         ln_pnd_fw     = .FALSE.
          nn_pnd_scheme = 0
-         nn_pnd_cpl    = 0
          rn_apnd       = 0._wp
          rn_hpnd       = 0._wp
+
+         IF(lwp) THEN                     ! control print
+            WRITE(numout,*) '    Active melt ponds radiative coupling                        ln_pnd_rad    = ', ln_pnd_rad
+            WRITE(numout,*) '    Active melt ponds freshwater coupling                       ln_pnd_fw     = ', ln_pnd_fw
+            WRITE(numout,*) '    Type of melt pond scheme =0 presc, =1 empirical = 2 topo    nn_pnd_scheme = ', nn_pnd_scheme
+            WRITE(numout,*) '    Prescribed pond fraction                                    rn_apnd       = ', rn_apnd
+            WRITE(numout,*) '    Prescribed pond depth                                       rn_hpnd       = ', rn_hpnd
+         ENDIF
+      ENDIF
+
+      IF ( ln_pnd .AND. ( nn_pnd_scheme == 2 ) .AND. ( jpl == 1 ) ) THEN
+         WRITE(numout,*) ' Topographic melt ponds are incompatible with jpl = 1 '
+         WRITE(numout,*) ' Run aborted '
+         CALL ctl_stop( 'STOP', 'lim_mp_init: uncompatible options, reset namelist_ice_ref ' )
       ENDIF
 
@@ -314,5 +327,5 @@
                h_ip(ji,jj,jl)      = 0._wp
 
-               IF ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 3 ) ) & !--- Give freshwater to the ocean
+               IF ( ln_pnd_fw ) & !--- Give freshwater to the ocean
                   wfx_pnd(ji,jj)   = wfx_pnd(ji,jj) + v_ip(ji,jj,jl) 
 
@@ -332,9 +345,6 @@
                !--- Dump meltwater due to refreezing ( of course this is wrong
                !--- but this parameterization is too simple )
-               IF ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 3 ) ) THEN
-
+               IF ( ln_pnd_fw ) &
                   wfx_pnd(ji,jj)   = wfx_pnd(ji,jj) + rhofw * ( v_ip(ji,jj,jl) - zvpold ) * r1_rdtice
-
-               ENDIF
 
                a_ip_frac(ji,jj,jl) = MIN( 1._wp , SQRT( v_ip(ji,jj,jl) * z1_zpnd_aspect / a_i(ji,jj,jl) ) )
@@ -359,5 +369,5 @@
        !--- Remove retained meltwater from surface fluxes 
 
-       IF ( ( nn_pnd_cpl .EQ. 1 ) .OR. ( nn_pnd_cpl .EQ. 3 ) ) THEN
+       IF ( ln_pnd_fw ) THEN
 
            wfx_snw(:,:) = wfx_snw(:,:) *  ( 1. - zrmin - ( zrmax - zrmin ) * at_i(:,:) )
Index: /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
===================================================================
--- /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 8124)
+++ /branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 8125)
@@ -106,4 +106,5 @@
       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zafrac_snw                ! relative snow fraction
       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zafrac_ice                ! relative ice fraction
+      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zafrac_pnd                ! relative ice fraction (effective)
       !!
       !!---------------------------------------------------------------------
@@ -117,5 +118,5 @@
       CALL wrk_alloc( jpi,jpj,ijpl, zalb, zalb_it )
       CALL wrk_alloc( jpi,jpj,ijpl, zalb_pnd, zalb_ice, zalb_snw )
-      CALL wrk_alloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice )
+      CALL wrk_alloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice, zafrac_pnd )
 
       IF( albd_init == 0 )   CALL albedo_init      ! initialization 
@@ -281,11 +282,19 @@
  
       ! MV: I propose this formulation that is more elegant, and more easy to expand towards
-      !     varying pond and snow fraction
- 
+      !     varying pond and snow fraction.
+      !     Formulation 1 has issues to handle ponds and snow together that
+      !     can't easily be fixed. This one handles it better, I believe.
+
           !-----------------------------------------
           ! Snow, bare ice and ponded ice fractions 
           !-----------------------------------------
           ! Specific fractions (zafrac) refer to relative area covered by snow within each ice category
- 
+
+          !--- Effective pond fraction (for now, we prevent melt ponds and snow at the same time)
+          zafrac_pnd = 0._wp
+          IF ( ld_pnd ) THEN  
+             WHERE( ph_snw == 0._wp ) ;  zafrac_pnd = pafrac_pnd ;  END WHERE  ! Snow fully "shades" melt ponds
+          ENDIF         
+
           !--- Specific snow fraction (for now, prescribed)
           WHERE     ( ph_snw > 0._wp     ) ;  zafrac_snw = 1.
@@ -294,8 +303,5 @@
  
           !--- Specific ice fraction 
-          zafrac_ice = 1. - zafrac_snw - pafrac_pnd
-!          WHERE     ( ph_ice > 1.0e-6_wp ) ;  zafrac_ice = 1. - zafrac_snw - pafrac_pnd
-!         ELSE WHERE                       ;  zafrac_ice = 0.
-!         ENDWHERE
+          zafrac_ice = 1. - zafrac_snw - zafrac_pnd
  
           !--------------------------------------------------
@@ -324,5 +330,5 @@
 
           ! Surface albedo is weighted mean of snow, ponds and bare ice contributions
-          pa_ice_os = zafrac_snw * zalb_snw  +  pafrac_pnd * zalb_pnd  +  zafrac_ice * zalb_ice
+          pa_ice_os = zafrac_snw * zalb_snw  +  zafrac_pnd * zalb_pnd  +  zafrac_ice * zalb_ice
           
           pa_ice_cs = pa_ice_os - ( - 0.1010 * pa_ice_os * pa_ice_os + 0.1933 * pa_ice_os - 0.0148 )
@@ -332,5 +338,5 @@
       CALL wrk_dealloc( jpi,jpj,ijpl, zalb, zalb_it )
       CALL wrk_dealloc( jpi,jpj,ijpl, zalb_pnd, zalb_ice, zalb_snw )
-      CALL wrk_dealloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice )
+      CALL wrk_dealloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice, zafrac_pnd )
       !
    END SUBROUTINE albedo_ice
