Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/cfgs/SHARED/field_def_nemo-ice.xml
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/cfgs/SHARED/field_def_nemo-ice.xml	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/cfgs/SHARED/field_def_nemo-ice.xml	(revision 12566)
@@ -255,4 +255,5 @@
           <field id="icehpnd_cat"  long_name="Ice melt pond thickness per category"              unit="m"       detect_missing_value="true" /> 
           <field id="iceafpnd_cat" long_name="Ice melt pond fraction per category"               unit=""        /> 
+          <field id="iceaepnd_cat" long_name="Ice melt pond effective fraction per category"     unit=""        /> 
           <field id="icelhpnd_cat" long_name="Ice melt pond lid thickness per category"          unit="m"       detect_missing_value="true" /> 
           <field id="icemask_cat"  long_name="Fraction of time step with sea ice (per category)" unit=""        />
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/ice.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/ice.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/ice.F90	(revision 12566)
@@ -340,4 +340,5 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   v_ip       !: melt pond volume per grid cell area      [m]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   a_ip_frac  !: melt pond fraction (a_ip/a_i)
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   a_ip_eff   !: melt pond effective fraction (not covered up by lid) (a_ip/a_i)
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   h_ip       !: melt pond depth                          [m]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   lh_ip      !: melt pond lid thickness                  [m]
@@ -461,5 +462,6 @@
 
       ii = ii + 1
