UPP (upp-srw-2.2.0)
Loading...
Searching...
No Matches
TRPAUS.f
Go to the documentation of this file.
1
5
35 SUBROUTINE trpaus(PTROP,TTROP,ZTROP,UTROP,VTROP,SHTROP)
36
37!
38!
39! INCLUDE ETA GRID DIMENSIONS. SET/DERIVE PARAMETERS.
40!
41 use vrbls3d, only: pint, t, zint, uh, vh
42 use masks, only: lmh
43 use params_mod, only: d50
44 use ctlblk_mod, only: jsta, jend, spval, im, jm, lm, &
45 ista, iend
46!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
47 implicit none
48!
49! PARAMTER CRTLAP SPECIFIES THE CRITICAL LAPSE RATE
50! (IN K/M) IDENTIFYING THE TROPOPAUSE. WE START
51! LOOKING FOR THE TROPOPAUSE ABOVE PRESSURE LEVEL
52! PSTART (IN PASALS).
53 real,PARAMETER :: CRTLAP=0.002e0, pstart=5.0e4
54!
55! DECLARE VARIABLES.
56!
57 REAL,dimension(IM,JM),intent(out) :: PTROP,TTROP,ZTROP,UTROP, &
58 vtrop,shtrop
59 REAL TLAPSE(LM),DZ2(LM),DELT2(LM),TLAPSE2(LM)
60!
61 integer I,J,LL,LLMH,L
62 real PM,DELT,DZ,RSQDIF
63!
64!*****************************************************************************
65! START TRPAUS HERE.
66!
67! LOOP OVER THE HORIZONTAL GRID.
68!
69 DO j=jsta,jend
70 DO i=ista,iend
71 ptrop(i,j) = spval
72 ttrop(i,j) = spval
73 ztrop(i,j) = spval
74 utrop(i,j) = spval
75 vtrop(i,j) = spval
76 shtrop(i,j) = spval
77 ENDDO
78 ENDDO
79!
80!!$omp parallel do
81!!$omp& private(delt,delt2,dz,dz2,ie,iw,l,llmh,pm,rsqdif,
82!!$omp& tlapse,tlapse2,u0,u0l,uh,uh0,ul,
83!!$omp& v0,v0l,vh,vh0)
84 DO j=jsta,jend
85 loopi:DO i=ista,iend
86!
87! COMPUTE THE TEMPERATURE LAPSE RATE (-DT/DZ) BETWEEN ETA
88! LAYERS MOVING UP FROM THE GROUND. THE FIRST ETA LAYER
89! ABOVE PRESSURE "PSTART" IN WHICH THE LAPSE RATE IS LESS
90! THAN THE CRITCAL LAPSE RATE IS LABELED THE TROPOPAUSE.
91!
92 llmh=nint(lmh(i,j))
93!
94 loopl: DO l=llmh-1,2,-1
95 pm = pint(i,j,l)
96 delt = t(i,j,l-1)-t(i,j,l)
97 dz = d50*(zint(i,j,l-1)-zint(i,j,l+1))
98 tlapse(l) = -delt/dz
99!
100 IF ((tlapse(l)<crtlap).AND.(pm<pstart)) THEN
101 IF (l == 2 .AND. tlapse(l) < crtlap) GOTO 15
102 dz2(l+1) = 0.
103!
104 DO 17 ll=l,3,-1
105 dz2(ll) = 0.
106 delt2(ll) = 0.
107 tlapse2(ll) = 0.
108 dz2(ll) = (2./3.)*(zint(i,j,ll-2)-zint(i,j,l+1))
109 IF ((dz2(ll) > 2000.) .AND. &
110 (dz2(ll+1) > 2000.)) GO TO 15
111 delt2(ll) = t(i,j,ll-2)-t(i,j,l)
112 tlapse2(ll) = -delt2(ll)/dz2(ll)
113!
114 IF (tlapse2(ll) > crtlap) THEN
115 cycle loopl
116 ENDIF
117!
118 17 CONTINUE
119 ELSE
120 cycle loopl
121 ENDIF
122!
123 15 ptrop(i,j) = d50*(pint(i,j,l)+pint(i,j,l+1))
124 ttrop(i,j) = t(i,j,l)
125 ztrop(i,j)= 0.5*(zint(i,j,l)+zint(i,j,l+1))
126!
127 utrop(i,j) = uh(i,j,l)
128 vtrop(i,j) = vh(i,j,l)
129 dz = zint(i,j,l)-zint(i,j,l+1)
130 rsqdif = sqrt(((uh(i,j,l-1)-uh(i,j,l+1))*0.5)**2 &
131 & +((vh(i,j,l-1)-vh(i,j,l+1))*0.5)**2)
132 shtrop(i,j) = rsqdif/dz
133 cycle loopi
134
135 ENDDO loopl
136
137!X WRITE(88,*)'REACHED TOP FOR K,P,TLAPSE: ',K,PM,TLAPSE
138
139 dz = d50*(zint(i,j,2)-zint(i,j,3))
140 ptrop(i,j) = d50*(pint(i,j,2)+pint(i,j,3))
141 ttrop(i,j) = t(i,j,2)
142 ztrop(i,j)= d50*(zint(i,j,2)+zint(i,j,3))
143 utrop(i,j) = uh(i,j,2)
144 vtrop(i,j) = vh(i,j,2)
145 rsqdif = sqrt(((uh(i,j,1)-uh(i,j,3))*0.5)**2 &
146 & +((vh(i,j,1)-vh(i,j,3))*0.5)**2)
147 shtrop(i,j) = rsqdif/dz
148
149!X WRITE(82,1010)I,J,L,PTROP(I,J)*D01,TTROP(I,J),
150!X X UTROP(I,J),VTROP(I,J),SHTROP(I,J)
151!
152 ENDDO loopi !end I
153 ENDDO !end J
154
155!
156! END OF ROUTINE.
157!
158 RETURN
159 END
subroutine trpaus(ptrop, ttrop, ztrop, utrop, vtrop, shtrop)
This routine computes tropopause data.
Definition TRPAUS.f:36