UPP  V11.0.0
 All Data Structures Files Functions Pages
CALLCL.f
Go to the documentation of this file.
1 
31  SUBROUTINE callcl(P1D,T1D,Q1D,PLCL,ZLCL)
32 
33 !
34 !
35  use vrbls3d, only: alpint, zint
36  use vrbls2d, only: fis
37  use masks, only: lmh
38  use params_mod, only: eps, oneps, d01, h1m12, gi, d00
39  use ctlblk_mod, only: jsta, jend, spval, jsta_m, jend_m, im, &
40  ista, iend, ista_m, iend_m
41 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
42  implicit none
43 !
44  real,PARAMETER :: d35=3.5, d4805=4.805, h2840=2840.
45  real,PARAMETER :: h55=55., d2845=0.2845, d28=0.28
46 !
47 ! DECLARE VARIABLES.
48 !
49  REAL,dimension(ista:iend,jsta:jend), intent(in) :: p1d,t1d,q1d
50  REAL,dimension(ista:iend,jsta:jend), intent(inout) :: plcl,zlcl
51  REAL tlcl(ista:iend,jsta:jend)
52  integer i,j,l,llmh
53  real dlplcl,zsfc,dz,dalp,alplcl,rmx,evp,arg,rkapa
54 !
55 !**********************************************************************
56 ! START CALLCL HERE.
57 !
58 ! LOAD OUTPUT ARRAYS WITH SPECIAL VALUE.
59 !
60 !$omp parallel do private(i,j)
61  DO j=jsta,jend
62  DO i=ista,iend
63  plcl(i,j) = spval
64  tlcl(i,j) = spval
65  zlcl(i,j) = spval
66  ENDDO
67  ENDDO
68 !
69 ! COMPUTE PRESSURE, TEMPERATURE AND AGL HEIGHT AT LCL.
70 !
71 ! Bo Cui 10/30/2019, remove "GOTO" statement
72 
73  DO 30 j=jsta_m,jend_m
74  DO 30 i=ista_m,iend_m
75  IF(p1d(i,j)<spval.and.q1d(i,j)<spval)THEN
76  evp = p1d(i,j)*q1d(i,j)/(eps+oneps*q1d(i,j))
77  rmx = eps*evp/(p1d(i,j)-evp)
78  rkapa = 1.0 / (d2845*(1.0-d28*rmx))
79  arg = max(h1m12,evp*d01)
80  tlcl(i,j) = h55 + h2840 / (d35*log(t1d(i,j))-log(arg)-d4805)
81  plcl(i,j) = p1d(i,j)*(tlcl(i,j)/t1d(i,j))**rkapa
82  alplcl = log(plcl(i,j))
83  llmh = nint(lmh(i,j))
84  zsfc = fis(i,j)*gi
85 !
86  DO 20 l=llmh,1,-1
87  IF(alpint(i,j,l) < alplcl)THEN
88  dlplcl = alplcl - alpint(i,j,l+1)
89  dalp = alpint(i,j,l) - alpint(i,j,l+1)
90  dz = zint(i,j,l) - zint(i,j,l+1)
91  zlcl(i,j) = max(d00, zint(i,j,l+1) + dz*dlplcl/dalp - zsfc)
92  EXIT
93  ENDIF
94  20 CONTINUE
95  ENDIF
96  30 CONTINUE
97 !
98 ! END OF ROUTINE.
99 !
100  RETURN
101  END
Definition: MASKS_mod.f:1