UNPKG

coolprop-node

Version:

A Node.js wrapper for CoolProp providing an easy-to-use interface for thermodynamic calculations and refrigerant properties. Unlike all the other CoolProp npm packages I've seen, this one should actually work. Please report any issues.

80 lines (66 loc) 2.49 kB
const coolprop = require('./src/index.js'); // Function to generate random number between min and max function getRandomNumber(min, max) { return min + Math.random() * (max - min); } // Generate 1000 combinations of temperature and pressure function generateCombinations(count) { const combinations = []; // For R744 (CO2), using realistic ranges from test files // Temperature range: -40°F to 32°F // Pressure range: 131 psig to 491 psig for (let i = 0; i < count; i++) { const temperature = getRandomNumber(-40, 32); const pressure = getRandomNumber(131, 491); combinations.push({ temperature, pressure, refrigerant: 'R744', tempUnit: 'F', pressureUnit: 'psig' }); } return combinations; } async function runBenchmark() { console.log('Generating 1000 temperature and pressure combinations...'); const combinations = generateCombinations(1000); console.log('Combinations generated.'); // Pre-initialize the library console.log('Initializing library...'); await coolprop.init({ refrigerant: 'R744', tempUnit: 'F', pressureUnit: 'psig' }); console.log('Library initialized.'); // Run benchmark console.log('Starting benchmark...'); const startTime = performance.now(); const results = []; for (let i = 0; i < combinations.length; i++) { const result = await coolprop.calculateSuperheat(combinations[i]); results.push(result); // Show progress every 100 calculations if ((i + 1) % 100 === 0) { console.log(`Processed ${i + 1} / ${combinations.length} calculations`); } } const endTime = performance.now(); const totalTime = endTime - startTime; const avgTime = totalTime / combinations.length; // Report results console.log('\nBenchmark Results:'); console.log(`Total time: ${totalTime.toFixed(2)} ms`); console.log(`Average time per calculation: ${avgTime.toFixed(2)} ms`); console.log(`Calculations per second: ${(1000 / avgTime).toFixed(2)}`); // Count success and error results const successful = results.filter(r => r.type === 'success').length; const failed = results.filter(r => r.type === 'error').length; console.log(`\nSuccessful calculations: ${successful}`); console.log(`Failed calculations: ${failed}`); } // Run the benchmark runBenchmark().catch(error => { console.error('Benchmark failed:', error); });