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

Changeset 1463


Ignore:
Timestamp:
2009-06-09T16:45:31+02:00 (15 years ago)
Author:
smasson
Message:

force 3rd dimension in sea-ice coupling fields, see ticket:444

Location:
trunk/NEMO
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC_2/ice_2.F90

    r1229 r1463  
    6666   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   rdvonif       !: Lateral Variation of ice volume (only used for outputs) 
    6767 
    68    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   sist          !: Sea-Ice Surface Temperature (Kelvin ??? degree ??? I don't know) 
     68   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   sist          !: Sea-Ice Surface Temperature (Kelvin) 
    6969   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   tfu           !: Freezing/Melting point temperature of sea water at SSS 
    7070   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   hicif         !: Ice thickness 
  • trunk/NEMO/LIM_SRC_2/iceini_2.F90

    r1229 r1463  
    6868      ENDIF 
    6969       
    70       tn_ice(:,:) = sist(:,:)         ! initialisation of ice temperature    
     70      tn_ice(:,:,1) = sist(:,:)         ! initialisation of ice temperature    
    7171      fr_i  (:,:) = 1.0 - frld(:,:)   ! initialisation of sea-ice fraction     
    7272# if defined key_coupled 
    73       alb_ice(:,:) = albege(:,:)      ! sea-ice albedo 
     73      alb_ice(:,:,1) = albege(:,:)      ! sea-ice albedo 
    7474# endif 
    7575      ! 
  • trunk/NEMO/LIM_SRC_2/limsbc_2.F90

    r1370 r1463  
    173173            !   computation the solar flux at ocean surface 
    174174#if defined key_coupled  
    175             zqsr = qsr_tot(ji,jj) + ( fstric(ji,jj) - qsr_ice(ji,jj) ) * ( 1.0 - pfrld(ji,jj) ) 
     175            zqsr = qsr_tot(ji,jj) + ( fstric(ji,jj) - qsr_ice(ji,jj,1) ) * ( 1.0 - pfrld(ji,jj) ) 
    176176#else 
    177177            zqsr = pfrld(ji,jj) * qsr(ji,jj)  + ( 1.  - pfrld(ji,jj) ) * fstric(ji,jj) 
     
    286286      IF ( lk_cpl ) THEN            
    287287         ! Ice surface temperature  
    288          tn_ice(:,:) = sist(:,:)          ! sea-ice surface temperature        
     288         tn_ice(:,:,1) = sist(:,:)          ! sea-ice surface temperature        
    289289         ! Computation of snow/ice and ocean albedo 
    290290         ! INTERFACE 3D versus 2D 
     
    292292         zhicif(:,:,1) = hicif(:,:)   ;   zhsnif(:,:,1) = hsnif(:,:) 
    293293         CALL albedo_ice( zsist, zhicif, zhsnif, zalbp, zalb ) 
    294          alb_ice(:,:) =  0.5 * ( zalbp(:,:,1) + zalb (:,:,1) )   ! Ice albedo (mean clear and overcast skys) 
     294         alb_ice(:,:,1) =  0.5 * ( zalbp(:,:,1) + zalb (:,:,1) )   ! Ice albedo (mean clear and overcast skys) 
    295295      ENDIF 
    296296 
     
    300300         CALL prt_ctl(tab2d_1=utau  , clinfo1=' lim_sbc: utau   : ', mask1=umask,   & 
    301301            &         tab2d_2=vtau  , clinfo2=' vtau    : '        , mask2=vmask ) 
    302          CALL prt_ctl(tab2d_1=fr_i  , clinfo1=' lim_sbc: fr_i   : ', tab2d_2=tn_ice, clinfo2=' tn_ice  : ') 
     302         CALL prt_ctl(tab2d_1=fr_i  , clinfo1=' lim_sbc: fr_i   : ', tab2d_2=tn_ice(:,:,1), clinfo2=' tn_ice  : ') 
    303303      ENDIF  
    304304    
  • trunk/NEMO/LIM_SRC_2/limthd_2.F90

    r1228 r1463  
    195195            zfi = 1.0 - pfrld(ji,jj) 
    196196            qldif(ji,jj)   = tms(ji,jj) * rdt_ice                                             & 
    197                &    * (   ( qsr_tot(ji,jj) - qsr_ice(ji,jj) * zfi ) * ( 1.0 - thcm(ji,jj) )   & 
    198                &        + ( qns_tot(ji,jj) - qns_ice(ji,jj) * zfi )                           & 
     197               &    * (   ( qsr_tot(ji,jj) - qsr_ice(ji,jj,1) * zfi ) * ( 1.0 - thcm(ji,jj) )   & 
     198               &        + ( qns_tot(ji,jj) - qns_ice(ji,jj,1) * zfi )                           & 
    199199               &        + frld(ji,jj) * ( fdtcn(ji,jj) + ( 1.0 - zindb ) * fsbbq(ji,jj) )   ) 
    200200#else 
     
    261261         !     
    262262         !  put the variable in a 1-D array for thermodynamics process 
    263          CALL tab_2d_1d_2( nbpb, frld_1d    (1:nbpb)     , frld       , jpi, jpj, npb(1:nbpb) ) 
    264          CALL tab_2d_1d_2( nbpb, h_ice_1d   (1:nbpb)     , hicif      , jpi, jpj, npb(1:nbpb) ) 
    265          CALL tab_2d_1d_2( nbpb, h_snow_1d  (1:nbpb)     , hsnif      , jpi, jpj, npb(1:nbpb) ) 
    266          CALL tab_2d_1d_2( nbpb, sist_1d    (1:nbpb)     , sist       , jpi, jpj, npb(1:nbpb) ) 
    267          CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 1 ), tbif(:,:,1), jpi, jpj, npb(1:nbpb) ) 
    268          CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 2 ), tbif(:,:,2), jpi, jpj, npb(1:nbpb) ) 
    269          CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 3 ), tbif(:,:,3), jpi, jpj, npb(1:nbpb) ) 
    270          CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb)     , qsr_ice    , jpi, jpj, npb(1:nbpb) ) 
    271          CALL tab_2d_1d_2( nbpb, fr1_i0_1d  (1:nbpb)     , fr1_i0     , jpi, jpj, npb(1:nbpb) ) 
    272          CALL tab_2d_1d_2( nbpb, fr2_i0_1d  (1:nbpb)     , fr2_i0     , jpi, jpj, npb(1:nbpb) ) 
    273          CALL tab_2d_1d_2( nbpb, qns_ice_1d (1:nbpb)     , qns_ice    , jpi, jpj, npb(1:nbpb) ) 
     263         CALL tab_2d_1d_2( nbpb, frld_1d    (1:nbpb)     , frld           , jpi, jpj, npb(1:nbpb) ) 
     264         CALL tab_2d_1d_2( nbpb, h_ice_1d   (1:nbpb)     , hicif          , jpi, jpj, npb(1:nbpb) ) 
     265         CALL tab_2d_1d_2( nbpb, h_snow_1d  (1:nbpb)     , hsnif          , jpi, jpj, npb(1:nbpb) ) 
     266         CALL tab_2d_1d_2( nbpb, sist_1d    (1:nbpb)     , sist           , jpi, jpj, npb(1:nbpb) ) 
     267         CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 1 ), tbif(:,:,1)    , jpi, jpj, npb(1:nbpb) ) 
     268         CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 2 ), tbif(:,:,2)    , jpi, jpj, npb(1:nbpb) ) 
     269         CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 3 ), tbif(:,:,3)    , jpi, jpj, npb(1:nbpb) ) 
     270         CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb)     , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) 
     271         CALL tab_2d_1d_2( nbpb, fr1_i0_1d  (1:nbpb)     , fr1_i0         , jpi, jpj, npb(1:nbpb) ) 
     272         CALL tab_2d_1d_2( nbpb, fr2_i0_1d  (1:nbpb)     , fr2_i0         , jpi, jpj, npb(1:nbpb) ) 
     273         CALL tab_2d_1d_2( nbpb,  qns_ice_1d(1:nbpb)     ,  qns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 
     274         CALL tab_2d_1d_2( nbpb, dqns_ice_1d(1:nbpb)     , dqns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 
    274275         IF( .NOT. lk_cpl ) THEN  
    275             CALL tab_2d_1d_2( nbpb, qla_ice_1d (1:nbpb)     , qla_ice    , jpi, jpj, npb(1:nbpb) ) 
    276             CALL tab_2d_1d_2( nbpb, dqla_ice_1d(1:nbpb)     , dqla_ice   , jpi, jpj, npb(1:nbpb) ) 
     276            CALL tab_2d_1d_2( nbpb, qla_ice_1d (1:nbpb)     ,  qla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 
     277            CALL tab_2d_1d_2( nbpb, dqla_ice_1d(1:nbpb)     , dqla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 
    277278         ENDIF 
    278          CALL tab_2d_1d_2( nbpb, dqns_ice_1d(1:nbpb)     , dqns_ice   , jpi, jpj, npb(1:nbpb) ) 
    279279         CALL tab_2d_1d_2( nbpb, tfu_1d     (1:nbpb)     , tfu        , jpi, jpj, npb(1:nbpb) ) 
    280280         CALL tab_2d_1d_2( nbpb, sprecip_1d (1:nbpb)     , sprecip    , jpi, jpj, npb(1:nbpb) )  
  • trunk/NEMO/LIM_SRC_2/limwri_2.F90

    r1359 r1463  
    158158            zcmo(ji,jj,15) = utaui_ice(ji,jj) 
    159159            zcmo(ji,jj,16) = vtaui_ice(ji,jj) 
    160             zcmo(ji,jj,17) = qsr_ice(ji,jj) 
    161             zcmo(ji,jj,18) = qns_ice(ji,jj) 
     160            zcmo(ji,jj,17) = qsr_ice(ji,jj,1) 
     161            zcmo(ji,jj,18) = qns_ice(ji,jj,1) 
    162162            zcmo(ji,jj,19) = sprecip(ji,jj) 
    163163         END DO 
  • trunk/NEMO/LIM_SRC_2/limwri_dimg_2.h90

    r1156 r1463  
    123123          zcmo(ji,jj,15) = utaui_ice(ji,jj) 
    124124          zcmo(ji,jj,16) = vtaui_ice(ji,jj) 
    125           zcmo(ji,jj,17) = qsr_ice(ji,jj) 
    126           zcmo(ji,jj,18) = qns_ice(ji,jj) 
     125          zcmo(ji,jj,17) = qsr_ice(ji,jj,1) 
     126          zcmo(ji,jj,18) = qns_ice(ji,jj,1) 
    127127          zcmo(ji,jj,19) = sprecip(ji,jj) 
    128128       END DO 
     
    166166                rcmoy(ji,jj,15) = utaui_ice(ji,jj) 
    167167                rcmoy(ji,jj,16) = vtaui_ice(ji,jj) 
    168                 rcmoy(ji,jj,17) = qsr_ice(ji,jj) 
    169                 rcmoy(ji,jj,18) = qns_ice(ji,jj) 
     168                rcmoy(ji,jj,17) = qsr_ice(ji,jj,1) 
     169                rcmoy(ji,jj,18) = qns_ice(ji,jj,1) 
    170170                rcmoy(ji,jj,19) = sprecip(ji,jj) 
    171171             END DO 
  • trunk/NEMO/OPA_SRC/DIA/diawri.F90

    r1417 r1463  
    575575      CALL histwrite( nid_T, "soicealb", it, alb_ice       , ndim_hT, ndex_hT )   ! ice albedo 
    576576# else 
    577       CALL histwrite( nid_T, "soicetem", it, tn_ice        , ndim_hT, ndex_hT )   ! surf. ice temperature 
    578       CALL histwrite( nid_T, "soicealb", it, alb_ice       , ndim_hT, ndex_hT )   ! ice albedo 
     577      CALL histwrite( nid_T, "soicetem", it, tn_ice(:,:,1) , ndim_hT, ndex_hT )   ! surf. ice temperature 
     578      CALL histwrite( nid_T, "soicealb", it, alb_ice(:,:,1), ndim_hT, ndex_hT )   ! ice albedo 
    579579# endif 
    580580#endif 
  • trunk/NEMO/OPA_SRC/SBC/albedo.F90

    r1208 r1463  
    6464      !! References :   Shine and Hendersson-Sellers 1985, JGR, 90(D1), 2243-2250. 
    6565      !!---------------------------------------------------------------------- 
    66       REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pt_ice      !  ice surface temperature 
     66      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pt_ice      !  ice surface temperature (Kelvin) 
    6767      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   ph_ice      !  sea-ice thickness 
    6868      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   ph_snw      !  snow thickness 
  • trunk/NEMO/OPA_SRC/SBC/sbc_ice.F90

    r1226 r1463  
    1414   USE par_ice          ! ice parameters 
    1515#endif 
     16#if defined key_lim2 
     17   USE par_ice_2        ! ice parameters 
     18#endif 
    1619 
    1720   IMPLICIT NONE 
    1821   PRIVATE 
    1922 
    20 #if defined key_lim3  
    2123   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) ::   qns_ice   !: non solar heat flux over ice  [W/m2] 
    2224   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) ::   qsr_ice   !: solar heat flux over ice      [W/m2] 
     
    2628   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) ::   tn_ice    !: ice surface temperature       [K] 
    2729   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) ::   alb_ice   !: albedo of ice 
    28 #else 
    29    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qns_ice     !: non solar heat flux over ice  [W/m2] 
    30    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qsr_ice     !: solar heat flux over ice      [W/m2] 
    31    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qla_ice     !: latent flux over ice 
    32    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   dqla_ice    !: latent sensibility over ice 
    33    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   dqns_ice    !: non solar heat flux sensibility over ice (LW+SEN+LA) [W/m2/K] 
    34    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   tn_ice      !: ice surface temperature       [K] 
    35    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   alb_ice     !: albedo of ice 
    36 #endif 
    3730 
    3831   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   utaui_ice   !: u-stress over ice (I-point)   [N/m2] 
  • trunk/NEMO/OPA_SRC/SBC/sbccpl.F90

    r1308 r1463  
    816816    
    817817 
    818    SUBROUTINE sbc_cpl_ice_flx( p_frld, palbi   , psst    , pist,   & 
    819       &                                pqns_tot, pqns_ice,         & 
    820       &                                pqsr_tot, pqsr_ice,         & 
    821       &                                pemp_tot, pemp_ice, pdqns_ice, psprecip ) 
     818   SUBROUTINE sbc_cpl_ice_flx( p_frld  , palbi   , psst     , pist    ,   & 
     819      &                        pqns_tot, pqns_ice, pqsr_tot , pqsr_ice,   & 
     820      &                        pemp_tot, pemp_ice, pdqns_ice, psprecip ) 
    822821      !!---------------------------------------------------------------------- 
    823822      !!             ***  ROUTINE sbc_cpl_ice_flx_rcv  *** 
     
    863862      !!                   wndm                10m wind module 
    864863      !!---------------------------------------------------------------------- 
    865       REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj) ::   p_frld     ! lead fraction                [0 to 1] 
    866       REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj) ::   palbi      ! ice albedo 
    867       REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj) ::   psst       ! sea surface temperature      [Celcius] 
    868       REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj) ::   pist       ! ice surface temperature      [Kelvin] 
    869       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   pqns_tot   ! total non solar heat flux    [W/m2] 
    870       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   pqns_ice   ! ice   non solar heat flux    [W/m2] 
    871       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   pqsr_tot   ! total     solar heat flux    [W/m2] 
    872       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   pqsr_ice   ! ice       solar heat flux    [W/m2] 
    873       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   pemp_tot   ! total     freshwater budget        [Kg/m2/s] 
    874       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   pemp_ice   ! solid freshwater budget over ice   [Kg/m2/s] 
    875       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   psprecip   ! Net solid precipitation (=emp_ice) [Kg/m2/s] 
    876       REAL(wp), INTENT(  out), DIMENSION(jpi,jpj) ::   pdqns_ice  ! d(Q non solar)/d(Temperature) over ice 
     864      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpl) ::   p_frld     ! lead fraction                [0 to 1] 
     865      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpl) ::   palbi      ! ice albedo 
     866      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj    ) ::   psst       ! sea surface temperature      [Celcius] 
     867      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpl) ::   pist       ! ice surface temperature      [Kelvin] 
     868      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj    ) ::   pqns_tot   ! total non solar heat flux    [W/m2] 
     869      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj,jpl) ::   pqns_ice   ! ice   non solar heat flux    [W/m2] 
     870      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj    ) ::   pqsr_tot   ! total     solar heat flux    [W/m2] 
     871      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj,jpl) ::   pqsr_ice   ! ice       solar heat flux    [W/m2] 
     872      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj    ) ::   pemp_tot   ! total     freshwater budget        [Kg/m2/s] 
     873      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj    ) ::   pemp_ice   ! solid freshwater budget over ice   [Kg/m2/s] 
     874      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj    ) ::   psprecip   ! Net solid precipitation (=emp_ice) [Kg/m2/s] 
     875      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj,jpl) ::   pdqns_ice  ! d(Q non solar)/d(Temperature) over ice 
    877876     !! 
    878877      INTEGER ::   ji, jj           ! dummy loop indices 
     
    895894         zsnow   (:,:) = frcv(:,:,jpr_snow) 
    896895      CASE( 'oce and ice'   )   ! received fields: jpr_sbpr, jpr_semp, jpr_oemp 
    897          pemp_tot(:,:) = p_frld(:,:) * frcv(:,:,jpr_oemp) + (1.- p_frld(:,:)) * frcv(:,:,jpr_sbpr)  
     896         pemp_tot(:,:) = p_frld(:,:,1) * frcv(:,:,jpr_oemp) + (1.- p_frld(:,:,1)) * frcv(:,:,jpr_sbpr)  
    898897         pemp_ice(:,:) = frcv(:,:,jpr_semp) 
    899898         zsnow   (:,:) = - frcv(:,:,jpr_semp) + frcv(:,:,jpr_ievp) 
     
    925924      !                                                      ! ========================= ! 
    926925      CASE( 'conservative' )                                      ! the required fields are directly provided 
    927          pqns_tot(:,:) = frcv(:,:,jpr_qnsmix) 
    928          pqns_ice(:,:) = frcv(:,:,jpr_qnsice) 
     926         pqns_tot(:,:  ) = frcv(:,:,jpr_qnsmix) 
     927         pqns_ice(:,:,1) = frcv(:,:,jpr_qnsice) 
    929928      CASE( 'oce and ice' )       ! the total flux is computed from ocean and ice fluxes 
    930          pqns_tot(:,:) =  p_frld(:,:) * frcv(:,:,jpr_qnsoce) + ( 1.- p_frld(:,:) ) * frcv(:,:,jpr_qnsice) 
    931          pqns_ice(:,:) =  frcv(:,:,jpr_qnsice) 
     929         pqns_tot(:,:  ) =  p_frld(:,:,1) * frcv(:,:,jpr_qnsoce) + ( 1.- p_frld(:,:,1) ) * frcv(:,:,jpr_qnsice) 
     930         pqns_ice(:,:,1) =  frcv(:,:,jpr_qnsice) 
    932931      CASE( 'mixed oce-ice' )     ! the ice flux is cumputed from the total flux, the SST and ice informations 
    933          pqns_tot(:,:) = frcv(:,:,jpr_qnsmix) 
    934          pqns_ice(:,:) = frcv(:,:,jpr_qnsmix)    & 
    935             &          + frcv(:,:,jpr_dqnsdt) * ( pist(:,:) - ( (rt0 + psst(:,:))*p_frld(:,:) + pist(:,:)*(1. - p_frld(:,:)) ) ) 
     932         pqns_tot(:,:  ) = frcv(:,:,jpr_qnsmix) 
     933         pqns_ice(:,:,1) = frcv(:,:,jpr_qnsmix)    & 
     934            &            + frcv(:,:,jpr_dqnsdt) * ( pist(:,:,1) - ( (rt0 + psst(:,:  ) ) *        p_frld(:,:,1)   & 
     935            &                                                   +          pist(:,:,1)   * ( 1. - p_frld(:,:,1) ) ) ) 
    936936      END SELECT 
    937937      !                                                           ! snow melting heat flux .... 
    938938      !   energy for melting solid precipitation over free ocean 
    939939      zcoef = xlsn / rhosn 
    940       pqns_tot(:,:) = pqns_tot(:,:) - p_frld(:,:) * zsnow(:,:) * zcoef 
     940      pqns_tot(:,:) = pqns_tot(:,:) - p_frld(:,:,1) * zsnow(:,:) * zcoef 
    941941!!gm 
    942942!!    currently it is taken into account in leads budget but not in the qns_tot, and thus not in  
     
    951951      !                                                      ! ========================= ! 
    952952      CASE( 'conservative' ) 
    953          pqsr_tot(:,:) = frcv(:,:,jpr_qsrmix) 
    954          pqsr_ice(:,:) = frcv(:,:,jpr_qsrice) 
     953         pqsr_tot(:,:  ) = frcv(:,:,jpr_qsrmix) 
     954         pqsr_ice(:,:,1) = frcv(:,:,jpr_qsrice) 
    955955      CASE( 'oce and ice' ) 
    956          pqsr_tot(:,:) =  p_frld(:,:) * frcv(:,:,jpr_qsroce) + ( 1.- p_frld(:,:) ) * frcv(:,:,jpr_qsrice) 
    957          pqsr_ice(:,:) =  frcv(:,:,jpr_qsrice) 
     956         pqsr_tot(:,:  ) =  p_frld(:,:,1) * frcv(:,:,jpr_qsroce) + ( 1.- p_frld(:,:,1) ) * frcv(:,:,jpr_qsrice) 
     957         pqsr_ice(:,:,1) =  frcv(:,:,jpr_qsrice) 
    958958      CASE( 'mixed oce-ice' ) 
    959          pqsr_tot(:,:) = frcv(:,:,jpr_qsrmix) 
     959         pqsr_tot(:,:  ) = frcv(:,:,jpr_qsrmix) 
    960960!       Create solar heat flux over ice using incoming solar heat flux and albedos 
    961961!       ( see OASIS3 user guide, 5th edition, p39 ) 
    962          pqsr_ice(:,:) = frcv(:,:,jpr_qsrmix) * ( 1.- palbi(:,:) )   & 
    963             &          / (  1.- ( albedo_oce_mix(:,:) * ( 1.- p_frld(:,:) )   & 
    964             &                   + palbi         (:,:) *       p_frld(:,:)   )  ) 
     962         pqsr_ice(:,:,1) = frcv(:,:,jpr_qsrmix) * ( 1.- palbi(:,:,1) )   & 
     963            &            / (  1.- ( albedo_oce_mix(:,:  ) * ( 1.- p_frld(:,:,1) )   & 
     964            &                     + palbi         (:,:,1) *       p_frld(:,:,1)   )  ) 
    965965      END SELECT 
    966966 
     
    968968      SELECT CASE( TRIM( cn_rcv_dqnsdt ) ) 
    969969      CASE ('coupled') 
    970           pdqns_ice(:,:) = frcv(:,:,jpr_dqnsdt) 
     970          pdqns_ice(:,:,1) = frcv(:,:,jpr_dqnsdt) 
    971971      END SELECT 
    972972 
     
    10091009      CASE( 'oce only'             )   ;   ztmp1(:,:) =   tn(:,:,1) + rt0 
    10101010      CASE( 'weighted oce and ice' )   ;   ztmp1(:,:) = ( tn(:,:,1) + rt0 ) * zfr_l(:,:)    
    1011                                            ztmp2(:,:) =   tn_ice(:,:     *  fr_i(:,:) 
    1012       CASE( 'mixed oce-ice'        )   ;   ztmp1(:,:) = ( tn(:,:,1) + rt0 ) * zfr_l(:,:) + tn_ice(:,:) * fr_i(:,:) 
     1011                                           ztmp2(:,:) =   tn_ice(:,:,1)     *  fr_i(:,:) 
     1012      CASE( 'mixed oce-ice'        )   ;   ztmp1(:,:) = ( tn(:,:,1) + rt0 ) * zfr_l(:,:) + tn_ice(:,:,1) * fr_i(:,:) 
    10131013      CASE default                     ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of cn_snd_temperature' ) 
    10141014      END SELECT 
     
    10211021      !                                                      ! ------------------------- ! 
    10221022      IF( ssnd(jps_albice)%laction ) THEN                         ! ice  
    1023          ztmp1(:,:) = alb_ice(:,:) * fr_i(:,:) 
     1023         ztmp1(:,:) = alb_ice(:,:,1) * fr_i(:,:) 
    10241024         CALL cpl_prism_snd( jps_albice, isec, ztmp1, info ) 
    10251025      ENDIF 
    10261026      IF( ssnd(jps_albmix)%laction ) THEN                         ! mixed ice-ocean 
    1027          ztmp1(:,:) = albedo_oce_mix(:,:) * zfr_l(:,:) + alb_ice(:,:) * fr_i(:,:) 
     1027         ztmp1(:,:) = albedo_oce_mix(:,:) * zfr_l(:,:) + alb_ice(:,:,1) * fr_i(:,:) 
    10281028         CALL cpl_prism_snd( jps_albmix, isec, ztmp1, info ) 
    10291029      ENDIF 
     
    11551155   END SUBROUTINE sbc_cpl_ice_tau 
    11561156   ! 
    1157    SUBROUTINE sbc_cpl_ice_flx( p_frld, palbi   , psst    , pist,   & 
    1158       &                                pqns_tot, pqns_ice,         & 
    1159       &                                pqsr_tot, pqsr_ice,         & 
    1160       &                                pemp_tot, pemp_ice, pdqns_ice, psprecip ) 
    1161       REAL(wp), INTENT(in   ), DIMENSION(:,:) ::   p_frld     ! lead fraction                [0 to 1] 
    1162       REAL(wp), INTENT(in   ), DIMENSION(:,:) ::   palbi      ! ice albedo 
    1163       REAL(wp), INTENT(in   ), DIMENSION(:,:) ::   psst       ! sea surface temperature      [Celcius] 
    1164       REAL(wp), INTENT(in   ), DIMENSION(:,:) ::   pist       ! ice surface temperature      [Celcius] 
    1165       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   pqns_tot   ! total non solar heat flux    [W/m2] 
    1166       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   pqns_ice   ! ice   non solar heat flux    [W/m2] 
    1167       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   pqsr_tot   ! total     solar heat flux    [W/m2] 
    1168       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   pqsr_ice   ! ice       solar heat flux    [W/m2] 
    1169       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   pemp_tot   ! total     freshwater budget  [Kg/m2/s] 
    1170       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   pemp_ice   ! ice solid freshwater budget  [Kg/m2/s] 
    1171       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   pdqns_ice  ! d(Q non solar)/d(Temperature) over ice 
    1172       REAL(wp), INTENT(  out), DIMENSION(:,:) ::   psprecip   ! solid precipitation          [Kg/m2/s] 
    1173       WRITE(*,*) 'sbc_cpl_snd: You should not have seen this print! error?', p_frld(1,1), palbi(1,1), psst(1,1), pist(1,1) 
     1157   SUBROUTINE sbc_cpl_ice_flx( p_frld  , palbi   , psst     , pist    ,   & 
     1158      &                        pqns_tot, pqns_ice, pqsr_tot , pqsr_ice,   & 
     1159      &                        pemp_tot, pemp_ice, pdqns_ice, psprecip ) 
     1160      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   p_frld     ! lead fraction                [0 to 1] 
     1161      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   palbi      ! ice albedo 
     1162      REAL(wp), INTENT(in   ), DIMENSION(:,:  ) ::   psst       ! sea surface temperature      [Celcius] 
     1163      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pist       ! ice surface temperature      [Kelvin] 
     1164      REAL(wp), INTENT(  out), DIMENSION(:,:  ) ::   pqns_tot   ! total non solar heat flux    [W/m2] 
     1165      REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   pqns_ice   ! ice   non solar heat flux    [W/m2] 
     1166      REAL(wp), INTENT(  out), DIMENSION(:,:  ) ::   pqsr_tot   ! total     solar heat flux    [W/m2] 
     1167      REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   pqsr_ice   ! ice       solar heat flux    [W/m2] 
     1168      REAL(wp), INTENT(  out), DIMENSION(:,:  ) ::   pemp_tot   ! total     freshwater budget  [Kg/m2/s] 
     1169      REAL(wp), INTENT(  out), DIMENSION(:,:  ) ::   pemp_ice   ! ice solid freshwater budget  [Kg/m2/s] 
     1170      REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   pdqns_ice  ! d(Q non solar)/d(Temperature) over ice 
     1171      REAL(wp), INTENT(  out), DIMENSION(:,:  ) ::   psprecip   ! solid precipitation          [Kg/m2/s] 
     1172      WRITE(*,*) 'sbc_cpl_snd: You should not have seen this print! error?', p_frld(1,1,1), palbi(1,1,1), psst(1,1), pist(1,1,1) 
    11741173      ! stupid definition to avoid warning message when compiling... 
    1175       pqns_tot(:,:) = 0. ; pqns_ice(:,:) = 0. ; pdqns_ice(:,:) = 0. 
    1176       pqsr_tot(:,:) = 0. ; pqsr_ice(:,:) = 0.  
    1177       pemp_tot(:,:) = 0. ; pemp_ice(:,:) = 0. ; psprecip(:,:) = 0. 
     1174      pqns_tot(:,:) = 0. ; pqns_ice(:,:,:) = 0. ; pdqns_ice(:,:,:) = 0. 
     1175      pqsr_tot(:,:) = 0. ; pqsr_ice(:,:,:) = 0.  
     1176      pemp_tot(:,:) = 0. ; pemp_ice(:,:)   = 0. ; psprecip(:,:) = 0. 
    11781177   END SUBROUTINE sbc_cpl_ice_flx 
    11791178    
  • trunk/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r1347 r1463  
    9292      !! 
    9393      INTEGER  ::   ji, jj   ! dummy loop indices 
    94       REAL(wp), DIMENSION(jpi,jpj,1) ::   alb_ice_os   ! albedo of the ice under overcast sky 
    95       REAL(wp), DIMENSION(jpi,jpj,1) ::   alb_ice_cs   ! albedo of ice under clear sky 
     94      REAL(wp), DIMENSION(jpi,jpj,1) ::   zalb_ice_os   ! albedo of the ice under overcast sky 
     95      REAL(wp), DIMENSION(jpi,jpj,1) ::   zalb_ice_cs   ! albedo of ice under clear sky 
    9696      REAL(wp), DIMENSION(jpi,jpj,1) ::   zsist        ! surface ice temperature (K) 
    97       REAL(wp), DIMENSION(jpi,jpj,1) ::   zhicif       ! ice thickness 
    98       REAL(wp), DIMENSION(jpi,jpj,1) ::   zhsnif       ! snow thickness 
    99       REAL(wp), DIMENSION(jpi,jpj,1) ::   zqns_ice     ! non solar sea-ice heat flux 
    100       REAL(wp), DIMENSION(jpi,jpj,1) ::   zqsr_ice     !     solar sea-ice heat flux 
    101       REAL(wp), DIMENSION(jpi,jpj,1) ::   zqla_ice     ! ice latent heat flux 
    102       REAL(wp), DIMENSION(jpi,jpj,1) ::   zdqns_ice    ! sensitivity ice net heat flux 
    103       REAL(wp), DIMENSION(jpi,jpj,1) ::   zdqla_ice    ! sensitivity ice latent heat flux 
    10497      !!---------------------------------------------------------------------- 
    10598 
     
    130123 
    131124         zsist (:,:,1) = sist (:,:) + rt0 * ( 1. - tmask(:,:,1) ) 
    132          zhicif(:,:,1) = hicif(:,:) 
    133          zhsnif(:,:,1) = hsnif(:,:) 
    134125 
    135126         ! ... ice albedo (clear sky and overcast sky) 
    136          CALL albedo_ice( zsist, zhicif, zhsnif, alb_ice_cs, alb_ice_os ) 
     127         CALL albedo_ice( zsist, reshape( hicif, (/jpi,jpj,1/) ), reshape( hsnif, (/jpi,jpj,1/) ), zalb_ice_cs, zalb_ice_os ) 
    137128 
    138129         ! ... Sea-ice surface boundary conditions output from bulk formulae : 
     
    151142         SELECT CASE( ksbc ) 
    152143         CASE( 3 )           ! CLIO bulk formulation 
    153             CALL blk_ice_clio( zsist, alb_ice_cs, alb_ice_os ,                         & 
    154                &                      utaui_ice , vtaui_ice  , zqns_ice  , zqsr_ice,   & 
    155                &                      zqla_ice  , zdqns_ice  , zdqla_ice ,             & 
    156                &                      tprecip   , sprecip    ,                         & 
    157                &                      fr1_i0    , fr2_i0     , cl_grid, jpl  ) 
     144            CALL blk_ice_clio( zsist, zalb_ice_cs, zalb_ice_os ,                        & 
     145               &                      utaui_ice  , vtaui_ice   , qns_ice  , qsr_ice,    & 
     146               &                      qla_ice    , dqns_ice    , dqla_ice ,             & 
     147               &                      tprecip    , sprecip     ,                        & 
     148               &                      fr1_i0     , fr2_i0      , cl_grid, jpl  ) 
    158149 
    159150         CASE( 4 )           ! CORE bulk formulation 
    160             CALL blk_ice_core( zsist, ui_ice    , vi_ice     , alb_ice_cs,             & 
    161                &                      utaui_ice , vtaui_ice  , zqns_ice  , zqsr_ice,   & 
    162                &                      zqla_ice  , zdqns_ice  , zdqla_ice ,             & 
    163                &                      tprecip   , sprecip    ,                         & 
     151            CALL blk_ice_core( zsist, ui_ice    , vi_ice     , zalb_ice_cs,            & 
     152               &                      utaui_ice , vtaui_ice  , qns_ice   , qsr_ice,   & 
     153               &                      qla_ice   , dqns_ice   , dqla_ice  ,            & 
     154               &                      tprecip   , sprecip    ,                        & 
    164155               &                      fr1_i0    , fr2_i0     , cl_grid, jpl  ) 
    165156         CASE( 5 )           ! Coupled formulation : atmosphere-ice stress only (fluxes provided after ice dynamics) 
    166157            CALL sbc_cpl_ice_tau( utaui_ice , vtaui_ice ) 
    167158         END SELECT 
    168  
    169          qsr_ice(:,:) = zqsr_ice(:,:,1) 
    170          qns_ice(:,:) = zqns_ice(:,:,1)   ;   dqns_ice(:,:) = zdqns_ice(:,:,1) 
    171          qla_ice(:,:) = zqla_ice(:,:,1)   ;   dqla_ice(:,:) = zdqla_ice(:,:,1) 
    172159 
    173160         IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
     
    198185         ENDIF 
    199186#if defined key_coupled 
    200          IF( ksbc == 5    )             CALL sbc_cpl_ice_flx( frld, alb_ice_cs , sst_m, sist,   & 
    201       &                                                             qns_tot, qns_ice,   & 
    202       &                                                             qsr_tot, qsr_ice,   & 
    203       &                                                             emp_tot, emp_ice, dqns_ice, sprecip ) 
     187         IF( ksbc == 5    )             CALL sbc_cpl_ice_flx( frld   , zalb_ice_cs , sst_m   , sist   ,   & 
     188      &                                                       qns_tot, qns_ice     , qsr_tot , qsr_ice,   & 
     189      &                                                       emp_tot, emp_ice     , dqns_ice, sprecip ) 
    204190#endif 
    205191                                        CALL lim_thd_2      ( kt )      ! Ice thermodynamics  
Note: See TracChangeset for help on using the changeset viewer.