unoh Subroutine

subroutine unoh(otf, octh, logdz, logdzh, logzh, sqdz, utangInt, dT, Ribl0, fkar2)

Arguments

Type IntentOptional Attributes Name
real, intent(out) :: otf
real, intent(out) :: octh
real, intent(in) :: logdz
real, intent(in) :: logdzh
real, intent(in) :: logzh
real, intent(in) :: sqdz
real, intent(in) :: utangInt
real, intent(in) :: dT
real, intent(in) :: Ribl0
real, intent(in) :: fkar2

Called by

proc~~unoh~~CalledByGraph proc~unoh wf_uno.f90::unoh proc~wfuno wf_uno.f90::wfuno proc~wfuno->proc~unoh proc~bottom modibm::bottom proc~bottom->proc~wfuno proc~xwallfun modibm::xwallfun proc~xwallfun->proc~wfuno proc~ywallfunmin modibm::ywallfunmin proc~ywallfunmin->proc~wfuno proc~ywallfunplus modibm::ywallfunplus proc~ywallfunplus->proc~wfuno proc~zwallfun modibm::zwallfun proc~zwallfun->proc~wfuno proc~ibmwallfun modibm::ibmwallfun proc~ibmwallfun->proc~xwallfun proc~ibmwallfun->proc~ywallfunmin proc~ibmwallfun->proc~ywallfunplus proc~ibmwallfun->proc~zwallfun program~dalesurban DALESURBAN program~dalesurban->proc~bottom program~dalesurban->proc~ibmwallfun

Contents

Source Code


Source Code

SUBROUTINE unoh(otf, octh, logdz, logdzh, logzh, sqdz, utangInt, dT, Ribl0, fkar2) !for heat, the bit that does not change no matter what wall
!flux in Km/s
   IMPLICIT NONE
   REAL, INTENT(in) :: logdz, logdzh, logzh, sqdz, utangInt, dT, Ribl0, fkar2
   REAL, INTENT(out) :: octh, otf
   REAL :: Ribl1, Fm, Fh, cm, ch, M, dTrough, cth
   REAL, PARAMETER :: b1 = 9.4 !parameters from Uno1995
   REAL, PARAMETER :: b2 = 4.7
   REAL, PARAMETER :: dm = 7.4
   REAL, PARAMETER :: dh = 5.3
   REAL, PARAMETER :: prandtlmol = 0.71
   REAL, PARAMETER :: prandtlmoli = 1/0.71

   octh = 0.
   otf = 0.
   IF (Ribl0 > 0.21) THEN !0.25 approx critical for bulk Richardson number  => stable
      Fm = 1./(1. + b2*Ribl0)**2 !Eq. 4
      Fh = Fm !Eq. 4
   ELSE ! => unstable
      cm = (dm*fkar2)/(logdz**2)*b1*sqdz !Eq. 5
      ch = (dh*fkar2)/(logdz**2)*b1*sqdz !Eq. 5
      Fm = 1. - (b1*Ribl0)/(1. + cm*SQRT(ABS(Ribl0))) !Eq. 3
      Fh = 1. - (b1*Ribl0)/(1. + ch*SQRT(ABS(Ribl0))) !Eq. 3
   END IF

   M = prandtlmol*logdz*SQRT(Fm)/Fh !Eq. 14

   Ribl1 = Ribl0 - Ribl0*prandtlmol*logzh/(prandtlmol*logzh + M) !Eq. 17

   !interate to get new Richardson number
   IF (Ribl1 > 0.21) THEN !0.25 approx critical for bulk Richardson number  => stable
      Fm = 1./(1. + b2*Ribl1)**2 !Eq. 4
      Fh = Fm !Eq. 4
   ELSE ! => unstable
      cm = (dm*fkar2)/(logdz**2)*b1*sqdz !Eq. 5
      ch = (dh*fkar2)/(logdz**2)*b1*sqdz !Eq. 5
      Fm = 1. - (b1*Ribl1)/(1. + cm*SQRT(ABS(Ribl1))) !Eq. 3
      Fh = 1. - (b1*Ribl1)/(1. + ch*SQRT(ABS(Ribl1))) !Eq. 3
   END IF
   M = prandtlmol*logdz*SQRT(Fm)/Fh !Eq. 14

   dTrough = dT*1./(prandtlmol*logzh/M + 1.) !Eq. 13a

   octh = SQRT(utangInt)*fkar2/(logdz*logdzh)*prandtlmoli*Fh !Eq. 8
   otf = octh*dTrough !Eq. 2, Eq. 8

END SUBROUTINE unoh