-      ALLOCATE( a_ip(jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , a_ip_frac(jpi,jpj,jpl) , h_ip(jpi,jpj,jpl), lh_ip(jpi,jpj,jpl) , STAT = ierr(ii) )
+      ALLOCATE( a_ip(jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , a_ip_frac(jpi,jpj,jpl) , h_ip(jpi,jpj,jpl),  &
+         &      lh_ip(jpi,jpj,jpl), a_ip_eff(jpi,jpj,jpl) , STAT = ierr(ii) )
 
       ii = ii + 1
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/ice1d.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/ice1d.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/ice1d.F90	(revision 12566)
@@ -128,4 +128,5 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   h_ip_1d       !:
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_ip_frac_1d  !:
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_ip_eff_1d   !:
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   lh_ip_1d      !: Ice pond lid thickness   [m]
 
@@ -211,5 +212,5 @@
          &      dh_i_sub(jpij) , dh_s_mlt(jpij) , dh_snowice(jpij) , s_i_1d  (jpij) , s_i_new (jpij) ,  &
          &      a_ip_1d (jpij) , v_ip_1d (jpij) , v_i_1d    (jpij) , v_s_1d  (jpij) , lh_ip_1d(jpij) ,  &
-         &      h_ip_1d (jpij) , a_ip_frac_1d(jpij) ,                                                   &
+         &      h_ip_1d (jpij) , a_ip_frac_1d(jpij) , a_ip_eff_1d(jpij) ,                               &
          &      sv_i_1d (jpij) , oa_i_1d (jpij) , o_i_1d    (jpij) , STAT=ierr(ii) )
       !
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icealb.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icealb.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icealb.F90	(revision 12566)
@@ -45,5 +45,5 @@
 CONTAINS
 
-   SUBROUTINE ice_alb( pt_su, ph_ice, ph_snw, ld_pnd_alb, pafrac_pnd, ph_pnd, plh_pnd, palb_cs, palb_os )
+   SUBROUTINE ice_alb( pt_su, ph_ice, ph_snw, ld_pnd_alb, pafrac_pnd, ph_pnd, palb_cs, palb_os )
       !!----------------------------------------------------------------------
       !!               ***  ROUTINE ice_alb  ***
@@ -96,12 +96,8 @@
       LOGICAL , INTENT(in   )                   ::   ld_pnd_alb   !  effect of melt ponds on albedo
       REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pafrac_pnd   !  melt pond relative fraction (per unit ice area)
+                                                                  !  This is the effective fraction not covered up by a pond lid
       REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   ph_pnd       !  melt pond depth
-      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   plh_pnd      !  melt pond lid thickness
       REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   palb_cs      !  albedo of ice under clear    sky
       REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   palb_os      !  albedo of ice under overcast sky
-      !
-      REAL(wp), PARAMETER :: pnd_lid_max = 0.015                  !  pond lid thickness above which the ponds disappear from the albedo calculation
-      REAL(wp), PARAMETER :: pnd_lid_min = 0.005                  !  pond lid thickness below which the full pond area is used in the albedo calculation
-                                                                  ! Note: these two variables are mirrored in sbccpl.F90 (maybe put them in one place...)
       !
       INTEGER  ::   ji, jj, jl                ! dummy loop indices
@@ -111,5 +107,4 @@
       REAL(wp) ::   zalb_ice, zafrac_ice      ! bare sea ice albedo & relative ice fraction
       REAL(wp) ::   zalb_snw, zafrac_snw      ! snow-covered sea ice albedo & relative snow fraction
-      REAL(wp) ::   lfrac_pnd                 ! The fraction of the meltpond exposed (not inder a frozen lid)
       !!---------------------------------------------------------------------
       !
@@ -129,14 +124,5 @@
                   zafrac_snw = 0._wp
                   IF( ld_pnd_alb ) THEN
-                     IF ( plh_pnd(ji,jj,jl) > pnd_lid_max ) THEN
-                        lfrac_pnd = 0._wp
-                     ELSE
-                        IF ( plh_pnd(ji,jj,jl) < pnd_lid_min ) THEN
-                           lfrac_pnd = 1._wp
-                        ELSE
-                           lfrac_pnd = ( plh_pnd(ji,jj,jl) - pnd_lid_min ) / (pnd_lid_max - pnd_lid_min)
-                        END IF
-                     END IF
-                     zafrac_pnd = pafrac_pnd(ji,jj,jl) * lfrac_pnd
+                     zafrac_pnd = pafrac_pnd(ji,jj,jl)
                   ELSE
                      zafrac_pnd = 0._wp
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/iceistate.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/iceistate.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/iceistate.F90	(revision 12566)
@@ -160,4 +160,5 @@
       lh_ip    (:,:,:) = 0._wp
       a_ip_frac(:,:,:) = 0._wp
+      a_ip_eff (:,:,:) = 0._wp
       h_ip     (:,:,:) = 0._wp
       !
@@ -366,4 +367,5 @@
             a_ip_frac(:,:,:) = 0._wp
          END WHERE
+         a_ip_eff(:,:,:) = a_ip_frac(:,:,:)
          v_ip(:,:,:) = h_ip(:,:,:) * a_ip(:,:,:)
           
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icerst.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icerst.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icerst.F90	(revision 12566)
@@ -251,4 +251,5 @@
             v_ip(:,:,:) = 0._wp
          ENDIF
+         a_ip_eff(:,:,:) = a_ip(:,:,:)
          ! melt pond lids
          id5 = iom_varid( numrir, 'lh_ip' , ldstop = .FALSE. )
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icesbc.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icesbc.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icesbc.F90	(revision 12566)
@@ -132,5 +132,5 @@
 
       ! --- cloud-sky and overcast-sky ice albedos --- !
-      CALL ice_alb( t_su, h_i, h_s, ln_pnd_alb, a_ip_frac, h_ip, lh_ip, zalb_cs, zalb_os )
+      CALL ice_alb( t_su, h_i, h_s, ln_pnd_alb, a_ip_eff, h_ip, zalb_cs, zalb_os )
 
       ! albedo depends on cloud fraction because of non-linear spectral effects
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icethd.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icethd.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icethd.F90	(revision 12566)
@@ -355,4 +355,5 @@
          CALL tab_2d_1d( npti, nptidx(1:npti), h_ip_1d     (1:npti), h_ip     (:,:,kl) )
          CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_frac_1d(1:npti), a_ip_frac(:,:,kl) )
+         CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_eff_1d (1:npti), a_ip_eff (:,:,kl) )
          CALL tab_2d_1d( npti, nptidx(1:npti), lh_ip_1d     (1:npti), lh_ip     (:,:,kl) )
          !
@@ -462,4 +463,5 @@
          CALL tab_1d_2d( npti, nptidx(1:npti), h_ip_1d     (1:npti), h_ip     (:,:,kl) )
          CALL tab_1d_2d( npti, nptidx(1:npti), a_ip_frac_1d(1:npti), a_ip_frac(:,:,kl) )
