81 FUNCTION psat_0d(PT)
RESULT(PPSAT)
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)
121 ppsat = exp( zalp - zbeta/pt - zgam*log(pt) )
124 IF (
lhook)
CALL dr_hook(
'MODE_THERMOS:PSAT_0D',1,zhook_handle)
129 FUNCTION psat_1d(PT)
RESULT(PPSAT)
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)
180 FUNCTION psat_2d(PT,KMASK)
RESULT(PPSAT)
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
237 IF (
lhook)
CALL dr_hook(
'MODE_THERMOS:PSAT_2D',1,zhook_handle)
242 FUNCTION dpsat_1d(PT)
RESULT(PDPSAT)
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)
289 FUNCTION qsatw_0d(PT,PP)
RESULT(PQSAT)
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)
391 FUNCTION qsatw_1d(PT,PP)
RESULT(PQSAT)
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)
500 FUNCTION qsatw_2d(PT,PP,KMASK,KL)
RESULT(PQSAT)
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)
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)
1072 FUNCTION qsati_1d(PT,PP)
RESULT(PQSAT)
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)
1179 FUNCTION qsati_2d(PT,PP,KMASK,KL)
RESULT(PQSAT)
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)) psat_1d(PT)
real function, dimension(size(pt)) dpsat_1d(PT)
real function, dimension(size(pt)) dqsatw_o_dt_1d(PT, PP, PQSAT)
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)) qsati_1d(PT, PP)
real function, dimension(size(pt, 1), size(pt, 2)) psat_2d(PT, KMASK)
real function qsatw_0d(PT, PP)
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)) qsatw_1d(PT, PP)
real function, dimension(size(pt, 1), size(pt, 2)) qsatw_2d(PT, PP, KMASK, KL)
real function psat_0d(PT)