/[lmdze]/trunk/Sources/phylmd/CV30_routines/cv30_prelim.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/CV30_routines/cv30_prelim.f

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

revision 200 by guez, Tue May 31 16:17:35 2016 UTC revision 201 by guez, Mon Jun 6 17:42:15 2016 UTC
# Line 7  contains Line 7  contains
7    SUBROUTINE cv30_prelim(t1, q1, p1, ph1, lv1, cpn1, tv1, gz1, h1, hm1, th1)    SUBROUTINE cv30_prelim(t1, q1, p1, ph1, lv1, cpn1, tv1, gz1, h1, hm1, th1)
8    
9      USE cv30_param_m, ONLY: nl      USE cv30_param_m, ONLY: nl
10      USE cv_thermo_m, ONLY: cl, clmcpv, cpd, cpv, eps, rrd, rrv      USE cv_thermo_m, ONLY: clmcpv, eps
11      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
12      use SUPHEC_M, only: rlvtt      use SUPHEC_M, only: rcw, rlvtt, rcpd, rcpv, rd, rv
13    
14      ! Calculate arrays of geopotential, heat capacity and static energy      ! Calculate arrays of geopotential, heat capacity and static energy
15    
16      real, intent(in):: t1(klon, klev)      real, intent(in):: t1(:, :) ! (klon, klev) temperature, in K
17      real, intent(in):: q1(klon, klev)      real, intent(in):: q1(:, :) ! (klon, klev) specific humidity
18      real, intent(in):: p1(klon, klev), ph1(klon, klev + 1)      real, intent(in):: p1(:, :) ! (klon, klev) full level pressure, in hPa
19        real, intent(in):: ph1(:, :) ! (klon, klev + 1) half level pressure, in hPa
20    
21      ! outputs:      ! outputs:
22      real lv1(klon, klev), cpn1(klon, klev), tv1(klon, klev)  
23        real, intent(out):: lv1(:, :) ! (klon, nl)
24        ! specific latent heat of vaporization of water, in J kg-1
25        
26        real, intent(out):: cpn1(:, :) ! (klon, nl)
27        ! specific heat capacity at constant pressure of humid air, in J K-1 kg-1
28    
29        real tv1(:, :) ! (klon, klev)
30      real gz1(klon, klev), h1(klon, klev), hm1(klon, klev)      real gz1(klon, klev), h1(klon, klev), hm1(klon, klev)
31      real th1(klon, klev) ! potential temperature      real, intent(out):: th1(:, :) ! (klon, nl) potential temperature, in K
32    
33      ! Local:      ! Local:
34      integer k, i      integer k, i
35      real rdcp      real kappa
36      real tvx, tvy      real tvx, tvy
37      real cpx(klon, klev)      real cpx(klon, klev)
38    
# Line 33  contains Line 41  contains
41      do k = 1, nl      do k = 1, nl
42         do i = 1, klon         do i = 1, klon
43            lv1(i, k) =  rlvtt - clmcpv * (t1(i, k) - 273.15)            lv1(i, k) =  rlvtt - clmcpv * (t1(i, k) - 273.15)
44            cpn1(i, k) = cpd * (1. - q1(i, k)) + cpv * q1(i, k)            cpn1(i, k) = rcpd * (1. - q1(i, k)) + rcpv * q1(i, k)
45            cpx(i, k) = cpd * (1. - q1(i, k)) + cl * q1(i, k)            cpx(i, k) = rcpd * (1. - q1(i, k)) + rcw * q1(i, k)
46            tv1(i, k) = t1(i, k) * (1. + q1(i, k)/eps - q1(i, k))            tv1(i, k) = t1(i, k) * (1. + q1(i, k) / eps - q1(i, k))
47            rdcp = (rrd * (1. - q1(i, k)) + q1(i, k) * rrv)/cpn1(i, k)            kappa = (rd * (1. - q1(i, k)) + q1(i, k) * rv) / cpn1(i, k)
48            th1(i, k) = t1(i, k) * (1000./p1(i, k))**rdcp            th1(i, k) = t1(i, k) * (1000. / p1(i, k))**kappa
49         end do         end do
50      end do      end do
51    
# Line 49  contains Line 57  contains
57    
58      do k = 2, nl      do k = 2, nl
59         do i = 1, klon         do i = 1, klon
60            tvx = t1(i, k) * (1. + q1(i, k)/eps - q1(i, k))            tvx = t1(i, k) * (1. + q1(i, k) / eps - q1(i, k))
61            tvy = t1(i, k - 1) * (1. + q1(i, k - 1)/eps - q1(i, k - 1))            tvy = t1(i, k - 1) * (1. + q1(i, k - 1) / eps - q1(i, k - 1))
62            gz1(i, k) = gz1(i, k - 1) + 0.5 * rrd * (tvx + tvy) &            gz1(i, k) = gz1(i, k - 1) + 0.5 * rd * (tvx + tvy) &
63                 * (p1(i, k - 1) - p1(i, k))/ph1(i, k)                 * (p1(i, k - 1) - p1(i, k)) / ph1(i, k)
64         end do         end do
65      end do      end do
66    

Legend:
Removed from v.200  
changed lines
  Added in v.201

  ViewVC Help
Powered by ViewVC 1.1.21