diff --git a/src/epanet.c b/src/epanet.c index e4f3683..1569305 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1355,7 +1355,12 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) case EN_SP_GRAVITY: if (value <= 0.0) return 213; - Ucf[PRESSURE] *= (value / hyd->SpGrav); + if (p->parser.Pressflag == PSI || + p->parser.Pressflag == KPA || + p->parser.Pressflag == BAR) + { + Ucf[PRESSURE] *= (value / hyd->SpGrav); + } hyd->SpGrav = value; break; @@ -2285,7 +2290,7 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val v = 0.0; if (Node[index].Ke > 0.0) { - ecfTmp = (parser->Unitsflag == US) ? (PSIperFT * hyd->SpGrav) : (MperFT * hyd->SpGrav); + ecfTmp = (parser->Unitsflag == US) ? (PSIperFT * hyd->SpGrav) : MperFT; v = Ucf[FLOW] / pow((ecfTmp * Node[index].Ke), (1.0 / hyd->Qexp)); } break; @@ -2533,7 +2538,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu if (value < 0.0) return 209; if (value > 0.0) { - ecfTmp = (parser->Unitsflag == US) ? (PSIperFT * hyd->SpGrav) : (MperFT * hyd->SpGrav); + ecfTmp = (parser->Unitsflag == US) ? (PSIperFT * hyd->SpGrav) : MperFT; value = pow((Ucf[FLOW] / value), hyd->Qexp) / ecfTmp; } Node[index].Ke = value; diff --git a/src/input1.c b/src/input1.c index 94a7a3e..0773e23 100644 --- a/src/input1.c +++ b/src/input1.c @@ -453,10 +453,10 @@ void initunits(Project *pr) strcpy(rpt->Field[PRESSURE].Units, PressUnitsTxt[parser->Pressflag]); pcf = PSIperFT * hyd->SpGrav; // Default to PSI - if (parser->Pressflag == METERS) pcf = MperFT * hyd->SpGrav; + if (parser->Pressflag == METERS) pcf = MperFT; if (parser->Pressflag == KPA) pcf = KPAperPSI * PSIperFT * hyd->SpGrav; if (parser->Pressflag == BAR) pcf = BARperPSI * PSIperFT * hyd->SpGrav; - if (parser->Pressflag == FEET) pcf = 1.0 * hyd->SpGrav; + if (parser->Pressflag == FEET) pcf = 1.0; strcpy(rpt->Field[QUALITY].Units, ""); ccf = 1.0;