UPP  V11.0.0
 All Data Structures Files Functions Pages
CALTHTE.f
Go to the documentation of this file.
1 
23 
24  SUBROUTINE calthte(P1D,T1D,Q1D,THTE)
25 
26 !
27 !
28  use params_mod, only: d00, eps, oneps, d01, h1m12, p1000, h1
29  use ctlblk_mod, only: jsta, jend, im, spval, ista, iend
30 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
31  implicit none
32 !
33  real,PARAMETER :: kg2g=1.e3
34  real,PARAMETER :: d35=3.5,d4805=4.805,h2840=2840.,h55=55.
35  real,PARAMETER :: d2845=0.2845,d00028=0.00028,d3376=3.376
36  real,PARAMETER :: d00254=0.00254,d00081=0.00081,d81=0.81
37  real,PARAMETER :: d28=0.28,h2675=2675.
38 !
39 ! DECLARE VARIABLES.
40 !
41  REAL,dimension(ista:iend,jsta:jend),intent(in) :: p1d,t1d,q1d
42  REAL,dimension(ista:iend,jsta:jend),intent(inout) :: thte
43 
44  integer i,j
45  real p,t,q,evp,rmx,ckapa,rkapa,arg,denom,tlcl,plcl,fac, &
46  eterm,thetae
47 !
48 !***************************************************************
49 ! START CALTHTE.
50 !
51 ! ZERO THETA-E ARRAY
52 !$omp parallel do private(i,j)
53  DO j=jsta,jend
54  DO i=ista,iend
55  thte(i,j) = d00
56  ENDDO
57  ENDDO
58 !
59 ! COMPUTE THETA-E.
60 !
61 ! DO J=JSTA_M,JEND_M
62 ! DO I=ISTA_M,IEND_M
63 !$omp parallel do private(i,j,p,t,q,evp,rmx,ckapa,rkapa,arg,denom,tlcl,plcl,fac,eterm,thetae)
64  DO j=jsta,jend
65  DO i=ista,iend
66  IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q1d(i,j)<spval)THEN
67  p = p1d(i,j)
68  t = t1d(i,j)
69  q = q1d(i,j)
70  evp = p*q/(eps+oneps*q)
71  rmx = eps*evp/(p-evp)
72  ckapa = d2845*(1.-d28*rmx)
73  rkapa = 1./ckapa
74  arg = max(h1m12, evp*d01)
75  denom = d35*log(t) - log(evp*d01) - d4805
76  tlcl = h2840/denom + h55
77  plcl = p*(tlcl/t)**rkapa
78  fac = (p1000/p)**ckapa
79  eterm = (d3376/tlcl-d00254)*(rmx*kg2g*(h1+d81*rmx))
80  thetae = t*fac*exp(eterm)
81  thte(i,j)= thetae
82  ENDIF
83  ENDDO
84  ENDDO
85 !
86 ! END OF ROUTINE.
87 !
88  RETURN
89  END