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 8882 for branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2017-12-01T18:44:09+01:00 (6 years ago)
Author:
flavoni
Message:

dev_CNRS_2017 branch: merged dev_r7881_ENHANCE09_RK3 with trunk r8864

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r8329 r8882  
    99   !!            3.4  ! 2011_11  (C. Harris) more flexibility + multi-category fields 
    1010   !!---------------------------------------------------------------------- 
     11 
    1112   !!---------------------------------------------------------------------- 
    1213   !!   namsbc_cpl      : coupled formulation namlist 
     
    2930   USE ice            ! ice variables 
    3031#endif 
    31 #if defined key_lim2 
    32    USE par_ice_2      ! ice parameters 
    33    USE ice_2          ! ice variables 
    34 #endif 
    3532   USE cpl_oasis3     ! OASIS3 coupling 
    3633   USE geo2ocean      !  
    3734   USE oce   , ONLY : tsn, un, vn, sshn, ub, vb, sshb, fraqsr_1lev 
    38    USE albedo         !  
     35   USE ocealb         !  
    3936   USE eosbn2         !  
    4037   USE sbcrnf, ONLY : l_rnfcpl 
     
    4441#endif 
    4542#if defined key_lim3 
    46    USE limthd_dh      ! for CALL lim_thd_snwblow 
     43   USE icethd_dh      ! for CALL ice_thd_snwblow 
    4744#endif 
    4845   ! 
     
    5855 
    5956   PUBLIC   sbc_cpl_init      ! routine called by sbcmod.F90 
    60    PUBLIC   sbc_cpl_rcv       ! routine called by sbc_ice_lim(_2).F90 
     57   PUBLIC   sbc_cpl_rcv       ! routine called by icestp.F90 
    6158   PUBLIC   sbc_cpl_snd       ! routine called by step.F90 
    62    PUBLIC   sbc_cpl_ice_tau   ! routine called by sbc_ice_lim(_2).F90 
    63    PUBLIC   sbc_cpl_ice_flx   ! routine called by sbc_ice_lim(_2).F90 
     59   PUBLIC   sbc_cpl_ice_tau   ! routine called by icestp.F90 
     60   PUBLIC   sbc_cpl_ice_flx   ! routine called by icestp.F90 
    6461   PUBLIC   sbc_cpl_alloc     ! routine called in sbcice_cice.F90 
    6562 
     
    176173                                         !   -> file cplmask.nc with the float variable called cplmask (jpi,jpj,nn_cplmodel) 
    177174   TYPE ::   DYNARR      
    178       REAL(wp), POINTER, DIMENSION(:,:,:)    ::   z3    
     175      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z3    
    179176   END TYPE DYNARR 
    180177 
    181178   TYPE( DYNARR ), SAVE, DIMENSION(jprcv) ::   frcv                     ! all fields recieved from the atmosphere 
    182179 
    183    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   albedo_oce_mix    ! ocean albedo sent to atmosphere (mix clear/overcast sky) 
     180   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   alb_oce_mix    ! ocean albedo sent to atmosphere (mix clear/overcast sky) 
    184181 
    185182   REAL(wp) ::   rpref = 101000._wp   ! reference atmospheric pressure[N/m2]  
     
    205202      ierr(:) = 0 
    206203      ! 
    207       ALLOCATE( albedo_oce_mix(jpi,jpj), nrcvinfo(jprcv),  STAT=ierr(1) ) 
     204      ALLOCATE( alb_oce_mix(jpi,jpj), nrcvinfo(jprcv),  STAT=ierr(1) ) 
    208205       
    209 #if ! defined key_lim3 && ! defined key_lim2 && ! defined key_cice 
     206#if ! defined key_lim3 && ! defined key_cice 
    210207      ALLOCATE( a_i(jpi,jpj,1) , STAT=ierr(2) )  ! used in sbcice_if.F90 (done here as there is no sbc_ice_if_init) 
    211208#endif 
     
    504501      ! 
    505502      ! non solar sensitivity mandatory for LIM ice model 
    506       IF( TRIM( sn_rcv_dqnsdt%cldes ) == 'none' .AND. k_ice /= 0 .AND. k_ice /= 4 .AND. nn_components /= jp_iam_sas ) & 
     503      IF( TRIM( sn_rcv_dqnsdt%cldes ) == 'none' .AND. k_ice /= 0 .AND. k_ice /= 3 .AND. nn_components /= jp_iam_sas ) & 
    507504         CALL ctl_stop( 'sbc_cpl_init: sn_rcv_dqnsdt%cldes must be coupled in namsbc_cpl namelist' ) 
    508505      ! non solar sensitivity mandatory for mixed oce-ice solar radiation coupling technique 
     
    739736      !     2. receiving mixed oce-ice solar radiation  
    740737      IF ( TRIM ( sn_snd_alb%cldes ) == 'mixed oce-ice' .OR. TRIM ( sn_rcv_qsr%cldes ) == 'mixed oce-ice' ) THEN 
    741          CALL albedo_oce( zaos, zacs ) 
     738         CALL oce_alb( zaos, zacs ) 
    742739         ! Due to lack of information on nebulosity : mean clear/overcast sky 
    743          albedo_oce_mix(:,:) = ( zacs(:,:) + zaos(:,:) ) * 0.5 
     740         alb_oce_mix(:,:) = ( zacs(:,:) + zaos(:,:) ) * 0.5 
    744741      ENDIF 
    745742 
     
    974971      !!                        emp          upward mass flux [evap. - precip. (- runoffs) (- calving)] (ocean only case) 
    975972      !!---------------------------------------------------------------------- 
    976       USE zdf_oce,  ONLY : ln_zdfqiao 
    977  
    978       IMPLICIT NONE 
    979  
    980       INTEGER, INTENT(in)           ::   kt          ! ocean model time step index 
    981       INTEGER, INTENT(in)           ::   k_fsbc      ! frequency of sbc (-> ice model) computation  
    982       INTEGER, INTENT(in)           ::   k_ice       ! ice management in the sbc (=0/1/2/3) 
     973      USE zdf_oce,  ONLY :   ln_zdfswm 
     974      ! 
     975      INTEGER, INTENT(in) ::   kt          ! ocean model time step index 
     976      INTEGER, INTENT(in) ::   k_fsbc      ! frequency of sbc (-> ice model) computation  
     977      INTEGER, INTENT(in) ::   k_ice       ! ice management in the sbc (=0/1/2/3) 
    983978      !! 
    984979      LOGICAL  ::   llnewtx, llnewtau      ! update wind stress components and module?? 
     
    11461141      ! 
    11471142      IF( ln_sdw ) THEN  ! Stokes Drift correction activated 
    1148       !                                                      ! ========================= !  
    1149       !                                                      !       Stokes drift u      ! 
    1150       !                                                      ! ========================= !  
    1151          IF( srcv(jpr_sdrftx)%laction ) ut0sd(:,:) = frcv(jpr_sdrftx)%z3(:,:,1) 
    1152       ! 
    1153       !                                                      ! ========================= !  
    1154       !                                                      !       Stokes drift v      ! 
    1155       !                                                      ! ========================= !  
    1156          IF( srcv(jpr_sdrfty)%laction ) vt0sd(:,:) = frcv(jpr_sdrfty)%z3(:,:,1) 
    1157       ! 
    1158       !                                                      ! ========================= !  
    1159       !                                                      !      Wave mean period     ! 
    1160       !                                                      ! ========================= !  
    1161          IF( srcv(jpr_wper)%laction ) wmp(:,:) = frcv(jpr_wper)%z3(:,:,1) 
    1162       ! 
    1163       !                                                      ! ========================= !  
    1164       !                                                      !  Significant wave height  ! 
    1165       !                                                      ! ========================= !  
    1166          IF( srcv(jpr_hsig)%laction ) hsw(:,:) = frcv(jpr_hsig)%z3(:,:,1) 
    1167       ! 
    1168       !                                                      ! ========================= !  
    1169       !                                                      !    Vertical mixing Qiao   ! 
    1170       !                                                      ! ========================= !  
    1171          IF( srcv(jpr_wnum)%laction .AND. ln_zdfqiao ) wnum(:,:) = frcv(jpr_wnum)%z3(:,:,1) 
     1143         !                                                   ! ========================= !  
     1144         !                                                   !       Stokes drift u      ! 
     1145         !                                                   ! ========================= !  
     1146         IF( srcv(jpr_sdrftx)%laction )   ut0sd(:,:) = frcv(jpr_sdrftx)%z3(:,:,1) 
     1147         ! 
     1148         !                                                   ! ========================= !  
     1149         !                                                   !       Stokes drift v      ! 
     1150         !                                                   ! ========================= !  
     1151         IF( srcv(jpr_sdrfty)%laction )   vt0sd(:,:) = frcv(jpr_sdrfty)%z3(:,:,1) 
     1152         ! 
     1153         !                                                   ! ========================= !  
     1154         !                                                   !      Wave mean period     ! 
     1155         !                                                   ! ========================= !  
     1156         IF( srcv(jpr_wper)%laction   )  wmp(:,:) = frcv(jpr_wper)%z3(:,:,1) 
     1157         ! 
     1158         !                                                   ! ========================= !  
     1159         !                                                   !  Significant wave height  ! 
     1160         !                                                   ! ========================= !  
     1161         IF( srcv(jpr_hsig)%laction   )  hsw(:,:) = frcv(jpr_hsig)%z3(:,:,1) 
     1162         ! 
     1163         !                                                   ! ========================= !  
     1164         !                                                   !    surface wave mixing    ! 
     1165         !                                                   ! ========================= !  
     1166         IF( srcv(jpr_wnum)%laction .AND. ln_zdfswm )  wnum(:,:) = frcv(jpr_wnum)%z3(:,:,1) 
    11721167 
    11731168         ! Calculate the 3D Stokes drift both in coupled and not fully uncoupled mode 
    11741169         IF( srcv(jpr_sdrftx)%laction .OR. srcv(jpr_sdrfty)%laction .OR. srcv(jpr_wper)%laction & 
    1175                                                                     .OR. srcv(jpr_hsig)%laction ) THEN 
     1170            &                                                       .OR. srcv(jpr_hsig)%laction ) THEN 
    11761171            CALL sbc_stokes() 
    11771172         ENDIF 
     
    11801175      !                                                      ! Stress adsorbed by waves  ! 
    11811176      !                                                      ! ========================= !  
    1182       IF( srcv(jpr_wstrf)%laction .AND. ln_tauoc ) tauoc_wave(:,:) = frcv(jpr_wstrf)%z3(:,:,1) 
     1177      IF( srcv(jpr_wstrf)%laction .AND. ln_tauoc )   tauoc_wave(:,:) = frcv(jpr_wstrf)%z3(:,:,1) 
    11831178 
    11841179      !                                                      ! ========================= !  
    11851180      !                                                      !   Wave drag coefficient   ! 
    11861181      !                                                      ! ========================= !  
    1187       IF( srcv(jpr_wdrag)%laction .AND. ln_cdgw ) cdn_wave(:,:) = frcv(jpr_wdrag)%z3(:,:,1) 
     1182      IF( srcv(jpr_wdrag)%laction .AND. ln_cdgw )   cdn_wave(:,:) = frcv(jpr_wdrag)%z3(:,:,1) 
    11881183 
    11891184      !  Fields received by SAS when OASIS coupling 
     
    12181213      IF( srcv(jpr_ocx1)%laction ) THEN                      ! received by sas in case of opa <-> sas coupling 
    12191214         ssu_m(:,:) = frcv(jpr_ocx1)%z3(:,:,1) 
    1220          ub (:,:,1) = ssu_m(:,:)                             ! will be used in sbcice_lim in the call of lim_sbc_tau 
     1215         ub (:,:,1) = ssu_m(:,:)                             ! will be used in icestp in the call of lim_sbc_tau 
    12211216         un (:,:,1) = ssu_m(:,:)                             ! will be used in sbc_cpl_snd if atmosphere coupling 
    12221217         CALL iom_put( 'ssu_m', ssu_m ) 
     
    12241219      IF( srcv(jpr_ocy1)%laction ) THEN 
    12251220         ssv_m(:,:) = frcv(jpr_ocy1)%z3(:,:,1) 
    1226          vb (:,:,1) = ssv_m(:,:)                             ! will be used in sbcice_lim in the call of lim_sbc_tau 
     1221         vb (:,:,1) = ssv_m(:,:)                             ! will be used in icestp in the call of lim_sbc_tau 
    12271222         vn (:,:,1) = ssv_m(:,:)                             ! will be used in sbc_cpl_snd if atmosphere coupling 
    12281223         CALL iom_put( 'ssv_m', ssv_m ) 
     
    15281523    
    15291524 
    1530    SUBROUTINE sbc_cpl_ice_flx( p_frld, palbi, psst, pist ) 
     1525   SUBROUTINE sbc_cpl_ice_flx( picefr, palbi, psst, pist, phs, phi ) 
    15311526      !!---------------------------------------------------------------------- 
    15321527      !!             ***  ROUTINE sbc_cpl_ice_flx  *** 
     
    15611556      !! 
    15621557      !! ** Details 
    1563       !!             qns_tot = pfrld * qns_oce + ( 1 - pfrld ) * qns_ice   => provided 
     1558      !!             qns_tot = (1-a) * qns_oce + a * qns_ice               => provided 
    15641559      !!                     + qemp_oce + qemp_ice                         => recalculated and added up to qns 
    15651560      !! 
    1566       !!             qsr_tot = pfrld * qsr_oce + ( 1 - pfrld ) * qsr_ice   => provided 
     1561      !!             qsr_tot = (1-a) * qsr_oce + a * qsr_ice               => provided 
    15671562      !! 
    15681563      !!             emp_tot = emp_oce + emp_ice                           => calving is provided and added to emp_tot (and emp_oce). 
     
    15781573      !!                   sprecip           solid precipitation over the ocean   
    15791574      !!---------------------------------------------------------------------- 
    1580       REAL(wp), INTENT(in   ), DIMENSION(:,:)   ::   p_frld     ! lead fraction                [0 to 1] 
    1581       ! optional arguments, used only in 'mixed oce-ice' case 
    1582       REAL(wp), INTENT(in   ), DIMENSION(:,:,:), OPTIONAL ::   palbi      ! all skies ice albedo  
    1583       REAL(wp), INTENT(in   ), DIMENSION(:,:  ), OPTIONAL ::   psst       ! sea surface temperature     [Celsius] 
    1584       REAL(wp), INTENT(in   ), DIMENSION(:,:,:), OPTIONAL ::   pist       ! ice surface temperature     [Kelvin] 
    1585       ! 
    1586       INTEGER ::   jl         ! dummy loop index 
    1587       REAL(wp), POINTER, DIMENSION(:,:  ) ::   zcptn, zcptrain, zcptsnw, zicefr, zmsk, zsnw 
    1588       REAL(wp), POINTER, DIMENSION(:,:  ) ::   zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip, zevap_oce, zevap_ice, zdevap_ice 
    1589       REAL(wp), POINTER, DIMENSION(:,:  ) ::   zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice 
    1590       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice 
     1575      REAL(wp), INTENT(in), DIMENSION(:,:)             ::   picefr     ! ice fraction                [0 to 1] 
     1576      !                                                !!           ! optional arguments, used only in 'mixed oce-ice' case 
     1577      REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   palbi      ! all skies ice albedo  
     1578      REAL(wp), INTENT(in), DIMENSION(:,:  ), OPTIONAL ::   psst       ! sea surface temperature     [Celsius] 
     1579      REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   pist       ! ice surface temperature     [Kelvin] 
     1580      REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   phs        ! snow depth                  [m] 
     1581      REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   phi        ! ice thickness               [m] 
     1582      ! 
     1583      INTEGER  ::   ji, jj, jl   ! dummy loop index 
     1584      REAL(wp) ::   ztri         ! local scalar 
     1585      REAL(wp), DIMENSION(jpi,jpj)     ::   zcptn, zcptrain, zcptsnw, ziceld, zmsk, zsnw 
     1586      REAL(wp), DIMENSION(jpi,jpj)     ::   zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip  , zevap_oce, zevap_ice, zdevap_ice 
     1587      REAL(wp), DIMENSION(jpi,jpj)     ::   zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice 
     1588      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice    !!gm , zfrqsr_tr_i 
    15911589      !!---------------------------------------------------------------------- 
    15921590      ! 
    15931591      IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_ice_flx') 
    15941592      ! 
    1595       CALL wrk_alloc( jpi,jpj,     zcptn, zcptrain, zcptsnw, zicefr, zmsk, zsnw ) 
    1596       CALL wrk_alloc( jpi,jpj,     zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip, zevap_oce, zevap_ice, zdevap_ice ) 
    1597       CALL wrk_alloc( jpi,jpj,     zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice ) 
    1598       CALL wrk_alloc( jpi,jpj,jpl, zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice ) 
    1599  
    16001593      IF( ln_mixcpl )   zmsk(:,:) = 1. - xcplmask(:,:,0) 
    1601       zicefr(:,:) = 1.- p_frld(:,:) 
    1602       zcptn(:,:) = rcp * sst_m(:,:) 
     1594      ziceld(:,:) = 1._wp - picefr(:,:) 
     1595      zcptn (:,:) = rcp * sst_m(:,:) 
    16031596      ! 
    16041597      !                                                      ! ========================= ! 
     
    16151608         ztprecip(:,:) =   frcv(jpr_rain)%z3(:,:,1) + zsprecip(:,:)  ! May need to ensure positive here 
    16161609         zemp_tot(:,:) =   frcv(jpr_tevp)%z3(:,:,1) - ztprecip(:,:) 
    1617          zemp_ice(:,:) = ( frcv(jpr_ievp)%z3(:,:,1) - frcv(jpr_snow)%z3(:,:,1) ) * zicefr(:,:) 
     1610         zemp_ice(:,:) = ( frcv(jpr_ievp)%z3(:,:,1) - frcv(jpr_snow)%z3(:,:,1) ) * picefr(:,:) 
    16181611      CASE( 'oce and ice'   )   ! received fields: jpr_sbpr, jpr_semp, jpr_oemp, jpr_ievp 
    1619          zemp_tot(:,:) = p_frld(:,:) * frcv(jpr_oemp)%z3(:,:,1) + zicefr(:,:) * frcv(jpr_sbpr)%z3(:,:,1) 
    1620          zemp_ice(:,:) = frcv(jpr_semp)%z3(:,:,1) * zicefr(:,:) 
     1612         zemp_tot(:,:) = ziceld(:,:) * frcv(jpr_oemp)%z3(:,:,1) + picefr(:,:) * frcv(jpr_sbpr)%z3(:,:,1) 
     1613         zemp_ice(:,:) = frcv(jpr_semp)%z3(:,:,1) * picefr(:,:) 
    16211614         zsprecip(:,:) = frcv(jpr_ievp)%z3(:,:,1) - frcv(jpr_semp)%z3(:,:,1) 
    16221615         ztprecip(:,:) = frcv(jpr_semp)%z3(:,:,1) - frcv(jpr_sbpr)%z3(:,:,1) + zsprecip(:,:) 
     
    16241617 
    16251618#if defined key_lim3 
    1626       ! zsnw = snow fraction over ice after wind blowing (=zicefr if no blowing) 
    1627       zsnw(:,:) = 0._wp  ;  CALL lim_thd_snwblow( p_frld, zsnw ) 
     1619      ! zsnw = snow fraction over ice after wind blowing (=picefr if no blowing) 
     1620      zsnw(:,:) = 0._wp   ;   CALL ice_thd_snwblow( ziceld, zsnw ) 
    16281621       
    16291622      ! --- evaporation minus precipitation corrected (because of wind blowing on snow) --- ! 
    1630       zemp_ice(:,:) = zemp_ice(:,:) + zsprecip(:,:) * ( zicefr(:,:) - zsnw(:,:) )  ! emp_ice = A * sublimation - zsnw * sprecip 
     1623      zemp_ice(:,:) = zemp_ice(:,:) + zsprecip(:,:) * ( picefr(:,:) - zsnw(:,:) )  ! emp_ice = A * sublimation - zsnw * sprecip 
    16311624      zemp_oce(:,:) = zemp_tot(:,:) - zemp_ice(:,:)                                ! emp_oce = emp_tot - emp_ice 
    16321625 
    16331626      ! --- evaporation over ocean (used later for qemp) --- ! 
    1634       zevap_oce(:,:) = frcv(jpr_tevp)%z3(:,:,1) - frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) 
     1627      zevap_oce(:,:) = frcv(jpr_tevp)%z3(:,:,1) - frcv(jpr_ievp)%z3(:,:,1) * picefr(:,:) 
    16351628 
    16361629      ! --- evaporation over ice (kg/m2/s) --- ! 
     
    16621655         sprecip(:,:) = sprecip(:,:) * xcplmask(:,:,0) + zsprecip(:,:) * zmsk(:,:) 
    16631656         tprecip(:,:) = tprecip(:,:) * xcplmask(:,:,0) + ztprecip(:,:) * zmsk(:,:) 
    1664          DO jl=1,jpl 
     1657         DO jl = 1, jpl 
    16651658            evap_ice (:,:,jl) = evap_ice (:,:,jl) * xcplmask(:,:,0) + zevap_ice (:,:) * zmsk(:,:) 
    16661659            devap_ice(:,:,jl) = devap_ice(:,:,jl) * xcplmask(:,:,0) + zdevap_ice(:,:) * zmsk(:,:) 
    1667          ENDDO 
     1660         END DO 
    16681661      ELSE 
    1669          emp_tot(:,:) =         zemp_tot(:,:) 
    1670          emp_ice(:,:) =         zemp_ice(:,:) 
    1671          emp_oce(:,:) =         zemp_oce(:,:)      
    1672          sprecip(:,:) =         zsprecip(:,:) 
    1673          tprecip(:,:) =         ztprecip(:,:) 
    1674          DO jl=1,jpl 
     1662         emp_tot(:,:) = zemp_tot(:,:) 
     1663         emp_ice(:,:) = zemp_ice(:,:) 
     1664         emp_oce(:,:) = zemp_oce(:,:)      
     1665         sprecip(:,:) = zsprecip(:,:) 
     1666         tprecip(:,:) = ztprecip(:,:) 
     1667         DO jl = 1, jpl 
    16751668            evap_ice (:,:,jl) = zevap_ice (:,:) 
    16761669            devap_ice(:,:,jl) = zdevap_ice(:,:) 
    1677          ENDDO 
     1670         END DO 
    16781671      ENDIF 
    16791672 
    16801673#else 
    1681       zsnw(:,:) = zicefr(:,:) 
     1674      zsnw(:,:) = picefr(:,:) 
    16821675      ! --- Continental fluxes --- ! 
    16831676      IF( srcv(jpr_rnf)%laction ) THEN   ! runoffs (included in emp later on) 
     
    16941687        fwfisf(:,:) = - frcv(jpr_isf)%z3(:,:,1) 
    16951688      ENDIF 
    1696  
     1689      ! 
    16971690      IF( ln_mixcpl ) THEN 
    16981691         emp_tot(:,:) = emp_tot(:,:) * xcplmask(:,:,0) + zemp_tot(:,:) * zmsk(:,:) 
     
    17061699         tprecip(:,:) =                                  ztprecip(:,:) 
    17071700      ENDIF 
    1708  
     1701      ! 
    17091702#endif 
     1703 
    17101704      ! outputs 
    17111705!!      IF( srcv(jpr_rnf)%laction )   CALL iom_put( 'runoffs' , rnf(:,:) * tmask(:,:,1)                                 )  ! runoff 
     
    17181712      IF( iom_use('snow_ao_cea') )  CALL iom_put( 'snow_ao_cea' , sprecip(:,:) * ( 1._wp - zsnw(:,:) )                  )  ! Snow over ice-free ocean  (cell average) 
    17191713      IF( iom_use('snow_ai_cea') )  CALL iom_put( 'snow_ai_cea' , sprecip(:,:) *           zsnw(:,:)                    )  ! Snow over sea-ice         (cell average) 
    1720       IF( iom_use('subl_ai_cea') )  CALL iom_put( 'subl_ai_cea' , frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) * tmask(:,:,1) )  ! Sublimation over sea-ice (cell average) 
     1714      IF( iom_use('subl_ai_cea') )  CALL iom_put( 'subl_ai_cea' , frcv(jpr_ievp)%z3(:,:,1) * picefr(:,:) * tmask(:,:,1) )  ! Sublimation over sea-ice (cell average) 
    17211715      IF( iom_use('evap_ao_cea') )  CALL iom_put( 'evap_ao_cea' , ( frcv(jpr_tevp)%z3(:,:,1)  & 
    1722          &                                                        - frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) ) * tmask(:,:,1) )  ! ice-free oce evap (cell average) 
     1716         &                                                        - frcv(jpr_ievp)%z3(:,:,1) * picefr(:,:) ) * tmask(:,:,1) )  ! ice-free oce evap (cell average) 
    17231717      ! note: runoff output is done in sbcrnf (which includes icebergs too) and iceshelf output is done in sbcisf 
    17241718      ! 
     
    17331727            zqns_ice(:,:,1:jpl) = frcv(jpr_qnsice)%z3(:,:,1:jpl) 
    17341728         ELSE 
    1735             DO jl=1,jpl 
     1729            DO jl = 1, jpl 
    17361730               zqns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,1) ! Set all category values equal 
    1737             ENDDO 
     1731            END DO 
    17381732         ENDIF 
    17391733      CASE( 'oce and ice' )      ! the total flux is computed from ocean and ice fluxes 
    1740          zqns_tot(:,:) =  p_frld(:,:) * frcv(jpr_qnsoce)%z3(:,:,1) 
     1734         zqns_tot(:,:) =  ziceld(:,:) * frcv(jpr_qnsoce)%z3(:,:,1) 
    17411735         IF ( TRIM(sn_rcv_qns%clcat) == 'yes' ) THEN 
    17421736            DO jl=1,jpl 
     
    17451739            ENDDO 
    17461740         ELSE 
    1747             qns_tot(:,:) = qns_tot(:,:) + zicefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) 
    1748             DO jl=1,jpl 
    1749                zqns_tot(:,:   ) = zqns_tot(:,:) + zicefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) 
     1741            qns_tot(:,:) = qns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) 
     1742            DO jl = 1, jpl 
     1743               zqns_tot(:,:   ) = zqns_tot(:,:) + picefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) 
    17501744               zqns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,1) 
    1751             ENDDO 
     1745            END DO 
    17521746         ENDIF 
    17531747      CASE( 'mixed oce-ice' )    ! the ice flux is cumputed from the total flux, the SST and ice informations 
     
    17551749         zqns_tot(:,:  ) = frcv(jpr_qnsmix)%z3(:,:,1) 
    17561750         zqns_ice(:,:,1) = frcv(jpr_qnsmix)%z3(:,:,1)    & 
    1757             &            + frcv(jpr_dqnsdt)%z3(:,:,1) * ( pist(:,:,1) - ( (rt0 + psst(:,:  ) ) * p_frld(:,:)   & 
    1758             &                                           + pist(:,:,1) * zicefr(:,:) ) ) 
     1751            &            + frcv(jpr_dqnsdt)%z3(:,:,1) * ( pist(:,:,1) - ( (rt0 + psst(:,:  ) ) * ziceld(:,:)   & 
     1752            &                                           + pist(:,:,1) * picefr(:,:) ) ) 
    17591753      END SELECT 
    17601754      !                                      
     
    17671761#if defined key_lim3       
    17681762      ! --- non solar flux over ocean --- ! 
    1769       !         note: p_frld cannot be = 0 since we limit the ice concentration to amax 
     1763      !         note: ziceld cannot be = 0 since we limit the ice concentration to amax 
    17701764      zqns_oce = 0._wp 
    1771       WHERE( p_frld /= 0._wp )  zqns_oce(:,:) = ( zqns_tot(:,:) - SUM( a_i * zqns_ice, dim=3 ) ) / p_frld(:,:) 
     1765      WHERE( ziceld /= 0._wp )   zqns_oce(:,:) = ( zqns_tot(:,:) - SUM( a_i * zqns_ice, dim=3 ) ) / ziceld(:,:) 
    17721766 
    17731767      ! Heat content per unit mass of snow (J/kg) 
     
    17761770      ENDWHERE 
    17771771      ! Heat content per unit mass of rain (J/kg) 
    1778       zcptrain(:,:) = rcp * ( SUM( (tn_ice(:,:,:) - rt0) * a_i(:,:,:), dim=3 ) + sst_m(:,:) * p_frld(:,:) )  
     1772      zcptrain(:,:) = rcp * ( SUM( (tn_ice(:,:,:) - rt0) * a_i(:,:,:), dim=3 ) + sst_m(:,:) * ziceld(:,:) )  
    17791773 
    17801774      ! --- enthalpy of snow precip over ice in J/m3 (to be used in 1D-thermo) --- ! 
     
    17911785         &             +   zsprecip(:,:)                   * ( 1._wp - zsnw ) * ( zcptsnw (:,:) - lfus )   ! solid precip over ocean + snow melting 
    17921786      zqemp_ice(:,:) =     zsprecip(:,:)                   * zsnw             * ( zcptsnw (:,:) - lfus )   ! solid precip over ice (qevap_ice=0 since atm. does not take it into account) 
    1793 !!    zqemp_ice(:,:) = -   frcv(jpr_ievp)%z3(:,:,1)        * zicefr(:,:)      *   zcptsnw (:,:)   &        ! ice evap 
     1787!!    zqemp_ice(:,:) = -   frcv(jpr_ievp)%z3(:,:,1)        * picefr(:,:)      *   zcptsnw (:,:)   &        ! ice evap 
    17941788!!       &             +   zsprecip(:,:)                   * zsnw             * zqprec_ice(:,:) * r1_rhosn ! solid precip over ice 
    17951789       
     
    18241818      ! clem: this formulation is certainly wrong... but better than it was... 
    18251819      zqns_tot(:,:) = zqns_tot(:,:)                            &          ! zqns_tot update over free ocean with: 
    1826          &          - (  p_frld(:,:) * zsprecip(:,:) * lfus )  &          ! remove the latent heat flux of solid precip. melting 
     1820         &          - (  ziceld(:,:) * zsprecip(:,:) * lfus )  &          ! remove the latent heat flux of solid precip. melting 
    18271821         &          - (  zemp_tot(:,:)                         &          ! remove the heat content of mass flux (assumed to be at SST) 
    18281822         &             - zemp_ice(:,:) ) * zcptn(:,:)  
    18291823 
    18301824     IF( ln_mixcpl ) THEN 
    1831          qns_tot(:,:) = qns(:,:) * p_frld(:,:) + SUM( qns_ice(:,:,:) * a_i(:,:,:), dim=3 )   ! total flux from blk 
     1825         qns_tot(:,:) = qns(:,:) * ziceld(:,:) + SUM( qns_ice(:,:,:) * a_i(:,:,:), dim=3 )   ! total flux from blk 
    18321826         qns_tot(:,:) = qns_tot(:,:) * xcplmask(:,:,0) +  zqns_tot(:,:)* zmsk(:,:) 
    18331827         DO jl=1,jpl 
     
    18411835#endif 
    18421836      ! outputs 
    1843       IF( srcv(jpr_cal)%laction )    CALL iom_put('hflx_cal_cea' ,   & 
    1844                                              &   - frcv(jpr_cal)%z3(:,:,1) * lfus) ! latent heat from calving 
    1845       IF( srcv(jpr_icb)%laction )    CALL iom_put('hflx_icb_cea' , - frcv(jpr_icb)%z3(:,:,1) * lfus) ! latent heat from icebergs melting 
    1846       IF( iom_use('hflx_snow_cea') ) CALL iom_put('hflx_snow_cea',  sprecip(:,:) * ( zcptsnw(:,:) - Lfus )) ! heat flux from snow (cell average) 
    1847       IF( iom_use('hflx_rain_cea') ) CALL iom_put('hflx_rain_cea',( tprecip(:,:) - sprecip(:,:) ) * zcptrain(:,:)) ! heat flux from rain (cell average) 
    1848       IF( iom_use('hflx_evap_cea') ) CALL iom_put('hflx_evap_cea',(frcv(jpr_tevp)%z3(:,:,1)   & 
    1849                                              &    - frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) & ! heat flux from from evap (cell average) 
     1837      IF( srcv(jpr_cal)%laction )    CALL iom_put('hflx_cal_cea' , - frcv(jpr_cal)%z3(:,:,1) * lfus                                  ) ! latent heat from calving 
     1838      IF( srcv(jpr_icb)%laction )    CALL iom_put('hflx_icb_cea' , - frcv(jpr_icb)%z3(:,:,1) * lfus                                  ) ! latent heat from icebergs melting 
     1839      IF( iom_use('hflx_snow_cea') ) CALL iom_put('hflx_snow_cea',  sprecip(:,:) * ( zcptsnw(:,:) - Lfus )                           ) ! heat flux from snow (cell average) 
     1840      IF( iom_use('hflx_rain_cea') ) CALL iom_put('hflx_rain_cea',( tprecip(:,:) - sprecip(:,:) ) * zcptrain(:,:)                    ) ! heat flux from rain (cell average) 
     1841      IF( iom_use('hflx_evap_cea') ) CALL iom_put('hflx_evap_cea',(frcv(jpr_tevp)%z3(:,:,1) - frcv(jpr_ievp)%z3(:,:,1) * picefr(:,:) & ! heat flux from from evap (cell average) 
    18501842         &                                                        ) * zcptn(:,:) * tmask(:,:,1) ) 
    1851       IF( iom_use('hflx_snow_ao_cea') ) CALL iom_put('hflx_snow_ao_cea',sprecip(:,:)   & 
    1852                                              & * (zcptsnw(:,:) - Lfus) * (1._wp - zsnw(:,:))   ) ! heat flux from snow (over ocean) 
    1853       IF( iom_use('hflx_snow_ai_cea') ) CALL iom_put('hflx_snow_ai_cea',sprecip(:,:) * (zcptsnw(:,:) - Lfus)   & 
    1854                                              & *          zsnw(:,:)    ) ! heat flux from snow (over ice) 
     1843      IF( iom_use('hflx_snow_ao_cea') ) CALL iom_put('hflx_snow_ao_cea',sprecip(:,:) * (zcptsnw(:,:) - Lfus) * (1._wp - zsnw(:,:))   ) ! heat flux from snow (over ocean) 
     1844      IF( iom_use('hflx_snow_ai_cea') ) CALL iom_put('hflx_snow_ai_cea',sprecip(:,:) * (zcptsnw(:,:) - Lfus) *          zsnw(:,:)    ) ! heat flux from snow (over ice) 
    18551845      ! note: hflx for runoff and iceshelf are done in sbcrnf and sbcisf resp. 
    18561846      ! 
     
    18661856         ELSE 
    18671857            ! Set all category values equal for the moment 
    1868             DO jl=1,jpl 
     1858            DO jl = 1, jpl 
    18691859               zqsr_ice(:,:,jl) = frcv(jpr_qsrice)%z3(:,:,1) 
    1870             ENDDO 
     1860            END DO 
    18711861         ENDIF 
    18721862         zqsr_tot(:,:  ) = frcv(jpr_qsrmix)%z3(:,:,1) 
    18731863         zqsr_ice(:,:,1) = frcv(jpr_qsrice)%z3(:,:,1) 
    18741864      CASE( 'oce and ice' ) 
    1875          zqsr_tot(:,:  ) =  p_frld(:,:) * frcv(jpr_qsroce)%z3(:,:,1) 
     1865         zqsr_tot(:,:  ) =  ziceld(:,:) * frcv(jpr_qsroce)%z3(:,:,1) 
    18761866         IF ( TRIM(sn_rcv_qsr%clcat) == 'yes' ) THEN 
    1877             DO jl=1,jpl 
     1867            DO jl = 1, jpl 
    18781868               zqsr_tot(:,:   ) = zqsr_tot(:,:) + a_i(:,:,jl) * frcv(jpr_qsrice)%z3(:,:,jl)    
    18791869               zqsr_ice(:,:,jl) = frcv(jpr_qsrice)%z3(:,:,jl) 
    1880             ENDDO 
     1870            END DO 
    18811871         ELSE 
    1882             qsr_tot(:,:   ) = qsr_tot(:,:) + zicefr(:,:) * frcv(jpr_qsrice)%z3(:,:,1) 
    1883             DO jl=1,jpl 
    1884                zqsr_tot(:,:   ) = zqsr_tot(:,:) + zicefr(:,:) * frcv(jpr_qsrice)%z3(:,:,1) 
     1872            qsr_tot(:,:   ) = qsr_tot(:,:) + picefr(:,:) * frcv(jpr_qsrice)%z3(:,:,1) 
     1873            DO jl = 1, jpl 
     1874               zqsr_tot(:,:   ) = zqsr_tot(:,:) + picefr(:,:) * frcv(jpr_qsrice)%z3(:,:,1) 
    18851875               zqsr_ice(:,:,jl) = frcv(jpr_qsrice)%z3(:,:,1) 
    1886             ENDDO 
     1876            END DO 
    18871877         ENDIF 
    18881878      CASE( 'mixed oce-ice' ) 
     
    18921882!       ( see OASIS3 user guide, 5th edition, p39 ) 
    18931883         zqsr_ice(:,:,1) = frcv(jpr_qsrmix)%z3(:,:,1) * ( 1.- palbi(:,:,1) )   & 
    1894             &            / (  1.- ( albedo_oce_mix(:,:  ) * p_frld(:,:)       & 
    1895             &                     + palbi         (:,:,1) * zicefr(:,:) ) ) 
     1884            &            / (  1.- ( alb_oce_mix(:,:  ) * ziceld(:,:)       & 
     1885            &                     + palbi      (:,:,1) * picefr(:,:) ) ) 
    18961886      END SELECT 
    18971887      IF( ln_dm2dc .AND. ln_cpl ) THEN   ! modify qsr to include the diurnal cycle 
    18981888         zqsr_tot(:,:  ) = sbc_dcy( zqsr_tot(:,:  ) ) 
    1899          DO jl=1,jpl 
     1889         DO jl = 1, jpl 
    19001890            zqsr_ice(:,:,jl) = sbc_dcy( zqsr_ice(:,:,jl) ) 
    1901          ENDDO 
     1891         END DO 
    19021892      ENDIF 
    19031893 
    19041894#if defined key_lim3 
    19051895      ! --- solar flux over ocean --- ! 
    1906       !         note: p_frld cannot be = 0 since we limit the ice concentration to amax 
     1896      !         note: ziceld cannot be = 0 since we limit the ice concentration to amax 
    19071897      zqsr_oce = 0._wp 
    1908       WHERE( p_frld /= 0._wp )  zqsr_oce(:,:) = ( zqsr_tot(:,:) - SUM( a_i * zqsr_ice, dim=3 ) ) / p_frld(:,:) 
     1898      WHERE( ziceld /= 0._wp )  zqsr_oce(:,:) = ( zqsr_tot(:,:) - SUM( a_i * zqsr_ice, dim=3 ) ) / ziceld(:,:) 
    19091899 
    19101900      IF( ln_mixcpl ) THEN   ;   qsr_oce(:,:) = qsr_oce(:,:) * xcplmask(:,:,0) +  zqsr_oce(:,:)* zmsk(:,:) 
     
    19131903 
    19141904      IF( ln_mixcpl ) THEN 
    1915          qsr_tot(:,:) = qsr(:,:) * p_frld(:,:) + SUM( qsr_ice(:,:,:) * a_i(:,:,:), dim=3 )   ! total flux from blk 
     1905         qsr_tot(:,:) = qsr(:,:) * ziceld(:,:) + SUM( qsr_ice(:,:,:) * a_i(:,:,:), dim=3 )   ! total flux from blk 
    19161906         qsr_tot(:,:) = qsr_tot(:,:) * xcplmask(:,:,0) +  zqsr_tot(:,:)* zmsk(:,:) 
    1917          DO jl=1,jpl 
     1907         DO jl = 1, jpl 
    19181908            qsr_ice(:,:,jl) = qsr_ice(:,:,jl) * xcplmask(:,:,0) +  zqsr_ice(:,:,jl)* zmsk(:,:) 
    1919          ENDDO 
     1909         END DO 
    19201910      ELSE 
    19211911         qsr_tot(:,:  ) = zqsr_tot(:,:  ) 
     
    19441934         dqns_ice(:,:,:) = zdqns_ice(:,:,:) 
    19451935      ENDIF 
    1946        
     1936 
    19471937      !                                                      ! ========================= ! 
    19481938      SELECT CASE( TRIM( sn_rcv_iceflx%cldes ) )             !    topmelt and botmelt    ! 
     
    19531943      END SELECT 
    19541944 
    1955       ! Surface transimission parameter io (Maykut Untersteiner , 1971 ; Ebert and Curry, 1993 ) 
    1956       ! Used for LIM2 and LIM3 
    1957       ! Coupled case: since cloud cover is not received from atmosphere  
    1958       !               ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) 
    1959       fr1_i0(:,:) = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) 
    1960       fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 
    1961  
    1962       CALL wrk_dealloc( jpi,jpj,     zcptn, zcptrain, zcptsnw, zicefr, zmsk, zsnw ) 
    1963       CALL wrk_dealloc( jpi,jpj,     zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip, zevap_oce, zevap_ice, zdevap_ice ) 
    1964       CALL wrk_dealloc( jpi,jpj,     zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice ) 
    1965       CALL wrk_dealloc( jpi,jpj,jpl, zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice ) 
    1966       ! 
     1945#if defined key_lim3 
     1946      !                                                      ! ========================= ! 
     1947      !                                                      !      Transmitted Qsr      !   [W/m2] 
     1948      !                                                      ! ========================= ! 
     1949      SELECT CASE( nice_jules ) 
     1950      CASE( np_jules_OFF    )       !==  No Jules coupler  ==! 
     1951         ! 
     1952!!gm         ! former coding was     
     1953!!gm         ! Coupled case: since cloud cover is not received from atmosphere  
     1954!!gm         !               ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) 
     1955!!gm         !     fr1_i0(:,:) = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) 
     1956!!gm         !     fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 
     1957!!gm          
     1958!!gm         ! to retrieve that coding, we needed to access h_i & h_s from here 
     1959!!gm         ! we could even retrieve cloud fraction from the coupler 
     1960!!gm         ! 
     1961!!gm         zfrqsr_tr_i(:,:,:) = 0._wp   !   surface transmission parameter 
     1962!!gm         ! 
     1963!!gm         DO jl = 1, jpl 
     1964!!gm            DO jj = 1 , jpj 
     1965!!gm               DO ji = 1, jpi 
     1966!!gm                  !              !--- surface transmission parameter (Grenfell Maykut 77) --- ! 
     1967!!gm                  zfrqsr_tr_i(ji,jj,jl) = 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice  
     1968!!gm                  ! 
     1969!!gm                  !              ! --- influence of snow and thin ice --- ! 
     1970!!gm                  IF ( phs(ji,jj,jl) >= 0.0_wp )   zfrqsr_tr_i(ji,jj,jl) = 0._wp   !   snow fully opaque 
     1971!!gm                  IF ( phi(ji,jj,jl) <= 0.1_wp )   zfrqsr_tr_i(ji,jj,jl) = 1._wp   !   thin ice transmits all solar radiation 
     1972!!gm               END DO 
     1973!!gm            END DO 
     1974!!gm         END DO 
     1975!!gm         ! 
     1976!!gm         qsr_ice_tr(:,:,:) =   zfrqsr_tr_i(:,:,:) * qsr_ice(:,:,:)               !   transmitted solar radiation  
     1977!!gm         ! 
     1978!!gm better coding of the above calculation: 
     1979         ! 
     1980         !                    ! ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) 
     1981         ztri = 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice    ! surface transmission parameter (Grenfell Maykut 77) 
     1982         ! 
     1983         qsr_ice_tr(:,:,:) = ztri * qsr_ice(:,:,:) 
     1984         WHERE( phs(:,:,:) >= 0.0_wp )   qsr_ice_tr(:,:,:) = 0._wp            ! snow fully opaque 
     1985         WHERE( phi(:,:,:) <= 0.1_wp )   qsr_ice_tr(:,:,:) = qsr_ice(:,:,:)   ! thin ice transmits all solar radiation 
     1986!!gm end 
     1987         !      
     1988      CASE( np_jules_ACTIVE )       !==  Jules coupler is active  ==! 
     1989         ! 
     1990         !                    ! ===> here we must receive the qsr_ice_tr array from the coupler 
     1991         !                           for now just assume zero (fully opaque ice) 
     1992         qsr_ice_tr(:,:,:) = 0._wp 
     1993         ! 
     1994      END SELECT 
     1995      ! 
     1996#endif 
    19671997      IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_ice_flx') 
    19681998      ! 
     
    20062036            ! we must send the surface potential temperature  
    20072037            IF( l_useCT )  THEN    ;   ztmp1(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 
    2008             ELSE                    ;   ztmp1(:,:) = tsn(:,:,1,jp_tem) 
     2038            ELSE                   ;   ztmp1(:,:) = tsn(:,:,1,jp_tem) 
    20092039            ENDIF 
    20102040            ! 
     
    20592089                   ztmp1(:,:) = SUM( alb_ice (:,:,1:jpl) * a_i(:,:,1:jpl), dim=3 ) / SUM( a_i(:,:,1:jpl), dim=3 ) 
    20602090                ELSEWHERE 
    2061                    ztmp1(:,:) = albedo_oce_mix(:,:) 
     2091                   ztmp1(:,:) = alb_oce_mix(:,:) 
    20622092                END WHERE 
    20632093             CASE default   ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_alb%clcat' ) 
     
    20872117 
    20882118      IF( ssnd(jps_albmix)%laction ) THEN                         ! mixed ice-ocean 
    2089          ztmp1(:,:) = albedo_oce_mix(:,:) * zfr_l(:,:) 
    2090          DO jl=1,jpl 
     2119         ztmp1(:,:) = alb_oce_mix(:,:) * zfr_l(:,:) 
     2120         DO jl = 1, jpl 
    20912121            ztmp1(:,:) = ztmp1(:,:) + alb_ice(:,:,jl) * a_i(:,:,jl) 
    2092          ENDDO 
     2122         END DO 
    20932123         CALL cpl_snd( jps_albmix, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 
    20942124      ENDIF 
     
    21192149            SELECT CASE( sn_snd_thick%clcat ) 
    21202150            CASE( 'yes' )    
    2121                ztmp3(:,:,1:jpl) =  ht_i(:,:,1:jpl) * a_i(:,:,1:jpl) 
    2122                ztmp4(:,:,1:jpl) =  ht_s(:,:,1:jpl) * a_i(:,:,1:jpl) 
     2151               ztmp3(:,:,1:jpl) =  h_i(:,:,1:jpl) * a_i(:,:,1:jpl) 
     2152               ztmp4(:,:,1:jpl) =  h_s(:,:,1:jpl) * a_i(:,:,1:jpl) 
    21232153            CASE( 'no' ) 
    21242154               ztmp3(:,:,:) = 0.0   ;  ztmp4(:,:,:) = 0.0 
    21252155               DO jl=1,jpl 
    2126                   ztmp3(:,:,1) = ztmp3(:,:,1) + ht_i(:,:,jl) * a_i(:,:,jl) 
    2127                   ztmp4(:,:,1) = ztmp4(:,:,1) + ht_s(:,:,jl) * a_i(:,:,jl) 
     2156                  ztmp3(:,:,1) = ztmp3(:,:,1) + h_i(:,:,jl) * a_i(:,:,jl) 
     2157                  ztmp4(:,:,1) = ztmp4(:,:,1) + h_s(:,:,jl) * a_i(:,:,jl) 
    21282158               ENDDO 
    21292159            CASE default                  ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%clcat' ) 
     
    21322162            SELECT CASE( sn_snd_thick%clcat ) 
    21332163            CASE( 'yes' ) 
    2134                ztmp3(:,:,1:jpl) = ht_i(:,:,1:jpl) 
    2135                ztmp4(:,:,1:jpl) = ht_s(:,:,1:jpl) 
     2164               ztmp3(:,:,1:jpl) = h_i(:,:,1:jpl) 
     2165               ztmp4(:,:,1:jpl) = h_s(:,:,1:jpl) 
    21362166            CASE( 'no' ) 
    21372167               WHERE( SUM( a_i, dim=3 ) /= 0. ) 
    2138                   ztmp3(:,:,1) = SUM( ht_i * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
    2139                   ztmp4(:,:,1) = SUM( ht_s * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
     2168                  ztmp3(:,:,1) = SUM( h_i * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
     2169                  ztmp4(:,:,1) = SUM( h_s * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
    21402170               ELSEWHERE 
    21412171                 ztmp3(:,:,1) = 0. 
Note: See TracChangeset for help on using the changeset viewer.