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

Ignore:
Timestamp:
2013-11-19T12:19:21+01:00 (10 years ago)
Author:
cetlod
Message:

dev_locean_cmcc_ingv_ukmo_merc : merge in the MERC_UKMO dev branch with trunk rev 4119

File:
1 edited

Legend:

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

    r4230 r4245  
    7979   REAL(wp) ::   rn_efac     ! multiplication factor for evaporation (clem) 
    8080   REAL(wp) ::   rn_vfac     ! multiplication factor for ice/ocean velocity in the calculation of wind stress (clem) 
     81   LOGICAL  ::   ln_bulk2z   ! logical flag for case where z(q,t) and z(u) are specified in the namelist 
     82   REAL(wp) ::   rn_zqt      ! z(q,t) : height of humidity and temperature measurements 
     83   REAL(wp) ::   rn_zu       ! z(u)   : height of wind measurements 
    8184 
    8285   !! * Substitutions 
     
    134137      NAMELIST/namsbc_core/ cn_dir , ln_2m  , ln_taudif, rn_pfac, rn_efac, rn_vfac,  & 
    135138         &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr ,           & 
    136          &                  sn_qlw , sn_tair, sn_prec  , sn_snow, sn_tdif 
     139         &                  sn_qlw , sn_tair, sn_prec  , sn_snow,           & 
     140         &                  sn_tdif, rn_zqt , ln_bulk2z, rn_zu 
    137141      !!--------------------------------------------------------------------- 
    138142 
     
    316320            &                      Cd    , Ch              , Ce  ,   & 
    317321            &                      zt_zu , zq_zu                   ) 
     322      ELSE IF( ln_bulk2z ) THEN 
     323         !! If the height of the air temp./spec. hum. and wind are to be specified by hand : 
     324         IF( rn_zqt == rn_zu ) THEN 
     325            !! If air temp. and spec. hum. are at the same height as wind : 
     326            CALL TURB_CORE_1Z( rn_zu, zst   , sf(jp_tair)%fnow(:,:,1),       & 
     327               &                      zqsatw, sf(jp_humi)%fnow(:,:,1), wndm, & 
     328               &                      Cd    , Ch                     , Ce  ) 
     329         ELSE 
     330            !! If air temp. and spec. hum. are at a different height to wind : 
     331            CALL TURB_CORE_2Z(rn_zqt, rn_zu , zst   , sf(jp_tair)%fnow,         & 
     332               &                              zqsatw, sf(jp_humi)%fnow, wndm,   & 
     333               &                              Cd    , Ch              , Ce  ,   & 
     334               &                              zt_zu , zq_zu                 ) 
     335         ENDIF 
    318336      ELSE 
    319337         !! If air temp. and spec. hum. are given at same height than wind (10m) : 
     
    360378      !  Turbulent fluxes over ocean 
    361379      ! ----------------------------- 
    362       IF( ln_2m ) THEN 
    363          ! Values of temp. and hum. adjusted to 10m must be used instead of 2m values 
     380      IF( ln_2m .OR. ( ln_bulk2z .AND. rn_zqt /= rn_zu ) ) THEN 
     381         ! Values of temp. and hum. adjusted to height of wind must be used 
    364382         zevap(:,:) = rn_efac * MAX( 0.e0, rhoa    *Ce(:,:)*( zqsatw(:,:) - zq_zu(:,:) ) * wndm(:,:) )   ! Evaporation 
    365383         zqsb (:,:) =                      rhoa*cpa*Ch(:,:)*( zst   (:,:) - zt_zu(:,:) ) * wndm(:,:)     ! Sensible Heat 
     
    789807      !!      Momentum, Latent and sensible heat exchange coefficients 
    790808      !!      Caution: this procedure should only be used in cases when air 
    791       !!      temperature (T_air) and air specific humidity (q_air) are at 2m 
    792       !!      whereas wind (dU) is at 10m. 
     809      !!      temperature (T_air) and air specific humidity (q_air) are at a 
     810      !!      different height to wind (dU). 
    793811      !! 
    794812      !! References :   Large & Yeager, 2004 : ??? 
     
    808826 
    809827      INTEGER :: j_itt 
    810       INTEGER , PARAMETER :: nb_itt = 3              ! number of itterations 
     828      INTEGER , PARAMETER :: nb_itt = 5              ! number of itterations 
    811829      REAL(wp), PARAMETER ::   grav   = 9.8          ! gravity                        
    812830      REAL(wp), PARAMETER ::   kappa  = 0.4          ! von Karman's constant 
     
    905923           !! 
    906924           !! Shifting the neutral 10m transfer coefficients to (zu,zeta_u) : 
    907            xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m) 
     925           xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m)   ! L & Y eq. (10a) 
    908926           Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 
    909927         ENDIF 
     
    911929         xlogt = log(zu/10.) - zpsi_hu 
    912930         !! 
    913          xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10 
     931         xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10               ! L & Y eq. (10b) 
    914932         Ch  = Ch_n10*sqrt_Cd/sqrt_Cd_n10/xct 
    915933         !! 
    916          xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10 
     934         xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10               ! L & Y eq. (10c) 
    917935         Ce  = Ce_n10*sqrt_Cd/sqrt_Cd_n10/xct 
    918936         !! 
Note: See TracChangeset for help on using the changeset viewer.