UPP v11.0.0
Loading...
Searching...
No Matches
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