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

Go to the source code of this file.

Functions/Subroutines

real function dubyou (UT, VT, I, J, K)
 

Function/Subroutine Documentation

real function dubyou (   UT,
  VT,
  I,
  J,
  K 
)

Definition at line 3 of file vertvel.f.

Referenced by bal5().

3 C********************************************************************
4 C
5 C GETTING VERTICAL MOTION W FROM HORIZONTAL MOTION & FLOW SFC SLOPE.
6 C F LUDWIG 11/89
7 C
8 C REVISED AS A FUNCTION 3/2000
9 C
10  include 'NGRIDS.PAR'
11 C
12  include 'ANCHOR.CMM'
13  include 'FLOWER.CMM'
14  include 'LIMITS.CMM'
15 C
16  SAVE
17 C
18 C GETTING FLOW SURFACE SLOPE
19 C
20  IF (k.GT.1) THEN
21  IF (rhs(i,j,k).GT.0.0) THEN
22 C
23 C CHECK TO SEE IF WE ARE AT EAST OR WEST EDGE, THEN GET FLOW SURFACE
24 C HEIGHTS TO EAST & WEST OF THIS PT. HTS ABOVE SFC (RHS)
25 C ARE ADDED TO SFCHT TO GET MSL HT. SURFACE HEIGHT IS USED FOR
26 C 1ST LEVEL (K=1) WHICH REPRESENTS ANEMOMETER HEIGHT WINDS.
27 C
28 C
29  IF (i.GT.1 .AND. i.LT.ncol) THEN
30  dgridx=2000.0*dscrs
31  zp10=max(rhs(i+1,j,k),0.0)
32  zm10=max(rhs(i-1,j,k),0.0)
33  zp10=0.0
34  zm10=0.0
35  hsige=sfcht(i+1,j)+zp10
36  hsigw=sfcht(i-1,j)+zm10
37 C
38 C USE ADJACENT PTS IF AT EDGE
39 C
40  ELSE IF (i.EQ.1) THEN
41  dgridx=1000.0*dscrs
42  zp10=max(rhs(i+1,j,k),0.0)
43  zm10=max(rhs(i,j,k),0.0)
44  hsige=sfcht(i+1,j)+zp10
45  hsigw=sfcht(i,j)+zm10
46  ELSE IF (i.EQ.ncol) THEN
47  dgridx=1000.0*dscrs
48  zp10=max(rhs(i,j,k),0.0)
49  zm10=max(rhs(i-1,j,k),0.0)
50  hsige=sfcht(i,j)+zp10
51  hsigw=sfcht(i-1,j)+zm10
52  END IF
53 C
54 C NOW DO THE SAME FOR NORTH SOUTH
55 C
56  IF (j.GT.1 .AND. j.LT.nrow) THEN
57  dgridy=2000.0*dscrs
58  z0p1=max(rhs(i,j+1,k),0.0)
59  z0m1=max(rhs(i,j-1,k),0.0)
60  hsign=sfcht(i,j+1)+z0p1
61  hsigs=sfcht(i,j-1)+z0m1
62 C
63 C USE ADJACENT PTS IF AT EDGE
64 C
65  ELSE IF (j.EQ.1) THEN
66  dgridy=1000.0*dscrs
67  z0p1=max(rhs(i,j+1,k),0.0)
68  z0m1=max(rhs(i,j,k),0.0)
69  hsign=sfcht(i,j+1)+z0p1
70  hsigs=sfcht(i,j)+z0m1
71  ELSE IF (j.EQ.nrow) THEN
72  dgridy=1000.0*dscrs
73  z0p1=max(rhs(i,j,k),0.0)
74  z0m1=max(rhs(i,j-1,k),0.0)
75  hsign=sfcht(i,j)+z0p1
76  hsigs=sfcht(i,j-1)+z0m1
77  END IF
78 C
79 C NOW GET W-E & S-N SLOPES
80 C
81  dhdx=(hsige-hsigw)/dgridx
82  dhdy=(hsign-hsigs)/dgridy
83 C
84 C VERTICAL MOTION IS INNER PRODUCT OF HORIZ WIND & HT GRADIENT
85 C AT ABOVE GROUND PTS.
86 C
87  dubyou=ut*dhdx+vt*dhdy
88 C
89  ELSE
90 C
91 C VERTICAL MOTION IS ZERO FOR BELOW GROUND PTS
92 C
93  dubyou=0.0
94 C
95  END IF
96 C
97 C USE SFC HTS TO GET VERTICAL MOTION IN 1ST (ANEMOMETER HT) LAYER
98 C
99  ELSE
100  IF (i.GT.1 .AND. i.LT.ncol) THEN
101  dgridx=2000.0*dscrs
102  hsige=sfcht(i+1,j)
103  hsigw=sfcht(i-1,j)
104 C
105 C USE ADJACENT PTS IF AT EDGE
106 C
107  ELSE IF (i.EQ.1) THEN
108  dgridx=1000.0*dscrs
109  hsige=sfcht(i+1,j)
110  hsigw=sfcht(i,j)
111  ELSE IF (i.EQ.ncol) THEN
112  dgridx=1000.0*dscrs
113  hsige=sfcht(i,j)
114  hsigw=sfcht(i-1,j)
115  END IF
116 C
117 C NOW DO THE SAME FOR NORTH SOUTH
118 C
119  IF (j.GT.1 .AND. j.LT.nrow) THEN
120  dgridy=2000.0*dscrs
121  hsign=sfcht(i,j+1)
122  hsigs=sfcht(i,j-1)
123 C
124 C USE ADJACENT PTS IF AT EDGE
125 C
126  ELSE IF (j.EQ.1) THEN
127  dgridy=1000.0*dscrs
128  hsign=sfcht(i,j+1)+z0p1
129  hsigs=sfcht(i,j)+z0m1
130  ELSE IF (j.EQ.nrow) THEN
131  dgridy=1000.0*dscrs
132  hsign=sfcht(i,j)+z0p1
133  hsigs=sfcht(i,j-1)+z0m1
134  END IF
135 C
136 C NOW GET W-E & S-N SLOPES
137 C
138  dhdx=(hsige-hsigw)/dgridx
139  dhdy=(hsign-hsigs)/dgridy
140 C
141 C VERTICAL MOTION IS INNER PRODUCT OF HORIZ WIND & HT GRADIENT
142 C OF SFC HTS.
143 C
144  dubyou=ut*dhdx+vt*dhdy
145 C
146  END IF
147 C
148  RETURN
149 C
real function dubyou(UT, VT, I, J, K)
Definition: vertvel.f:3

Here is the caller graph for this function: