6 SUBROUTINE cls_tq( PTA, PQA, PPA, PPS, PHT, &
58 USE yomhook
,ONLY : lhook, dr_hook
59 USE parkind1
,ONLY : jprb
67 REAL,
DIMENSION(:),
INTENT(IN) :: pta
68 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
69 REAL,
DIMENSION(:),
INTENT(IN) :: ppa
70 REAL,
DIMENSION(:),
INTENT(IN) :: pps
71 REAL,
DIMENSION(:),
INTENT(IN) :: pht
72 REAL,
DIMENSION(:),
INTENT(IN) :: pcd
73 REAL,
DIMENSION(:),
INTENT(IN) :: pch
74 REAL,
DIMENSION(:),
INTENT(IN) :: pri
75 REAL,
DIMENSION(:),
INTENT(IN) :: pts
76 REAL,
DIMENSION(:),
INTENT(IN) :: phu
77 REAL,
DIMENSION(:),
INTENT(IN) :: pz0h
78 REAL,
DIMENSION(:),
INTENT(IN) :: ph
80 REAL,
DIMENSION(:),
INTENT(OUT) :: ptnm
81 REAL,
DIMENSION(:),
INTENT(OUT) :: pqnm
82 REAL,
DIMENSION(:),
INTENT(OUT) :: phunm
86 REAL,
DIMENSION(SIZE(PTA)) :: zbnh,zbh,zrs
87 REAL,
DIMENSION(SIZE(PTA)) :: zlogs,zcors,ziv
88 REAL,
DIMENSION(SIZE(PTA)) :: zqsata, zhua
89 REAL,
DIMENSION(SIZE(PTA)) :: zqsatnm, zpnm, zqs, zqsats
90 CHARACTER(LEN=2) :: yhumidity
91 REAL(KIND=JPRB) :: zhook_handle
95 IF (lhook) CALL dr_hook(
'CLS_TQ',0,zhook_handle)
116 zbnh(:)=log( pht(:)/pz0h(:))
118 zbh(:)=xkarman*sqrt( pcd(:) )/pch(:)
120 zrs(:)=min(ph/pht(:),1.)
122 zlogs(:)=log(1.+zrs(:)*(exp(zbnh(:)) -1.))
128 zcors(:)=zrs(:)*(zbnh(:)-zbh(:))
132 zcors(:)=log(1.+zrs(:)*(exp(max(0.,zbnh(:)-zbh(:)))-1.))
138 ziv=max(0.,min(1.,(zlogs(:)-zcors(:))/zbh(:)))
139 ptnm(:)=pts(:)+ziv(:)*(pta(:)-pts(:))
148 zpnm(:) = pps(:) + ph/pht(:) * (ppa(:)-pps(:))
149 zqsatnm(:) =
qsat(ptnm(:),zpnm(:))
151 IF (yhumidity==
'Q ')
THEN
153 zqsats(:) =
qsat(pts(:),pps(:))
154 zqs(:) = phu(:)*zqsats(:)
155 pqnm(:) = zqs(:)+ziv(:)*(pqa(:)-zqs(:))
156 pqnm(:) = min(zqsatnm(:),pqnm(:))
157 phunm(:) = pqnm(:) / zqsatnm(:)
159 ELSE IF (yhumidity==
'HU')
THEN
161 zqsata(:) =
qsat(pta(:),ppa(:))
162 zhua(:) = pqa(:) / zqsata(:)
163 phunm(:) = phu(:)+ziv(:)*(zhua(:)-phu(:))
164 pqnm(:) = phunm(:) * zqsatnm(:)
167 IF (lhook) CALL dr_hook(
'CLS_TQ',1,zhook_handle)
subroutine cls_tq(PTA, PQA, PPA, PPS, PHT, PCD, PCH, PRI, PTS, PHU, PZ0H, PH, PTNM, PQNM, PHUNM)