Initial commit: establish deterministic rod-string solver stack.
Set up the C solver core, Node API orchestration, TS GUI workflow, and engineering documentation with cleaned repo hygiene for private Git hosting. Made-with: Cursor
This commit is contained in:
70
gui-ts/src/ui/tabs/PumpTab.tsx
Normal file
70
gui-ts/src/ui/tabs/PumpTab.tsx
Normal file
@@ -0,0 +1,70 @@
|
||||
import type { CaseStore } from "../../state/useCaseStore";
|
||||
import { Fieldset } from "../common/Fieldset";
|
||||
import { Row } from "../common/Row";
|
||||
import { NumberField } from "../common/NumberField";
|
||||
import { SelectField } from "../common/SelectField";
|
||||
|
||||
type Props = { store: CaseStore };
|
||||
|
||||
export function PumpTab({ store }: Props) {
|
||||
const { state, update } = store;
|
||||
return (
|
||||
<div className="tab-grid two">
|
||||
<Fieldset legend="Pump Geometry">
|
||||
<Row
|
||||
label="Plunger Diameter"
|
||||
htmlFor="plungerDiam"
|
||||
hint="mm in base-case XML (converted to m if > 2)"
|
||||
>
|
||||
<NumberField
|
||||
id="plungerDiam"
|
||||
value={state.pumpDiameter}
|
||||
step={0.25}
|
||||
onChange={(v) => update("pumpDiameter", v)}
|
||||
/>
|
||||
</Row>
|
||||
<Row label="Pump Friction" htmlFor="pumpFric" hint="lbf (imperial)">
|
||||
<NumberField
|
||||
id="pumpFric"
|
||||
value={state.pumpFriction}
|
||||
step={10}
|
||||
onChange={(v) => update("pumpFriction", v)}
|
||||
/>
|
||||
</Row>
|
||||
<Row label="Pump Intake Pressure" htmlFor="pumpIntake" hint="psi (imperial)">
|
||||
<NumberField
|
||||
id="pumpIntake"
|
||||
value={state.pumpIntakePressure}
|
||||
step={1}
|
||||
onChange={(v) => update("pumpIntakePressure", v)}
|
||||
/>
|
||||
</Row>
|
||||
</Fieldset>
|
||||
|
||||
<Fieldset legend="Fillage">
|
||||
<Row label="Pump Fillage Option" htmlFor="fillageOpt">
|
||||
<SelectField
|
||||
id="fillageOpt"
|
||||
value={state.pumpFillageOption}
|
||||
onChange={(v) => update("pumpFillageOption", v)}
|
||||
options={[
|
||||
{ value: 0, label: "0 — auto" },
|
||||
{ value: 1, label: "1 — specified" },
|
||||
{ value: 2, label: "2 — incomplete fillage" }
|
||||
]}
|
||||
/>
|
||||
</Row>
|
||||
<Row label="Percent Pump Fillage (%)" htmlFor="pctFill">
|
||||
<NumberField
|
||||
id="pctFill"
|
||||
value={state.percentPumpFillage}
|
||||
step={1}
|
||||
min={0}
|
||||
max={100}
|
||||
onChange={(v) => update("percentPumpFillage", v)}
|
||||
/>
|
||||
</Row>
|
||||
</Fieldset>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user