Changeset 2834


Ignore:
Timestamp:
2011-09-13T13:19:25+02:00 (9 years ago)
Author:
charris
Message:

#662 Tidying of sbc_cpl_ice_flx (mainly related to LIM2). There is still scope for cleaning up the use of ice fraction and lead fraction in the sbccpl routines, but best to wait until the LIM3 functionality is properly sorted.

Location:
branches/2011/dev_r2802_UKMO8_sbccpl/NEMOGCM/NEMO
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2802_UKMO8_sbccpl/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90

    r2715 r2834  
    372372          DO ji = kideb, kiut 
    373373             sist_1d(ji) = MIN( ztsmlt(ji) , sist_1d(ji) ) 
     374             qla_ice_1d(ji) = -9999.   ! default definition, not used as parsub = 0. in this case 
    374375             zfcsu(ji)  = zksndh(ji) * ( ztbif(ji) - sist_1d(ji) ) 
    375376          END DO 
  • branches/2011/dev_r2802_UKMO8_sbccpl/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r2832 r2834  
    11251125      USE wrk_nemo, ONLY:   zcptn  => wrk_2d_2   ! rcp * tn(:,:,1) 
    11261126      USE wrk_nemo, ONLY:   ztmp   => wrk_2d_3   ! temporary array 
    1127       USE wrk_nemo, ONLY:   zsnow  => wrk_2d_4   ! snow precipitation  
    1128       USE wrk_nemo, ONLY:   zicefr => wrk_2d_5   ! total ice fraction  
     1127      USE wrk_nemo, ONLY:   zicefr => wrk_2d_4   ! ice fraction  
    11291128      !! 
    11301129      REAL(wp), INTENT(in   ), DIMENSION(:,:)   ::   p_frld     ! lead fraction                [0 to 1] 
     
    11371136      !!---------------------------------------------------------------------- 
    11381137 
    1139       IF( wrk_in_use(2, 2,3,4,5) ) THEN 
     1138      IF( wrk_in_use(2, 2,3,4) ) THEN 
    11401139         CALL ctl_stop('sbc_cpl_ice_flx: requested workspace arrays unavailable')   ;   RETURN 
    11411140      ENDIF 
     
    11531152      SELECT CASE( TRIM( sn_rcv_emp%cldes ) ) 
    11541153      CASE( 'conservative'  )   ! received fields: jpr_rain, jpr_snow, jpr_ievp, jpr_tevp 
    1155          sprecip (:,:) = frcv(jpr_snow)%z3(:,:,1)                 ! May need to ensure positive here 
    1156          tprecip (:,:) = frcv(jpr_rain)%z3(:,:,1) + sprecip (:,:) ! May need to ensure positive here 
     1154         sprecip(:,:) = frcv(jpr_snow)%z3(:,:,1)                 ! May need to ensure positive here 
     1155         tprecip(:,:) = frcv(jpr_rain)%z3(:,:,1) + sprecip (:,:) ! May need to ensure positive here 
    11571156         emp_tot(:,:) = frcv(jpr_tevp)%z3(:,:,1) - tprecip(:,:) 
    11581157         emp_ice(:,:) = frcv(jpr_ievp)%z3(:,:,1) - frcv(jpr_snow)%z3(:,:,1) 
    1159          zsnow(:,:) = frcv(jpr_snow)%z3(:,:,1) 
    11601158                           CALL iom_put( 'rain'         , frcv(jpr_rain)%z3(:,:,1)              )   ! liquid precipitation  
    11611159         IF( lk_diaar5 )   CALL iom_put( 'hflx_rain_cea', frcv(jpr_rain)%z3(:,:,1) * zcptn(:,:) )   ! heat flux from liq. precip.  
     
    11661164         emp_tot(:,:) = p_frld(:,:) * frcv(jpr_oemp)%z3(:,:,1) + zicefr(:,:) * frcv(jpr_sbpr)%z3(:,:,1) 
    11671165         emp_ice(:,:) = frcv(jpr_semp)%z3(:,:,1) 
    1168          zsnow   (:,:) = - frcv(jpr_semp)%z3(:,:,1) + frcv(jpr_ievp)%z3(:,:,1) 
     1166         sprecip(:,:) = - frcv(jpr_semp)%z3(:,:,1) + frcv(jpr_ievp)%z3(:,:,1) 
    11691167      END SELECT 
    1170 #if ! defined key_cice 
    1171       sprecip(:,:) = - emp_ice(:,:) 
    1172 #endif 
    1173       CALL iom_put( 'snowpre'    , zsnow                               )   ! Snow 
    1174       CALL iom_put( 'snow_ao_cea', zsnow(:,:         ) * p_frld(:,:) )   ! Snow        over ice-free ocean  (cell average) 
    1175       CALL iom_put( 'snow_ai_cea', zsnow(:,:         ) * zicefr(:,:) )   ! Snow        over sea-ice         (cell average) 
     1168 
     1169      CALL iom_put( 'snowpre'    , sprecip                                )   ! Snow 
     1170      CALL iom_put( 'snow_ao_cea', sprecip(:,:         ) * p_frld(:,:)    )   ! Snow        over ice-free ocean  (cell average) 
     1171      CALL iom_put( 'snow_ai_cea', sprecip(:,:         ) * zicefr(:,:)    )   ! Snow        over sea-ice         (cell average) 
    11761172      CALL iom_put( 'subl_ai_cea', frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) )   ! Sublimation over sea-ice         (cell average) 
    11771173      !    
     
    12211217         IF ( TRIM(sn_rcv_qns%clcat) == 'yes' ) THEN 
    12221218            DO jl=1,jpl 
    1223                ! ** NEED TO MAKE SURE a_i IS PROPERLY SET AND AVAILABLE IN THIS ROUTINE  ** 
    12241219               qns_tot(:,:   ) = qns_tot(:,:) + a_i(:,:,jl) * frcv(jpr_qnsice)%z3(:,:,jl)    
    12251220               qns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,jl) 
     
    12381233            &                                                   +          pist(:,:,1)   * zicefr(:,:) ) ) 
    12391234      END SELECT 
    1240       ztmp(:,:) = p_frld(:,:) * zsnow(:,:) * lfus               ! add the latent heat of solid precip. melting 
     1235      ztmp(:,:) = p_frld(:,:) * sprecip(:,:) * lfus               ! add the latent heat of solid precip. melting 
    12411236      qns_tot(:,:) = qns_tot(:,:) - ztmp(:,:)                     ! over free ocean  
    1242       IF( lk_diaar5 )   CALL iom_put( 'hflx_snow_cea', ztmp + zsnow(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average) 
     1237      IF( lk_diaar5 )   CALL iom_put( 'hflx_snow_cea', ztmp + sprecip(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average) 
    12431238!!gm 
    12441239!!    currently it is taken into account in leads budget but not in the qns_tot, and thus not in  
     
    12761271         IF ( TRIM(sn_rcv_qsr%clcat) == 'yes' ) THEN 
    12771272            DO jl=1,jpl 
    1278                ! ** NEED TO MAKE SURE a_i IS PROPERLY SET AND AVAILABLE IN THIS ROUTINE ** 
    12791273               qsr_tot(:,:   ) = qsr_tot(:,:) + a_i(:,:,jl) * frcv(jpr_qsrice)%z3(:,:,jl)    
    12801274               qsr_ice(:,:,jl) = frcv(jpr_qsrice)%z3(:,:,jl) 
     
    12921286!       ( see OASIS3 user guide, 5th edition, p39 ) 
    12931287         qsr_ice(:,:,1) = frcv(jpr_qsrmix)%z3(:,:,1) * ( 1.- palbi(:,:,1) )   & 
    1294             &            / (  1.- ( albedo_oce_mix(:,:  ) * p_frld(:,:)   & 
     1288            &            / (  1.- ( albedo_oce_mix(:,:  ) * p_frld(:,:)       & 
    12951289            &                     + palbi         (:,:,1) * zicefr(:,:) ) ) 
    12961290      END SELECT 
     
    13201314      END SELECT 
    13211315 
    1322       IF( wrk_not_released(2, 2,3,4,5) ) CALL ctl_stop('sbc_cpl_ice_flx: failed to release workspace arrays') 
     1316      IF( wrk_not_released(2, 2,3,4) ) CALL ctl_stop('sbc_cpl_ice_flx: failed to release workspace arrays') 
    13231317      ! 
    13241318   END SUBROUTINE sbc_cpl_ice_flx 
  • branches/2011/dev_r2802_UKMO8_sbccpl/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r2832 r2834  
    202202#if defined key_coupled 
    203203         !                                             ! Ice surface fluxes in coupled mode  
    204          IF( ksbc == 5 )   CALL sbc_cpl_ice_flx( frld,                                           & 
     204         IF( ksbc == 5 )   THEN 
     205            a_i(:,:,1)=fr_i 
     206            CALL sbc_cpl_ice_flx( frld,                                              & 
    205207            !                                optional arguments, used only in 'mixed oce-ice' case 
    206208            &                                             palbi = zalb_ice_cs, psst = sst_m, pist = zsist ) 
     209            sprecip(:,:) = - emp_ice(:,:)   ! Ugly patch, WARNING, in coupled mode, sublimation included in snow (parsub = 0.) 
     210         ENDIF 
    207211#endif 
    208212                           CALL lim_thd_2      ( kt )      ! Ice thermodynamics  
Note: See TracChangeset for help on using the changeset viewer.