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 11266 for NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk_algo_coare.F90 – NEMO

Ignore:
Timestamp:
2019-07-15T12:09:30+02:00 (5 years ago)
Author:
laurent
Message:

LB: CSWL param now uses NEMO time step (rdt) and previous-t value of t_skin as first guess.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk_algo_coare.F90

    r11215 r11266  
    5757      &                   Cd, Ch, Ce, t_zu, q_zu, U_blk,      & 
    5858      &                   Cdn, Chn, Cen,                      & 
    59       &                   Qsw, rad_lw, slp                   ) 
     59      &                   Qsw, rad_lw, slp, Tsk_b             ) 
    6060      !!---------------------------------------------------------------------- 
    6161      !!                      ***  ROUTINE  turb_coare  *** 
     
    8181      !! INPUT/OUTPUT: 
    8282      !! ------------- 
    83       !!    *  T_s  : SST or skin temperature                                 [K] 
     83      !!    *  T_s  : always "bulk SST" as input                              [K] 
     84      !!              -> unchanged "bulk SST" as output if CSWL not used      [K] 
     85      !!              -> skin temperature as output if CSWL used              [K] 
     86      !! 
    8487      !!    *  q_s  : SSQ aka saturation specific humidity at temp. T_s       [kg/kg] 
    8588      !!              -> doesn't need to be given a value if skin temp computed (in case l_use_skin=True) 
     
    9194      !!    *  rad_lw : downwelling longwave radiation at the surface  (>0)   [W/m^2] 
    9295      !!    *  slp    : sea-level pressure                                    [Pa] 
     96      !!    *  Tsk_b  : estimate of skin temperature at previous time-step    [K] 
    9397      !! 
    9498      !! OUTPUT : 
     
    122126      REAL(wp), INTENT(in   ), OPTIONAL, DIMENSION(jpi,jpj) ::   rad_lw   !             [W/m^2] 
    123127      REAL(wp), INTENT(in   ), OPTIONAL, DIMENSION(jpi,jpj) ::   slp      !             [Pa] 
     128      REAL(wp), INTENT(in   ), OPTIONAL, DIMENSION(jpi,jpj) ::   Tsk_b    !             [Pa] 
    124129      ! 
    125130      INTEGER :: j_itt 
     
    152157 
    153158      !! Initialization for cool skin: 
     159      zsst   = T_s    ! save the bulk SST 
    154160      IF( l_use_skin ) THEN 
    155          zsst   = T_s    ! save the bulk SST 
    156          T_s    = T_s - 0.25                      ! First guess of correction 
     161         ! First guess for skin temperature: 
     162         IF( PRESENT(Tsk_b) ) THEN 
     163            T_s = Tsk_b 
     164         ELSE 
     165            T_s = T_s - 0.25     ! sst - 0.25 
     166         END IF 
    157167         q_s    = rdct_qsat_salt*q_sat(MAX(T_s, 200._wp), slp) ! First guess of q_s 
    158168      END IF 
     
    202212      q_star = dq_zu*ztmp0 
    203213 
    204       ! What's need to be done if zt /= zu: 
     214      ! What needs to be done if zt /= zu: 
    205215      IF( .NOT. l_zt_equal_zu ) THEN 
    206216         !! First update of values at zu (or zt for wind) 
     
    275285            ztmp1 = U_blk*MAX(rho_air(t_zu, q_zu, slp), 1._wp)     ! rho*U10 
    276286            ztmp2 = T_s*T_s 
    277             ztmp1 = ztmp1 * ( Ce*rLevap*(q_zu - q_s) + Ch*rCp_dry*(t_zu - T_s) ) & ! Total turb. heat flux 
    278                &       +    (rad_lw - emiss_w*stefan*ztmp2*ztmp2)                  ! Net longwave flux 
     287            ztmp1 = ztmp1 * ( Ce*L_vap(T_s)*(q_zu - q_s) + Ch*cp_air(q_zu)*(t_zu - T_s) ) & ! Total turb. heat flux 
     288               &       +      rad_lw - emiss_w*stefan*ztmp2*ztmp2                           ! Net longwave flux 
     289            !!         => "ztmp1" is the net non-solar surface heat flux ! 
    279290            !! Updating the values of the skin temperature T_s and q_s : 
    280291            CALL CSWL_ECMWF( Qsw, ztmp1, u_star, zsst, T_s ) ! yes ECMWF, because more advanced than COARE (warm-layer added!) 
Note: See TracChangeset for help on using the changeset viewer.