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 12081 for NEMO/branches/2019/dev_ASINTER-01-05_merged/src – NEMO

Ignore:
Timestamp:
2019-12-06T11:52:54+01:00 (4 years ago)
Author:
laurent
Message:

Minor synchronization with "dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_ASINTER-01-05_merged/src/OCE/SBC/sbcblk_phy.F90

    r12021 r12081  
    533533            CALL BULK_FORMULA( pzu, pTs(ji,jj), pqs(ji,jj), pTa(ji,jj), pqa(ji,jj), & 
    534534               &              zCd, zCh, zCe,                                        & 
    535                &              pwnd(ji,jj), pUb(ji,jj), pslp(ji,jj), & 
     535               &              pwnd(ji,jj), pUb(ji,jj), pslp(ji,jj),                 & 
    536536               &              pTau(ji,jj), zQsen, zQlat ) 
    537537 
     
    568568      REAL(wp), DIMENSION(jpi,jpj), INTENT(out) :: pQlat !  [W/m^2] 
    569569      !! 
    570       REAL(wp), DIMENSION(jpi,jpj), INTENT(out), OPTIONAL :: pEvap  ! Evaporation [kg/m^2/s] 
    571       REAL(wp), DIMENSION(jpi,jpj), INTENT(out), OPTIONAL :: prhoa  ! Air density at z=pzu [kg/m^3] 
     570      REAL(wp), DIMENSION(jpi,jpj), INTENT(out), OPTIONAL :: pEvap ! Evaporation [kg/m^2/s] 
     571      REAL(wp), DIMENSION(jpi,jpj), INTENT(out), OPTIONAL :: prhoa ! Air density at z=pzu [kg/m^3] 
    572572      !! 
    573573      REAL(wp) :: ztaa, zgamma, zrho, zUrho, zevap 
    574574      INTEGER  :: ji, jj, jq     ! dummy loop indices 
    575575      !!---------------------------------------------------------------------------------- 
    576          DO jj = 1, jpj 
    577             DO ji = 1, jpi 
    578     
    579                !! Need ztaa, absolute temperature at pzu (formula to estimate rho_air needs absolute temperature, not the potential temperature "pTa") 
    580                ztaa = pTa(ji,jj) ! first guess... 
    581                DO jq = 1, 4 
    582                   zgamma = gamma_moist( 0.5*(ztaa+pTs(ji,jj)) , pqa(ji,jj) ) 
    583                   ztaa = pTa(ji,jj) - zgamma*pzu   ! Absolute temp. is slightly colder... 
    584                END DO 
    585                zrho = rho_air(ztaa, pqa(ji,jj), pslp(ji,jj)) 
    586                zrho = rho_air(ztaa, pqa(ji,jj), pslp(ji,jj)-zrho*grav*pzu) ! taking into account that we are pzu m above the sea level where SLP is given! 
    587     
    588                zUrho = pUb(ji,jj)*MAX(zrho, 1._wp)     ! rho*U10 
    589     
    590                pTau(ji,jj) = zUrho * pCd(ji,jj) * pwnd(ji,jj) ! Wind stress module 
    591     
    592                zevap        = zUrho * pCe(ji,jj) * (pqa(ji,jj) - pqs(ji,jj)) 
    593                pQsen(ji,jj) = zUrho * pCh(ji,jj) * (pTa(ji,jj) - pTs(ji,jj)) * cp_air(pqa(ji,jj)) 
    594                pQlat(ji,jj) = L_vap(pTs(ji,jj)) * zevap 
    595     
     576      DO jj = 1, jpj 
     577         DO ji = 1, jpi 
     578 
     579            !! Need ztaa, absolute temperature at pzu (formula to estimate rho_air needs absolute temperature, not the potential temperature "pTa") 
     580            ztaa = pTa(ji,jj) ! first guess... 
     581            DO jq = 1, 4 
     582               zgamma = gamma_moist( 0.5*(ztaa+pTs(ji,jj)) , pqa(ji,jj) ) 
     583               ztaa = pTa(ji,jj) - zgamma*pzu   ! Absolute temp. is slightly colder... 
     584            END DO 
     585            zrho = rho_air(ztaa, pqa(ji,jj), pslp(ji,jj)) 
     586            zrho = rho_air(ztaa, pqa(ji,jj), pslp(ji,jj)-zrho*grav*pzu) ! taking into account that we are pzu m above the sea level where SLP is given! 
     587 
     588            zUrho = pUb(ji,jj)*MAX(zrho, 1._wp)     ! rho*U10 
     589 
     590            pTau(ji,jj) = zUrho * pCd(ji,jj) * pwnd(ji,jj) ! Wind stress module 
     591 
     592            zevap        = zUrho * pCe(ji,jj) * (pqa(ji,jj) - pqs(ji,jj)) 
     593            pQsen(ji,jj) = zUrho * pCh(ji,jj) * (pTa(ji,jj) - pTs(ji,jj)) * cp_air(pqa(ji,jj)) 
     594            pQlat(ji,jj) = L_vap(pTs(ji,jj)) * zevap 
     595 
    596596            IF( PRESENT(pEvap) ) pEvap(ji,jj) = - zevap 
    597597            IF( PRESENT(prhoa) ) prhoa(ji,jj) = zrho 
    598     
    599             END DO 
    600          END DO 
     598 
     599         END DO 
     600      END DO 
    601601   END SUBROUTINE BULK_FORMULA_VCTR 
    602602 
     
    630630      !!---------------------------------------------------------------------------------- 
    631631 
    632          !! Need ztaa, absolute temperature at pzu (formula to estimate rho_air needs absolute temperature, not the potential temperature "pTa") 
    633          ztaa = pTa ! first guess... 
    634          DO jq = 1, 4 
    635             zgamma = gamma_moist( 0.5*(ztaa+pTs) , pqa ) 
    636             ztaa = pTa - zgamma*pzu   ! Absolute temp. is slightly colder... 
    637          END DO 
    638          zrho = rho_air(ztaa, pqa, pslp) 
    639          zrho = rho_air(ztaa, pqa, pslp-zrho*grav*pzu) ! taking into account that we are pzu m above the sea level where SLP is given! 
    640     
    641          zUrho = pUb*MAX(zrho, 1._wp)     ! rho*U10 
    642     
    643          pTau = zUrho * pCd * pwnd ! Wind stress module 
    644     
    645          zevap = zUrho * pCe * (pqa - pqs) 
    646          pQsen = zUrho * pCh * (pTa - pTs) * cp_air(pqa) 
    647          pQlat = L_vap(pTs) * zevap 
    648     
    649          IF( PRESENT(pEvap) ) pEvap = - zevap 
    650          IF( PRESENT(prhoa) ) prhoa = zrho 
     632      !! Need ztaa, absolute temperature at pzu (formula to estimate rho_air needs absolute temperature, not the potential temperature "pTa") 
     633      ztaa = pTa ! first guess... 
     634      DO jq = 1, 4 
     635         zgamma = gamma_moist( 0.5*(ztaa+pTs) , pqa ) 
     636         ztaa = pTa - zgamma*pzu   ! Absolute temp. is slightly colder... 
     637      END DO 
     638      zrho = rho_air(ztaa, pqa, pslp) 
     639      zrho = rho_air(ztaa, pqa, pslp-zrho*grav*pzu) ! taking into account that we are pzu m above the sea level where SLP is given! 
     640 
     641      zUrho = pUb*MAX(zrho, 1._wp)     ! rho*U10 
     642 
     643      pTau = zUrho * pCd * pwnd ! Wind stress module 
     644 
     645      zevap = zUrho * pCe * (pqa - pqs) 
     646      pQsen = zUrho * pCh * (pTa - pTs) * cp_air(pqa) 
     647      pQlat = L_vap(pTs) * zevap 
     648 
     649      IF( PRESENT(pEvap) ) pEvap = - zevap 
     650      IF( PRESENT(prhoa) ) prhoa = zrho 
    651651 
    652652   END SUBROUTINE BULK_FORMULA_SCLR 
Note: See TracChangeset for help on using the changeset viewer.