+         CALL tab_1d_2d( npti, nptidx(1:npti), a_ip_eff_1d (1:npti), a_ip_eff (:,:,kl) )
          CALL tab_1d_2d( npti, nptidx(1:npti), lh_ip_1d    (1:npti), lh_ip    (:,:,kl) )
          !
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icethd_pnd.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icethd_pnd.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icethd_pnd.F90	(revision 12566)
@@ -38,7 +38,4 @@
    INTEGER, PARAMETER ::   np_pndH12 = 2   ! Evolutive pond scheme (Holland et al. 2012)
 
-   REAL(wp), PUBLIC, PARAMETER :: pnd_lid_max = 0.015_wp !  pond lid thickness above which the ponds disappear from the albedo calculation
-   REAL(wp), PUBLIC, PARAMETER :: pnd_lid_min = 0.005_wp !  pond lid thickness below which the full pond area is used in the albedo calculation
-
    REAL(wp), PARAMETER :: viscosity_dyn = 1.79e-3_wp
 
@@ -94,8 +91,10 @@
          IF( a_i_1d(ji) > 0._wp .AND. t_su_1d(ji) >= rt0 ) THEN
             a_ip_frac_1d(ji) = rn_apnd
+            a_ip_eff_1d(ji)  = rn_apnd
             h_ip_1d(ji)      = rn_hpnd    
             a_ip_1d(ji)      = a_ip_frac_1d(ji) * a_i_1d(ji)
          ELSE
             a_ip_frac_1d(ji) = 0._wp
+            a_ip_eff_1d(ji)  = 0._wp
             h_ip_1d(ji)      = 0._wp    
             a_ip_1d(ji)      = 0._wp
@@ -135,4 +134,6 @@
       REAL(wp), PARAMETER ::   zTp         = -2._wp   ! reference temperature
       REAL(wp), PARAMETER ::   max_h_diff_s = -1.0E-6  ! Maximum meltpond depth change due to leaking or overflow (m s-1)
+      REAL(wp), PUBLIC, PARAMETER :: pnd_lid_max = 0.015_wp !  pond lid thickness above which the ponds disappear from the albedo calculation
+      REAL(wp), PUBLIC, PARAMETER :: pnd_lid_min = 0.005_wp !  pond lid thickness below which the full pond area is used in the albedo calculation
       !
       REAL(wp) ::   tot_mlt          ! Total ice and snow surface melt (some goes into ponds, some into the ocean)
@@ -158,4 +159,5 @@
       REAL(wp) ::   za_ip            ! Temporary pond fraction
       REAL(wp) ::   max_h_diff_ts    ! Maximum meltpond depth change due to leaking or overflow (m per ts)
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   lfrac_pnd                 ! The fraction of the meltpond exposed (not inder a frozen lid)
       
       !
@@ -335,4 +337,18 @@
             !
          ENDIF
+
+         ! Calculate how much meltpond is exposed to the atmosphere (not under a frozen lid)        
+         IF ( lh_ip_1d(ji) < pnd_lid_min ) THEN       ! Pond lid is very thin. Expose all the pond.
+            lfrac_pnd = 1.0
+         ELSE
+            IF ( lh_ip_1d(ji) > pnd_lid_max ) THEN    ! Pond lid is very thick. Cover all the pond up with ice and nosw.
+              lfrac_pnd = 0.0
+            ELSE                                      ! Pond lid is of intermediate thickness. Expose part of the melt pond.
+              lfrac_pnd = ( lh_ip_1d(ji) - pnd_lid_min ) / (pnd_lid_max - pnd_lid_min)
+            ENDIF
+         ENDIF
+         
+         ! Calculate the melt pond effective area
+         a_ip_eff_1d(ji) = a_ip_frac_1d(ji) * lfrac_pnd
 
       END DO
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/iceupdate.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/iceupdate.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/iceupdate.F90	(revision 12566)
@@ -185,5 +185,5 @@
       ! Snow/ice albedo (only if sent to coupler, useless in forced mode)
       !------------------------------------------------------------------
