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 4144 for branches/2013/dev_r3987_UKMO6_C1D/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90 – NEMO

Ignore:
Timestamp:
2013-10-28T14:50:08+01:00 (11 years ago)
Author:
rfurner
Message:

Commit for 2013 changes; see #1085

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3987_UKMO6_C1D/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r3772 r4144  
    7373 
    7474   !                                  !!* Namelist namsbc_core : CORE bulk parameters 
    75    LOGICAL  ::   ln_2m     = .FALSE.   ! logical flag for height of air temp. and hum 
     75   LOGICAL  ::   ln_2m     = .FALSE.   ! logical flag for case where z(q,t) = 2m and z(u) = 10m 
     76   LOGICAL  ::   ln_bulk2z = .FALSE.   ! logical flag for case where z(q,t) and z(u) are specified in the namelist 
     77   REAL(wp) ::   rn_zqt    = 10.       ! z(q,t) : height of humidity and temperature measurements 
     78   REAL(wp) ::   rn_zu     = 10.       ! z(u)   : height of wind measurements 
    7679   LOGICAL  ::   ln_taudif = .FALSE.   ! logical flag to use the "mean of stress module - module of mean stress" data 
    7780   REAL(wp) ::   rn_pfac   = 1.        ! multiplication factor for precipitation 
     
    129132      NAMELIST/namsbc_core/ cn_dir , ln_2m  , ln_taudif, rn_pfac,           & 
    130133         &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr ,           & 
    131          &                  sn_qlw , sn_tair, sn_prec  , sn_snow, sn_tdif 
     134         &                  sn_qlw , sn_tair, sn_prec  , sn_snow,           & 
     135         &                  sn_tdif, rn_zqt , ln_bulk2z, rn_zu 
    132136      !!--------------------------------------------------------------------- 
    133137 
     
    319323            &                      Cd    , Ch              , Ce  ,   & 
    320324            &                      zt_zu , zq_zu                   ) 
     325      ELSE IF( ln_bulk2z ) THEN 
     326         !! If the height of the air temp./spec. hum. and wind are to be specified by hand : 
     327         IF( rn_zqt == rn_zu ) THEN 
     328            !! If air temp. and spec. hum. are at the same height as wind : 
     329            CALL TURB_CORE_1Z( rn_zu, zst   , sf(jp_tair)%fnow(:,:,1),       & 
     330               &                      zqsatw, sf(jp_humi)%fnow(:,:,1), wndm, & 
     331               &                      Cd    , Ch                     , Ce  ) 
     332         ELSE 
     333            !! If air temp. and spec. hum. are at a different height to wind : 
     334            CALL TURB_CORE_2Z(rn_zqt, rn_zu , zst   , sf(jp_tair)%fnow,         & 
     335               &                              zqsatw, sf(jp_humi)%fnow, wndm,   & 
     336               &                              Cd    , Ch              , Ce  ,   & 
     337               &                              zt_zu , zq_zu                 ) 
     338         ENDIF 
    321339      ELSE 
    322340         !! If air temp. and spec. hum. are given at same height than wind (10m) : 
     
    363381      !  Turbulent fluxes over ocean 
    364382      ! ----------------------------- 
    365       IF( ln_2m ) THEN 
    366          ! Values of temp. and hum. adjusted to 10m must be used instead of 2m values 
     383      IF( ln_2m .OR. ( ln_bulk2z .AND. rn_zqt /= rn_zu ) ) THEN 
     384         ! Values of temp. and hum. adjusted to height of wind must be used 
    367385         zevap(:,:) = MAX( 0.e0, rhoa    *Ce(:,:)*( zqsatw(:,:) - zq_zu(:,:) ) * wndm(:,:) )   ! Evaporation 
    368386         zqsb (:,:) =            rhoa*cpa*Ch(:,:)*( zst   (:,:) - zt_zu(:,:) ) * wndm(:,:)     ! Sensible Heat 
     
    786804      !!      Momentum, Latent and sensible heat exchange coefficients 
    787805      !!      Caution: this procedure should only be used in cases when air 
    788       !!      temperature (T_air) and air specific humidity (q_air) are at 2m 
    789       !!      whereas wind (dU) is at 10m. 
     806      !!      temperature (T_air) and air specific humidity (q_air) are at a 
     807      !!      different height to wind (dU). 
    790808      !! 
    791809      !! References :   Large & Yeager, 2004 : ??? 
     
    805823 
    806824      INTEGER :: j_itt 
    807       INTEGER , PARAMETER :: nb_itt = 3              ! number of itterations 
     825      INTEGER , PARAMETER :: nb_itt = 5              ! number of itterations 
    808826      REAL(wp), PARAMETER ::   grav   = 9.8          ! gravity                        
    809827      REAL(wp), PARAMETER ::   kappa  = 0.4          ! von Karman's constant 
     
    902920           !! 
    903921           !! Shifting the neutral 10m transfer coefficients to (zu,zeta_u) : 
    904            xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m) 
     922           xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m)   ! L & Y eq. (10a) 
    905923           Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 
    906924         ENDIF 
     
    908926         xlogt = log(zu/10.) - zpsi_hu 
    909927         !! 
    910          xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10 
     928         xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10               ! L & Y eq. (10b) 
    911929         Ch  = Ch_n10*sqrt_Cd/sqrt_Cd_n10/xct 
    912930         !! 
    913          xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10 
     931         xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10               ! L & Y eq. (10c) 
    914932         Ce  = Ce_n10*sqrt_Cd/sqrt_Cd_n10/xct 
    915933         !! 
Note: See TracChangeset for help on using the changeset viewer.