GNU WOCSS (gwocss)  2.2.4-pre
GNU version of Winds On Critical Streamline Surfaces (WOCSS)
Functions/Subroutines
betpar.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine betpar
 

Function/Subroutine Documentation

subroutine betpar ( )

Definition at line 3 of file betpar.f.

Referenced by wocss().

3 C*********************************************************************
4 C
5 C THIS SUBROUTINE ESTIMATES VARIABLE VALUES BETWEEN THE TOP AND
6 C BOTTOM LEVELS. THE DEVIATION OF OBSERVED VALUE VAR FROM A LINEAR
7 C PROFILE IS FIRST DETERMINED. THEN THE DEVIATIONS AT EACH LEVEL
8 C ARE INTERPOLATED BY AN INVERSE DISTANCE TO A POWER (PWR) WEIGHTING
9 C SCHEME. THE INTERPOLATED DEVIATIONS ARE USED TO CORRECT THE
10 C CALCULATED PROFILES AT THE GRID POINTS.
11 C
12 C --F LUDWIG 6/2002
13 C
14  include 'NGRIDS.PAR'
15 C
16  parameter(pwr=-2.0)
17 C
18  include 'ANCHOR.CMM'
19  include 'FLOWER.CMM'
20  include 'LIMITS.CMM'
21  include 'STALOC.CMM'
22  include 'TSONDS.CMM'
23 C
24  REAL varbl1(nsites),varbl2(nsites),varbl3(nsites)
25  REAL xx(nsites),yy(nsites),atemp(nxgrd,nygrd)
26 
27  LOGICAL bysond(nxgrd,nygrd)
28 C
29 C LOCAL VARIABLES:
30 C VARBLJ(I)= TEMPORARY STORAGE OF VALUES FROM SOUNDINGS TO
31 C BE USED FOR INTERPOLATION OF:
32 C POTENT. TEMP. J=1
33 C POTENT. TEMP. LAPSE RATE J=2
34 C ALTIMETER SETTING J=3
35 C XX,YY = TEMPORARY STORAGE OF SOND SITE COORDINATES
36 C ATEMP = TEMPORARY STORAGE OF 2-D GRIDDED VALUES
37 C BYSOND = FLAG FOR GRID PTS BY SONDS
38 C
39 C CHECK FOR ENOUGH SOND INFO
40 C
41  IF (numtmp .LE. 0 .OR. nlvl .LE. 3) THEN
42  WRITE(*,*) ' ONLY ',nlvl-1,' FLOW SURFACES'
43  WRITE(*,*) ' ONLY ',numtmp,' T-SONDES'
44  WRITE(*,*) 'CANNOT WORK '
45  stop
46  END IF
47 C
48 C INTIALIZE BYSOND TO REFLECT GRID PTS BY TEMPERATURE SONDS THAT ARE TO
49 C BE HELD FIXED.
50 C
51  DO 22 ix=1,nxgrd
52  DO 20 iy=1,nygrd
53  DO 17 it=1,numtmp
54  IF (ix.EQ.nint(xtmp(it)) .AND.
55  $ iy.EQ.nint(ytmp(it))) THEN
56  bysond(ix,iy)=.true.
57  ELSE
58  bysond(ix,iy)=.false.
59  END IF
60 17 CONTINUE
61 20 CONTINUE
62 22 CONTINUE
63 C
64 C ESTIMATE POTENTIAL TEMP LAPSE RATE BY HORIZONTAL INTERPOLATION
65 C BETWEEN SOUNDINGS.
66 C
67  DO 60 ix=1,ncol
68  x0=float(ix)
69  DO 55 iy=1,nrow
70  y0=float(iy)
71  DO 50 iz=2,nlvl
72 C
73  DO 40 it=1,numtmp
74  xx(it)=xtmp(it)
75  yy(it)=ytmp(it)
76  varbl2(it)=ptlaps(it,iz)
77 40 CONTINUE
78  CALL rinvmold(trpval,x0,y0,xx,yy,numtmp,varbl2)
79  dthdzl(ix,iy,iz)=trpval
80 C
81 50 CONTINUE
82 55 CONTINUE
83 60 CONTINUE
84 C
85 C ESTIMATE ALTIMETER SETTING ON FLOW GRID
86 C
87  DO 200 ix=1,ncol
88  x0=float(ix)
89  DO 195 iy=1,nrow
90  y0=float(iy)
91  DO 190 iz=2,nlvl
92  jkit=0
93 C
94 C GET ALTIMETER SETTING AT SONDS
95 C
96  DO 105 it=1,numtmp
97 C
98 C USE ONLY NON-RASS SONDS
99 C
100  IF (goodt(it)) THEN
101  jkit=jkit+1
102  xx(jkit)=xtmp(it)
103  yy(jkit)=ytmp(it)
104  varbl3(jkit)=altsig(it,iz)
105  END IF
106 105 CONTINUE
107  num3use=jkit
108 C
109 C IF NO NON-RASS UPPER LEVEL PRESURE INFO, USE SFC VALUES
110 C
111  IF (num3use.EQ.0) THEN
112  DO 110 is=1,numnws
113  IF (mnx .GT. 0 .AND. mnx .LE. nxgrd .AND.
114  $ mny.GT.0 .AND. mny .LE. nygrd) THEN
115  IF (altim(is).GT.-9998.9) THEN
116  num3use=num3use+1
117  xx(num3use)=xg(is)
118  yy(num3use)=yg(is)
119  varbl3(num3use)=altim(is)
120  END IF
121  END IF
122 C
123 110 CONTINUE
124  END IF
125 C
126 C CHECK FOR STATIONS ON GRID AT HEIGHTS NEAR THE FLOW SURFACE TO BE
127 C ADDED TO THE LIST
128 C
129  IF (num3use.GT.0) THEN
130  CALL rinvmold(trpval,x0,y0,xx,yy,num3use,varbl3)
131  setalt(ix,iy,iz)=trpval
132  prmb(ix,iy,iz)=cvt2p(setalt(ix,iy,iz),
133  $ sfcht(ix,iy)+rhs(ix,iy,iz))
134  ELSE
135  prmb(ix,iy,iz)=0.0
136  END IF
137 190 CONTINUE
138 195 CONTINUE
139 200 CONTINUE
140 C
141 C ESTIMATE POTENTIAL TEMPERATURE ON FLOW GRID
142 C
143  DO 300 ix=1,ncol
144  x0=float(ix)
145  DO 295 iy=1,nrow
146  y0=float(iy)
147  DO 290 iz=2,nlvl
148 C
149 C GET POTENTIAL TEMPS AT SONDS
150 C
151  DO 205 it=1,numtmp
152  xx(it)=xtmp(it)
153  yy(it)=ytmp(it)
154  varbl1(it)=ptsigl(it,iz)
155 205 CONTINUE
156  num1use=numtmp
157 C
158  CALL rinvmold(trpval,x0,y0,xx,yy,num1use,varbl1)
159  tmpkel(ix,iy,iz)=trpval
160 290 CONTINUE
161 295 CONTINUE
162 300 CONTINUE
163 C
164 C NOW GET 1ST-GUESS TEMPERATURE AND ALTIMETER AT ANEMOMETER HEIGHT BY
165 C INTERPOATION OF SURFACE OBS.
166 C
167  CALL vrsmoo (altim,atemp,numnws)
168  DO 310 ix=1,ncol
169  DO 310 iy=1,nrow
170  setalt(ix,iy,1)=atemp(ix,iy)
171  prmb(ix,iy,1)=cvt2p(setalt(ix,iy,1),sfcht(ix,iy)+z10)
172 310 CONTINUE
173 C
174  CALL vrsmoo (tempc,atemp,numnws)
175  DO 320 ix=1,ncol
176  DO 320 iy=1,nrow
177  tmpkel(ix,iy,1)=tpot(prmb(ix,iy,1),atemp(ix,iy))
178 320 CONTINUE
179 C
180 C FINALLY GO BACK AND CHECK FOR BELOW GROUND SFCS, ALSO REPLACE
181 C UPPER LEVEL SFC LEVEL INTERPOLATIONS (WHICH ARE UNRELIABLE) WITH
182 C ESTIMATES FROM UPPER LEVEL SOND INTERPOLATION.
183 C
184  DO 400 ix=1,ncol
185  DO 395 iy=1,nrow
186  dthdzl(ix,iy,1)=dthdzl(ix,iy,levbot(ix,iy))
187  DO 390 iz=2,levbot(ix,iy)
188 C
189 C POINTS BELOW GROUND ARE SET TO ZERO
190 C
191  IF (iz.LT.levbot(ix,iy)) THEN
192  dthdzl(ix,iy,iz)=0.0
193  setalt(ix,iy,iz)=0.0
194  prmb(ix,iy,iz)=0.0
195  tmpkel(ix,iy,iz)=0.0
196 C
197 C IF FLOW SFC 2 IS NOT THE FIRST SURFACE ABOVE GROUND, ESTIMATE
198 C ANEMOMETER HEIGHT VALUES FROM THE FLOW SFC VALUES.
199 C
200  ELSE
201  IF (iz.GT.2) THEN
202  setalt(ix,iy,1)=setalt(ix,iy,iz)
203  prmb(ix,iy,1)=cvt2p(setalt(ix,iy,iz),
204  $ sfcht(ix,iy)+z10)
205  tmpkel(ix,iy,1)=tmpkel(ix,iy,iz)-
206  $ (rhs(ix,iy,iz)-z10)*dthdzl(ix,iy,iz)
207  END IF
208  END IF
209 390 CONTINUE
210 395 CONTINUE
211 400 CONTINUE
212 C
213  RETURN
214 C
subroutine rinvmold(TRPVAL, X0, Y0, XX, YY, NOBS, VARBL)
Definition: invwt.f:128
real function cvt2p(ALTIM, ELEV)
Definition: utils.f:129
subroutine vrsmoo(VAL, VALTRP, NUMBER)
Definition: interp.f:132
real function tpot(PP, TT)
Definition: utils.f:66

Here is the call graph for this function:

Here is the caller graph for this function: