Entropyk/bindings/wasm/tests/simple_cycle.js

89 lines
2.5 KiB
JavaScript

const {
init,
version,
list_available_fluids,
WasmSystem,
WasmPressure,
WasmTemperature,
WasmFallbackConfig,
WasmCompressor,
WasmCondenser,
WasmEvaporator,
WasmExpansionValve
} = require('../pkg/entropyk_wasm.js');
async function main() {
console.log('Entropyk WASM Integration Test');
console.log('==============================');
// Initialize module
await init();
console.log('WASM Version:', version());
// Verify fluids
const fluids = list_available_fluids();
console.log('Available fluids:', fluids);
if (!fluids.includes('R134a')) {
throw new Error('R134a should be available');
}
// Create system
const system = new WasmSystem();
console.log('System created');
// Add components
// coeffs: m1..m10
const compressor = new WasmCompressor(
0.85, 2.5, 500.0, 1500.0, -2.5,
1.8, 600.0, 1600.0, -3.0, 2.0
).into_component();
const condenser = new WasmCondenser(5000.0).into_component();
const evaporator = new WasmEvaporator(3000.0).into_component();
const valve = new WasmExpansionValve().into_component();
const cIdx = system.add_component(compressor);
const condIdx = system.add_component(condenser);
const eIdx = system.add_component(evaporator);
const vIdx = system.add_component(valve);
console.log(`Added 4 components. Node count: ${system.node_count()}`);
// Connect components
system.add_edge(cIdx, condIdx);
system.add_edge(condIdx, vIdx);
system.add_edge(vIdx, eIdx);
system.add_edge(eIdx, cIdx);
console.log(`Connected components. Edge count: ${system.edge_count()}`);
// Finalize system
system.finalize();
console.log('System finalized');
// Solve
const config = new WasmFallbackConfig();
console.log('Solving system...');
const result = system.solve(config);
console.log('Solve Result:', result.toJson());
if (result.converged) {
console.log('Convergence achieved in', result.iterations, 'iterations');
// Extract result for a node
const state = system.get_node_result(0);
console.log('Node 0 state:', state.toJson());
} else {
console.error('System failed to converge');
// This is expected if the simple setup without boundary conditions is unstable,
// but it verifies the API pipeline.
}
console.log('\nWASM Integration Test PASSED (API verification complete)');
}
main().catch(err => {
console.error('Test failed:', err);
process.exit(1);
});