Files
rotatingMachine/test/integration/coolprop.integration.test.js
znetsixe 6b2a8239f2 updates
2026-03-11 11:13:26 +01:00

55 lines
2.9 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const Machine = require('../../src/specificClass');
const { makeMachineConfig, makeStateConfig } = require('../helpers/factories');
test('calcEfficiency runs through coolprop path without mocks', () => {
const machine = new Machine(makeMachineConfig(), makeStateConfig({ state: { current: 'operational' } }));
machine.measurements.type('pressure').variant('measured').position('downstream').value(1200, Date.now(), 'mbar');
machine.measurements.type('pressure').variant('measured').position('upstream').value(800, Date.now(), 'mbar');
machine.measurements.type('flow').variant('predicted').position('atEquipment').value(120, Date.now(), 'm3/h');
machine.measurements.type('power').variant('predicted').position('atEquipment').value(12, Date.now(), 'kW');
assert.doesNotThrow(() => {
machine.calcEfficiency(12, 120, 'predicted');
});
const eff = machine.measurements.type('efficiency').variant('predicted').position('atEquipment').getCurrentValue();
assert.equal(typeof eff, 'number');
assert.ok(eff > 0);
const pressureDiffPa = (1200 - 800) * 100; // mbar -> Pa
const flowM3s = 120 / 3600; // m3/h -> m3/s
const expectedHydraulicPower = pressureDiffPa * flowM3s;
const expectedHydraulicEfficiency = expectedHydraulicPower / 12000; // 12kW -> W
const hydraulicPower = machine.measurements.type('hydraulicPower').variant('predicted').position('atEquipment').getCurrentValue('W');
const hydraulicEfficiency = machine.measurements.type('nHydraulicEfficiency').variant('predicted').position('atEquipment').getCurrentValue();
const head = machine.measurements.type('pumpHead').variant('predicted').position('atEquipment').getCurrentValue('m');
assert.ok(Number.isFinite(hydraulicPower));
assert.ok(Number.isFinite(hydraulicEfficiency));
assert.ok(Number.isFinite(head));
assert.ok(Math.abs(hydraulicPower - expectedHydraulicPower) < 1);
assert.ok(Math.abs(hydraulicEfficiency - expectedHydraulicEfficiency) < 0.01);
});
test('predictions use initialized medium pressure and not the minimum-pressure fallback', () => {
const machine = new Machine(makeMachineConfig(), makeStateConfig({ state: { current: 'operational' } }));
const mediumUpstreamMbar = 700;
const mediumDownstreamMbar = 1100;
machine.updateMeasuredPressure(mediumUpstreamMbar, 'upstream', { timestamp: Date.now(), unit: 'mbar', childName: 'test-pt-up' });
machine.updateMeasuredPressure(mediumDownstreamMbar, 'downstream', { timestamp: Date.now(), unit: 'mbar', childName: 'test-pt-down' });
const pressureStatus = machine.getPressureInitializationStatus();
assert.equal(pressureStatus.initialized, true);
assert.equal(pressureStatus.hasDifferential, true);
const expectedDiff = (mediumDownstreamMbar - mediumUpstreamMbar) * 100; // mbar -> Pa canonical
assert.equal(Math.round(machine.predictFlow.fDimension), expectedDiff);
assert.ok(machine.predictFlow.fDimension > 0);
});