Skip to content

Commit b3b25aa

Browse files
committed
Python: add flame_height.py
1 parent 12003d0 commit b3b25aa

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#!/usr/bin/env python
2+
"""
3+
McDermott
4+
2-4-11
5+
flame_height.py
6+
7+
integrates HRRPUL(z) from *_line.csv file to determine L_f/D (normalized flame height)
8+
"""
9+
10+
import pandas as pd
11+
import numpy as np
12+
import os
13+
14+
# confirm heat release rate (uncomment or implement if needed)
15+
# check_hrr()
16+
17+
outdir = '../../../out/Heskestad_Flame_Height/'
18+
expdir = '../../../exp/Heskestad_Flame_Height/'
19+
20+
filename = [
21+
['Qs=p1_RI=05_devc.csv','Qs=p1_RI=10_devc.csv','Qs=p1_RI=20_devc.csv'],
22+
['Qs=p2_RI=05_devc.csv','Qs=p2_RI=10_devc.csv','Qs=p2_RI=20_devc.csv'],
23+
['Qs=p5_RI=05_devc.csv','Qs=p5_RI=10_devc.csv','Qs=p5_RI=20_devc.csv'],
24+
['Qs=1_RI=05_devc.csv','Qs=1_RI=10_devc.csv','Qs=1_RI=20_devc.csv'],
25+
['Qs=2_RI=05_devc.csv','Qs=2_RI=10_devc.csv','Qs=2_RI=20_devc.csv'],
26+
['Qs=5_RI=05_devc.csv','Qs=5_RI=10_devc.csv','Qs=5_RI=20_devc.csv'],
27+
['Qs=10_RI=05_devc.csv','Qs=10_RI=10_devc.csv','Qs=10_RI=20_devc.csv'],
28+
['Qs=20_RI=05_devc.csv','Qs=20_RI=10_devc.csv','Qs=20_RI=20_devc.csv'],
29+
['Qs=50_RI=05_devc.csv','Qs=50_RI=10_devc.csv','Qs=50_RI=20_devc.csv'],
30+
['Qs=100_RI=05_devc.csv','Qs=100_RI=10_devc.csv','Qs=100_RI=20_devc.csv'],
31+
['Qs=200_RI=05_devc.csv','Qs=200_RI=10_devc.csv','Qs=200_RI=20_devc.csv'],
32+
['Qs=500_RI=05_devc.csv','Qs=500_RI=10_devc.csv','Qs=500_RI=20_devc.csv'],
33+
['Qs=1000_RI=05_devc.csv','Qs=1000_RI=10_devc.csv','Qs=1000_RI=20_devc.csv'],
34+
['Qs=2000_RI=05_devc.csv','Qs=2000_RI=10_devc.csv','Qs=2000_RI=20_devc.csv'],
35+
['Qs=5000_RI=05_devc.csv','Qs=5000_RI=10_devc.csv','Qs=5000_RI=20_devc.csv'],
36+
['Qs=10000_RI=05_devc.csv','Qs=10000_RI=10_devc.csv','Qs=10000_RI=20_devc.csv']
37+
]
38+
39+
rho_inf = 1.2
40+
cp = 1.0
41+
T_inf = 293.0
42+
g = 9.81
43+
D = 1.13
44+
f = 0.99
45+
46+
# Q* values from MATLAB comment
47+
Qdot = [151, 303, 756, 1513, 3025, 7564, 15127, 30255,
48+
75636, 151273, 302545, 756363, 1512725, 3025450, 7563625, 15127250]
49+
50+
W = np.zeros((16,4))
51+
52+
# Loop through all heat release rates and resolutions
53+
for i in range(16): # hrr loop
54+
L = []
55+
for j in range(3): # resolution loop
56+
df = pd.read_csv(os.path.join(outdir,filename[i][j]),skiprows=2,header=None)
57+
L.append(df.iloc[-1,3]) # 99th percentile (4th column)
58+
Qstar = Qdot[i]/(rho_inf*cp*T_inf*np.sqrt(g)*D**(5/2))
59+
W[i,:] = [Qstar,L[0]/D,L[1]/D,L[2]/D]
60+
61+
# Write file with FDS-predicted flame heights
62+
header1 = ['Q*','L/D (RI=5)','L/D (RI=10)','L/D (RI=20)']
63+
filename1 = os.path.join(outdir,'FDS_Flame_Height.csv')
64+
pd.DataFrame(W,columns=header1).to_csv(filename1,index=False)
65+
66+
# Generate FDS results for Tamanini cases
67+
filename_out = [
68+
os.path.join(outdir,'FDS_Tamanini_RI=05.csv'),
69+
os.path.join(outdir,'FDS_Tamanini_RI=10.csv'),
70+
os.path.join(outdir,'FDS_Tamanini_RI=20.csv')
71+
]
72+
73+
fds_line_file = [
74+
['Qs=1500_RI=05_line.csv','Qs=p6_RI=05_line.csv','Qs=p3_RI=05_line.csv'],
75+
['Qs=1500_RI=10_line.csv','Qs=p6_RI=10_line.csv','Qs=p3_RI=10_line.csv'],
76+
['Qs=1500_RI=20_line.csv','Qs=p6_RI=20_line.csv','Qs=p3_RI=20_line.csv']
77+
]
78+
79+
Qstar_line = [1500,.6,.3]
80+
header = ['z/L jet','Q jet','z/L 62','Q 62','z/L 31','Q 31']
81+
82+
for j in range(3): # resolution loop
83+
A = None
84+
for k in range(3): # hrr loop
85+
df = pd.read_csv(os.path.join(outdir,fds_line_file[j][k]),skiprows=2)
86+
z = df.iloc[:,0].values
87+
dz = z[1]-z[0]
88+
hrrpul = df.iloc[:,1].values
89+
Qdot_line = np.sum(hrrpul)*dz
90+
hrr = np.cumsum(hrrpul)*dz/Qdot_line
91+
kk = np.argmax(hrr>f)
92+
L = z[kk-1]+dz*(f-hrr[kk-1])/(hrr[kk]-hrr[kk-1])
93+
new_cols = np.column_stack(((z+dz/2)/L,hrr))
94+
A = new_cols if A is None else np.hstack((A,new_cols))
95+
96+
pd.DataFrame(A,columns=header).to_csv(filename_out[j],index=False)

0 commit comments

Comments
 (0)