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

Go to the source code of this file.

Functions/Subroutines

subroutine topwnd
 
subroutine tstwnd (CHMMDDTTTT)
 

Function/Subroutine Documentation

subroutine topwnd ( )

Definition at line 3 of file winterp.f.

Referenced by geosig().

3 C*********************************************************************
4 C
5 C INTERPOLATES WINDS AT TOPMOST LEVEL BETWEEN OBSERVATION PTS--WHEN
6 C ONLY ONE WIND AVAILABLE IT'S USED EVERYWHERE. LUDWIG, NOVEMBER,1987.
7 C
8  include 'NGRIDS.PAR'
9 
10 C
11  include 'FLOWER.CMM'
12  include 'LIMITS.CMM'
13  include 'STALOC.CMM'
14 C
15  dimension uu(nwsite),vv(nwsite)
16 C
17 C USE THE ONE WIND AVAILABLE EVERYWHERE
18 C
19  IF (numdop.EQ.1) THEN
20  uu(1)=usig(1,nlvl)
21  vv(1)=vsig(1,nlvl)
22  DO 25 i = 1,ncol
23  DO 25 j = 1,nrow
24  u(i,j,nlvl)=uu(1)
25  v(i,j,nlvl)=vv(1)
26 25 CONTINUE
27  ELSE
28  DO 30 i=1,numdop
29  uu(i)=usig(i,nlvl)
30  vv(i)=vsig(i,nlvl)
31 30 CONTINUE
32 C
33  DO 65 j = 1,nrow
34  xx=float(j)
35  DO 60 i = 1,ncol
36  yy=float(i)
37  sumdop=0.0
38  u(i,j,nlvl)=0.0
39  v(i,j,nlvl)=0.0
40  DO 50 ik=1,numdop
41 C
42 C FOLLOWING STATEMENT CHANGED [ FROM IT=IDOP(JK) ] BY FLL 5/24/2000
43 C BUG FOUND BY DOUG MILLER OF THE NAVAL POSTGRADUATE SCHOOL. IT
44 C APPEARS TO AFFECT ONLY RESULTS OBTAINED WHEN MORE THAN ONE
45 C SOUNDING IS AVAILABLE.
46 C
47  it=ik
48  dwate=wndwt(xx,yy,xdop(it),ydop(it))
49  sumdop=sumdop+dwate
50  u(i,j,nlvl)=u(i,j,nlvl)+dwate*uu(it)
51  v(i,j,nlvl)=v(i,j,nlvl)+dwate*vv(it)
52 50 CONTINUE
53  IF (sumdop.GT.0.0) THEN
54  u(i,j,nlvl)=u(i,j,nlvl)/sumdop
55  v(i,j,nlvl)=v(i,j,nlvl)/sumdop
56  ELSE
57  WRITE (*,*) 'NO TOP WINDS'
58  stop
59  END IF
60 60 CONTINUE
61 C
62 65 CONTINUE
63  ENDIF
64 C
65  RETURN
66 C
real function wndwt(X, Y, XOBS, YOBS)
Definition: utils.f:216

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine tstwnd ( character*8  CHMMDDTTTT)

Definition at line 71 of file winterp.f.

Referenced by wocss().

71 C*********************************************************************
72 C
73 C USES LEVWND TO INTERPOLATE MASS ADJUSTED FIELD TO ANEMOMETER
74 C HEIGHT (Z10, FOR INDEX=1) & NFLAT FLAT PLANES (FOR Z INDICES 2-6)
75 C SET AT THE HEIGHTS ZCHOOZ ABOVE THE LOWEST TERRAIN GRID POINT IN
76 C THE COARSE GRID, AND TO CONVERT INTERPOLATED WINDS BACK TO
77 C METEOROLOGICAL SPEEDS AND ANGLES, THAT CAN BE PLOTTED IF DESIRED.
78 C
79 C LUDWIG--FEB 2000
80 C
81  include 'NGRIDS.PAR'
82 
83 C
84  parameter(rad2d=180./3.14159,zero=0.0,nmax=200)
85  parameter(valmis=-9999.0)
86 C
87  include 'ANCHOR.CMM'
88  include 'FLOWER.CMM'
89  include 'LIMITS.CMM'
90  include 'STALOC.CMM'
91 C
92  INTEGER ncalls
93  CHARACTER*8 chmmddtttt
94 C
95 C INTERPOLATES MASS ADJUSTED FIELD TO ANEMOMETER HEIGHT (Z10, FOR
96 C INDEX=1) THIS SUBROUTINE ALSO CONVERTS INTERPOLATED WINDS BACK TO
97 C METEOROLOGICAL SPEEDS AND ANGLES, THAT CAN BE PLOTTED IF DESIRED.
98 C LUDWIG--JANUARY 1988
99 C
100 C REVISED FROM LEVWND MARCH 1997 TO JUST GET SFC LEVEL WINDS AT
101 C SPECIFIED GRID POINTS SO THAT THEY CAN BE COMPARED WITH THE
102 C OBSERVATIONS THAT WERE NOT USED IN CALCULATING THE WINDS.
103 C
104 C MAKE SURE EVERYTHING IS STILL HERE ON SUBSEQUENT CALLS
105 C
106  DATA ncalls /0/
107 C
108  SAVE
109 C
110  CALL levwnd
111 C
112 C FOR CHECKING, WE WILL COMPARE OBSERVATIONS WITH NEAREST GRID VALUES
113 C FOR STATIONS ON GRID
114 C
115  kase=0
116 C IF (NCALLS .EQ.0) THEN
117 C NCALLS=1
118 C WRITE (33,6001)
119 C END IF
120  DO 75 it=1,numnws
121 C
122 C GETTING NEAREST GRID POINT FOR EACH OBS
123 C
124  klx=nint(xg(it))
125  kly=nint(yg(it))
126 C
127 C SKIP IF OUTSIDE CALCULATION GRID, OR OBSERVATION WAS MISSING
128 C
129  IF (klx.GT.0 .AND. kly.GT.0 .AND.
130  $ klx.LE.ncol .AND. kly.LE.nrow .AND.
131  $ nint(ucomp(it)) .NE. -9999) THEN
132  kase=kase+1
133  difdst=dscrs*sqrt((float(klx)-xg(it))**2+
134  $ (float(kly)-yg(it))**2)
135  ztst=sfcht(klx,kly)
136 C
137 C CONVERTING COMPONENTS BACK TO SPD & DIRECTION FOR OBS
138 C
139  wsob=sp(ucomp(it),vcomp(it))
140  wdob=dd(ucomp(it),vcomp(it))
141 C
142 C GETTING CALCULATED WINDS AT Z10 HT
143 C
144  ulxly=0.01*float(iugraf(klx,kly,1))
145  vlxly=0.01*float(ivgraf(klx,kly,1))
146  wstst=sp(ulxly,vlxly)
147  wdtst=dd(ulxly,vlxly)
148 C
149 C IF OBSERVED WIND WAS CALM DIRECTION DIFFERENCE IS UNDEFINED
150 C
151  IF (wsob .GT. 0.0) THEN
152  deldir=degdif(wdob,wdtst)
153  ELSE
154  deldir=-999.
155  END IF
156 C WRITE(33,6002)IT,CHSTID(IT),WSOB,WSTST,WDOB,WDTST,
157 C $ WSOB-WSTST,DELDIR,DIFDST,XG(IT),YG(IT),CHMMDDTTTT
158  END IF
159 75 CONTINUE
160 C
161 6001 FORMAT (' NUM ID SDPOB SPDWOX DIROB DIRWOX ',
162  $ ' SPDIF DIRDIF DISTDIF XKM YKM DATE')
163 6002 FORMAT(1x,i4,1x,a5,2x,6f9.2,3f7.2,4x,a8)
164 C
165  RETURN
166 C
subroutine levwnd
Definition: levwnd.f:3
real function degdif(A1, A2)
Definition: utils.f:3
real function sp(UU, VV)
Definition: utils.f:19
real function dd(UU, VV)
Definition: utils.f:30

Here is the call graph for this function:

Here is the caller graph for this function: