Fix Incorrect Conversion of Feet of Pressure to Meters

#864
This commit is contained in:
lbutler
2025-07-09 23:36:56 -04:00
parent 375a772d2e
commit a9aa752d3a
2 changed files with 10 additions and 5 deletions

View File

@@ -1355,7 +1355,12 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value)
case EN_SP_GRAVITY: case EN_SP_GRAVITY:
if (value <= 0.0) return 213; 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; hyd->SpGrav = value;
break; break;
@@ -2285,7 +2290,7 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val
v = 0.0; v = 0.0;
if (Node[index].Ke > 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)); v = Ucf[FLOW] / pow((ecfTmp * Node[index].Ke), (1.0 / hyd->Qexp));
} }
break; 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) return 209;
if (value > 0.0) 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; value = pow((Ucf[FLOW] / value), hyd->Qexp) / ecfTmp;
} }
Node[index].Ke = value; Node[index].Ke = value;

View File

@@ -453,10 +453,10 @@ void initunits(Project *pr)
strcpy(rpt->Field[PRESSURE].Units, PressUnitsTxt[parser->Pressflag]); strcpy(rpt->Field[PRESSURE].Units, PressUnitsTxt[parser->Pressflag]);
pcf = PSIperFT * hyd->SpGrav; // Default to PSI 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 == KPA) pcf = KPAperPSI * PSIperFT * hyd->SpGrav;
if (parser->Pressflag == BAR) pcf = BARperPSI * 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, ""); strcpy(rpt->Field[QUALITY].Units, "");
ccf = 1.0; ccf = 1.0;