/[lmdze]/trunk/phylmd/FCTTRE.f
ViewVC logotype

Diff of /trunk/phylmd/FCTTRE.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC revision 37 by guez, Tue Dec 21 15:45:48 2010 UTC
# Line 1  Line 1 
1  module FCTTRE  module FCTTRE
2    
3    ! From phylmd/FCTTRE.inc,v 1.2 2004/06/22 11:45:32    ! From phylmd/FCTTRE.inc, version 1.2 2004/06/22 11:45:32
4    
5    !      This COMDECK includes the Thermodynamical functions for the cy39    ! This COMDECK includes the thermodynamical functions for the cycle
6    !       ECMWF Physics package.    ! 39 ECMWF Physics package. Consistent with YOMCST basic physics
7    !       Consistent with YOMCST Basic physics constants, assuming the    ! constants, assuming the partial pressure of water vapour is given
8    !       partial pressure of water vapour is given by a first order    ! by a first order Taylor expansion of Qs(T) with respect to
9    !       Taylor expansion of Qs(T) w.r.t. to Temperature, using constants    ! temperature, using constants in yoethf.
   !       in YOETHF  
10    
11    implicit none    implicit none
12    
13    LOGICAL, PARAMETER:: thermcep=.TRUE.    LOGICAL, PARAMETER:: thermcep= .TRUE.
14    
15  contains  contains
16    
17    REAL function FOEEW ( PTARG,PDELARG )    REAL function FOEEW(T, DEL)
18    
19      use yoethf, only: R3LES, R3IES, R4LES, R4IES      use yoethf, only: R3LES, R3IES, R4LES, R4IES
20      use YOMCST, only: rtt      use YOMCST, only: rtt
21    
22      REAL, intent(in):: PTARG, PDELARG      REAL, intent(in):: T, DEL
23    
24      !-----------------------      !-----------------------
25    
26      FOEEW = EXP ((R3LES*(1.-PDELARG)+R3IES*PDELARG) * (PTARG-RTT) &      FOEEW = EXP((R3LES * (1. - DEL) + R3IES * DEL) * (T - RTT) &
27           / (PTARG-(R4LES*(1.-PDELARG)+R4IES*PDELARG)) )           / (T - (R4LES * (1. - DEL) + R4IES * DEL)))
28    
29    end function FOEEW    end function FOEEW
30    
31    !******************************************    !******************************************
32    
33    REAL function FOEDE(PTARG,PDELARG,P5ARG,PQSARG,PCOARG)    REAL function FOEDE(T, DEL, P5ARG, QS, PCOARG)
34    
35      use yoethf, only: R4LES, R4IES      use yoethf, only: R4LES, R4IES
36    
37      REAL, intent(in):: PTARG, PDELARG      REAL, intent(in):: T, DEL
38      real, intent(in):: P5ARG, PQSARG, PCOARG      real, intent(in):: P5ARG, QS, PCOARG
39    
40      !-----------------------      !-----------------------
41    
42      FOEDE = PQSARG*PCOARG*P5ARG / (PTARG-(R4LES*(1.-PDELARG)+R4IES*PDELARG))**2      FOEDE = QS*PCOARG*P5ARG / (T-(R4LES*(1.-DEL)+R4IES*DEL))**2
43    
44    end function FOEDE    end function FOEDE
45    
46    !******************************************    !******************************************
47    
48    REAL function qsats(ptarg)    REAL function qsats(t)
49    
50      REAL, intent(in):: PTARG      REAL, intent(in):: T
51    
52      !-----------------------      !-----------------------
53    
54      qsats = 100.0 * 0.622 * 10.0 &      qsats = 100.0 * 0.622 &
55           ** (2.07023 - 0.00320991 * ptarg &           * 10.**(2.07023 - 0.00320991 * t - 2484.896 / t + 3.56654 * LOG10(t))
          - 2484.896 / ptarg + 3.56654 * LOG10(ptarg))  
56    
57    end function qsats    end function qsats
58    
59    !******************************************    !******************************************
60    
61    REAL function qsatl(ptarg)    REAL function qsatl(t)
62    
63      REAL, intent(in):: PTARG      REAL, intent(in):: T
64    
65      !-----------------------      !-----------------------
66    
67      qsatl = 100.0 * 0.622 * 10.0 &      qsatl = 100.0 * 0.622 * 10.**(23.8319 - 2948.964 / t &
68           ** (23.8319 - 2948.964 / ptarg &           - 5.028 * LOG10(t) - 29810.16 * EXP(- 0.0699382 * t) &
69           - 5.028 * LOG10(ptarg) &           + 25.21935 * EXP(- 2999.924 / t))
          - 29810.16 * EXP( - 0.0699382 * ptarg) &  
          + 25.21935 * EXP( - 2999.924 / ptarg))  
70    
71    end function qsatl    end function qsatl
72    
73    !******************************************    !******************************************
74    
75    REAL function dqsats(ptarg,pqsarg)    REAL function dqsats(t, qs)
76    
77      use YOMCST, only: RLVTT, rcpd      use YOMCST, only: RLVTT, rcpd
78    
79      REAL, intent(in):: PTARG, pqsarg      REAL, intent(in):: T, qs
80    
81      !-----------------------      !-----------------------
82    
83      dqsats = RLVTT/RCPD*pqsarg * (3.56654/ptarg &      dqsats = RLVTT / RCPD * qs * (3.56654/t &
84           +2484.896*LOG(10.)/ptarg**2 &           +2484.896*LOG(10.)/t**2 - 0.00320991*LOG(10.))
          -0.00320991*LOG(10.))  
85    
86    end function dqsats    end function dqsats
87    
88    !******************************************    !******************************************
89    
90    REAL function dqsatl(ptarg,pqsarg)    REAL function dqsatl(t, qs)
91    
92      use YOMCST, only: RLVTT, rcpd      use YOMCST, only: RLVTT, rcpd
93    
94      REAL, intent(in):: PTARG, pqsarg      REAL, intent(in):: T, qs
95    
96      !-----------------------      !-----------------------
97    
98      dqsatl = RLVTT/RCPD*pqsarg*LOG(10.)* &      dqsatl = RLVTT / RCPD * qs * LOG(10.) &
99           (2948.964/ptarg**2-5.028/LOG(10.)/ptarg &           * (2948.964/t**2-5.028/LOG(10.)/t &
100           +25.21935*2999.924/ptarg**2*EXP(-2999.924/ptarg) &           +25.21935*2999.924/t**2*EXP(-2999.924/t) &
101           +29810.16*0.0699382*EXP(-0.0699382*ptarg))           +29810.16*0.0699382*EXP(-0.0699382*t))
102    
103    end function dqsatl    end function dqsatl
104    

Legend:
Removed from v.3  
changed lines
  Added in v.37

  ViewVC Help
Powered by ViewVC 1.1.21