37 INTEGER,
INTENT(IN) :: nstate
38 INTEGER,
INTENT(IN) :: nlevp
39 INTEGER,
INTENT(IN) :: nlevq
40 REAL(kind_real),
INTENT(IN) :: za(:)
41 REAL(kind_real),
INTENT(IN) :: zb(:)
42 LOGICAL,
INTENT(IN) :: capsupersat
43 REAL(kind_real),
INTENT(INOUT) :: x(:)
46 CHARACTER(len=*),
PARAMETER :: routinename =
"Ops_GPSRO_humidcheck"
48 REAL(kind_real) :: p(nlevp)
49 REAL(kind_real) :: q(nlevq)
50 REAL(kind_real) :: t(nlevq)
51 REAL(kind_real) :: pb(nlevq)
52 REAL(kind_real) :: qsaturated(nlevq)
54 REAL(kind_real) :: pwt1
55 REAL(kind_real) :: pwt2
63 p(:) = 1.0e2 * x(1:nlevp)
64 q(:) = 1.0e-3 * x(nlevp + 1:nstate)
70 pwt1 = (za(i + 1) - zb(i)) / (za(i + 1) - za(i))
74 pb(i) = exp(pwt1 * log(p(i)) + pwt2 * log(p(i + 1)))
78 tv = grav * (za(i + 1) - za(i)) / (
rd * log(p(i) / p(i + 1)))
82 t(i) = tv / (1.0 + c_virtual * q(i))
106 WHERE (x(nlevp + 1:nstate) < 0.0)
107 x(nlevp + 1:nstate) = 1.0e-4
111 WHERE (x(nlevp + 1:nstate) > 1.0e3 * qsaturated(1:nlevq))
112 x(nlevp + 1:nstate) = 1.0e3 * qsaturated(1:nlevq)
real(kind_real), parameter, public rd
subroutine, public ops_gpsro_humidcheck(nstate, nlevp, nlevq, za, zb, capsupersat, x)
Fortran module with various useful routines.
subroutine, public ops_qsat(QS, T, P, npnts)
Calculate the Saturation Specific Humidity Scheme (Qsat): Vapour to Liquid/Ice.
subroutine, public ops_qsatwat(QS, T, P, npnts)
Saturation Specific Humidity Scheme: Vapour to Liquid.