00001
00002 subroutine dtess_eau (len, pl, tl, ess, dtess)
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 use kinds
00020 use physical_parameters, only: hltm, rv
00021
00022 implicit none
00023
00024
00025 integer (kind=int_kind), intent(in) :: len
00026
00027 real(kind=dbl_kind), intent(in), dimension(len)::
00028 pl,
00029 tl
00030
00031
00032
00033
00034 real (kind=dbl_kind), intent(out), dimension(len) ::
00035 ess,
00036 dtess
00037
00038
00039
00040 integer (kind=int_kind):: i
00041
00042 real (kind=dbl_kind)::
00043 twmin=173.16,
00044 twmax=373.16,
00045 timin=173.16,
00046 timax=273.16,
00047 tnull=273.16
00048
00049 real (kind=dbl_kind) :: tstl , t0tl
00050
00051 real (kind=dbl_kind), dimension(len)::
00052 esw , dtesw , esi , dtesi ,
00053 esm , dtesm , tl0 ,
00054 wghtm
00055
00056
00057
00058 real (kind=dbl_kind), parameter::
00059 ps = 1013.246,
00060 ts = 373.16,
00061 t0 = 273.16,
00062 lsub = hltm+0.3336e+06_dbl_kind,
00063 tbgmin = 253.15_dbl_kind,
00064 tbgmax = 273.15_dbl_kind
00065
00066 real (kind=dbl_kind)::
00067 e1 , e2 , f , f1 ,
00068 f2 , f3 , f4 , f5 ,
00069 lphase , term , term1 , term2 ,
00070 term3
00071
00072
00073
00074
00075
00076 tl0 = tl
00077 esw = 0.0_dbl_kind
00078 esi = 0.0_dbl_kind
00079 esm = 0.0_dbl_kind
00080 dtesw = 0.0_dbl_kind
00081 dtesi = 0.0_dbl_kind
00082 dtesm = 0.0_dbl_kind
00083
00084 ess = 0.0_dbl_kind
00085 dtess = 0.0_dbl_kind
00086
00087
00088
00089 do i = 1, len
00090
00091 tl0(i) = max(twmin,tl0(i))
00092 tl0(i) = min(twmax,tl0(i))
00093 tstl = ts / tl0(i)
00094 e1 = 11.344*(1.0 - tl0(i)/ts)
00095 e2 = -3.49149*(tstl - 1.0)
00096 f1 = -7.90298*(tstl - 1.0)
00097 f2 = 5.02808*log10(tstl)
00098 f3 = -1.3816*(10.0**e1-1.0)/10000000.0
00099 f4 = 8.1328*(10.0**e2-1.0)/1000.0
00100 f5 = log10(ps)
00101 f = f1 + f2 + f3 + f4 + f5
00102
00103 esw(i) = (10.0**f)*1.e+02
00104 esw(i) = min(esw(i),pl(i)*0.9)
00105 dtesw(i) = hltm*esw(i)/(rv*tl0(i)*tl0(i))
00106
00107 ess(i) = esw(i)
00108 dtess(i) = dtesw(i)
00109
00110
00111
00112
00113 if(tl0(i).lt.timax) then
00114
00115 tl0(i) = max(tl0(i),timin)
00116 t0tl = t0 / tl0(i)
00117 term1 = 2.01889049/(t0tl)
00118 term2 = 3.56654*log(t0tl)
00119 term3 = 20.947031*(t0tl)
00120
00121 esi(i) = 575.185606e10*exp(-(term1 + term2 + term3))
00122 esi(i) = min(esi(i),pl(i)*0.9)
00123 dtesi(i) = lsub*esi(i)/(rv*tl0(i)*tl0(i))
00124
00125 ess(i) = esi(i)
00126 dtess(i) = dtesi(i)
00127
00128 endif
00129
00130
00131
00132 if(tl0(i).lt.tbgmax .and. tl0(i).ge.tbgmin) then
00133
00134 wghtm(i) = (tl0(i)-tbgmin)/(tbgmax-tbgmin)
00135 lphase = hltm*wghtm(i)+lsub*(1.-wghtm(i))
00136 esm(i) = wghtm(i)*esw(i) + (1.-wghtm(i))*esi(i)
00137 esm(i) = min(esm(i),pl(i)*0.9)
00138 dtesm(i) = lphase*esm(i)/(rv*tl0(i)*tl0(i))
00139
00140 ess(i) = esm(i)
00141 dtess(i) = dtesm(i)
00142
00143 endif
00144 enddo
00145
00146 end subroutine dtess_eau