-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.js
More file actions
38 lines (34 loc) · 1.09 KB
/
utils.js
File metadata and controls
38 lines (34 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// utils.js
/**
* Calculate Reynolds number
* @param {number} velocity - fluid velocity (m/s)
* @param {number} diameter - pipe diameter (m)
* @param {number} viscosity - kinematic viscosity (m²/s)
* @returns {number}
*/
function calculateReynoldsNumber(velocity, diameter, viscosity) {
return (velocity * diameter) / viscosity;
}
/**
* Solve Colebrook-White equation for friction factor (using approximation)
* @param {number} reynolds - Reynolds number
* @param {number} diameter - pipe diameter (m)
* @param {number} roughness - pipe absolute roughness (m)
* @returns {number} friction factor (dimensionless)
*/
function solveColebrookWhite(reynolds, diameter, roughness) {
if (reynolds < 2000) {
// Laminar flow friction factor
return 64 / reynolds;
}
// Use approximate explicit formula (e.g., Swamee-Jain equation)
const relativeRoughness = roughness / diameter;
const friction = 0.25 / Math.pow(
Math.log10(relativeRoughness / 3.7 + 5.74 / Math.pow(reynolds, 0.9)), 2
);
return friction;
}
module.exports = {
calculateReynoldsNumber,
solveColebrookWhite
};