epyt-flow 0.14.0__py3-none-any.whl → 0.14.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. epyt_flow/EPANET/EPANET/SRC_engines/AUTHORS +40 -8
  2. epyt_flow/EPANET/EPANET/SRC_engines/LICENSE +3 -3
  3. epyt_flow/EPANET/EPANET/SRC_engines/enumstxt.h +24 -7
  4. epyt_flow/EPANET/EPANET/SRC_engines/epanet.c +726 -374
  5. epyt_flow/EPANET/EPANET/SRC_engines/epanet2.c +128 -32
  6. epyt_flow/EPANET/EPANET/SRC_engines/errors.dat +7 -1
  7. epyt_flow/EPANET/EPANET/SRC_engines/flowbalance.c +186 -0
  8. epyt_flow/EPANET/EPANET/SRC_engines/funcs.h +40 -14
  9. epyt_flow/EPANET/EPANET/SRC_engines/hash.c +177 -177
  10. epyt_flow/EPANET/EPANET/SRC_engines/hash.h +28 -28
  11. epyt_flow/EPANET/EPANET/SRC_engines/hydcoeffs.c +192 -40
  12. epyt_flow/EPANET/EPANET/SRC_engines/hydraul.c +101 -46
  13. epyt_flow/EPANET/EPANET/SRC_engines/hydsolver.c +85 -24
  14. epyt_flow/EPANET/EPANET/SRC_engines/hydstatus.c +29 -63
  15. epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2.h +70 -37
  16. epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2_2.h +408 -234
  17. epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2_enums.h +87 -37
  18. epyt_flow/EPANET/EPANET/SRC_engines/inpfile.c +153 -79
  19. epyt_flow/EPANET/EPANET/SRC_engines/input1.c +59 -94
  20. epyt_flow/EPANET/EPANET/SRC_engines/input2.c +73 -202
  21. epyt_flow/EPANET/EPANET/SRC_engines/input3.c +446 -351
  22. epyt_flow/EPANET/EPANET/SRC_engines/leakage.c +527 -0
  23. epyt_flow/EPANET/EPANET/SRC_engines/mempool.c +8 -4
  24. epyt_flow/EPANET/EPANET/SRC_engines/mempool.h +23 -23
  25. epyt_flow/EPANET/EPANET/SRC_engines/output.c +5 -4
  26. epyt_flow/EPANET/EPANET/SRC_engines/project.c +407 -75
  27. epyt_flow/EPANET/EPANET/SRC_engines/quality.c +12 -2
  28. epyt_flow/EPANET/EPANET/SRC_engines/qualreact.c +70 -13
  29. epyt_flow/EPANET/EPANET/SRC_engines/qualroute.c +7 -5
  30. epyt_flow/EPANET/EPANET/SRC_engines/report.c +88 -20
  31. epyt_flow/EPANET/EPANET/SRC_engines/rules.c +144 -6
  32. epyt_flow/EPANET/EPANET/SRC_engines/smatrix.c +19 -19
  33. epyt_flow/EPANET/EPANET/SRC_engines/text.h +16 -5
  34. epyt_flow/EPANET/EPANET/SRC_engines/types.h +73 -19
  35. epyt_flow/EPANET/EPANET/SRC_engines/util/cstr_helper.c +59 -0
  36. epyt_flow/EPANET/EPANET/SRC_engines/util/cstr_helper.h +38 -0
  37. epyt_flow/EPANET/EPANET/SRC_engines/util/errormanager.c +92 -0
  38. epyt_flow/EPANET/EPANET/SRC_engines/util/errormanager.h +39 -0
  39. epyt_flow/EPANET/EPANET/SRC_engines/util/filemanager.c +212 -0
  40. epyt_flow/EPANET/EPANET/SRC_engines/util/filemanager.h +81 -0
  41. epyt_flow/EPANET/EPANET/SRC_engines/validate.c +408 -0
  42. epyt_flow/EPANET/compile_linux.sh +1 -1
  43. epyt_flow/EPANET/compile_macos.sh +1 -1
  44. epyt_flow/VERSION +1 -1
  45. epyt_flow/gym/scenario_control_env.py +26 -3
  46. epyt_flow/simulation/events/quality_events.py +6 -6
  47. epyt_flow/simulation/events/sensor_faults.py +24 -24
  48. epyt_flow/simulation/events/system_event.py +3 -3
  49. epyt_flow/simulation/scada/scada_data.py +1 -1
  50. epyt_flow/simulation/scenario_simulator.py +14 -11
  51. epyt_flow/topology.py +8 -1
  52. epyt_flow/uncertainty/model_uncertainty.py +292 -150
  53. {epyt_flow-0.14.0.dist-info → epyt_flow-0.14.1.dist-info}/METADATA +2 -2
  54. {epyt_flow-0.14.0.dist-info → epyt_flow-0.14.1.dist-info}/RECORD +57 -51
  55. epyt_flow/EPANET/EPANET/SRC_engines/Readme_SRC_Engines.txt +0 -18
  56. epyt_flow/EPANET/EPANET/SRC_engines/epanet2.def +0 -131
  57. epyt_flow/EPANET/EPANET/SRC_engines/main.c +0 -93
  58. {epyt_flow-0.14.0.dist-info → epyt_flow-0.14.1.dist-info}/WHEEL +0 -0
  59. {epyt_flow-0.14.0.dist-info → epyt_flow-0.14.1.dist-info}/licenses/LICENSE +0 -0
  60. {epyt_flow-0.14.0.dist-info → epyt_flow-0.14.1.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,13 @@
1
1
  /*
2
2
  ******************************************************************************
3
3
  Project: OWA EPANET
4
- Version: 2.2
4
+ Version: 2.3
5
5
  Module: hydstatus.c
6
6
  Description: updates hydraulic status of network elements
7
7
  Authors: see AUTHORS
8
8
  Copyright: see AUTHORS
9
9
  License: see LICENSE
10
- Last Updated: 05/15/2019
10
+ Last Updated: 02/03/2023
11
11
  ******************************************************************************
12
12
  */
13
13
 
@@ -27,7 +27,7 @@ static StatusType pumpstatus(Project *, int, double);
27
27
  static StatusType prvstatus(Project *, int, StatusType, double, double, double);
28
28
  static StatusType psvstatus(Project *, int, StatusType, double, double, double);
29
29
  static StatusType fcvstatus(Project *, int, StatusType, double, double);
30
- static void tankstatus(Project *, int, int, int);
30
+ static void tankstatus(Project *, int, int, double);
31
31
 
32
32
 
33
33
  int valvestatus(Project *pr)
@@ -155,10 +155,8 @@ int linkstatus(Project *pr)
155
155
  }
156
156
 
157
157
  // Check for flow into (out of) full (empty) tanks
158
- if (n1 > net->Njuncs || n2 > net->Njuncs)
159
- {
160
- tankstatus(pr, k, n1, n2);
161
- }
158
+ if (n1 > net->Njuncs) tankstatus(pr, k, n1, hyd->LinkFlow[k]);
159
+ if (n2 > net->Njuncs) tankstatus(pr, k, n2, -hyd->LinkFlow[k]);
162
160
 
163
161
  // Note any change in link status; do not revise link flow
164
162
  if (status != hyd->LinkStatus[k])
@@ -224,6 +222,7 @@ StatusType pumpstatus(Project *pr, int k, double dh)
224
222
  {
225
223
  // Use huge value for constant HP pump
226
224
  hmax = BIG;
225
+ if (hyd->LinkFlow[k] < TINY) return TEMPCLOSED;
227
226
  }
228
227
  else
229
228
  {
@@ -394,16 +393,25 @@ StatusType fcvstatus(Project *pr, int k, StatusType s, double h1, double h2)
394
393
  {
395
394
  status = ACTIVE;
396
395
  }
396
+
397
+ // Active valve's loss coeff. can't be < fully open loss coeff.
398
+ else if (status == ACTIVE)
399
+ {
400
+ if ((h1 - h2) / SQR(hyd->LinkFlow[k]) < pr->network.Link[k].Km)
401
+ {
402
+ status = XFCV;
403
+ }
404
+ }
397
405
  return status;
398
406
  }
399
407
 
400
408
 
401
- void tankstatus(Project *pr, int k, int n1, int n2)
409
+ void tankstatus(Project *pr, int k, int n, double q)
402
410
  /*
403
411
  **----------------------------------------------------------------
404
- ** Input: k = link index
405
- ** n1 = start node of link
406
- ** n2 = end node of link
412
+ ** Input: k = link index
413
+ ** n = tank node index
414
+ ** q = link flow rate out of (+) or into (-) tank
407
415
  ** Output: none
408
416
  ** Purpose: closes link flowing into full or out of empty tank
409
417
  **----------------------------------------------------------------
@@ -412,65 +420,23 @@ void tankstatus(Project *pr, int k, int n1, int n2)
412
420
  Network *net = &pr->network;
413
421
  Hydraul *hyd = &pr->hydraul;
414
422
 
415
- int i, n;
416
- double h, q;
423
+ int i;
417
424
  Stank *tank;
418
425
  Slink *link = &net->Link[k];
419
426
 
420
427
  // Return if link is closed
421
428
  if (hyd->LinkStatus[k] <= CLOSED) return;
422
429
 
423
- // Make node n1 be the tank, reversing flow (q) if need be
424
- q = hyd->LinkFlow[k];
425
- i = n1 - net->Njuncs;
426
- if (i <= 0)
427
- {
428
- i = n2 - net->Njuncs;
429
- if (i <= 0) return;
430
- n = n1;
431
- n1 = n2;
432
- n2 = n;
433
- q = -q;
434
- }
435
-
436
430
  // Ignore reservoirs
431
+ i = n - net->Njuncs;
437
432
  tank = &net->Tank[i];
438
433
  if (tank->A == 0.0) return;
439
-
440
- // Find head difference across link
441
- h = hyd->NodeHead[n1] - hyd->NodeHead[n2];
442
-
443
- // If tank is full, then prevent flow into it
444
- if (hyd->NodeHead[n1] >= tank->Hmax - hyd->Htol && !tank->CanOverflow)
445
- {
446
- // Case 1: Link is a pump discharging into tank
447
- if (link->Type == PUMP)
448
- {
449
- if (link->N2 == n1) hyd->LinkStatus[k] = TEMPCLOSED;
450
- }
451
-
452
- // Case 2: Downstream head > tank head
453
- // (e.g., an open outflow check valve would close)
454
- else if (cvstatus(pr, OPEN, h, q) == CLOSED)
455
- {
456
- hyd->LinkStatus[k] = TEMPCLOSED;
457
- }
458
- }
459
-
460
- // If tank is empty, then prevent flow out of it
461
- if (hyd->NodeHead[n1] <= tank->Hmin + hyd->Htol)
462
- {
463
- // Case 1: Link is a pump discharging from tank
464
- if (link->Type == PUMP)
465
- {
466
- if (link->N1 == n1) hyd->LinkStatus[k] = TEMPCLOSED;
467
- }
468
-
469
- // Case 2: Tank head > downstream head
470
- // (e.g., a closed outflow check valve would open)
471
- else if (cvstatus(pr, CLOSED, h, q) == OPEN)
472
- {
473
- hyd->LinkStatus[k] = TEMPCLOSED;
474
- }
475
- }
434
+
435
+ // Can't add flow to a full tank
436
+ if (hyd->NodeHead[n] >= tank->Hmax && !tank->CanOverflow && q < 0.0)
437
+ hyd->LinkStatus[k] = TEMPCLOSED;
438
+
439
+ // Can't remove flow from an empty tank
440
+ else if (hyd->NodeHead[n] <= tank->Hmin && q > 0.0)
441
+ hyd->LinkStatus[k] = TEMPCLOSED;
476
442
  }
@@ -1,13 +1,13 @@
1
1
  /*
2
2
  ******************************************************************************
3
3
  Project: OWA EPANET
4
- Version: 2.2
4
+ Version: 2.3
5
5
  Module: epanet2.h
6
6
  Description: declarations of the legacy style EPANET 2 API functions
7
7
  Authors: see AUTHORS
8
8
  Copyright: see AUTHORS
9
9
  License: see LICENSE
10
- Last Updated: 10/29/2019
10
+ Last Updated: 02/14/2025
11
11
  ******************************************************************************
12
12
  */
13
13
 
@@ -18,7 +18,7 @@ set of thread safe API functions that allows one to run concurrent analyses on
18
18
  multiple EPANET projects can be found in the epanet2_2.h header file. The two
19
19
  APIs share the same function names and arguments with the difference being that
20
20
  the thread safe functions use the prefix "EN_" and include an extra argument that
21
- represents the EPANET project being analyzed. To avoid unneccesary repetition,
21
+ represents the EPANET project being analyzed. To avoid unnecessary repetition,
22
22
  only the thread safe API functions have been documented. To see a description of
23
23
  a legacy style API function declared here please refer to its complementary named
24
24
  function in epanet2_2.h.
@@ -72,14 +72,21 @@ extern "C" {
72
72
 
73
73
  int DLLEXPORT ENopen(const char *inpFile, const char *rptFile,
74
74
  const char *outFile);
75
-
75
+
76
+ int DLLEXPORT ENopenX(const char *inpFile, const char *rptFile,
77
+ const char *outFile);
78
+
76
79
  int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3);
77
-
78
- int DLLEXPORT ENsettitle(char *line1, char *line2, char *line3);
80
+
81
+ int DLLEXPORT ENsettitle(const char *line1, const char *line2, const char *line3);
79
82
 
80
83
  int DLLEXPORT ENgetcomment(int object, int index, char *comment);
81
84
 
82
- int DLLEXPORT ENsetcomment(int object, int index, char *comment);
85
+ int DLLEXPORT ENsetcomment(int object, int index, const char *comment);
86
+
87
+ int DLLEXPORT ENgettag(int object, int index, char *tag);
88
+
89
+ int DLLEXPORT ENsettag(int object, int index, const char *tag);
83
90
 
84
91
  int DLLEXPORT ENgetcount(int object, int *count);
85
92
 
@@ -107,9 +114,9 @@ extern "C" {
107
114
 
108
115
  int DLLEXPORT ENcloseH();
109
116
 
110
- int DLLEXPORT ENsavehydfile(char *filename);
117
+ int DLLEXPORT ENsavehydfile(const char *filename);
111
118
 
112
- int DLLEXPORT ENusehydfile(char *filename);
119
+ int DLLEXPORT ENusehydfile(const char *filename);
113
120
 
114
121
  /********************************************************************
115
122
 
@@ -137,17 +144,17 @@ extern "C" {
137
144
 
138
145
  ********************************************************************/
139
146
 
140
- int DLLEXPORT ENwriteline(char *line);
147
+ int DLLEXPORT ENwriteline(const char *line);
141
148
 
142
149
  int DLLEXPORT ENreport();
143
150
 
144
- int DLLEXPORT ENcopyreport(char *filename);
151
+ int DLLEXPORT ENcopyreport(const char *filename);
145
152
 
146
153
  int DLLEXPORT ENclearreport();
147
154
 
148
155
  int DLLEXPORT ENresetreport();
149
156
 
150
- int DLLEXPORT ENsetreport(char *format);
157
+ int DLLEXPORT ENsetreport(const char *format);
151
158
 
152
159
  int DLLEXPORT ENsetstatusreport(int level);
153
160
 
@@ -156,9 +163,16 @@ extern "C" {
156
163
  int DLLEXPORT ENgeterror(int errcode, char *errmsg, int maxLen);
157
164
 
158
165
  int DLLEXPORT ENgetstatistic(int type, EN_API_FLOAT_TYPE* value);
159
-
166
+
160
167
  int DLLEXPORT ENgetresultindex(int type, int index, int *value);
161
168
 
169
+ int DLLEXPORT ENtimetonextevent(int *eventType, long *duration, int *elementIndex);
170
+
171
+ int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, const char*));
172
+
173
+ int DLLEXPORT ENsetreportcallbackuserdata(void *userData);
174
+
175
+
162
176
  /********************************************************************
163
177
 
164
178
  Analysis Options Functions
@@ -182,8 +196,8 @@ extern "C" {
182
196
 
183
197
  int DLLEXPORT ENgetqualtype(int *qualType, int *traceNode);
184
198
 
185
- int DLLEXPORT ENsetqualtype(int qualType, char *chemName, char *chemUnits,
186
- char *traceNode);
199
+ int DLLEXPORT ENsetqualtype(int qualType, const char *chemName,
200
+ const char *chemUnits, const char *traceNode);
187
201
 
188
202
  /********************************************************************
189
203
 
@@ -191,29 +205,31 @@ extern "C" {
191
205
 
192
206
  ********************************************************************/
193
207
 
194
- int DLLEXPORT ENaddnode(char *id, int nodeType, int *index);
208
+ int DLLEXPORT ENaddnode(const char *id, int nodeType, int *index);
195
209
 
196
210
  int DLLEXPORT ENdeletenode(int index, int actionCode);
197
211
 
198
- int DLLEXPORT ENgetnodeindex(char *id, int *index);
212
+ int DLLEXPORT ENgetnodeindex(const char *id, int *index);
199
213
 
200
214
  int DLLEXPORT ENgetnodeid(int index, char *id);
201
215
 
202
- int DLLEXPORT ENsetnodeid(int index, char *newid);
216
+ int DLLEXPORT ENsetnodeid(int index, const char *newid);
203
217
 
204
218
  int DLLEXPORT ENgetnodetype(int index, int *nodeType);
205
219
 
206
220
  int DLLEXPORT ENgetnodevalue(int index, int property, EN_API_FLOAT_TYPE *value);
207
221
 
222
+ int DLLEXPORT ENgetnodevalues(int property, EN_API_FLOAT_TYPE *value);
223
+
208
224
  int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value);
209
225
 
210
226
  int DLLEXPORT ENsetjuncdata(int index, EN_API_FLOAT_TYPE elev,
211
- EN_API_FLOAT_TYPE dmnd, char *dmndpat);
227
+ EN_API_FLOAT_TYPE dmnd, const char *dmndpat);
212
228
 
213
229
  int DLLEXPORT ENsettankdata(int index, EN_API_FLOAT_TYPE elev,
214
230
  EN_API_FLOAT_TYPE initlvl, EN_API_FLOAT_TYPE minlvl,
215
231
  EN_API_FLOAT_TYPE maxlvl, EN_API_FLOAT_TYPE diam,
216
- EN_API_FLOAT_TYPE minvol, char *volcurve);
232
+ EN_API_FLOAT_TYPE minvol, const char *volcurve);
217
233
 
218
234
  int DLLEXPORT ENgetcoord(int index, double *x, double *y);
219
235
 
@@ -232,13 +248,14 @@ extern "C" {
232
248
  EN_API_FLOAT_TYPE preq, EN_API_FLOAT_TYPE pexp);
233
249
 
234
250
  int DLLEXPORT ENadddemand(int nodeIndex, EN_API_FLOAT_TYPE baseDemand,
235
- char *demandPattern, char *demandName);
251
+ const char *demandPattern, const char *demandName);
236
252
 
237
253
  int DLLEXPORT ENdeletedemand(int nodeIndex, int demandIndex);
238
-
254
+
239
255
  int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands);
240
256
 
241
- int DLLEXPORT ENgetdemandindex(int nodeIndex, char *demandName, int *demandIndex);
257
+ int DLLEXPORT ENgetdemandindex(int nodeIndex, const char *demandName,
258
+ int *demandIndex);
242
259
 
243
260
  int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIndex,
244
261
  EN_API_FLOAT_TYPE *baseDemand);
@@ -252,7 +269,7 @@ extern "C" {
252
269
 
253
270
  int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIndex, char *demandName);
254
271
 
255
- int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, char *demandName);
272
+ int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, const char *demandName);
256
273
 
257
274
  /********************************************************************
258
275
 
@@ -260,15 +277,16 @@ extern "C" {
260
277
 
261
278
  ********************************************************************/
262
279
 
263
- int DLLEXPORT ENaddlink(char *id, int linkType, char *fromNode, char *toNode, int *index);
280
+ int DLLEXPORT ENaddlink(const char *id, int linkType, const char *fromNode,
281
+ const char *toNode, int *index);
264
282
 
265
283
  int DLLEXPORT ENdeletelink(int index, int actionCode);
266
284
 
267
- int DLLEXPORT ENgetlinkindex(char *id, int *index);
285
+ int DLLEXPORT ENgetlinkindex(const char *id, int *index);
268
286
 
269
287
  int DLLEXPORT ENgetlinkid(int index, char *id);
270
288
 
271
- int DLLEXPORT ENsetlinkid(int index, char *newid);
289
+ int DLLEXPORT ENsetlinkid(int index, const char *newid);
272
290
 
273
291
  int DLLEXPORT ENgetlinktype(int index, int *linkType);
274
292
 
@@ -280,16 +298,20 @@ extern "C" {
280
298
 
281
299
  int DLLEXPORT ENgetlinkvalue(int index, int property, EN_API_FLOAT_TYPE *value);
282
300
 
301
+ int DLLEXPORT ENgetlinkvalues(int property, EN_API_FLOAT_TYPE *value);
302
+
283
303
  int DLLEXPORT ENsetlinkvalue(int index, int property, EN_API_FLOAT_TYPE value);
284
304
 
285
305
  int DLLEXPORT ENsetpipedata(int index, EN_API_FLOAT_TYPE length,
286
306
  EN_API_FLOAT_TYPE diam, EN_API_FLOAT_TYPE rough,
287
307
  EN_API_FLOAT_TYPE mloss);
288
-
308
+
289
309
  int DLLEXPORT ENgetvertexcount(int index, int *count);
290
-
310
+
291
311
  int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y);
292
-
312
+
313
+ int DLLEXPORT ENsetvertex(int index, int vertex, double x, double y);
314
+
293
315
  int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count);
294
316
 
295
317
  /********************************************************************
@@ -310,15 +332,15 @@ extern "C" {
310
332
 
311
333
  ********************************************************************/
312
334
 
313
- int DLLEXPORT ENaddpattern(char *id);
335
+ int DLLEXPORT ENaddpattern(const char *id);
314
336
 
315
337
  int DLLEXPORT ENdeletepattern(int index);
316
338
 
317
- int DLLEXPORT ENgetpatternindex(char *id, int *index);
339
+ int DLLEXPORT ENgetpatternindex(const char *id, int *index);
318
340
 
319
341
  int DLLEXPORT ENgetpatternid(int index, char *id);
320
342
 
321
- int DLLEXPORT ENsetpatternid(int index, char *id);
343
+ int DLLEXPORT ENsetpatternid(int index, const char *id);
322
344
 
323
345
  int DLLEXPORT ENgetpatternlen(int index, int *len);
324
346
 
@@ -330,26 +352,30 @@ extern "C" {
330
352
 
331
353
  int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *values, int len);
332
354
 
355
+ int DLLEXPORT ENloadpatternfile(const char *filename, const char *id);
356
+
333
357
  /********************************************************************
334
358
 
335
359
  Data Curve Functions
336
360
 
337
361
  ********************************************************************/
338
362
 
339
- int DLLEXPORT ENaddcurve(char *id);
363
+ int DLLEXPORT ENaddcurve(const char *id);
340
364
 
341
365
  int DLLEXPORT ENdeletecurve(int index);
342
366
 
343
- int DLLEXPORT ENgetcurveindex(char *id, int *index);
367
+ int DLLEXPORT ENgetcurveindex(const char *id, int *index);
344
368
 
345
369
  int DLLEXPORT ENgetcurveid(int index, char *id);
346
370
 
347
- int DLLEXPORT ENsetcurveid(int index, char *id);
371
+ int DLLEXPORT ENsetcurveid(int index, const char *id);
348
372
 
349
373
  int DLLEXPORT ENgetcurvelen(int index, int *len);
350
374
 
351
375
  int DLLEXPORT ENgetcurvetype(int index, int *type);
352
376
 
377
+ int DLLEXPORT ENsetcurvetype(int index, int type);
378
+
353
379
  int DLLEXPORT ENgetcurvevalue(int curveIndex, int pointIndex,
354
380
  EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y);
355
381
 
@@ -379,6 +405,9 @@ extern "C" {
379
405
  int DLLEXPORT ENsetcontrol(int index, int type, int linkIndex,
380
406
  EN_API_FLOAT_TYPE setting, int nodeIndex, EN_API_FLOAT_TYPE level);
381
407
 
408
+ int DLLEXPORT ENgetcontrolenabled(int index, int *out_enabled);
409
+
410
+ int DLLEXPORT ENsetcontrolenabled(int index, int enabled);
382
411
 
383
412
  /********************************************************************
384
413
 
@@ -421,9 +450,13 @@ extern "C" {
421
450
 
422
451
  int DLLEXPORT ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex,
423
452
  int status, EN_API_FLOAT_TYPE setting);
424
-
453
+
425
454
  int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority);
426
455
 
456
+ int DLLEXPORT ENgetruleenabled(int index, int *out_enabled);
457
+
458
+ int DLLEXPORT ENsetruleenabled(int index, int enabled);
459
+
427
460
  #if defined(__cplusplus)
428
461
  }
429
462
  #endif