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 14592 for NEMO/branches/2021/ticket2632_r14588_theta_sbcblk/src/OCE/SBC/sbcblk_algo_coare3p0.F90 – NEMO

Ignore:
Timestamp:
2021-03-05T17:03:57+01:00 (3 years ago)
Author:
gsamson
Message:

sbc_phy:

  • 2 new functions:
    • pres_temp: compute air pressure from air temperature and surface pressure
    • theta_exner: compute air/surface potential temperature following a dry adiabatic transformation
  • 3 modified functions:
    • Ri_bulk: use potential SST instead of SST + some simplifications TBD
    • bulk_formula: pass "rhoa" variable as input argument instead of calculing it with the old "gamma_moist" function inside the routine
    • update_qnsol_tau: pass "rhoa" variable as input argument to pass it to "bulk_formula" function
  • global small cleaning/cosmetics

sbcblk_algo_{ecmwf,coare3p?}: "rhoa" variable updated for CS/WL options and passed as input argument to "update_qnsol_tau" function

sbcblk & sbcabl:
add calls to "pres_temp" & "theta_exner" functions to compute air & surface potential temperatures (over both ocean and sea-ice) before computing sensible heat flux
special attention needed to check if CS/WL increment is properly applied

ticket #2632

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/ticket2632_r14588_theta_sbcblk/src/OCE/SBC/sbcblk_algo_coare3p0.F90

    r14072 r14592  
    189189      REAL(wp), DIMENSION(jpi,jpj) :: zeta_u        ! stability parameter at height zu 
    190190      REAL(wp), DIMENSION(jpi,jpj) :: ztmp0, ztmp1, ztmp2 
     191      REAL(wp), DIMENSION(jpi,jpj) :: zpre, zrhoa, zta 
    191192      ! 
    192193      REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zeta_t  ! stability parameter at height zt 
     
    321322         ENDIF 
    322323 
     324         IF(( l_use_cs ).OR.( l_use_wl )) THEN 
     325            zpre(:,:) = pres_temp( q_zu(:,:), slp(:,:), zu, ptpot=t_zu(:,:), pta=zta(:,:) ) 
     326            zrhoa(:,:) = rho_air( zta(:,:), q_zu(:,:), zpre(:,:) ) 
     327         ENDIF 
     328 
    323329         IF( l_use_cs ) THEN 
    324330            !! Cool-skin contribution 
    325331 
    326             CALL UPDATE_QNSOL_TAU( zu, T_s, q_s, t_zu, q_zu, u_star, t_star, q_star, U_zu, Ubzu, slp, rad_lw, & 
    327                &                   ztmp1, zeta_u,  Qlat=ztmp2)  ! Qnsol -> ztmp1 / Tau -> zeta_u 
     332            CALL UPDATE_QNSOL_TAU( zu, T_s, q_s, t_zu, q_zu, u_star, t_star, q_star, U_zu, Ubzu, slp, rad_lw, zrhoa, & 
     333               &                   ztmp1, zeta_u, Qlat=ztmp2)  ! Qnsol -> ztmp1 / Tau -> zeta_u 
    328334 
    329335            CALL CS_COARE( Qsw, ztmp1, u_star, zsst, ztmp2 )  ! ! Qnsol -> ztmp1 / Qlat -> ztmp2 
     
    336342         IF( l_use_wl ) THEN 
    337343            !! Warm-layer contribution 
    338             CALL UPDATE_QNSOL_TAU( zu, T_s, q_s, t_zu, q_zu, u_star, t_star, q_star, U_zu, Ubzu, slp, rad_lw, & 
     344            CALL UPDATE_QNSOL_TAU( zu, T_s, q_s, t_zu, q_zu, u_star, t_star, q_star, U_zu, Ubzu, slp, rad_lw, zrhoa, & 
    339345               &                   ztmp1, zeta_u)  ! Qnsol -> ztmp1 / Tau -> zeta_u 
    340346            !! In WL_COARE or , Tau_ac and Qnt_ac must be updated at the final itteration step => add a flag to do this! 
Note: See TracChangeset for help on using the changeset viewer.