PDA changes to improve convergence
This commit is contained in:
@@ -486,7 +486,7 @@ void demandheadloss(Project *pr, int i, double dp, double n,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Use power head loss function for demand less than full
|
// Use power head loss function for demand less than full
|
||||||
else if (r < 1.0)
|
else if (r <= 1.0) //(2.2.1)
|
||||||
{
|
{
|
||||||
*hgrad = n * dp * pow(r, n - 1.0) / dfull;
|
*hgrad = n * dp * pow(r, n - 1.0) / dfull;
|
||||||
// ... use linear function for very small gradient
|
// ... use linear function for very small gradient
|
||||||
|
|||||||
@@ -553,6 +553,10 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum)
|
|||||||
dh = hyd->NodeHead[i] - net->Node[i].El - hyd->Pmin;
|
dh = hyd->NodeHead[i] - net->Node[i].El - hyd->Pmin;
|
||||||
dq = (hloss - dh) / hgrad;
|
dq = (hloss - dh) / hgrad;
|
||||||
dq *= hyd->RelaxFactor;
|
dq *= hyd->RelaxFactor;
|
||||||
|
|
||||||
|
// Prevent a flow change greater than full demand //(2.2.1)
|
||||||
|
if (fabs(dq) > hyd->NodeDemand[i])
|
||||||
|
dq = 0.5 * SGN(dq) * hyd->NodeDemand[i];
|
||||||
hyd->DemandFlow[i] -= dq;
|
hyd->DemandFlow[i] -= dq;
|
||||||
|
|
||||||
// Update system flow summation
|
// Update system flow summation
|
||||||
|
|||||||
Reference in New Issue
Block a user