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 12588 for NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/OCE – NEMO

Ignore:
Timestamp:
2020-03-23T18:21:59+01:00 (4 years ago)
Author:
gsamson
Message:

revised ABL model version including:

  • albmod cleaning
  • new abl mixing length option (nn_amxl = 3)
  • use rho_air function from aerobulk everywhere
  • remove mxl_abl (replaced by master (mxlm_abl) and dissipative (mxlm_abl) mixing lengths)
  • temporary flag "ln_tpot" to disable potential temperature computation in sbcblk
File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/OCE/SBC/sbcblk.F90

    r12489 r12588  
    104104   REAL(wp)         ::   rn_zu     ! z(u)   : height of wind measurements 
    105105   ! 
    106    REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   Cd_ice , Ch_ice , Ce_ice   ! transfert coefficients over ice 
    107    REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   Cdn_oce, Chn_oce, Cen_oce  ! neutral coeffs over ocean (L15 bulk scheme) 
    108    REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   t_zu, q_zu                 ! air temp. and spec. hum. at wind speed height (L15 bulk scheme) 
     106   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) ::   Cdn_oce, Chn_oce, Cen_oce  ! neutral coeffs over ocean (L15 bulk scheme and ABL) 
     107   REAL(wp),         ALLOCATABLE, DIMENSION(:,:) ::   Cd_ice , Ch_ice , Ce_ice   ! transfert coefficients over ice 
     108   REAL(wp),         ALLOCATABLE, DIMENSION(:,:) ::   t_zu, q_zu                 ! air temp. and spec. hum. at wind speed height (L15 bulk scheme) 
    109109 
    110110   LOGICAL  ::   ln_skin_cs     ! use the cool-skin (only available in ECMWF and COARE algorithms) !LB 
     
    113113   LOGICAL  ::   ln_humi_dpt    ! humidity read in files ("sn_humi") is dew-point temperature [K] if .true. !LB 
    114114   LOGICAL  ::   ln_humi_rlh    ! humidity read in files ("sn_humi") is relative humidity     [%] if .true. !LB 
     115   LOGICAL  ::   ln_tpot        !!GS: flag to compute or not potential temperature 
    115116   ! 
    116117   INTEGER  ::   nhumi          ! choice of the bulk algorithm 
     
    170171         &                 ln_NCAR, ln_COARE_3p0, ln_COARE_3p6, ln_ECMWF,             &   ! bulk algorithm 
    171172         &                 cn_dir , rn_zqt, rn_zu,                                    & 
    172          &                 rn_pfac, rn_efac, rn_vfac, ln_Cd_L12, ln_Cd_L15,           & 
     173         &                 rn_pfac, rn_efac, rn_vfac, ln_Cd_L12, ln_Cd_L15, ln_tpot,  & 
    173174         &                 ln_skin_cs, ln_skin_wl, ln_humi_sph, ln_humi_dpt, ln_humi_rlh  ! cool-skin / warm-layer !LB 
    174175      !!--------------------------------------------------------------------- 
     
    593594         !#LB: because AGRIF hates functions that return something else than a scalar, need to 
    594595         !     use scalar version of gamma_moist() ... 
    595          DO_2D_11_11 
    596             ztpot(ji,jj) = ptair(ji,jj) + gamma_moist( ptair(ji,jj), zqair(ji,jj) ) * rn_zqt 
    597          END_2D 
     596         IF( ln_tpot ) THEN 
     597            DO_2D_11_11 
     598               ztpot(ji,jj) = ptair(ji,jj) + gamma_moist( ptair(ji,jj), zqair(ji,jj) ) * rn_zqt 
     599            END_2D 
     600         ELSE 
     601            ztpot = ptair(:,:) 
     602         ENDIF 
    598603      ENDIF 
    599604 
     
    663668      ELSE                      !==  BLK formulation  ==!   turbulent fluxes computation 
    664669         CALL BULK_FORMULA( rn_zu, ptsk(:,:), pssq(:,:), t_zu(:,:), q_zu(:,:), & 
    665             &               zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:),         & 
    666             &               wndm(:,:), zU_zu(:,:), pslp(:,:),                 & 
    667             &               taum(:,:), psen(:,:), zqla(:,:),                  & 
    668             &               pEvap=pevp(:,:), prhoa=rhoa(:,:) ) 
     670            &               zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:),          & 
     671            &               wndm(:,:), zU_zu(:,:), pslp(:,:),                  & 
     672            &               taum(:,:), psen(:,:), zqla(:,:),                   & 
     673            &               pEvap=pevp(:,:), prhoa=rhoa(:,:)                   ) 
    669674 
    670675         zqla(:,:) = zqla(:,:) * tmask(:,:,1) 
     
    893898 
    894899      ! local scalars ( place there for vector optimisation purposes) 
    895       !IF (ln_abl) rhoa  (:,:)  = rho_air( ptair(:,:), phumi(:,:), pslp(:,:) ) !!GS: rhoa must be (re)computed here with ABL to avoid division by zero after (TBI) 
    896900      zcd_dui(:,:) = wndm_ice(:,:) * Cd_ice(:,:) 
    897901 
     
    913917         IF(sn_cfctl%l_prtctl)  CALL prt_ctl( tab2d_1=putaui  , clinfo1=' blk_ice: putaui : '   & 
    914918            &                               , tab2d_2=pvtaui  , clinfo2='          pvtaui : ' ) 
    915       ELSE 
     919      ELSE ! ln_abl 
    916920         zztmp1 = 11637800.0_wp 
    917921         zztmp2 =    -5897.8_wp 
Note: See TracChangeset for help on using the changeset viewer.