UPP  V11.0.0
 All Data Structures Files Functions Pages
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
Definition: MASKS_mod.f:1