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 13159 for NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/OCE/SBC/sbcblk.F90 – NEMO

Ignore:
Timestamp:
2020-06-26T10:26:32+02:00 (4 years ago)
Author:
gsamson
Message:

merge trunk@r13136 into ASINTER-06 branch; pass all SETTE tests; results identical to trunk@r13136; ticket #2419

Location:
NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement

    • Property svn:externals
      •  

        old new  
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@12931        sette 
  • NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/OCE/SBC/sbcblk.F90

    r12799 r13159  
    632632 
    633633      END SELECT 
    634  
     634       
     635      IF( iom_use('Cd_oce') )   CALL iom_put("Cd_oce",   zcd_oce * tmask(:,:,1)) 
     636      IF( iom_use('Ce_oce') )   CALL iom_put("Ce_oce",   zce_oce * tmask(:,:,1)) 
     637      IF( iom_use('Ch_oce') )   CALL iom_put("Ch_oce",   zch_oce * tmask(:,:,1)) 
     638      !! LB: mainly here for debugging purpose: 
     639      IF( iom_use('theta_zt') ) CALL iom_put("theta_zt", (ztpot-rt0) * tmask(:,:,1)) ! potential temperature at z=zt 
     640      IF( iom_use('q_zt') )     CALL iom_put("q_zt",     zqair       * tmask(:,:,1)) ! specific humidity       " 
     641      IF( iom_use('theta_zu') ) CALL iom_put("theta_zu", (t_zu -rt0) * tmask(:,:,1)) ! potential temperature at z=zu 
     642      IF( iom_use('q_zu') )     CALL iom_put("q_zu",     q_zu        * tmask(:,:,1)) ! specific humidity       " 
     643      IF( iom_use('ssq') )      CALL iom_put("ssq",      pssq        * tmask(:,:,1)) ! saturation specific humidity at z=0 
     644      IF( iom_use('wspd_blk') ) CALL iom_put("wspd_blk", zU_zu       * tmask(:,:,1)) ! bulk wind speed at z=zu 
     645       
    635646      IF( ln_skin_cs .OR. ln_skin_wl ) THEN 
    636647         !! ptsk and pssq have been updated!!! 
     
    643654         END WHERE 
    644655      END IF 
    645  
    646       !!      CALL iom_put( "Cd_oce", zcd_oce)  ! output value of pure ocean-atm. transfer coef. 
    647       !!      CALL iom_put( "Ch_oce", zch_oce)  ! output value of pure ocean-atm. transfer coef. 
    648  
    649       IF( ABS(rn_zu - rn_zqt) < 0.1_wp ) THEN 
    650          !! If zu == zt, then ensuring once for all that: 
    651          t_zu(:,:) = ztpot(:,:) 
    652          q_zu(:,:) = zqair(:,:) 
    653       ENDIF 
    654  
    655656 
    656657      !  Turbulent fluxes over ocean  => BULK_FORMULA @ sbcblk_phy.F90 
     
    671672            &               wndm(:,:), zU_zu(:,:), pslp(:,:),                  & 
    672673            &               taum(:,:), psen(:,:), zqla(:,:),                   & 
    673             &               pEvap=pevp(:,:), prhoa=rhoa(:,:)                  ) 
     674            &               pEvap=pevp(:,:), prhoa=rhoa(:,:), pfact_evap=rn_efac ) 
    674675 
    675676         zqla(:,:) = zqla(:,:) * tmask(:,:,1) 
     
    688689         ! ... utau, vtau at U- and V_points, resp. 
    689690         !     Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 
    690          !     Note the use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves 
    691          DO_2D_10_10 
     691         !     Note that coastal wind stress is not used in the code... so this extra care has no effect 
     692         DO_2D_00_00 
    692693            utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zwnd_i(ji,jj) + zwnd_i(ji+1,jj  ) ) & 
    693694               &          * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1)) 
     
    893894         Ce_ice(:,:) = Ch_ice(:,:)       ! sensible and latent heat transfer coef. are considered identical 
    894895      ENDIF 
    895  
    896       !! IF ( iom_use("Cd_ice") ) CALL iom_put("Cd_ice", Cd_ice)   ! output value of pure ice-atm. transfer coef. 
    897       !! IF ( iom_use("Ch_ice") ) CALL iom_put("Ch_ice", Ch_ice)   ! output value of pure ice-atm. transfer coef. 
    898  
     896       
     897      IF( iom_use('Cd_ice') ) CALL iom_put("Cd_ice", Cd_ice) 
     898      IF( iom_use('Ce_ice') ) CALL iom_put("Ce_ice", Ce_ice) 
     899      IF( iom_use('Ch_ice') ) CALL iom_put("Ch_ice", Ch_ice) 
     900       
    899901      ! local scalars ( place there for vector optimisation purposes) 
    900902      zcd_dui(:,:) = wndm_ice(:,:) * Cd_ice(:,:) 
    901903 
    902904      IF( ln_blk ) THEN 
    903          ! ------------------------------------------------------------ ! 
    904          !    Wind stress relative to the moving ice ( U10m - U_ice )   ! 
    905          ! ------------------------------------------------------------ ! 
    906          ! C-grid ice dynamics :   U & V-points (same as ocean) 
    907          DO_2D_00_00 
    908             putaui(ji,jj) = 0.5_wp * (  rhoa(ji+1,jj) * zcd_dui(ji+1,jj)             & 
    909                &                      + rhoa(ji  ,jj) * zcd_dui(ji  ,jj)  )          & 
    910                &         * ( 0.5_wp * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) - rn_vfac * puice(ji,jj) ) 
    911             pvtaui(ji,jj) = 0.5_wp * (  rhoa(ji,jj+1) * zcd_dui(ji,jj+1)             & 
    912                &                      + rhoa(ji,jj  ) * zcd_dui(ji,jj  )  )          & 
    913                &         * ( 0.5_wp * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) - rn_vfac * pvice(ji,jj) ) 
     905         ! ------------------------------------------------------------- ! 
     906         !    Wind stress relative to the moving ice ( U10m - U_ice )    ! 
     907         ! ------------------------------------------------------------- ! 
     908         zztmp1 = rn_vfac * 0.5_wp 
     909         DO_2D_01_01    ! at T point  
     910            putaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * ( pwndi(ji,jj) - zztmp1 * ( puice(ji-1,jj  ) + puice(ji,jj) ) ) 
     911            pvtaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * ( pwndj(ji,jj) - zztmp1 * ( pvice(ji  ,jj-1) + pvice(ji,jj) ) ) 
     912         END_2D 
     913         ! 
     914         DO_2D_00_00    ! U & V-points (same as ocean). 
     915            ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology  
     916            zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
     917            zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji  ,jj+1,1) ) 
     918            putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj  ) ) 
     919            pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji  ,jj+1) ) 
    914920         END_2D 
    915921         CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. ) 
     
    10501056      evap_ice (:,:,:) = rn_efac * qla_ice (:,:,:) * z1_rLsub    ! sublimation 
    10511057      devap_ice(:,:,:) = rn_efac * dqla_ice(:,:,:) * z1_rLsub    ! d(sublimation)/dT 
    1052       zevap    (:,:)   = rn_efac * ( emp(:,:) + tprecip(:,:) )   ! evaporation over ocean 
     1058      zevap    (:,:)   = emp(:,:) + tprecip(:,:)   ! evaporation over ocean  !LB: removed rn_efac here, correct??? 
    10531059 
    10541060      ! --- evaporation minus precipitation --- ! 
Note: See TracChangeset for help on using the changeset viewer.