-
Notifications
You must be signed in to change notification settings - Fork 0
/
Flow Calc. & Results.js
179 lines (137 loc) · 6.4 KB
/
Flow Calc. & Results.js
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// Listen for submit
document.getElementById('flow-form').addEventListener('submit', function(e){
// Hide results
document.getElementById('results').style.display = 'none';
// Show loader
document.getElementById('loading').style.display = 'block';
setTimeout(calculateResults, 2000);
e.preventDefault();
});
// Calculate Results
function calculateResults(){
console.log('calculating..');
// UI Variables
const diameter = document.getElementById('diameter');
const pipeLength = document.getElementById('length');
const roughness = document.getElementById('roughness');
const velocity = document.getElementById('velocity');
const density = document.getElementById('density');
const viscosity = document.getElementById('viscosity');
const reynoldsNumber = document.getElementById('reynolds-number');
const flowType = document.getElementById('flow-type');
const frictionalHeadLoss = document.getElementById('frictional-head-loss');
const relativeRoughness = document.getElementById('rel-roughness');
const frictionFactor = document.getElementById('friction-factor');
const principalDiameter = parseFloat(diameter.value);
const principalVelocity = parseFloat(velocity.value);
const principalDensity = parseFloat(density.value);
const principalViscosity = parseFloat(viscosity.value);
const principalRoughness = parseFloat(roughness.value);
const principalPipeLength = parseFloat(pipeLength.value);
// Calculate Reynolds Number
const calculatedReynoldsNumber = (principalDiameter*principalVelocity*principalDensity)/(principalViscosity);
// Calculate Relative Roughness, e
const rel = (principalRoughness)/(principalDiameter*1000);
// Calculate Friction Factor for Laminar flow
const fLaminar = (64/calculatedReynoldsNumber);
// Calculate Frictional Head Loss for Laminar flow
const vSquared = Math.pow(principalVelocity, 2);
const laminarFrictionHeadLoss = (fLaminar*principalPipeLength*vSquared)/(principalDiameter*2*9.81);
// Organize and display results
if(calculatedReynoldsNumber >= 2300 && calculatedReynoldsNumber <= 4000){
reynoldsNumber.value = calculatedReynoldsNumber.toFixed(2);
flowType.value = 'Transitional';
frictionalHeadLoss.value = '';
relativeRoughness.value = rel;
// Enable friction factor input
frictionFactor.value = '';
document.getElementById('friction-factor').disabled = false;
document.getElementById('friction-factor').placeholder = 'Use Moody Chart to find value';
// Show results and calculate button
document.getElementById('results').style.display = 'block';
document.getElementById('button').style.display = 'block';
// Hide loader
document.getElementById('loading').style.display = 'none';
// Display message
showMessage('Transitional Flow, input the Friction Factor below and calculate again to find Frictinal Head Loss');
} else if(calculatedReynoldsNumber < 2300) {
reynoldsNumber.value = calculatedReynoldsNumber.toFixed(2);
flowType.value = 'Laminar';
frictionalHeadLoss.value = laminarFrictionHeadLoss.toFixed(2);
relativeRoughness.value = rel;
frictionFactor.value = fLaminar.toFixed(4);
// Show results but hide calculate button and loader
document.getElementById('results').style.display = 'block';
document.getElementById('button').style.display = 'none';
document.getElementById('loading').style.display = 'none';
} else if(calculatedReynoldsNumber > 4000){
reynoldsNumber.value = calculatedReynoldsNumber.toFixed(2);
flowType.value = 'Turbulent';
frictionalHeadLoss.value = '';
relativeRoughness.value = rel;
// Enable friction factor input
frictionFactor.value = '';
document.getElementById('friction-factor').disabled = false;
document.getElementById('friction-factor').placeholder = 'Use Moody Chart to find value';
// Show results and calculate button
document.getElementById('results').style.display = 'block';
document.getElementById('button').style.display = 'block';
// Hide loader
document.getElementById('loading').style.display = 'none';
// Display message
showMessage('Turbulent Flow, input the Friction Factor below and calculate again to find Frictional Head Loss');
} else {
// Hide loader
document.getElementById('loading').style.display = 'none';
showMessage('Please check your numbers');
}
}
// Show Message
function showMessage(message){
// Create a div
const messageDiv = document.createElement('div');
// Get elements
const card = document.querySelector('.card');
const heading = document.querySelector('#results');
// Add class
messageDiv.idName = 'message';
messageDiv.className = 'alert alert-danger';
// Create text node and append to div
messageDiv.appendChild(document.createTextNode(message));
// Insert message above heading
card.insertBefore(messageDiv, heading);
// Clear message after 5 seconds
setTimeout(clearMessage, 60000);
}
// Clear message
function clearMessage(){
document.querySelector('.alert').remove();
}
// // Listen for Second submit
// document.getElementById('button').addEventListener('submit', function(x){
// // Calculate Results Again
// console.log('Further Calculating...');
// // UI Variables
// const frictionFactor = document.getElementById('friction-factor');
// const principalFrictionFactor = parseFloat(frictionFactor.value);
// // Calculate Frictional Head Loss
// const headLoss = (principalFrictionFactor*principalPipeLength*vSquared)/(principalDiameter*2*9.81);
// // Complete Results
// if(calculatedReynoldsNumber < 2300){
// reynoldsNumber.value = calculatedReynoldsNumber.toFixed(2);
// flowType.value = 'Laminar';
// frictionalHeadLoss.value = laminarFrictionHeadLoss.toFixed(2);
// relativeRoughness.value = rel;
// } else if(calculatedReynoldsNumber > 4000){
// reynoldsNumber.value = calculatedReynoldsNumber.toFixed(2);
// flowType.value = 'Turbulent';
// frictionalHeadLoss.value = headLoss.toFixed(2);
// relativeRoughness.value = rel;
// } else {
// reynoldsNumber.value = calculatedReynoldsNumber.toFixed(2);
// flowType.value = 'Transitional';
// frictionalHeadLoss = headLoss.toFixed(2);
// relativeRoughness.value = rel;
// }
// x.preventDefault();
// });