-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfuncs_8h_source.html
414 lines (412 loc) · 72.5 KB
/
funcs_8h_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>EPANET: /Users/sam/Dropbox (CitiLogics)/Code/EPANET-OWA/src/funcs.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">EPANET
 <span id="projectnumber">2.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('funcs_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Modules</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">funcs.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">**************************************************************************</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> </span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">FUNCS.H -- Function Prototypes for EPANET Program </span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> </span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">VERSION: 2.00</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">DATE: 5/8/00</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> 9/25/00</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> 10/25/00</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> 12/29/00</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> 3/1/01</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> 2/14/08 (2.00.12)</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">AUTHOR: L. Rossman</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> US EPA - NRMRL</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> </span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">**************************************************************************</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">/*****************************************************************/</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">/* Most float arguments have been changed to double - 7/3/07 */</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">/*****************************************************************/</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/* ------- EPANET.C --------------------*/</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">** NOTE: The exportable functions that can be called</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">** via the DLL are prototyped in TOOLKIT.H.</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">*/</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifndef FUNCS_H</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define FUNCS_H</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> initpointers(<span class="keywordtype">void</span>); <span class="comment">/* Initializes pointers */</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">int</span> allocdata(<span class="keywordtype">void</span>); <span class="comment">/* Allocates memory */</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keywordtype">void</span> freeTmplist(<a class="code" href="struct_tmplist.html">STmplist</a> *); <span class="comment">/* Frees items in linked list */</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span> freeFloatlist(<a class="code" href="struct_floatlist.html">SFloatlist</a> *); <span class="comment">/* Frees list of floats */</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keywordtype">void</span> freedata(<span class="keywordtype">void</span>); <span class="comment">/* Frees allocated memory */</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">int</span> openfiles(<span class="keywordtype">char</span> *,<span class="keywordtype">char</span> *,<span class="keywordtype">char</span> *); <span class="comment">/* Opens input & report files */</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">int</span> openhydfile(<span class="keywordtype">void</span>); <span class="comment">/* Opens hydraulics file */</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">int</span> openoutfile(<span class="keywordtype">void</span>); <span class="comment">/* Opens binary output file */</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">int</span> strcomp(<span class="keywordtype">char</span> *, <span class="keywordtype">char</span> *); <span class="comment">/* Compares two strings */</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">char</span>* getTmpName(<span class="keywordtype">char</span>* fname); <span class="comment">/* Gets temporary file name */</span> <span class="comment">//(2.00.12 - LR)</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">double</span> interp(<span class="keywordtype">int</span>, <span class="keywordtype">double</span> *, <span class="comment">/* Interpolates a data curve */</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">double</span> *, <span class="keywordtype">double</span>);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">int</span> findnode(<span class="keywordtype">char</span> *); <span class="comment">/* Finds node's index from ID */</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">int</span> findlink(<span class="keywordtype">char</span> *); <span class="comment">/* Finds link's index from ID */</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">char</span>* geterrmsg(<span class="keywordtype">int</span>); <span class="comment">/* Gets text of error message */</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> errmsg(<span class="keywordtype">int</span>); <span class="comment">/* Reports program error */</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">void</span> writecon(<span class="keywordtype">char</span> *); <span class="comment">/* Writes text to console */</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">void</span> writewin(<span class="keywordtype">char</span> *); <span class="comment">/* Passes text to calling app */</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">/* ------- INPUT1.C --------------------*/</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">int</span> getdata(<span class="keywordtype">void</span>); <span class="comment">/* Gets network data */</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> setdefaults(<span class="keywordtype">void</span>); <span class="comment">/* Sets default values */</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keywordtype">void</span> initreport(<span class="keywordtype">void</span>); <span class="comment">/* Initializes report options */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">void</span> adjustdata(<span class="keywordtype">void</span>); <span class="comment">/* Adjusts input data */</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">int</span> inittanks(<span class="keywordtype">void</span>); <span class="comment">/* Initializes tank levels */</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">void</span> initunits(<span class="keywordtype">void</span>); <span class="comment">/* Determines reporting units */</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keywordtype">void</span> convertunits(<span class="keywordtype">void</span>); <span class="comment">/* Converts data to std. units*/</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">/* -------- INPUT2.C -------------------*/</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keywordtype">int</span> netsize(<span class="keywordtype">void</span>); <span class="comment">/* Determines network size */</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">int</span> readdata(<span class="keywordtype">void</span>); <span class="comment">/* Reads in network data */</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">int</span> newline(<span class="keywordtype">int</span>, <span class="keywordtype">char</span> *); <span class="comment">/* Processes new line of data */</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">int</span> addnodeID(<span class="keywordtype">int</span>, <span class="keywordtype">char</span> *); <span class="comment">/* Adds node ID to data base */</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keywordtype">int</span> addlinkID(<span class="keywordtype">int</span>, <span class="keywordtype">char</span> *); <span class="comment">/* Adds link ID to data base */</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">int</span> addpattern(<span class="keywordtype">char</span> *); <span class="comment">/* Adds pattern to data base */</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keywordtype">int</span> addcurve(<span class="keywordtype">char</span> *); <span class="comment">/* Adds curve to data base */</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <a class="code" href="struct_tmplist.html">STmplist</a> *findID(<span class="keywordtype">char</span> *, <a class="code" href="struct_tmplist.html">STmplist</a> *); <span class="comment">/* Locates ID on linked list */</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">int</span> unlinked(<span class="keywordtype">void</span>); <span class="comment">/* Checks for unlinked nodes */</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">int</span> getpumpparams(<span class="keywordtype">void</span>); <span class="comment">/* Computes pump curve coeffs.*/</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">int</span> getpatterns(<span class="keywordtype">void</span>); <span class="comment">/* Gets pattern data from list*/</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keywordtype">int</span> getcurves(<span class="keywordtype">void</span>); <span class="comment">/* Gets curve data from list */</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keywordtype">int</span> findmatch(<span class="keywordtype">char</span> *,<span class="keywordtype">char</span> *[]); <span class="comment">/* Finds keyword in line */</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">int</span> match(<span class="keywordtype">char</span> *, <span class="keywordtype">char</span> *); <span class="comment">/* Checks for word match */</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">int</span> gettokens(<span class="keywordtype">char</span> *); <span class="comment">/* Tokenizes input line */</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">int</span> getfloat(<span class="keywordtype">char</span> *, <span class="keywordtype">double</span> *); <span class="comment">/* Converts string to double */</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">double</span> hour(<span class="keywordtype">char</span> *, <span class="keywordtype">char</span> *); <span class="comment">/* Converts time to hours */</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">int</span> setreport(<span class="keywordtype">char</span> *); <span class="comment">/* Processes reporting command*/</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">void</span> inperrmsg(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">char</span> *); <span class="comment">/* Input error message */</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">/* ---------- INPUT3.C -----------------*/</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keywordtype">int</span> juncdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes junction data */</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">int</span> tankdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes tank data */</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">int</span> pipedata(<span class="keywordtype">void</span>); <span class="comment">/* Processes pipe data */</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">int</span> pumpdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes pump data */</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">int</span> valvedata(<span class="keywordtype">void</span>); <span class="comment">/* Processes valve data */</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">int</span> patterndata(<span class="keywordtype">void</span>); <span class="comment">/* Processes pattern data */</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">int</span> curvedata(<span class="keywordtype">void</span>); <span class="comment">/* Processes curve data */</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">int</span> coordata(<span class="keywordtype">void</span>); <span class="comment">/* Processes coordinate data */</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keywordtype">int</span> demanddata(<span class="keywordtype">void</span>); <span class="comment">/* Processes demand data */</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keywordtype">int</span> controldata(<span class="keywordtype">void</span>); <span class="comment">/* Processes simple controls */</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">int</span> energydata(<span class="keywordtype">void</span>); <span class="comment">/* Processes energy data */</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">int</span> sourcedata(<span class="keywordtype">void</span>); <span class="comment">/* Processes source data */</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">int</span> emitterdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes emitter data */</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">int</span> qualdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes quality data */</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">int</span> reactdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes reaction data */</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">int</span> mixingdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes tank mixing data */</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">int</span> statusdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes link status data */</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keywordtype">int</span> reportdata(<span class="keywordtype">void</span>); <span class="comment">/* Processes report options */</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">int</span> timedata(<span class="keywordtype">void</span>); <span class="comment">/* Processes time options */</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">int</span> optiondata(<span class="keywordtype">void</span>); <span class="comment">/* Processes analysis options */</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">int</span> optionchoice(<span class="keywordtype">int</span>); <span class="comment">/* Processes option choices */</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">int</span> optionvalue(<span class="keywordtype">int</span>); <span class="comment">/* Processes option values */</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">int</span> getpumpcurve(<span class="keywordtype">int</span>); <span class="comment">/* Constructs a pump curve */</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">int</span> powercurve(<span class="keywordtype">double</span>, <span class="keywordtype">double</span>, <span class="keywordtype">double</span>,<span class="comment">/* Coeffs. of power pump curve*/</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">double</span>, <span class="keywordtype">double</span>, <span class="keywordtype">double</span> *,</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">double</span> *, <span class="keywordtype">double</span> *);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">int</span> valvecheck(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>); <span class="comment">/* Checks valve placement */</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">void</span> changestatus(<span class="keywordtype">int</span>, <span class="keywordtype">char</span>, <span class="keywordtype">double</span>); <span class="comment">/* Changes status of a link */</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">/* -------------- RULES.C --------------*/</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keywordtype">void</span> initrules(<span class="keywordtype">void</span>); <span class="comment">/* Initializes rule base */</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">void</span> addrule(<span class="keywordtype">char</span> *); <span class="comment">/* Adds rule to rule base */</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">int</span> allocrules(<span class="keywordtype">void</span>); <span class="comment">/* Allocates memory for rule */</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">int</span> ruledata(<span class="keywordtype">void</span>); <span class="comment">/* Processes rule input data */</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">int</span> checkrules(<span class="keywordtype">long</span>); <span class="comment">/* Checks all rules */</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">void</span> freerules(<span class="keywordtype">void</span>); <span class="comment">/* Frees rule base memory */</span> </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">/* ------------- REPORT.C --------------*/</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keywordtype">int</span> writereport(<span class="keywordtype">void</span>); <span class="comment">/* Writes formatted report */</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keywordtype">void</span> writelogo(<span class="keywordtype">void</span>); <span class="comment">/* Writes program logo */</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keywordtype">void</span> writesummary(<span class="keywordtype">void</span>); <span class="comment">/* Writes network summary */</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keywordtype">void</span> writehydstat(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>); <span class="comment">/* Writes hydraulic status */</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keywordtype">void</span> writeenergy(<span class="keywordtype">void</span>); <span class="comment">/* Writes energy usage */</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">int</span> writeresults(<span class="keywordtype">void</span>); <span class="comment">/* Writes node/link results */</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">void</span> writeheader(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/* Writes heading on report */</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keywordtype">void</span> writeline(<span class="keywordtype">char</span> *); <span class="comment">/* Writes line to report file */</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keywordtype">void</span> writerelerr(<span class="keywordtype">int</span>, <span class="keywordtype">double</span>); <span class="comment">/* Writes convergence error */</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keywordtype">void</span> writestatchange(<span class="keywordtype">int</span>,<span class="keywordtype">char</span>,<span class="keywordtype">char</span>); <span class="comment">/* Writes link status change */</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keywordtype">void</span> writecontrolaction(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>); <span class="comment">/* Writes control action taken*/</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">void</span> writeruleaction(<span class="keywordtype">int</span>, <span class="keywordtype">char</span> *); <span class="comment">/* Writes rule action taken */</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">int</span> writehydwarn(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>); <span class="comment">/* Writes hydraulic warnings */</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keywordtype">void</span> writehyderr(<span class="keywordtype">int</span>); <span class="comment">/* Writes hydraulic error msg.*/</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keywordtype">int</span> disconnected(<span class="keywordtype">void</span>); <span class="comment">/* Checks for disconnections */</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keywordtype">void</span> marknodes(<span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keywordtype">char</span> *); <span class="comment">/* Identifies connected nodes */</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keywordtype">void</span> getclosedlink(<span class="keywordtype">int</span>, <span class="keywordtype">char</span> *); <span class="comment">/* Finds a disconnecting link */</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keywordtype">void</span> writelimits(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/* Writes reporting limits */</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keywordtype">int</span> checklimits(<span class="keywordtype">double</span> *,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/* Checks variable limits */</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="keywordtype">void</span> writetime(<span class="keywordtype">char</span> *); <span class="comment">/* Writes current clock time */</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keywordtype">char</span> *clocktime(<span class="keywordtype">char</span> *, <span class="keywordtype">long</span>); <span class="comment">/* Converts time to hrs:min */</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keywordtype">char</span> *fillstr(<span class="keywordtype">char</span> *, <span class="keywordtype">char</span>, <span class="keywordtype">int</span>); <span class="comment">/* Fills string with character*/</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">int</span> getnodetype(<span class="keywordtype">int</span>); <span class="comment">/* Determines node type */</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment">/* --------- HYDRAUL.C -----------------*/</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">int</span> openhyd(<span class="keywordtype">void</span>); <span class="comment">/* Opens hydraulics solver */</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">/*** Updated 3/1/01 ***/</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keywordtype">void</span> inithyd(<span class="keywordtype">int</span>); <span class="comment">/* Re-sets initial conditions */</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">int</span> runhyd(<span class="keywordtype">long</span> *); <span class="comment">/* Solves 1-period hydraulics */</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keywordtype">int</span> nexthyd(<span class="keywordtype">long</span> *); <span class="comment">/* Moves to next time period */</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keywordtype">void</span> closehyd(<span class="keywordtype">void</span>); <span class="comment">/* Closes hydraulics solver */</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keywordtype">int</span> allocmatrix(<span class="keywordtype">void</span>); <span class="comment">/* Allocates matrix coeffs. */</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="keywordtype">void</span> freematrix(<span class="keywordtype">void</span>); <span class="comment">/* Frees matrix coeffs. */</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keywordtype">void</span> initlinkflow(<span class="keywordtype">int</span>, <span class="keywordtype">char</span>, <span class="keywordtype">double</span>); <span class="comment">/* Initializes link flow */</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">void</span> setlinkflow(<span class="keywordtype">int</span>, <span class="keywordtype">double</span>); <span class="comment">/* Sets link flow via headloss*/</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="keywordtype">void</span> setlinkstatus(<span class="keywordtype">int</span>, <span class="keywordtype">char</span>, <span class="keywordtype">char</span> *, <span class="comment">/* Sets link status */</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">double</span> *);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">void</span> setlinksetting(<span class="keywordtype">int</span>, <span class="keywordtype">double</span>, <span class="comment">/* Sets pump/valve setting */</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordtype">char</span> *, <span class="keywordtype">double</span> *);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keywordtype">void</span> resistance(<span class="keywordtype">int</span>); <span class="comment">/* Computes resistance coeff. */</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keywordtype">void</span> demands(<span class="keywordtype">void</span>); <span class="comment">/* Computes current demands */</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keywordtype">int</span> controls(<span class="keywordtype">void</span>); <span class="comment">/* Controls link settings */</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">long</span> timestep(<span class="keywordtype">void</span>); <span class="comment">/* Computes new time step */</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">void</span> tanktimestep(<span class="keywordtype">long</span> *); <span class="comment">/* Time till tanks fill/drain */</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keywordtype">void</span> controltimestep(<span class="keywordtype">long</span> *); <span class="comment">/* Time till control action */</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="keywordtype">void</span> ruletimestep(<span class="keywordtype">long</span> *); <span class="comment">/* Time till rule action */</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keywordtype">void</span> addenergy(<span class="keywordtype">long</span>); <span class="comment">/* Accumulates energy usage */</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="keywordtype">void</span> getenergy(<span class="keywordtype">int</span>, <span class="keywordtype">double</span> *, <span class="keywordtype">double</span> *); <span class="comment">/* Computes link energy use */</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keywordtype">void</span> tanklevels(<span class="keywordtype">long</span>); <span class="comment">/* Computes new tank levels */</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">double</span> tankvolume(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>); <span class="comment">/* Finds tank vol. from grade */</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="keywordtype">double</span> tankgrade(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>); <span class="comment">/* Finds tank grade from vol. */</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="keywordtype">int</span> netsolve(<span class="keywordtype">int</span> *,<span class="keywordtype">double</span> *); <span class="comment">/* Solves network equations */</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keywordtype">int</span> badvalve(<span class="keywordtype">int</span>); <span class="comment">/* Checks for bad valve */</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">int</span> valvestatus(<span class="keywordtype">void</span>); <span class="comment">/* Updates valve status */</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">int</span> linkstatus(<span class="keywordtype">void</span>); <span class="comment">/* Updates link status */</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keywordtype">char</span> cvstatus(<span class="keywordtype">char</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>); <span class="comment">/* Updates CV status */</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="keywordtype">char</span> pumpstatus(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>); <span class="comment">/* Updates pump status */</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="keywordtype">char</span> prvstatus(<span class="keywordtype">int</span>,<span class="keywordtype">char</span>,<span class="keywordtype">double</span>, <span class="comment">/* Updates PRV status */</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordtype">double</span>,<span class="keywordtype">double</span>);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">char</span> psvstatus(<span class="keywordtype">int</span>,<span class="keywordtype">char</span>,<span class="keywordtype">double</span>, <span class="comment">/* Updates PSV status */</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">double</span>,<span class="keywordtype">double</span>);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">char</span> fcvstatus(<span class="keywordtype">int</span>,<span class="keywordtype">char</span>,<span class="keywordtype">double</span>, <span class="comment">/* Updates FCV status */</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordtype">double</span>);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keywordtype">void</span> tankstatus(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/* Checks if tank full/empty */</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keywordtype">int</span> pswitch(<span class="keywordtype">void</span>); <span class="comment">/* Pressure switch controls */</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keywordtype">double</span> newflows(<span class="keywordtype">void</span>); <span class="comment">/* Updates link flows */</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keywordtype">void</span> newcoeffs(<span class="keywordtype">void</span>); <span class="comment">/* Computes matrix coeffs. */</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keywordtype">void</span> linkcoeffs(<span class="keywordtype">void</span>); <span class="comment">/* Computes link coeffs. */</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keywordtype">void</span> nodecoeffs(<span class="keywordtype">void</span>); <span class="comment">/* Computes node coeffs. */</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keywordtype">void</span> valvecoeffs(<span class="keywordtype">void</span>); <span class="comment">/* Computes valve coeffs. */</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keywordtype">void</span> pipecoeff(<span class="keywordtype">int</span>); <span class="comment">/* Computes pipe coeff. */</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="keywordtype">double</span> DWcoeff(<span class="keywordtype">int</span>, <span class="keywordtype">double</span> *); <span class="comment">/* Computes D-W coeff. */</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keywordtype">void</span> pumpcoeff(<span class="keywordtype">int</span>); <span class="comment">/* Computes pump coeff. */</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">/*** Updated 10/25/00 ***/</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment">/*** Updated 12/29/00 ***/</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keywordtype">void</span> curvecoeff(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span> *, <span class="comment">/* Computes curve coeffs. */</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">double</span> *);</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="keywordtype">void</span> gpvcoeff(<span class="keywordtype">int</span>); <span class="comment">/* Computes GPV coeff. */</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keywordtype">void</span> pbvcoeff(<span class="keywordtype">int</span>); <span class="comment">/* Computes PBV coeff. */</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> tcvcoeff(<span class="keywordtype">int</span>); <span class="comment">/* Computes TCV coeff. */</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> prvcoeff(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/* Computes PRV coeff. */</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">void</span> psvcoeff(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/* Computes PSV coeff. */</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="keywordtype">void</span> fcvcoeff(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/* Computes FCV coeff. */</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keywordtype">void</span> emittercoeffs(<span class="keywordtype">void</span>); <span class="comment">/* Computes emitter coeffs. */</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keywordtype">double</span> emitflowchange(<span class="keywordtype">int</span>); <span class="comment">/* Computes new emitter flow */</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment">/* ----------- SMATRIX.C ---------------*/</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keywordtype">int</span> createsparse(<span class="keywordtype">void</span>); <span class="comment">/* Creates sparse matrix */</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keywordtype">int</span> allocsparse(<span class="keywordtype">void</span>); <span class="comment">/* Allocates matrix memory */</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="keywordtype">void</span> freesparse(<span class="keywordtype">void</span>); <span class="comment">/* Frees matrix memory */</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keywordtype">int</span> buildlists(<span class="keywordtype">int</span>); <span class="comment">/* Builds adjacency lists */</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="keywordtype">int</span> paralink(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>); <span class="comment">/* Checks for parallel links */</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keywordtype">void</span> xparalinks(<span class="keywordtype">void</span>); <span class="comment">/* Removes parallel links */</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="keywordtype">void</span> freelists(<span class="keywordtype">void</span>); <span class="comment">/* Frees adjacency lists */</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keywordtype">void</span> countdegree(<span class="keywordtype">void</span>); <span class="comment">/* Counts links at each node */</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keywordtype">int</span> reordernodes(<span class="keywordtype">void</span>); <span class="comment">/* Finds a node re-ordering */</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keywordtype">int</span> mindegree(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>); <span class="comment">/* Finds min. degree node */</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keywordtype">int</span> growlist(<span class="keywordtype">int</span>); <span class="comment">/* Augments adjacency list */</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="keywordtype">int</span> newlink(<a class="code" href="struct_sadjlist.html">Padjlist</a>); <span class="comment">/* Adds fill-ins for a node */</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="keywordtype">int</span> linked(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>); <span class="comment">/* Checks if 2 nodes linked */</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keywordtype">int</span> addlink(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>); <span class="comment">/* Creates new fill-in */</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keywordtype">int</span> storesparse(<span class="keywordtype">int</span>); <span class="comment">/* Stores sparse matrix */</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keywordtype">int</span> ordersparse(<span class="keywordtype">int</span>); <span class="comment">/* Orders matrix storage */</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="keywordtype">void</span> transpose(<span class="keywordtype">int</span>,<span class="keywordtype">int</span> *,<span class="keywordtype">int</span> *, <span class="comment">/* Transposes sparse matrix */</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">int</span> *,<span class="keywordtype">int</span> *,<span class="keywordtype">int</span> *,<span class="keywordtype">int</span> *,<span class="keywordtype">int</span> *);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keywordtype">int</span> linsolve(<span class="keywordtype">int</span>, <span class="keywordtype">double</span> *, <span class="keywordtype">double</span> *, <span class="comment">/* Solution of linear eqns. */</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordtype">double</span> *); <span class="comment">/* via Cholesky factorization */</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">/* ----------- QUALITY.C ---------------*/</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keywordtype">int</span> openqual(<span class="keywordtype">void</span>); <span class="comment">/* Opens WQ solver system */</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="keywordtype">void</span> initqual(<span class="keywordtype">void</span>); <span class="comment">/* Initializes WQ solver */</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keywordtype">int</span> runqual(<span class="keywordtype">long</span> *); <span class="comment">/* Gets current WQ results */</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="keywordtype">int</span> nextqual(<span class="keywordtype">long</span> *); <span class="comment">/* Updates WQ by hyd.timestep */</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keywordtype">int</span> stepqual(<span class="keywordtype">long</span> *); <span class="comment">/* Updates WQ by WQ time step */</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="keywordtype">int</span> closequal(<span class="keywordtype">void</span>); <span class="comment">/* Closes WQ solver system */</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keywordtype">int</span> gethyd(<span class="keywordtype">long</span> *, <span class="keywordtype">long</span> *); <span class="comment">/* Gets next hyd. results */</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keywordtype">char</span> setReactflag(<span class="keywordtype">void</span>); <span class="comment">/* Checks for reactive chem. */</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keywordtype">void</span> transport(<span class="keywordtype">long</span>); <span class="comment">/* Transports mass in network */</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keywordtype">void</span> initsegs(<span class="keywordtype">void</span>); <span class="comment">/* Initializes WQ segments */</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keywordtype">void</span> reorientsegs(<span class="keywordtype">void</span>); <span class="comment">/* Re-orients WQ segments */</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keywordtype">void</span> updatesegs(<span class="keywordtype">long</span>); <span class="comment">/* Updates quality in segments*/</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keywordtype">void</span> removesegs(<span class="keywordtype">int</span>); <span class="comment">/* Removes a WQ segment */</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="keywordtype">void</span> addseg(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>); <span class="comment">/* Adds a WQ segment to pipe */</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="keywordtype">void</span> accumulate(<span class="keywordtype">long</span>); <span class="comment">/* Sums mass flow into node */</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keywordtype">void</span> updatenodes(<span class="keywordtype">long</span>); <span class="comment">/* Updates WQ at nodes */</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="keywordtype">void</span> sourceinput(<span class="keywordtype">long</span>); <span class="comment">/* Computes source inputs */</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keywordtype">void</span> release(<span class="keywordtype">long</span>); <span class="comment">/* Releases mass from nodes */</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="keywordtype">void</span> updatetanks(<span class="keywordtype">long</span>); <span class="comment">/* Updates WQ in tanks */</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keywordtype">void</span> updatesourcenodes(<span class="keywordtype">long</span>); <span class="comment">/* Updates WQ at source nodes */</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="keywordtype">void</span> tankmix1(<span class="keywordtype">int</span>, <span class="keywordtype">long</span>); <span class="comment">/* Complete mix tank model */</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keywordtype">void</span> tankmix2(<span class="keywordtype">int</span>, <span class="keywordtype">long</span>); <span class="comment">/* 2-compartment tank model */</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">void</span> tankmix3(<span class="keywordtype">int</span>, <span class="keywordtype">long</span>); <span class="comment">/* FIFO tank model */</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="keywordtype">void</span> tankmix4(<span class="keywordtype">int</span>, <span class="keywordtype">long</span>); <span class="comment">/* LIFO tank model */</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="keywordtype">double</span> sourcequal(<a class="code" href="struct_ssource.html">Psource</a>); <span class="comment">/* Finds WQ input from source */</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="keywordtype">double</span> avgqual(<span class="keywordtype">int</span>); <span class="comment">/* Finds avg. quality in pipe */</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="keywordtype">void</span> ratecoeffs(<span class="keywordtype">void</span>); <span class="comment">/* Finds wall react. coeffs. */</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="keywordtype">double</span> piperate(<span class="keywordtype">int</span>); <span class="comment">/* Finds wall react. coeff. */</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="keywordtype">double</span> pipereact(<span class="keywordtype">int</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">long</span>);<span class="comment">/* Reacts water in a pipe */</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="keywordtype">double</span> tankreact(<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordtype">long</span>); <span class="comment">/* Reacts water in a tank */</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="keywordtype">double</span> bulkrate(<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>); <span class="comment">/* Finds bulk reaction rate */</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">double</span> wallrate(<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>);<span class="comment">/* Finds wall reaction rate */</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="comment">/* ------------ OUTPUT.C ---------------*/</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keywordtype">int</span> savenetdata(<span class="keywordtype">void</span>); <span class="comment">/* Saves basic data to file */</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="keywordtype">int</span> savehyd(<span class="keywordtype">long</span> *); <span class="comment">/* Saves hydraulic solution */</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="keywordtype">int</span> savehydstep(<span class="keywordtype">long</span> *); <span class="comment">/* Saves hydraulic timestep */</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="keywordtype">int</span> saveenergy(<span class="keywordtype">void</span>); <span class="comment">/* Saves energy usage */</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keywordtype">int</span> readhyd(<span class="keywordtype">long</span> *); <span class="comment">/* Reads hydraulics from file */</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keywordtype">int</span> readhydstep(<span class="keywordtype">long</span> *); <span class="comment">/* Reads time step from file */</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keywordtype">int</span> saveoutput(<span class="keywordtype">void</span>); <span class="comment">/* Saves results to file */</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keywordtype">int</span> nodeoutput(<span class="keywordtype">int</span>, REAL4 *, <span class="keywordtype">double</span>); <span class="comment">/* Saves node results to file */</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keywordtype">int</span> linkoutput(<span class="keywordtype">int</span>, REAL4 *, <span class="keywordtype">double</span>); <span class="comment">/* Saves link results to file */</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="keywordtype">int</span> savefinaloutput(<span class="keywordtype">void</span>); <span class="comment">/* Finishes saving output */</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="keywordtype">int</span> savetimestat(REAL4 *, <span class="keywordtype">char</span>); <span class="comment">/* Saves time stats to file */</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="keywordtype">int</span> savenetreacts(<span class="keywordtype">double</span>, <span class="keywordtype">double</span>,</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">double</span>, <span class="keywordtype">double</span>); <span class="comment">/* Saves react. rates to file */</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="keywordtype">int</span> saveepilog(<span class="keywordtype">void</span>); <span class="comment">/* Saves output file epilog */</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="comment">/* ------------ INPFILE.C --------------*/</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="keywordtype">int</span> saveinpfile(<span class="keywordtype">char</span> *); <span class="comment">/* Saves network to text file */</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor">#endif</span></div>
<div class="ttc" id="struct_floatlist_html"><div class="ttname"><a href="struct_floatlist.html">Floatlist</a></div><div class="ttdef"><b>Definition:</b> types.h:137</div></div>
<div class="ttc" id="struct_sadjlist_html"><div class="ttname"><a href="struct_sadjlist.html">Sadjlist</a></div><div class="ttdef"><b>Definition:</b> types.h:287</div></div>
<div class="ttc" id="struct_ssource_html"><div class="ttname"><a href="struct_ssource.html">Ssource</a></div><div class="ttdef"><b>Definition:</b> types.h:186</div></div>
<div class="ttc" id="struct_tmplist_html"><div class="ttname"><a href="struct_tmplist.html">Tmplist</a></div><div class="ttdef"><b>Definition:</b> types.h:144</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><b>funcs.h</b></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.8 </li>
</ul>
</div>
</body>
</html>