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

Go to the source code of this file.

Functions/Subroutines

subroutine flowht
 

Function/Subroutine Documentation

subroutine flowht ( )

Definition at line 3 of file flowht.f.

Referenced by resig().

3 C******************************************************************
4 C
5 C THIS SUBROUTINE DETERMINES THE WEIGHTED AVERAGE FLOW SURFACE HEIGHTS
6 C BASED ON THE VALUES THAT WOULD BE OBTAINED FROM THE INDIVIDUAL
7 C TEMPERATURE PROFILES--F LUDWIG, JANUARY 1988
8 C
9  include 'NGRIDS.PAR'
10 C
11  include 'ANCHOR.CMM'
12  include 'FLOWER.CMM'
13  include 'LIMITS.CMM'
14  include 'STALOC.CMM'
15  include 'TSONDS.CMM'
16 C
17  REAL ryzvar(nsites),xvar(nsites),yvar(nsites)
18  INTEGER nryz
19 C
20 C DZMAX(IT,IZ) = MAXIMUM RISE FOR IZTH FLOW SFC AS DETERMINED FROM
21 C
22  DO 220 ix = 1,ncol
23  xx = float(ix)
24  DO 200 iy = 1,nrow
25  yy=float(iy)
26  here=sfcht(ix,iy)
27  DO 175 l = 1,nlvl
28  IF (numtmp .GT. 1) THEN
29 C
30 C IF THE SITE HAD VALID DATA (NTHTS >0)) THEN GET WEIGHTED AVERAGE RISE
31 C AFTER GETTING RELATION FOR LOCAL TOPOGRAPHY HEIGHT VERSUS MAXIMUM
32 C RISE FROM FUNCTION SLOPER.
33 C
34  nryz=0
35  DO 150 it = 1,numtmp
36  IF (nthts(it) .GT. 0 .AND.
37  $ dzmax(it,l).GT.-9998.) THEN
38  zratio=sloper(here,sfclow,zrise)
39  nryz=nryz+1
40  xvar(nryz)=xtmp(it)
41  yvar(nryz)=ytmp(it)
42  zratio=sloper(here,sfclow,zrise)
43  ryzvar(nryz)= zratio*dzmax(it,l)
44  END IF
45 150 CONTINUE
46  IF (nryz .GT. 0) THEN
47  CALL rinvmod(rhere,xx,yy,xvar,yvar,nryz,ryzvar)
48  rhs(ix,iy,l) =
49  $ rhere+avthk*sigma(l)+sfclow-here
50  ELSE
51 C
52 C IF NO SOUNDING REACHES THIS HIGH THEN USE SAME RISE AS NEXT
53 C LOWER LEVEL -- IF NO SOUNDING AT ALL USE A RISE = TO 3/4 THE
54 C TERRAIN RISE.
55 C
56  IF (l.GT.1) THEN
57  rhere=rhs(ix,iy,l-1)-
58  $ (avthk*sigma(l-1)+sfclow-here)
59  rhs(ix,iy,l)=
60  $ rhere+avthk*sigma(l)+sfclow-here
61  ELSE
62  rhs(ix,iy,l)=
63  $ avthk*sigma(l)-0.25*(here-sfclow)
64  END IF
65  END IF
66  ELSE IF (numtmp .LT.1) THEN
67 C
68 C IF NO SOUNDING USE SFC THAT RISES 3/4 AS FAST AS THE TERRAIN.
69 C
70  WRITE (*,*) 'BE WARY -- NO SOUNDING'
71  rhs(ix,iy,l)= avthk*sigma(l)-0.25*(here-sfclow)
72  ELSE IF (numtmp.EQ.1) THEN
73  IF (dzmax(1,l) .GT. -9998.) THEN
74 C
75 C IF ONE SOUNDING REACHES THIS LEVEL, USE IT
76 C
77  rhere=sloper(here,sfclow,zrise)*dzmax(1,l)
78  rhs(ix,iy,l)=rhere+avthk*sigma(l)+sfclow-here
79  ELSE
80  IF (l.GT.1 .AND. dzmax(1,l-1).GT.-9998.) THEN
81 C
82 C IF ONLY ONE SOUNDING AND IT DOESN'T REACH THIS LEVEL, USE HIGHEST
83 C AVAILABLE DZMAX FOR UPPER LEVELS
84 C
85  dzmax(1,l)=dzmax(1,l-1)
86  rhere=sloper(here,sfclow,zrise)*dzmax(1,l)
87  rhs(ix,iy,l)=rhere+avthk*sigma(l)+sfclow-here
88  ELSE
89 C
90 C IF NO SONDE THIS LEVEL OR THE ONE BELOW USE SFC THAT RISES 3/4
91 C AS FAST AS THE TERRAIN.
92 C
93  rhs(ix,iy,l)=avthk*sigma(l)-
94  $ 0.25*(here-sfclow)
95  END IF
96  END IF
97  END IF
98 C
99 C SETTING FLOW SURFACE THAT CLEARS TERRAIN TO CLEAR IT BY AT LEAST
100 C 20 M.
101 C
102  IF (rhs(ix,iy,l).GE.z0 .AND.
103  $ rhs(ix,iy,l) .LT. 20.0) rhs(ix,iy,l)=20.0
104 175 CONTINUE
105  DO 178 l=2,nlvl
106  levbot(ix,iy)=l
107  IF (rhs(ix,iy,l).GT.z0) GO TO 200
108 178 CONTINUE
109 200 CONTINUE
110 220 CONTINUE
111 C
112  RETURN
subroutine rinvmod(TRPVAL, X0, Y0, XX, YY, NOBS, VARBL)
Definition: invwt.f:3
real function sloper(HERE, SFCMIN, HIRISE)
Definition: interp.f:255

Here is the call graph for this function:

Here is the caller graph for this function: