add ENsetdemandpattern
This commit is contained in:
@@ -254,6 +254,7 @@ Public Const EN_G_CURVE = 4 ' General\default curve
|
||||
Declare Function ENsetqualtype Lib "epanet2.dll" (ByVal QualCode As Long, ByVal ChemName As String, ByVal ChemUnits As String, ByVal TraceNode As String) As Long
|
||||
Declare Function ENgetqualinfo Lib "epanet2.dll" (QualCode As Long, ByVal ChemName As String, ByVal ChemUnits As String, TraceNode As Long) As Long
|
||||
Declare Function ENsetbasedemand Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal DemandIndex As Long, ByVal BaseDemand As Single) As Long
|
||||
Declare Function ENsetdemandpattern Lib "epanet2.dll" (ByVal Index As Long, ByVal DemandIndex As Long, ByVal PatIndex As Long) As Long
|
||||
|
||||
Declare Function ENgetcurveindex Lib "epanet2.dll" (ByVal id As String, index As Long) As Long
|
||||
Declare Function ENgetcurveid Lib "epanet2.dll" (ByVal index As Long, ByVal id As String) As Long
|
||||
|
||||
@@ -933,6 +933,15 @@ extern "C" {
|
||||
*/
|
||||
int DLLEXPORT ENsetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE baseDemand);
|
||||
|
||||
/**
|
||||
@brief Sets the index of the demand pattern assigned to a node for a category index.
|
||||
@param nodeIndex The index of a node (first node is index 1).
|
||||
@param demandIndex The index of a category (first category is index 1).
|
||||
@param pattIndex The index of the pattern for this node and category.
|
||||
@return Error code
|
||||
*/
|
||||
int DLLEXPORT ENsetdemandpattern(int nodeIndex, int demandIdx, int patIndex);
|
||||
|
||||
/**
|
||||
@brief Retrieves index of curve with specific ID.
|
||||
@param id The ID of a curve.
|
||||
@@ -1265,6 +1274,7 @@ extern "C" {
|
||||
|
||||
int DLLEXPORT EN_getqualinfo(EN_ProjectHandle ph, int *qualcode, char *chemname, char *chemunits, int *tracenode);
|
||||
int DLLEXPORT EN_setbasedemand(EN_ProjectHandle ph, int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE baseDemand);
|
||||
int DLLEXPORT EN_setdemandpattern(EN_ProjectHandle ph, int nodeIndex, int demandIdx, int patIndex);
|
||||
int DLLEXPORT EN_getcurveindex(EN_ProjectHandle ph, char *id, int *index);
|
||||
int DLLEXPORT EN_getcurveid(EN_ProjectHandle ph, int index, char *id);
|
||||
int DLLEXPORT EN_getcurvelen(EN_ProjectHandle ph, int index, int *len);
|
||||
|
||||
@@ -197,8 +197,10 @@ Public Const EN_CUSTOM = 2 ' user-defined custom curve
|
||||
Declare Function ENsetcoord Lib "epanet2.dll" (ByVal Index As Int32, ByVal X As Single, ByVal Y As Single) As Int32
|
||||
|
||||
Declare Function ENgetnumdemands Lib "epanet2.dll" (ByVal Index As Int32, ByRef numDemands As Int32) As Int32 'ES
|
||||
Declare Function ENgetbasedemand Lib "epanet2.dll" (ByVal Index As Int32, ByVal DemandIndex As Int32, ByRef Value As Single) As Int32 'ES
|
||||
Declare Function ENgetbasedemand Lib "epanet2.dll" (ByVal Index As Int32, ByVal DemandIndex As Int32, ByRef BaseDemand As Single) As Int32 'ES
|
||||
Declare Function ENsetbasedemand Lib "epanet2.dll" (ByVal Index As Int32, ByVal DemandIndex As Int32, ByVal BaseDemand As Single) As Int32 'ES
|
||||
Declare Function ENgetdemandpattern Lib "epanet2.dll" (ByVal Index As Int32, ByVal DemandIndex As Int32, ByRef PatIndex As Int32) As Int32 'ES
|
||||
Declare Function ENsetdemandpattern Lib "epanet2.dll" (ByVal Index As Int32, ByVal DemandIndex As Int32, ByVal PatIndex As Int32) As Int32 'ES
|
||||
|
||||
Declare Function ENgetlinkindex Lib "epanet2.dll" (ByVal ID As String, ByRef Index As Int32) As Int32
|
||||
Declare Function ENgetlinkid Lib "epanet2.dll" (ByVal Index As Int32, ByVal ID As StringBuilder) As Int32
|
||||
|
||||
34
src/epanet.c
34
src/epanet.c
@@ -473,6 +473,10 @@ int DLLEXPORT ENsetbasedemand(int nodeIndex, int demandIdx,
|
||||
return EN_setbasedemand(_defaultModel, nodeIndex, demandIdx, baseDemand);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetdemandpattern(int nodeIndex, int demandIdx, int patIndex) {
|
||||
return EN_setdemandpattern(_defaultModel, nodeIndex, demandIdx, patIndex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx) {
|
||||
return EN_getdemandpattern(_defaultModel, nodeIndex, demandIdx, pattIdx);
|
||||
}
|
||||
@@ -4516,6 +4520,36 @@ int DLLEXPORT EN_setbasedemand(EN_ProjectHandle ph, int nodeIndex, int demandIdx
|
||||
return set_error(pr->error_handle, 0);
|
||||
}
|
||||
|
||||
int DLLEXPORT EN_setdemandpattern(EN_ProjectHandle ph, int nodeIndex, int demandIdx, int patIndex) {
|
||||
|
||||
EN_Project *pr = (EN_Project*)ph;
|
||||
|
||||
EN_Network *net = &pr->network;
|
||||
Snode *Node = net->Node;
|
||||
|
||||
const int Nnodes = net->Nnodes;
|
||||
const int Njuncs = net->Njuncs;
|
||||
const int Npats = net->Npats;
|
||||
|
||||
Pdemand d;
|
||||
int n = 1;
|
||||
/* Check for valid arguments */
|
||||
if (!pr->Openflag)
|
||||
return set_error(pr->error_handle, 102);
|
||||
if (nodeIndex <= 0 || nodeIndex > Nnodes)
|
||||
return set_error(pr->error_handle, 203);
|
||||
if (patIndex < 1 || patIndex > Npats)
|
||||
return(205);
|
||||
if (nodeIndex <= Njuncs) {
|
||||
for (d = Node[nodeIndex].D; n < demandIdx && d != NULL; d = d->next)
|
||||
n++;
|
||||
if (n != demandIdx)
|
||||
return set_error(pr->error_handle, 253);
|
||||
d->Pat = patIndex;
|
||||
}
|
||||
return set_error(pr->error_handle, 0);
|
||||
}
|
||||
|
||||
int DLLEXPORT EN_getdemandpattern(EN_ProjectHandle ph, int nodeIndex, int demandIdx, int *pattIdx) {
|
||||
|
||||
EN_Project *p = (EN_Project*)ph;
|
||||
|
||||
Reference in New Issue
Block a user