Merge pull request #242 from Mariosmsk/pr86

add ENsetdemandpattern. Closes #241
This commit is contained in:
Elad Salomons
2018-08-31 06:51:39 +03:00
committed by GitHub
6 changed files with 85 additions and 4 deletions

View File

@@ -484,6 +484,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);
}
@@ -4507,7 +4511,7 @@ int DLLEXPORT EN_getbasedemand(EN_ProjectHandle ph, int nodeIndex, int demandIdx
if (nodeIndex <= 0 || nodeIndex > p->network.Nnodes)
return set_error(p->error_handle, 203);
if (nodeIndex <= p->network.Njuncs) {
for (d = p->network.Node[nodeIndex].D; n < demandIdx && d != NULL; d = d->next) {
for (d = p->network.Node[nodeIndex].D; n < demandIdx && d->next != NULL; d = d->next) {
n++;
}
if (n != demandIdx) {
@@ -4540,7 +4544,7 @@ int DLLEXPORT EN_setbasedemand(EN_ProjectHandle ph, int nodeIndex, int demandIdx
if (nodeIndex <= 0 || nodeIndex > Nnodes)
return set_error(pr->error_handle, 203);
if (nodeIndex <= Njuncs) {
for (d = Node[nodeIndex].D; n < demandIdx && d != NULL; d = d->next)
for (d = Node[nodeIndex].D; n < demandIdx && d->next != NULL; d = d->next)
n++;
if (n != demandIdx)
return set_error(pr->error_handle, 253);
@@ -4549,6 +4553,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->next != 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;
@@ -4564,7 +4598,7 @@ int DLLEXPORT EN_getdemandpattern(EN_ProjectHandle ph, int nodeIndex, int demand
return set_error(p->error_handle, 102);
if (nodeIndex <= 0 || nodeIndex > Nnodes)
return set_error(p->error_handle, 203);
for (d = Node[nodeIndex].D; n < demandIdx && d != NULL; d = d->next)
for (d = Node[nodeIndex].D; n < demandIdx && d->next != NULL; d = d->next)
n++;
if (n != demandIdx)
return set_error(p->error_handle, 253);