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 14409 – NEMO

Changeset 14409


Ignore:
Timestamp:
2021-02-05T13:46:37+01:00 (3 years ago)
Author:
agn
Message:

take account of radiation in FK mle code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser_4.0/src/OCE/ZDF/zdfosm.F90

    r14408 r14409  
    247247      REAL(wp), DIMENSION(jpi,jpj) :: zws0      ! Surface freshwater flux 
    248248      REAL(wp), DIMENSION(jpi,jpj) :: zwb0      ! Surface buoyancy flux 
     249      REAL(wp), DIMENSION(jpi,jpj) :: zwb0tot   ! Total surface buoyancy flux including insolation 
    249250      REAL(wp), DIMENSION(jpi,jpj) :: zwthav    ! Heat flux - bl average 
    250251      REAL(wp), DIMENSION(jpi,jpj) :: zwsav     ! freshwater flux - bl average 
     
    355356      zwthav(:,:) = 0._wp ; zwsav(:,:) = 0._wp ; zwbav(:,:)     = 0._wp ; zwb_ent(:,:)   = 0._wp 
    356357      zustke(:,:) = 0._wp ; zla(:,:)   = 0._wp ; zcos_wind(:,:) = 0._wp ; zsin_wind(:,:) = 0._wp 
    357       zhol(:,:)   = 0._wp 
     358      zhol(:,:)   = 0._wp ; zwb0tot(:,:) = 0._wp 
    358359      lconv(:,:)  = .FALSE.; lpyc(:,:) = .FALSE. ; lflux(:,:) = .FALSE. ;  lmle(:,:) = .FALSE. 
    359360      ! mixed layer 
     
    424425           ! Non radiative upwards surface buoyancy flux 
    425426           zwb0(ji,jj) = grav * zthermal * zwth0(ji,jj) -  grav * zbeta * zws0(ji,jj) 
     427           ! Total upwards surface buoyancy flux 
     428           zwb0tot(ji,jj) = zwb0(ji,jj) -  grav * zthermal * zrad0(ji,jj) 
    426429           ! turbulent heat flux averaged over depth of OSBL 
    427430           zwthav(ji,jj) = 0.5 * zwth0(ji,jj) - ( 0.5*( zrad0(ji,jj) + zradh(ji,jj) ) - zradav(ji,jj) ) 
     
    12291232                   DO jk = 1, ibld(ji,jj) 
    12301233                     znd = gdepw_n(ji,jj,jk) / MAX(zhbl(ji,jj),epsln) 
    1231                      ghamt(ji,jj,jk) = ghamt(ji,jj,jk) - zwth0(ji,jj) * ( 1.0 - znd ) 
     1234                     ghamt(ji,jj,jk) = ghamt(ji,jj,jk) - ( zwth0(ji,jj) - zrad0(ji,jj) ) * ( 1.0 - znd ) 
    12321235                     ghams(ji,jj,jk) = ghams(ji,jj,jk) - zws0(ji,jj) * ( 1.0 - znd ) 
    12331236                    END DO 
    12341237                    DO jk = 1, mld_prof(ji,jj) 
    12351238                      znd = gdepw_n(ji,jj,jk) / MAX(zhmle(ji,jj),epsln) 
    1236                       ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + zwth0(ji,jj) * ( 1.0 - znd ) 
     1239                      ghamt(ji,jj,jk) = ghamt(ji,jj,jk) +  ( zwth0(ji,jj) - zrad0(ji,jj) ) * ( 1.0 - znd ) 
    12371240                      ghams(ji,jj,jk) = ghams(ji,jj,jk) + zws0(ji,jj) * ( 1.0 -znd ) 
    12381241                    END DO 
     
    16681671         IF ( lconv(ji,jj) ) THEN 
    16691672! Unstable OSBL 
    1670             zwb_min(ji,jj) = zwb_ent(ji,jj) + zdh(ji,jj) / zhbl(ji,jj) * zwb0(ji,jj) 
     1673            zwb_min(ji,jj) = zwb_ent(ji,jj) + zdh(ji,jj) / zhbl(ji,jj) * zwb0tot(ji,jj) 
    16711674         ENDIF  ! lconv 
    16721675       END DO   ! ji 
     
    21052108                   IF ( zdb_bl(ji,jj) > 0.0 .and. zdbdz_bl_ext(ji,jj) > 0.0 ) THEN 
    21062109                      zgamma_b_nd = zdbdz_bl_ext(ji,jj) * zdh(ji,jj) / zdb_ml(ji,jj) 
    2107                       zpsi = -zalpha_pyc(ji,jj) * ( zwb0(ji,jj) - ( zwb_min(ji,jj) + 2.0 * zwb_fk_b(ji,jj) ) ) * zdh(ji,jj) / zhbl(ji,jj) 
     2110                      zpsi = -zalpha_pyc(ji,jj) * ( zwb0tot(ji,jj) - ( zwb_min(ji,jj) + 2.0 * zwb_fk_b(ji,jj) ) ) * zdh(ji,jj) / zhbl(ji,jj) 
    21082111                      zpsi = zpsi - 4.0 * ( 1.0 + zdh(ji,jj) /zhbl(ji,jj) ) * zgamma_b_nd * ( zwb_min(ji,jj) + 2.0 * zwb_fk_b(ji,jj) ) 
    21092112                      zpsi = zalpha_b * MAX ( zpsi, 0._wp ) 
     
    26182621              zdb_mle = zb_bl(ji,jj) - zbuoy  
    26192622! Timestep hmle.  
    2620               hmle(ji,jj) = hmle(ji,jj) + zwb0(ji,jj) * rn_rdt / zdb_mle 
     2623              hmle(ji,jj) = hmle(ji,jj) + zwb0tot(ji,jj) * rn_rdt / zdb_mle 
    26212624           ELSE 
    26222625              IF ( zhmle(ji,jj) > zhbl(ji,jj) ) THEN 
Note: See TracChangeset for help on using the changeset viewer.