GNU WOCSS (gwocss)  2.2.4-pre
GNU version of Winds On Critical Streamline Surfaces (WOCSS)
resig.f
Go to the documentation of this file.
1 C*********************************************************************
2  SUBROUTINE resig
3 C*********************************************************************
4 C
5 C REDEFINES THE HEIGHTS OF THE FLOW SURFACES BASED ON WIND SPEED OVER
6 C THE LOWEST TERRRAIN HEIGHTS & LAPSE RATES AT THE VARIOUS FLOW LEVELS
7 C --THE UNDERLYING CONCEPT IS SIMILAR TO THAT OF THE 'CRITICAL STREAM-
8 C LINE'. WEIGHTED AVERAGES ARE USED TO CALCULATE FLOW SURFACE HEIGHTS
9 C AT EACH GRID POINT, GIVING GREATEST WEIGHT TO VALUES APPROPRIATE TO
10 C THE NEAREST SOUNDINGS.
11 C
12 C --LUDWIG, JANUARY 1988.
13 C
14  include 'NGRIDS.PAR'
15 C
16  include 'ANCHOR.CMM'
17  include 'FLOWER.CMM'
18  include 'LIMITS.CMM'
19  include 'STALOC.CMM'
20  include 'TSONDS.CMM'
21 C
22  REAL COMPDZ
23 C
24 C MAKE SURE STUFF IS HERE WHEN YOU COME BACK
25 C
26  SAVE
27 C
28 C OVERS(DPTDZ,DZTOP) IS A STATEMENT FUNCTION THAT CAN BE USED TO
29 C DEFINE MAXIMUM RISE OF A FLOW SURFACE IN TERMS OF THE POTENTIAL
30 C TEMPERATURE LAPSE RATE (DPTDZ) RATE AND THE MAXIMUM DIFFERENCE IN
31 C TERRAIN ELEVATION (DZMAX). THE VERSION INCLUDED HERE ASSUMES THAT
32 C FLOW FOLLOWS UNDER-LYING TERRAIN FOR NEUTRAL OR UNSTABLE CONDITIONS
33 C & THAT THERE IS NO OVERSHOOT OR UNDERSHOOT.
34 C
35 C
36  overs(dptdz,dztop)=dztop
37 C
38  DO 200 it = 1,numtmp
39 C
40 C CHECK THAT THERE WAS DATA FROM T-SONDE STATION (NTHTS >0)
41 C
42  IF (nthts(it).GT.0) THEN
43 C
44 C FIND NEAREST LOW REFERENCE POINT AND THE WINDS ABOVE IT
45 C
46  idis2=(nint(xtmp(it))-lowix(1))**2+
47  $ (nint(ytmp(it))-lowiy(1))**2
48  jnear(it)=1
49  DO 30 jl=2,5
50  IF ((nint(xtmp(it))-lowix(jl))**2+
51  $ (nint(ytmp(it))-lowiy(jl))**2 .LT. idis2) THEN
52  idis2=(nint(xtmp(it))-lowix(jl))**2+
53  $ (nint(ytmp(it))-lowiy(jl))**2
54  jnear(it)=jl
55  END IF
56 30 CONTINUE
57  lx=lowix(jnear(it))
58  ly=lowiy(jnear(it))
59  DO 100 l=1,nlvl
60  rhslo(it,l)=rhs(lx,ly,l)
61  spd=sqrt(u(lx,ly,l)**2+v(lx,ly,l)**2)
62 C
63 C PUT LOWER LIMIT ON POTENTIAL TEMPERATURE LAPSE RATE AND CALCULATE
64 C MAXIMUM RISE CORRESPONDING TO THE WIND SPEED & LAPSE FOR THIS
65 C T-SONDE.
66 C
67  dtheta=ptlaps(it,l)
68  IF (dtheta .GT.-998.) THEN
69  IF (dtheta.LE.dpotmin) dtheta=dpotmin
70  dzmax(it,l)=spd/sqrt(9.8*dtheta/tsigl(it,l))
71 C
72 C FLOW AMPLITUDES ARE LIMITED USING A STATEMENT FUNCTION (OVERS)
73 C OF THE POT TMP LAPSE & TERR. AMPLITUDE.
74 C
75  IF (dzmax(it,l).GT. overs(dtheta,zrise))
76  $ dzmax(it,l)=overs(dtheta,zrise)
77  ELSE
78  dzmax(it,l)=-9999.
79  END IF
80  100 CONTINUE
81 C
82 C DEFINE MINIMUM ALLOWABLE FLOW SURFACE SEPARATIONS FOR EACH T-SONDE'S
83 C DOMAIN OF INFLUENCE. MINIMUM SEPARATION DEFINED AS A FRACTION
84 C (CMPRES) OF THEIR SEPARATION OVER THE TERRAIN LOW POINT FOR THE
85 C T-SONDE. DO NOT LET SEPARATION BETWEEN SURFACES COMPRESS BY MORE
86 C THAN CMPRES FACTOR OR BE GREATER THAN DEFINED BY OVERS(DPTDZ,DZMAX).
87 C
88  DO 150 l=nlvl-1,1,-1
89  IF (dzmax(it,l).GT.-9998.) THEN
90  compdz=cmpres*(rhslo(it,l+1)-rhslo(it,l))
91  IF (dzmax(it,l).GT.(dzmax(it,l+1)+compdz))
92  $ dzmax(it,l)=dzmax(it,l+1) +compdz
93  ELSE
94  dzmax(it,l)=-9999.
95  END IF
96  150 CONTINUE
97 C
98 C MAKE ONE MORE PASS TO ENSURE THAT UPPER SURFACES DO NOT RISE
99 C MORE RAPIDLY THAN THE SURFACE OR TERRAIN BELOW, WHICHEVER IS HIGHER.
100 C
101  DO 155 l=2,nlvl
102  IF (dzmax(it,l).GT.-9998.) THEN
103  IF (l.EQ.2) THEN
104  IF (dzmax(it,l).GT.overs(dtheta,zrise))
105  $ dzmax(it,l)=overs(dtheta,zrise)
106  ELSE
107  diff=zrise-rhs(lx,ly,l)
108  totryz=dzmax(it,l-1)
109  IF (totryz .LT. diff) totryz=diff
110  IF(dzmax(it,l).GT.totryz)
111  $ dzmax(it,l)=totryz
112  END IF
113  ELSE
114  dzmax(it,l)=-9999.
115  END IF
116  155 CONTINUE
117 C
118  ELSE
119  WRITE (*,*) 'NO LEVELS IN RESIG FOR SOND ',it
120  stop
121  END IF
122 C
123 200 CONTINUE
124 C
125 C NOW CALL FLOWHT TO DETERMINE THE WEIGHTED AVERAGE HTS FOR EACH FLOW
126 C SURFACE ABOVE EACH GRID POINT & REDEFINE LOW FLOW SFC HEIGHTS ON
127 C GRID
128 C
129 C
130  CALL flowht
131 C
132  RETURN
133  END
134 
subroutine flowht
Definition: flowht.f:3
subroutine resig
Definition: resig.f:3