updates
This commit is contained in:
57
test/basic/hydraulic-model.basic.test.js
Normal file
57
test/basic/hydraulic-model.basic.test.js
Normal file
@@ -0,0 +1,57 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
|
||||
const { ValveHydraulicModel } = require('../../src/hydraulicModel');
|
||||
|
||||
test('hydraulic model gas branch keeps existing formula when not choked', () => {
|
||||
const model = new ValveHydraulicModel({ serviceType: 'gas', gasChokedRatioLimit: 0.9 });
|
||||
const result = model.calculateDeltaPMbar({
|
||||
qM3h: 36,
|
||||
kv: 10,
|
||||
downstreamGaugeMbar: 500,
|
||||
rho: 1.204,
|
||||
tempK: 293.15,
|
||||
});
|
||||
|
||||
const p2AbsBar = (500 / 1000) + 1.01325;
|
||||
const expectedDeltaPMbar = ((36 ** 2 * 1.204 * 293.15) / (514 ** 2 * 10 ** 2 * p2AbsBar)) * 1000;
|
||||
|
||||
assert.ok(result);
|
||||
assert.ok(Math.abs(result.deltaPMbar - expectedDeltaPMbar) < 0.05, `expected ${expectedDeltaPMbar}, got ${result.deltaPMbar}`);
|
||||
assert.equal(result.details.isChoked, false);
|
||||
});
|
||||
|
||||
test('hydraulic model gas branch applies choked-flow cap', () => {
|
||||
const model = new ValveHydraulicModel({ serviceType: 'gas', gasChokedRatioLimit: 0.2 });
|
||||
const result = model.calculateDeltaPMbar({
|
||||
qM3h: 1000,
|
||||
kv: 1,
|
||||
downstreamGaugeMbar: 500,
|
||||
rho: 1.204,
|
||||
tempK: 293.15,
|
||||
});
|
||||
|
||||
const p2AbsBar = (500 / 1000) + 1.01325;
|
||||
const expectedCappedDeltaPMbar = p2AbsBar * 0.2 * 1000;
|
||||
|
||||
assert.ok(result);
|
||||
assert.equal(result.details.isChoked, true);
|
||||
assert.ok(Math.abs(result.deltaPMbar - expectedCappedDeltaPMbar) < 0.0001, `expected ${expectedCappedDeltaPMbar}, got ${result.deltaPMbar}`);
|
||||
});
|
||||
|
||||
test('hydraulic model liquid branch uses liquid Kv equation', () => {
|
||||
const model = new ValveHydraulicModel({ serviceType: 'liquid' });
|
||||
const result = model.calculateDeltaPMbar({
|
||||
qM3h: 100,
|
||||
kv: 50,
|
||||
downstreamGaugeMbar: 500,
|
||||
rho: 998,
|
||||
tempK: 293.15,
|
||||
});
|
||||
|
||||
const expectedDeltaPMbar = (((100 / 50) ** 2) * (998 / 1000)) * 1000;
|
||||
|
||||
assert.ok(result);
|
||||
assert.equal(result.details.isChoked, false);
|
||||
assert.ok(Math.abs(result.deltaPMbar - expectedDeltaPMbar) < 0.0001, `expected ${expectedDeltaPMbar}, got ${result.deltaPMbar}`);
|
||||
});
|
||||
Reference in New Issue
Block a user