-      CALL ice_alb( t_su, h_i, h_s, ln_pnd_alb, a_ip_frac, h_ip, lh_ip, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos
+      CALL ice_alb( t_su, h_i, h_s, ln_pnd_alb, a_ip_eff, h_ip, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos
       !
       alb_ice(:,:,:) = ( 1._wp - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:)
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icewri.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icewri.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icewri.F90	(revision 12566)
@@ -162,7 +162,8 @@
       IF( iom_use('icettop_cat' ) )   CALL iom_put( 'icettop_cat' , ( t_su - rt0 ) * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! surface temperature
       IF( iom_use('icebrv_cat'  ) )   CALL iom_put( 'icebrv_cat'  ,   bv_i * 100.  * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! brine volume
-      IF( iom_use('iceapnd_cat' ) )   CALL iom_put( 'iceapnd_cat' ,   a_ip         * zmsk00l                                   ) ! melt pond frac for categories
-      IF( iom_use('icehpnd_cat' ) )   CALL iom_put( 'icehpnd_cat' ,   h_ip         * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! melt pond frac for categories
+      IF( iom_use('iceapnd_cat' ) )   CALL iom_put( 'iceapnd_cat' ,   a_ip         * zmsk00l                                   ) ! melt pond area for categories
+      IF( iom_use('icehpnd_cat' ) )   CALL iom_put( 'icehpnd_cat' ,   h_ip         * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! melt pond depth for categories
       IF( iom_use('iceafpnd_cat') )   CALL iom_put( 'iceafpnd_cat',   a_ip_frac    * zmsk00l                                   ) ! melt pond frac for categories
+      IF( iom_use('iceaepnd_cat') )   CALL iom_put( 'iceaepnd_cat',   a_ip_eff     * zmsk00l                                   ) ! melt pond effective frac for categories
       IF( iom_use('icealb_cat'  ) )   CALL iom_put( 'icealb_cat'  ,   alb_ice      * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! ice albedo for categories
 
Index: /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/OCE/SBC/sbccpl.F90
===================================================================
--- /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/OCE/SBC/sbccpl.F90	(revision 12565)
+++ /NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/OCE/SBC/sbccpl.F90	(revision 12566)
@@ -2122,7 +2122,4 @@
       INTEGER, INTENT(in) ::   kt
       !
-      REAL(wp), PARAMETER :: pnd_lid_max = 0.015                  !  pond lid thickness above which the ponds disappear from the albedo calculation
-      REAL(wp), PARAMETER :: pnd_lid_min = 0.005                  !  pond lid thickness below which the full pond area is used in the albedo calculation
-                                                                  ! Note: these two variables are mirrored in icealb.F90 (maybe put them in one place...)
       !
       INTEGER ::   ji, jj, jl   ! dummy loop indices
@@ -2130,6 +2127,5 @@
       REAL(wp) ::   zumax, zvmax
       REAL(wp), DIMENSION(jpi,jpj)     ::   zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1
-      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   ztmp3, ztmp4   
-      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   lfrac_pnd                 ! The fraction of the meltpond exposed (not inder a frozen lid)
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   ztmp3, ztmp4
 
       !!----------------------------------------------------------------------
@@ -2348,14 +2344,5 @@
             CASE( 'yes' )  
 
-               ! Calculate how much meltpond is exposed (not under a frozen lid)
-               lfrac_pnd(:,:,1:jpl) = 1.0
-               WHERE( lh_ip(:,:,1:jpl) > pnd_lid_max )
-                    lfrac_pnd(:,:,1:jpl) = 0.0
-               END WHERE
-               WHERE( lh_ip(:,:,1:jpl) > pnd_lid_min .AND. lh_ip(:,:,1:jpl) <= pnd_lid_max )
-                    lfrac_pnd(:,:,1:jpl) = ( lh_ip(:,:,1:jpl) - pnd_lid_min ) / (pnd_lid_max - pnd_lid_min)
-               END WHERE
-
-               ztmp3(:,:,1:jpl) =  a_ip_frac(:,:,1:jpl) * lfrac_pnd(:,:,1:jpl)
+               ztmp3(:,:,1:jpl) =  a_ip_eff(:,:,1:jpl)
                ztmp4(:,:,1:jpl) =  h_ip(:,:,1:jpl)
 
