[5143] | 1 | MODULE lmdz_fcttre |
---|
| 2 | ! ------------------------------------------------------------------ |
---|
| 3 | ! This COMDECK includes the Thermodynamical functions for the cy39 |
---|
| 4 | ! ECMWF Physics package. |
---|
| 5 | ! Consistent with YOMCST Basic physics constants, assuming the |
---|
| 6 | ! partial pressure of water vapour is given by a first order |
---|
| 7 | ! Taylor expansion of Qs(T) w.r.t. to Temperature, using constants |
---|
| 8 | ! in YOETHF |
---|
| 9 | ! ------------------------------------------------------------------ |
---|
[5099] | 10 | |
---|
[5143] | 11 | IMPLICIT NONE; PRIVATE |
---|
| 12 | PUBLIC foeew, foede, qsats, qsatl, dqsats, dqsatl, thermcep |
---|
[5099] | 13 | |
---|
[5143] | 14 | LOGICAL, PARAMETER :: thermcep = .TRUE. |
---|
[5099] | 15 | |
---|
[5143] | 16 | CONTAINS |
---|
[5099] | 17 | |
---|
[5143] | 18 | REAL FUNCTION foeew (ptarg, pdelarg) |
---|
[5144] | 19 | USE lmdz_yoethf, ONLY: r3ies, r3les, r4ies, r4les |
---|
| 20 | USE lmdz_yomcst, ONLY: rtt |
---|
[5143] | 21 | REAL, INTENT(IN) :: ptarg, pdelarg |
---|
| 22 | foeew = exp ((r3les * (1. - pdelarg) + r3ies * pdelarg) * (ptarg - rtt) & |
---|
| 23 | / (ptarg - (r4les * (1. - pdelarg) + r4ies * pdelarg))) |
---|
| 24 | END FUNCTION foeew |
---|
[5099] | 25 | |
---|
[5143] | 26 | REAL FUNCTION foede (ptarg, pdelarg, p5arg, pqsarg, pcoarg) |
---|
[5144] | 27 | USE lmdz_yoethf, ONLY: r4ies, r4les |
---|
[5143] | 28 | REAL, INTENT(IN) :: ptarg, pdelarg, p5arg, pqsarg, pcoarg |
---|
| 29 | foede = pqsarg * pcoarg * p5arg / (ptarg - (r4les * (1. - pdelarg) + r4ies * pdelarg))**2 |
---|
| 30 | END FUNCTION foede |
---|
[5099] | 31 | |
---|
[5143] | 32 | REAL FUNCTION qsats(ptarg) |
---|
| 33 | REAL, INTENT(IN) :: ptarg |
---|
| 34 | qsats = 100.0 * 0.622 * 10.0 ** (2.07023 - 0.00320991 * ptarg - 2484.896 / ptarg + 3.56654 * log10(ptarg)) |
---|
| 35 | END FUNCTION qsats |
---|
[5099] | 36 | |
---|
[5143] | 37 | REAL FUNCTION qsatl(ptarg) |
---|
| 38 | REAL, INTENT(IN) :: ptarg |
---|
| 39 | qsatl = 100.0 * 0.622 * 10.0 ** (23.8319 - 2948.964 / ptarg - 5.028 * log10(ptarg) & |
---|
| 40 | - 29810.16 * exp(- 0.0699382 * ptarg) + 25.21935 * exp(- 2999.924 / ptarg)) |
---|
| 41 | END FUNCTION qsatl |
---|
[5099] | 42 | |
---|
[5143] | 43 | REAL FUNCTION dqsats(ptarg, pqsarg) |
---|
[5144] | 44 | USE lmdz_yomcst, ONLY: rlvtt, rcpd |
---|
[5143] | 45 | REAL, INTENT(IN) :: ptarg, pqsarg |
---|
| 46 | dqsats = rlvtt / rcpd * pqsarg * (3.56654 / ptarg + 2484.896 * log(10.) / ptarg**2 - 0.00320991 * log(10.)) |
---|
| 47 | END FUNCTION dqsats |
---|
| 48 | |
---|
| 49 | REAL FUNCTION dqsatl(ptarg, pqsarg) |
---|
[5144] | 50 | USE lmdz_yomcst, ONLY: rlvtt, rcpd |
---|
[5143] | 51 | REAL, INTENT(IN) :: ptarg, pqsarg |
---|
| 52 | dqsatl = rlvtt / rcpd * pqsarg * log(10.) * (2948.964 / ptarg**2 - 5.028 / log(10.) / ptarg & |
---|
| 53 | + 25.21935 * 2999.924 / ptarg**2 * exp(-2999.924 / ptarg) + & |
---|
| 54 | 29810.16 * 0.0699382 * exp(-0.0699382 * ptarg)) |
---|
| 55 | END FUNCTION dqsatl |
---|
| 56 | |
---|
| 57 | END MODULE lmdz_fcttre |
---|