45 USE yomhook
,ONLY : lhook, dr_hook
46 USE parkind1
,ONLY : jprb
96 REAL,
INTENT(IN) :: pt
102 REAL :: zalp, zbeta, zgam
104 REAL(KIND=JPRB) :: zhook_handle
106 IF (lhook) CALL dr_hook(
'MODE_THERMOS:PSAT_0D',0,zhook_handle)
115 IF(cqsat==
'NEW'.AND.pt<=xtt)
THEN
121 ppsat = exp( zalp - zbeta/pt - zgam*log(pt) )
124 IF (lhook) CALL dr_hook(
'MODE_THERMOS:PSAT_0D',1,zhook_handle)
144 REAL,
DIMENSION(:),
INTENT(IN) :: pt
145 REAL,
DIMENSION(SIZE(PT)) :: ppsat
147 REAL,
DIMENSION(SIZE(PT)) :: zalp, zbeta, zgam
150 REAL(KIND=JPRB) :: zhook_handle
152 IF (lhook) CALL dr_hook(
'MODE_THERMOS:PSAT_1D',0,zhook_handle)
171 ppsat(jj) = exp( zalp(jj) - zbeta(jj)/pt(jj) - zgam(jj)*log(pt(jj)) )
175 IF (lhook) CALL dr_hook(
'MODE_THERMOS:PSAT_1D',1,zhook_handle)
195 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt
196 INTEGER,
DIMENSION(:),
INTENT(IN) :: kmask
198 REAL,
DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: ppsat
200 REAL,
DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: zalp, zbeta, zgam
202 INTEGER :: jj, jl, ini, inl, iwork
203 REAL(KIND=JPRB) :: zhook_handle
205 IF (lhook) CALL dr_hook(
'MODE_THERMOS:PSAT_2D',0,zhook_handle)
231 ppsat(jj,jl) = exp( zalp(jj,jl) - zbeta(jj,jl)/pt(jj,jl) - zgam(jj,jl)*log(pt(jj,jl)) )
237 IF (lhook) CALL dr_hook(
'MODE_THERMOS:PSAT_2D',1,zhook_handle)
257 REAL,
DIMENSION(:),
INTENT(IN) :: pt
259 REAL,
DIMENSION(SIZE(PT)) :: pdpsat
261 REAL,
DIMENSION(SIZE(PT)) :: zbeta, zgam
263 REAL(KIND=JPRB) :: zhook_handle
266 IF (lhook) CALL dr_hook(
'MODE_THERMOS:DPSAT_1D',0,zhook_handle)
281 pdpsat(:) = zbeta(:)/pt(:)**2 - zgam(:)/pt(:)
284 IF (lhook) CALL dr_hook(
'MODE_THERMOS:DPSAT_1D',1,zhook_handle)
353 REAL,
INTENT(IN) :: pt
354 REAL,
INTENT(IN) :: pp
368 REAL(KIND=JPRB) :: zhook_handle
370 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATW_0D',0,zhook_handle)
382 pqsat = zwork2*zwork1 / (1.+(zwork2-1.)*zwork1)
385 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATW_0D',1,zhook_handle)
455 REAL,
DIMENSION(:),
INTENT(IN) :: pt
457 REAL,
DIMENSION(:),
INTENT(IN) :: pp
459 REAL,
DIMENSION(SIZE(PT)) :: pqsat
466 REAL,
DIMENSION(SIZE(PT)) :: zfoes
470 REAL,
DIMENSION(SIZE(PT)) :: zwork1
472 REAL(KIND=JPRB) :: zhook_handle
475 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATW_1D',0,zhook_handle)
481 zfoes(:) =
psat(pt(:))
482 zwork1(:) = zfoes(:)/pp(:)
488 pqsat(:) = zwork2*zwork1(:) / (1.+(zwork2-1.)*zwork1(:))
490 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATW_1D',1,zhook_handle)
565 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt
567 REAL,
DIMENSION(:,:),
INTENT(IN) :: pp
570 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: kmask
572 INTEGER,
INTENT(IN),
OPTIONAL :: kl
575 REAL,
DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: pqsat
582 REAL,
DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: zfoes
584 INTEGER,
DIMENSION(SIZE(PT,1)) :: imask
587 REAL(KIND=JPRB) :: zhook_handle
590 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATW_2D',0,zhook_handle)
592 IF(present(kmask).AND.present(kl))
THEN
607 zfoes(:,1:inl) =
psat(pt(:,1:inl),imask(:))
612 pqsat(:,:) = xrd/xrv*zfoes(:,:)/pp(:,:) / (1.+(xrd/xrv-1.)*zfoes(:,:)/pp(:,:))
614 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATW_2D',1,zhook_handle)
692 REAL,
DIMENSION(:),
INTENT(IN) :: pt
694 REAL,
DIMENSION(:),
INTENT(IN) :: pp
696 REAL,
DIMENSION(SIZE(PT)) :: pqsat
703 REAL,
DIMENSION(SIZE(PT)) :: zfoes
707 REAL,
DIMENSION(SIZE(PT)) :: zwork1
709 REAL(KIND=JPRB) :: zhook_handle
712 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATSEAW_1D',0,zhook_handle)
714 zfoes(:) =
psat(pt(:))
715 zfoes(:) = 0.98*zfoes(:)
720 zwork1(:) = zfoes(:)/pp(:)
726 pqsat(:) = zwork2*zwork1(:) / (1.+(zwork2-1.)*zwork1(:))
728 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATSEAW_1D',1,zhook_handle)
791 REAL,
DIMENSION(:),
INTENT(IN) :: pt
793 REAL,
DIMENSION(:),
INTENT(IN) :: pp
795 REAL,
DIMENSION(:),
INTENT(IN) :: psss
797 REAL,
DIMENSION(SIZE(PT)) :: pqsat
804 REAL,
DIMENSION(SIZE(PT)) :: zfoes
808 REAL,
DIMENSION(SIZE(PT)) :: zwork1
810 REAL(KIND=JPRB) :: zhook_handle
813 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATSEAW2_1D',0,zhook_handle)
818 zfoes(:) = exp( 24.4543 -67.4509*(100.0/pt(:)) -4.8489*log(pt(:)/100.0) &
819 -5.44e-04*(psss(:)/1.00472) )
820 zfoes(:) = zfoes(:)*1013.25e+02
822 zwork1(:) = zfoes(:)/pp(:)
828 pqsat(:) = zwork2*zwork1(:) / (1.0+(zwork2-1.0)*zwork1(:))
830 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATSEAW2_1D',1,zhook_handle)
904 REAL,
DIMENSION(:),
INTENT(IN) :: pt
906 REAL,
DIMENSION(:),
INTENT(IN) :: pp
908 REAL,
DIMENSION(:),
INTENT(IN) :: pqsat
912 REAL,
DIMENSION(SIZE(PT)) :: pdqsat
921 REAL,
DIMENSION(SIZE(PT)) :: zfoes
926 REAL,
DIMENSION(SIZE(PT)) :: zwork2
928 REAL(KIND=JPRB) :: zhook_handle
931 IF (lhook) CALL dr_hook(
'MODE_THERMOS:DQSATW_O_DT_1D',0,zhook_handle)
938 zfoes(:) = pp(:) / (1.+zwork1*(1./pqsat(:)-1.))
939 zwork2(:) =
dpsat(pt(:))
944 pdqsat(:) = zwork2(:) * pqsat(:) / (1.+(zwork1-1.)*zfoes(:)/pp(:) )
946 IF (lhook) CALL dr_hook(
'MODE_THERMOS:DQSATW_O_DT_1D',1,zhook_handle)
1021 REAL,
DIMENSION(:),
INTENT(IN) :: pt
1023 REAL,
DIMENSION(:),
INTENT(IN) :: pp
1025 REAL,
DIMENSION(:),
INTENT(IN) :: pqsat
1029 REAL,
DIMENSION(SIZE(PT)) :: pdqsat
1038 REAL,
DIMENSION(SIZE(PT)) :: zfoes
1043 REAL,
DIMENSION(SIZE(PT)) :: zwork2
1045 REAL(KIND=JPRB) :: zhook_handle
1048 IF (lhook) CALL dr_hook(
'MODE_THERMOS:DQSATI_O_DT_1D',0,zhook_handle)
1055 zfoes(:) = pp(:) / (1.+zwork1*(1./pqsat(:)-1.))
1056 zwork2(:) =
dpsat(pt(:))
1061 pdqsat(:) = zwork2(:) * pqsat(:) / (1.+(zwork1-1.)*zfoes(:)/pp(:) )
1063 IF (lhook) CALL dr_hook(
'MODE_THERMOS:DQSATI_O_DT_1D',1,zhook_handle)
1136 REAL,
DIMENSION(:),
INTENT(IN) :: pt
1138 REAL,
DIMENSION(:),
INTENT(IN) :: pp
1140 REAL,
DIMENSION(SIZE(PT)) :: pqsat
1147 REAL,
DIMENSION(SIZE(PT)) :: zfoes
1151 REAL,
DIMENSION(SIZE(PT)) :: zwork1
1153 REAL(KIND=JPRB) :: zhook_handle
1156 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATI_1D',0,zhook_handle)
1162 zfoes(:) =
psat(pt(:))
1163 zwork1(:) = zfoes(:)/pp(:)
1169 pqsat(:) = zwork2*zwork1(:) / (1.+(zwork2-1.)*zwork1(:))
1171 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATI_1D',1,zhook_handle)
1244 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt
1246 REAL,
DIMENSION(:,:),
INTENT(IN) :: pp
1249 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: kmask
1251 INTEGER,
INTENT(IN),
OPTIONAL :: kl
1254 REAL,
DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: pqsat
1261 REAL,
DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: zfoes
1263 INTEGER,
DIMENSION(SIZE(PT,1)) :: imask
1266 REAL(KIND=JPRB) :: zhook_handle
1269 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATI_2D',0,zhook_handle)
1271 IF(present(kmask))
THEN
1286 zfoes(:,1:inl) =
psat(pt(:,1:inl),imask(:))
1291 pqsat(:,:) = xrd/xrv*zfoes(:,:)/pp(:,:) / (1.+(xrd/xrv-1.)*zfoes(:,:)/pp(:,:))
1293 IF (lhook) CALL dr_hook(
'MODE_THERMOS:QSATI_2D',1,zhook_handle)
real function, dimension(size(pt)) dpsat_1d(PT)
real function, dimension(size(pt, 1), size(pt, 2)) qsatw_2d(PT, PP, KMASK, KL)
real function psat_0d(PT)
real function, dimension(size(pt, 1), size(pt, 2)) qsati_2d(PT, PP, KMASK, KL)
real function, dimension(size(pt)) qsatseaw2_1d(PT, PP, PSSS)
real function, dimension(size(pt)) qsati_1d(PT, PP)
real function qsatw_0d(PT, PP)
real function, dimension(size(pt)) qsatw_1d(PT, PP)
real function, dimension(size(pt)) dqsati_o_dt_1d(PT, PP, PQSAT)
real function, dimension(size(pt)) qsatseaw_1d(PT, PP)
real function, dimension(size(pt)) dqsatw_o_dt_1d(PT, PP, PQSAT)
real function, dimension(size(pt)) psat_1d(PT)
real function, dimension(size(pt, 1), size(pt, 2)) psat_2d(PT, KMASK)