turbo-design 1.3.0__py3-none-any.whl → 1.3.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of turbo-design might be problematic. Click here for more details.
- {turbo_design-1.3.0.dist-info → turbo_design-1.3.2.dist-info}/METADATA +1 -1
- turbo_design-1.3.2.dist-info/RECORD +55 -0
- turbodesign/.DS_Store +0 -0
- turbodesign/loss/.DS_Store +0 -0
- turbodesign/loss/__pycache__/__init__.cpython-310.pyc +0 -0
- turbodesign/loss/__pycache__/__init__.cpython-312.pyc +0 -0
- turbodesign/loss/__pycache__/losstype.cpython-310.pyc +0 -0
- turbodesign/loss/__pycache__/losstype.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/TD2.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/TD2.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/__init__.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/__init__.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/ainleymathieson.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/ainleymathieson.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/craigcox.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/craigcox.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/fixedefficiency.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/fixedefficiency.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/fixedpressureloss.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/fixedpressureloss.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/kackerokapuu.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/kackerokapuu.cpython-312.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/traupel.cpython-310.pyc +0 -0
- turbodesign/loss/turbine/__pycache__/traupel.cpython-312.pyc +0 -0
- turbodesign/radeq.py +45 -171
- turbodesign/solve_radeq.py +1 -1
- turbodesign/td_math.py +3 -3
- turbodesign/turbinespool.py +68 -70
- turbo_design-1.3.0.dist-info/RECORD +0 -33
- {turbo_design-1.3.0.dist-info → turbo_design-1.3.2.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
turbodesign/.DS_Store,sha256=t7V1NfD6bO4j43hG3uNmietQ86qxjKeImkJzP2ywlbo,8196
|
|
2
|
+
turbodesign/__init__.py,sha256=N8Nu0I1vrlEHYJZZ7yhhg-FtbNbLyrgjy7hoicygUqg,325
|
|
3
|
+
turbodesign/arrayfuncs.py,sha256=GHIlTyLfeNsNCQQoh5m1aXK3iyvU6RjdYQipkqpU_ps,519
|
|
4
|
+
turbodesign/bladerow.py,sha256=v4tX27aOL7iuN0ILWYbtSbANWZ_7_LIxksu4ux1aQ2o,24959
|
|
5
|
+
turbodesign/cantera_gas/co2.yaml,sha256=M2o_RzxV9B9rDkgkXJC-l3voKraFZguTZuKKt4F7S_c,887
|
|
6
|
+
turbodesign/compressorspool.py,sha256=z8ZVczJ-EdZvIqqZArC6UdwC5MbU2SZh_MT2CGq5avY,2600
|
|
7
|
+
turbodesign/coolant.py,sha256=evDtUFOYhfZKTVAsDWzxRzUX20gTvfjj0uybaWg4CsI,427
|
|
8
|
+
turbodesign/enums.py,sha256=T4aFrGMnx9fgZkrExMBIY2IbCueA0utqr_afk-TUe9Q,1188
|
|
9
|
+
turbodesign/inlet.py,sha256=L_IHE8zzm3uFMSow0iO-VxI71SnyQZwRhJMlJDcwZ4o,7329
|
|
10
|
+
turbodesign/isentropic.py,sha256=YLTmNx69e_M5fTuLOmk_KvaQ6ABv0aZsityfBihJOmI,2003
|
|
11
|
+
turbodesign/loss/.DS_Store,sha256=e_rC7wNyUbhwj0B0K6KYPxjmDluA2pn-nPFKtB93cfg,8196
|
|
12
|
+
turbodesign/loss/__init__.py,sha256=ZJomzXa6ElduFruURukCrFwJQXMWS2aW8JSaVQ-M2r8,46
|
|
13
|
+
turbodesign/loss/__pycache__/__init__.cpython-310.pyc,sha256=O-Uef93wkpiZg2LEZJlwSRHJmyWvzUVPdQhazmUDzqY,240
|
|
14
|
+
turbodesign/loss/__pycache__/__init__.cpython-312.pyc,sha256=hb-aUXzBVDra2DhnX5EHnMxHhOGg5GtGTSYeDYOSV7k,242
|
|
15
|
+
turbodesign/loss/__pycache__/losstype.cpython-310.pyc,sha256=Xng0JhBRPhBVq3ajlo2iXy0TU1X8eZpfAHEiJ3nuemg,1258
|
|
16
|
+
turbodesign/loss/__pycache__/losstype.cpython-312.pyc,sha256=D2cC1pJyAsSeYpm4cl09qIQG_0Z-0lQpQ9Q9JdhbueI,1729
|
|
17
|
+
turbodesign/loss/compressor/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
18
|
+
turbodesign/loss/losstype.py,sha256=Vzj3UPk1_5IA3DtL56Eb5Z7LkYyMQ97DGZvgfki8ByA,708
|
|
19
|
+
turbodesign/loss/turbine/TD2.py,sha256=evyTG4K6s56NGdjxrZFD3G7zsB8_2lJTBOxT3Ju2uG8,5207
|
|
20
|
+
turbodesign/loss/turbine/__init__.py,sha256=d1UrbiIicO60FhDlOemo_irYW2asUaYoqlXUz-UG9zk,285
|
|
21
|
+
turbodesign/loss/turbine/__pycache__/TD2.cpython-310.pyc,sha256=_xmRJL3-uKEX7wIfFNJwlKrTl5NEfFhqe--NsGHlbpA,4037
|
|
22
|
+
turbodesign/loss/turbine/__pycache__/TD2.cpython-312.pyc,sha256=AKWBhyn5DqDolrhmJHYN1VfOz2qbtxSlBPfOo99GnCg,5657
|
|
23
|
+
turbodesign/loss/turbine/__pycache__/__init__.cpython-310.pyc,sha256=08oqidbLwK0k2Bwe_mrK7TupB3h5UrEcCG-scobWCas,533
|
|
24
|
+
turbodesign/loss/turbine/__pycache__/__init__.cpython-312.pyc,sha256=7_ZJqoesRMXAMEVhltiRTEdJBwCaX9AtOEhFcBQyABM,546
|
|
25
|
+
turbodesign/loss/turbine/__pycache__/ainleymathieson.cpython-310.pyc,sha256=0aWYiEVGu3IfCHQ8b4-z3T3Ov7wdqDOHW1ERkMDNGy8,4887
|
|
26
|
+
turbodesign/loss/turbine/__pycache__/ainleymathieson.cpython-312.pyc,sha256=FdgZSynbR0LiwunAj4UPVGkfbtZ9uoJDaeVtr25uelo,9397
|
|
27
|
+
turbodesign/loss/turbine/__pycache__/craigcox.cpython-310.pyc,sha256=xsBf4UJSwijRq6r_WQRk7q9tYpS2id5XZJiF-ovMslg,6353
|
|
28
|
+
turbodesign/loss/turbine/__pycache__/craigcox.cpython-312.pyc,sha256=nTzvA31LQKYQriHuYQNmHCjTMNpqphfpRL306ilbJzI,12163
|
|
29
|
+
turbodesign/loss/turbine/__pycache__/fixedefficiency.cpython-310.pyc,sha256=D00hoTdPBqqm6J7m2iMMMb3fKsnZqdbwhXS6R8ezWxI,1263
|
|
30
|
+
turbodesign/loss/turbine/__pycache__/fixedefficiency.cpython-312.pyc,sha256=CGw2WgkjJfKxvpUO0Qlw19w_6HnZqX47cRJIz763vgI,1498
|
|
31
|
+
turbodesign/loss/turbine/__pycache__/fixedpressureloss.cpython-310.pyc,sha256=-cwVbUmXsqGnYlUccc1ZWpSl4X4ZO1-XJtQ78mps5N0,1191
|
|
32
|
+
turbodesign/loss/turbine/__pycache__/fixedpressureloss.cpython-312.pyc,sha256=anr2ZSqXg5_AFQnTZYdRw2dTHK-wCpIDJeMCTGu_RMg,1370
|
|
33
|
+
turbodesign/loss/turbine/__pycache__/kackerokapuu.cpython-310.pyc,sha256=Snq6kyzAbRQ_h9WSKD5sjQs_ADcUj-JHEVqVmPY9ixE,4432
|
|
34
|
+
turbodesign/loss/turbine/__pycache__/kackerokapuu.cpython-312.pyc,sha256=ldnWoi8a1T2UE_iH-aw_L7M-Xgak4gYdPa02Hwdt5xc,8574
|
|
35
|
+
turbodesign/loss/turbine/__pycache__/traupel.cpython-310.pyc,sha256=OUGOncOs84iMlPd5mGgtqiY95V2NU2JHyDXLF_kwKk8,3183
|
|
36
|
+
turbodesign/loss/turbine/__pycache__/traupel.cpython-312.pyc,sha256=x_BnQ49DhhL_cMYzORlOLAoxd8GgGGmd-w4ec5kHDds,6445
|
|
37
|
+
turbodesign/loss/turbine/ainleymathieson.py,sha256=8UbugNmxI12I68HGctJe2lQpqjKZN1b40UOTzqU6hQQ,5861
|
|
38
|
+
turbodesign/loss/turbine/craigcox.py,sha256=TrbNdpGdyD5kTRFKfNmbRDhCOjA0-GT5xoluLQpO1gA,9664
|
|
39
|
+
turbodesign/loss/turbine/fixedefficiency.py,sha256=JJv4GUS5q9pvuf3akjBtlcHOykRYmRVFfDDrdWqH6S4,774
|
|
40
|
+
turbodesign/loss/turbine/fixedpressureloss.py,sha256=jbm8dt8wtyN1RaOgpgYZsvwM0-0lv2Y73kXleyoy0zE,683
|
|
41
|
+
turbodesign/loss/turbine/kackerokapuu.py,sha256=hUmZdyA1hAhN3_xbwBhka2dyk0Aq9rqq62S2ghuKSOk,5071
|
|
42
|
+
turbodesign/loss/turbine/traupel.py,sha256=aZxFE9JDcCfi1gy-fqS1SxjjlhuDG-H-g3LPurty1M0,4164
|
|
43
|
+
turbodesign/lossinterp.py,sha256=B2KEobp-nD9jwD6UINgBmTlH9kKyWg3UNvXxqfUsr-k,6198
|
|
44
|
+
turbodesign/outlet.py,sha256=-0XpeEmTQpFjUQNYQxOp5WuHkF7cXfx59hxy7BmaxgY,2119
|
|
45
|
+
turbodesign/passage.py,sha256=Ur6zZCzI9Y7HW0o5LrDq9yeatRain1mBLZBcTOzgjEU,11996
|
|
46
|
+
turbodesign/radeq.py,sha256=1_OOOBP_UglnnPuF5WKhMXTzfzXcuMDJ5A0Zsr_2Mf0,6201
|
|
47
|
+
turbodesign/rotor.py,sha256=tHl9o5H4aQ6Etd4gqa8Ime1UK7k0de4GLt5Yb1sJdGs,1376
|
|
48
|
+
turbodesign/solve_radeq.py,sha256=nLYlRtXElPgHaoUP9jwMulRmYKTJs_uQ1eCulk2V59I,1938
|
|
49
|
+
turbodesign/spool.py,sha256=XKvYABvfigLulGLHH23X7k6aL6wvfuqgfLkKCMK9X8c,14338
|
|
50
|
+
turbodesign/stage.py,sha256=UP45sDKDLsAkO_WfDWJ6kqXU7cYKh_4QO01QZnSN1oQ,166
|
|
51
|
+
turbodesign/td_math.py,sha256=1hWf-B24jxiDfJHNUVOTC_0lEMZ8iu_4GNoKE4uxm6Y,16072
|
|
52
|
+
turbodesign/turbinespool.py,sha256=8ttt2DuExuQFt9SXraRWhaYHQDkgyh_B6AoJqdNgRlg,25046
|
|
53
|
+
turbo_design-1.3.2.dist-info/METADATA,sha256=8QYJqpja9gYWj8N5aKgfJcSj510Odrdir761wlhav0A,734
|
|
54
|
+
turbo_design-1.3.2.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
|
55
|
+
turbo_design-1.3.2.dist-info/RECORD,,
|
turbodesign/.DS_Store
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
turbodesign/radeq.py
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from scipy.interpolate import interp1d,PchipInterpolator
|
|
2
|
-
from scipy.integrate import
|
|
2
|
+
from scipy.integrate import solve_ivp
|
|
3
3
|
import numpy as np
|
|
4
4
|
import numdifftools as nd
|
|
5
5
|
from .bladerow import BladeRow
|
|
6
6
|
from .enums import RowType
|
|
7
|
-
|
|
7
|
+
import math
|
|
8
8
|
|
|
9
9
|
def radeq(row:BladeRow,upstream:BladeRow,downstream:BladeRow=None) -> BladeRow:
|
|
10
10
|
"""Solves the radial equilibrium equation for axial machines and returns the convergence.
|
|
@@ -22,7 +22,7 @@ def radeq(row:BladeRow,upstream:BladeRow,downstream:BladeRow=None) -> BladeRow:
|
|
|
22
22
|
"""
|
|
23
23
|
row_radius = row.r # Use these for gradient
|
|
24
24
|
up_radius = upstream.r
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
def ode_radeq_streamtube(r:np.ndarray,y:np.ndarray):
|
|
27
27
|
"""Solves the radial equilibrium equation for a streamtube
|
|
28
28
|
|
|
@@ -34,6 +34,7 @@ def radeq(row:BladeRow,upstream:BladeRow,downstream:BladeRow=None) -> BladeRow:
|
|
|
34
34
|
P0 = y[0]
|
|
35
35
|
T0 = y[1]
|
|
36
36
|
Vm = y[2]
|
|
37
|
+
r = row.r.mean()+r
|
|
37
38
|
if r>row_radius[-1]:
|
|
38
39
|
return [0,0,0]
|
|
39
40
|
elif r<row_radius[0]:
|
|
@@ -42,6 +43,8 @@ def radeq(row:BladeRow,upstream:BladeRow,downstream:BladeRow=None) -> BladeRow:
|
|
|
42
43
|
Cp = row.Cp
|
|
43
44
|
phi = interp1d(row_radius, row.phi)(r)
|
|
44
45
|
alpha = interp1d(row_radius, row.alpha2)(r)
|
|
46
|
+
T = interp1d(row_radius, row.T)(r)
|
|
47
|
+
P = interp1d(row_radius, row.P)(r)
|
|
45
48
|
rm = interp1d(row_radius, row.rm)(r)
|
|
46
49
|
rho = row.rho.mean()
|
|
47
50
|
|
|
@@ -57,11 +60,9 @@ def radeq(row:BladeRow,upstream:BladeRow,downstream:BladeRow=None) -> BladeRow:
|
|
|
57
60
|
Vt = Vm*np.tan(alpha)
|
|
58
61
|
Vr = Vm*np.sin(phi)
|
|
59
62
|
# Estimations
|
|
60
|
-
dVm_dr = float(interp1d(row_radius, np.gradient(row.Vm, row_radius))(r))
|
|
61
|
-
dVt_dr = dVm_dr*np.tan(alpha)
|
|
62
|
-
# dVr_dr = dVm_dr*np.sin(phi)
|
|
63
|
-
|
|
63
|
+
dVm_dr = float(interp1d(row_radius, np.gradient(row.Vm, row_radius))(r))
|
|
64
64
|
up_Vm = interp1d(row_radius, upstream.Vm)(r)
|
|
65
|
+
|
|
65
66
|
if downstream:
|
|
66
67
|
if downstream.row_type == RowType.Outlet:
|
|
67
68
|
down_Vm = Vm
|
|
@@ -84,31 +85,28 @@ def radeq(row:BladeRow,upstream:BladeRow,downstream:BladeRow=None) -> BladeRow:
|
|
|
84
85
|
dVm_dm = func_Vm_m.derivative()(row_m)
|
|
85
86
|
|
|
86
87
|
# Upstream
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
dT0_dr = dT0up_dr - 1/row.Cp*(U_up*dVtup_dr + Vtup*omega - (U*dVt_dr+Vt*omega)) # Eqn 8
|
|
98
|
-
# if row.loss_function.LossType == LossType.Pressure: # type: ignore
|
|
99
|
-
# dP0_dr = dP0up_dr-row.Yp*(dP0up_dr - dP_dr) # Eqn 9
|
|
100
|
-
|
|
101
|
-
C = Vm**2*(1+np.tan(alpha)**2)/(2*Cp*T0)
|
|
88
|
+
dT_dr = float(interp1d(row_radius, np.gradient(row.T,row_radius))(r))
|
|
89
|
+
dP_dr = float(interp1d(row_radius, np.gradient(row.P,row_radius))(r))
|
|
90
|
+
P = float(interp1d(row_radius, np.gradient(row.P,row_radius))(r))
|
|
91
|
+
dT0_dr = dT_dr + Vm/Cp * (1 + np.tan(alpha)**2)*dVm_dr
|
|
92
|
+
dP0_dr = dP_dr * (T0/T)**(gamma/(gamma-1)) + P*gamma/(gamma-1) * (T0/T)**(1/(gamma-1)) * (T*dT0_dr-T0*dT_dr)/T**2
|
|
93
|
+
# dT0_dr = float(interp1d(row.percent_hub_shroud, np.gradient(row.T0,row_radius))((r-row_radius[0])/(row_radius[-1]-row_radius[0])))
|
|
94
|
+
# dP0_dr = float(interp1d(row.percent_hub_shroud, np.gradient(row.P0,row_radius))((r-row_radius[0])/(row_radius[-1]-row_radius[0])))
|
|
95
|
+
|
|
96
|
+
C = (1 + np.tan(alpha)**2) * Vm**2/(2*Cp*T0)
|
|
102
97
|
if (C>1) & ((gamma/(gamma-1))<2):
|
|
103
98
|
raise Exception("Invalid value of C {C}, change reduce alpha or Vm")
|
|
104
|
-
B = (1-C)**(gamma/(gamma-1))
|
|
105
|
-
A = P0 * gamma/(gamma-1) * (1-C)**(1/(gamma-1))
|
|
99
|
+
B = (1-C)**(gamma/(gamma-1))
|
|
100
|
+
A = -P0 * gamma/(gamma-1) * (1-C)**(1/(gamma-1)) * (1 + np.tan(alpha)**2)/(2*Cp)
|
|
101
|
+
|
|
102
|
+
eqn15_rhs = Vt**2/r - Vm**2/rm*np.sin(phi) - Vr*dVm_dm # right hand side of equation 15
|
|
103
|
+
eqn15_rhs_simple = Vt**2/r # right hand side of equation 15 simplified for axial machines
|
|
106
104
|
|
|
107
105
|
epsilon = 1e-10 # or another small threshold
|
|
108
106
|
if abs(rm) > epsilon:
|
|
109
|
-
dVm_dr =
|
|
107
|
+
dVm_dr = T0/(2*Vm*A) * (rho*eqn15_rhs - B*dP0_dr) + Vm/(2*T0) * dT0_dr # Eqn 21
|
|
110
108
|
else:
|
|
111
|
-
dVm_dr =
|
|
109
|
+
dVm_dr = T0/(2*Vm*A) * (rho*eqn15_rhs_simple - B*dP0_dr) + Vm/(2*T0) * dT0_dr # Eqn 21, simple
|
|
112
110
|
|
|
113
111
|
ydot = np.array([dP0_dr,dT0_dr,dVm_dr])
|
|
114
112
|
|
|
@@ -121,166 +119,42 @@ def radeq(row:BladeRow,upstream:BladeRow,downstream:BladeRow=None) -> BladeRow:
|
|
|
121
119
|
|
|
122
120
|
# Estimate the Vt based on a given turning angle
|
|
123
121
|
mean_radius = row_radius.mean()
|
|
124
|
-
tip_radius = row_radius
|
|
125
|
-
hub_radius = row_radius
|
|
122
|
+
tip_radius = row_radius.max()
|
|
123
|
+
hub_radius = row_radius.min()
|
|
126
124
|
|
|
127
125
|
T0m = interp1d(row.percent_hub_shroud,T0)(0.5);
|
|
128
126
|
P0m = interp1d(row.percent_hub_shroud,P0)(0.5); Vmm = interp1d(row.percent_hub_shroud,Vm)(0.5)
|
|
129
127
|
# We are solving for the values of these quantities at row exit
|
|
130
128
|
ics = np.array([P0m,T0m,Vmm])
|
|
131
129
|
|
|
132
|
-
|
|
133
|
-
|
|
130
|
+
# hub_to_tip = np.linspace(hub_radius,tip_radius)
|
|
131
|
+
# res = odeint(ode_radeq_streamtube, ics, hub_to_tip, tfirst=True)
|
|
134
132
|
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
# P0_new = interp1d(hub_to_tip,res[:,0])(row_radius)
|
|
134
|
+
# T0_new = interp1d(hub_to_tip,res[:,1])(row_radius)
|
|
135
|
+
# Vm_new = interp1d(hub_to_tip,res[:,2])(row_radius)
|
|
137
136
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
r = np.concatenate([np.flip(rm_to_hub)[:-1], rm_to_tip])
|
|
137
|
+
# mean_radius_to_tip = np.linspace(0,tip_radius-mean_radius,len(row_radius)*5)
|
|
138
|
+
res1 = solve_ivp(ode_radeq_streamtube, t_span =[0, tip_radius-mean_radius], y0 = ics)
|
|
141
139
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
Vm_new = interp1d(r,res[:,2])(row_radius)
|
|
140
|
+
# mean_radius_to_hub = np.linspace(0,hub_radius-mean_radius,len(row_radius)*5)
|
|
141
|
+
res2 = solve_ivp(ode_radeq_streamtube, t_span = [hub_radius-mean_radius,0], y0 = ics)
|
|
145
142
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
row.alpha2 = np.arctan2(row.Vt,row.Vx)
|
|
153
|
-
elif row.row_type == RowType.Stator:
|
|
154
|
-
row.Vt = row.Vm*np.cos(row.phi)*np.tan(row.alpha2)
|
|
155
|
-
row.Vr = row.Vm*np.sin(row.phi)
|
|
156
|
-
row.Vx = row.Vm*np.cos(row.phi)
|
|
143
|
+
mid_to_tip_vals = res1.y.transpose()
|
|
144
|
+
mid_to_tip_r = res1.t + mean_radius
|
|
145
|
+
mid_to_hub_vals = res2.y.transpose()
|
|
146
|
+
mid_to_hub_r = res2.t + mean_radius
|
|
147
|
+
mid_to_hub_vals = np.flipud(mid_to_hub_vals)
|
|
148
|
+
hub_to_tip_vals = np.concatenate([mid_to_hub_vals[:-1,:],mid_to_tip_vals])
|
|
157
149
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
def radeq_normalized(row:BladeRow,upstream:BladeRow) -> BladeRow:
|
|
162
|
-
"""Solves the radial equilibrium equation for axial or radial machines and returns the convergence.
|
|
163
|
-
|
|
164
|
-
Args:
|
|
165
|
-
row (BladeRow): Current row
|
|
166
|
-
upstream (BladeRow): Previous row
|
|
167
|
-
|
|
168
|
-
Returns:
|
|
169
|
-
BladeRow: current row with Vt, T0, P0, and Vm calculated
|
|
170
|
-
"""
|
|
171
|
-
_,row_radius = row.streamline.get_point(row.percent_hub_shroud) # Use these for gradient
|
|
172
|
-
_,up_radius = upstream.streamline.get_point(upstream.percent_hub_shroud)
|
|
173
|
-
|
|
174
|
-
def ode_radeq_streamtube(t:np.ndarray,y:np.ndarray):
|
|
175
|
-
"""Solves the radial equilibrium equation for a streamtube
|
|
176
|
-
|
|
177
|
-
Args:
|
|
178
|
-
t (np.ndarray): percent from hub to shroud
|
|
179
|
-
y (np.ndarray): Array containing [P0,Vt,VtU,T0]
|
|
180
|
-
|
|
181
|
-
"""
|
|
182
|
-
P0 = y[0]
|
|
183
|
-
T0 = y[1]
|
|
184
|
-
Vm = y[2]
|
|
185
|
-
if t>1:
|
|
186
|
-
return [0,0,0]
|
|
187
|
-
elif t<0:
|
|
188
|
-
return [0,0,0]
|
|
189
|
-
|
|
190
|
-
_,r = row.streamline.get_point()
|
|
191
|
-
Cp = row.Cp
|
|
192
|
-
# Interpolate angle of inclination (phi), exit flow angle (alpha), radius of curvature (rm) at a particular percentage from hub to shroud
|
|
193
|
-
phi = interp1d(row.percent_hub_shroud, row.phi)(t)
|
|
194
|
-
alpha = interp1d(row.percent_hub_shroud, row.alpha2)(t)
|
|
195
|
-
rm = interp1d(row.percent_hub_shroud,row.rm)(t)
|
|
196
|
-
rho = interp1d(row.percent_hub_shroud,row.rho)(t)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
if (row.row_type == RowType.Rotor):
|
|
200
|
-
omega = row.rpm*np.pi/30
|
|
201
|
-
U = omega*r
|
|
202
|
-
else:
|
|
203
|
-
omega = 0
|
|
204
|
-
U = 0
|
|
205
|
-
gamma = row.gamma
|
|
206
|
-
|
|
207
|
-
# Solve the Radial Equlibrium
|
|
208
|
-
Vt = Vm*np.cos(phi)*np.tan(alpha)
|
|
209
|
-
Vr = float(interp1d(row.percent_hub_shroud, row.Vr)(t))
|
|
210
|
-
# Estimations: need the radius of the streamline to compute gradients
|
|
211
|
-
dVm_dr = interp1d(row_radius,np.gradient(row.Vm, row_radius))(r)
|
|
212
|
-
dVt_dr = dVm_dr*np.cos(phi)*np.tan(alpha)
|
|
213
|
-
|
|
214
|
-
dVm_dm = interp1d(row_radius, np.gradient(Vm, r)) + interp1d(x, np.gradient(Vm, r))
|
|
215
|
-
|
|
216
|
-
# Upstream: We interpolate the gradient based on the percentage from hub to shroud
|
|
217
|
-
dT0up_dr = interp1d(upstream.percent_hub_shroud,
|
|
218
|
-
np.gradient(upstream.T0,up_radius))(t)
|
|
219
|
-
dP0up_dr = interp1d(upstream.percent_hub_shroud,
|
|
220
|
-
np.gradient(upstream.P0,up_radius))(t)
|
|
221
|
-
dP0_dr = interp1d(upstream.percent_hub_shroud,
|
|
222
|
-
np.gradient(upstream.P0,up_radius))(t)
|
|
223
|
-
|
|
224
|
-
U_up = interp1d(upstream.percent_hub_shroud,up_radius*omega)(t) # use percentage to get the T0 upstream value
|
|
225
|
-
dVtup_dr = interp1d(upstream.percent_hub_shroud,np.gradient(upstream.Vt,up_radius))(t)
|
|
226
|
-
Vtup = interp1d(upstream.percent_hub_shroud,upstream.Vt)(t)
|
|
227
|
-
|
|
228
|
-
dP_dr = interp1d(row.percent_hub_shroud,np.gradient(row.P,row_radius))(t)
|
|
229
|
-
dT0_dr = dT0up_dr - 1/row.Cp*(U_up*dVtup_dr + Vtup*omega - (U*dVt_dr+Vt*omega)) # Eqn 8
|
|
230
|
-
# if row.loss_function.LossType == LossType.Pressure: # type: ignore
|
|
231
|
-
# dP0_dr = dP0up_dr-row.Yp*(dP0up_dr - dP_dr) # Eqn 9
|
|
232
|
-
|
|
233
|
-
C = Vm**2*(1+np.cos(phi)**2 * np.tan(alpha)**2)/(2*Cp*T0)
|
|
234
|
-
B = (1-C)**(gamma/(gamma-1))
|
|
235
|
-
A = P0 * gamma/(gamma-1) * (1-C)**(1/(gamma-1))
|
|
236
|
-
dVm_dr = 1/(2*Vm*A) * (rho*(Vt/r - Vm**2/rm * np.cos(phi)-Vr*dVm_dm) - dP0_dr*B) + 1/(2*T0) *dT0_dr # Eqn 6
|
|
237
|
-
|
|
238
|
-
ydot = np.array([dP0_dr,dT0_dr,dVm_dr])
|
|
239
|
-
|
|
240
|
-
return ydot
|
|
241
|
-
|
|
242
|
-
T0 = row.T0
|
|
243
|
-
P0 = row.P0
|
|
244
|
-
Vm = row.Vm
|
|
245
|
-
|
|
246
|
-
# Estimate the Vt based on a given turning angle
|
|
247
|
-
_, mean_radius = row.streamline.get_point(0.5)
|
|
248
|
-
_, tip_radius = row.streamline.get_point(1)
|
|
249
|
-
_, hub_radius = row.streamline.get_point(0)
|
|
250
|
-
|
|
251
|
-
T0m = interp1d(row.percent_hub_shroud,T0)(0.5);
|
|
252
|
-
P0m = interp1d(row.percent_hub_shroud,P0)(0.5);
|
|
253
|
-
Vmm = interp1d(row.percent_hub_shroud,Vm)(0.5)
|
|
254
|
-
# We are solving for the values of these quantities at row exit
|
|
255
|
-
ics = np.array([P0m,T0m,Vmm])
|
|
256
|
-
|
|
257
|
-
mid_to_tip = np.linspace(0,1)
|
|
258
|
-
res1 = odeint(ode_radeq_streamtube, ics, mid_to_tip, tfirst=True) # Results
|
|
150
|
+
r = np.concatenate([mid_to_hub_r[:-1], mid_to_tip_r])
|
|
259
151
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
res2 = np.flipud(res2)
|
|
264
|
-
res = np.concatenate([res2[:-1,:],res1]) # Combine the results
|
|
265
|
-
t = np.concatenate([np.flip(mid_to_hub)[:-1], mid_to_tip])
|
|
266
|
-
|
|
267
|
-
P0_new = interp1d(t,res[:,0])(row.percent_hub_shroud)
|
|
268
|
-
T0_new = interp1d(t,res[:,1])(row.percent_hub_shroud)
|
|
269
|
-
Vm_new = interp1d(t,res[:,2])(row.percent_hub_shroud)
|
|
152
|
+
P0_new = interp1d(r,hub_to_tip_vals[:,0])(row_radius)
|
|
153
|
+
T0_new = interp1d(r,hub_to_tip_vals[:,1])(row_radius)
|
|
154
|
+
Vm_new = interp1d(r,hub_to_tip_vals[:,2])(row_radius)
|
|
270
155
|
|
|
271
156
|
row.P0 = P0_new
|
|
272
157
|
row.T0 = T0_new
|
|
273
158
|
row.Vm = Vm_new
|
|
274
|
-
if row.row_type == RowType.Rotor:
|
|
275
|
-
# U(VT1-VT2) = Power/massflow; VT2 = VT1 - Power/massflow
|
|
276
|
-
row.Vt = upstream.Vt-row.power/(row.total_massflow*row.U)
|
|
277
|
-
row.alpha2 = np.arctan2(row.Vt,row.Vx)
|
|
278
|
-
elif row.row_type == RowType.Stator:
|
|
279
|
-
row.Vt = row.Vm*np.cos(row.phi)*np.tan(row.alpha2)
|
|
280
|
-
row.Vr = row.Vm*np.sin(row.phi)
|
|
281
|
-
row.Vx = row.Vm*np.cos(row.phi)
|
|
282
|
-
|
|
283
159
|
return row
|
|
284
|
-
|
|
285
160
|
|
|
286
|
-
|
turbodesign/solve_radeq.py
CHANGED
turbodesign/td_math.py
CHANGED
|
@@ -296,7 +296,7 @@ def rotor_calc(row:BladeRow,upstream:BladeRow,calculate_vm:bool=True):
|
|
|
296
296
|
row.P0R = upstream.P0R - row.Yp*(upstream.P0R-row.P)
|
|
297
297
|
|
|
298
298
|
# Total Relative Temperature stays constant through the rotor. Adjust for change in radius from rotor inlet to exit
|
|
299
|
-
row.T0R = (upstream_rothalpy + 0.5*row.U**2)/row.Cp - T0_coolant_weighted_average(row)
|
|
299
|
+
row.T0R = upstream.T0R # (upstream_rothalpy + 0.5*row.U**2)/row.Cp # - T0_coolant_weighted_average(row)
|
|
300
300
|
P0R_P = row.P0R / row.P
|
|
301
301
|
T0R_T = P0R_P**((row.gamma-1)/row.gamma)
|
|
302
302
|
row.T = (row.T0R/T0R_T) # Exit static temperature
|
|
@@ -326,7 +326,7 @@ def rotor_calc(row:BladeRow,upstream:BladeRow,calculate_vm:bool=True):
|
|
|
326
326
|
row.Vt = row.Wt+row.U
|
|
327
327
|
|
|
328
328
|
row.alpha2 = np.arctan2(row.Vt,row.Vm)
|
|
329
|
-
row.V = np.sqrt(row.
|
|
329
|
+
row.V = np.sqrt(row.Vm**2*(1+np.tan(row.alpha2)**2))
|
|
330
330
|
|
|
331
331
|
row.M = row.V/np.sqrt(row.gamma*row.R*row.T)
|
|
332
332
|
T0_T = (1+(row.gamma-1)/2 * row.M**2)
|
|
@@ -369,7 +369,7 @@ def inlet_calc(row:BladeRow):
|
|
|
369
369
|
raise ValueError(f"Unusually slow flow:{iter} Mach:{avg_mach}")
|
|
370
370
|
row.Vm[0] = 1/(len(row.Vm)-1)*row.Vm[1:].sum() # Initialize the value at the hub to not upset the mean
|
|
371
371
|
row.Vr = row.Vm*np.sin(row.phi)
|
|
372
|
-
row.Vt = row.Vm*np.
|
|
372
|
+
row.Vt = row.Vm*np.tan(row.alpha2)
|
|
373
373
|
row.V = np.sqrt(row.Vt**2+row.Vm**2)
|
|
374
374
|
# Fine tune the Temperature and Pressure and density
|
|
375
375
|
row.M = row.V/np.sqrt(row.gamma*row.R*row.T)
|
turbodesign/turbinespool.py
CHANGED
|
@@ -13,6 +13,7 @@ from .solve_radeq import adjust_streamlines, radeq
|
|
|
13
13
|
from scipy.optimize import minimize_scalar, differential_evolution, fmin_slsqp
|
|
14
14
|
from .inlet import Inlet
|
|
15
15
|
from .outlet import Outlet
|
|
16
|
+
from pyturbo.helper import convert_to_ndarray
|
|
16
17
|
|
|
17
18
|
class TurbineSpool(Spool):
|
|
18
19
|
|
|
@@ -193,7 +194,7 @@ class TurbineSpool(Spool):
|
|
|
193
194
|
"""
|
|
194
195
|
total_massflow = list(); s = 0; massflow_stage = list()
|
|
195
196
|
stage_ids = list(set([row.stage_id for row in blade_rows if row.stage_id>=0]))
|
|
196
|
-
for row in blade_rows
|
|
197
|
+
for row in blade_rows: # Ignore inlet and outlet
|
|
197
198
|
total_massflow.append(row.total_massflow_no_coolant)
|
|
198
199
|
sign = 1
|
|
199
200
|
for s in stage_ids:
|
|
@@ -237,7 +238,7 @@ class TurbineSpool(Spool):
|
|
|
237
238
|
2. Keep the mean
|
|
238
239
|
|
|
239
240
|
Args:
|
|
240
|
-
x0 (List[float]):
|
|
241
|
+
x0 (List[float]): Percentage of P0 exiting each row
|
|
241
242
|
blade_rows (List[List[BladeRow]]): _description_
|
|
242
243
|
P0 (npt.NDArray): _description_
|
|
243
244
|
P (npt.NDArray): (1) Outlet Static Pressure. (2)
|
|
@@ -250,9 +251,9 @@ class TurbineSpool(Spool):
|
|
|
250
251
|
# try:
|
|
251
252
|
if balance_mean_pressure:
|
|
252
253
|
for j in range(self.num_streamlines):
|
|
253
|
-
|
|
254
|
+
Ps = outlet_pressure(x0,P0[j],P[j])
|
|
254
255
|
for i in range(1,len(blade_rows)-2):
|
|
255
|
-
blade_rows[i].P[j] =
|
|
256
|
+
blade_rows[i].P[j] = float(Ps[i-1])
|
|
256
257
|
blade_rows[-2].P = P
|
|
257
258
|
else:
|
|
258
259
|
for i in range(1,len(blade_rows)-1):
|
|
@@ -261,7 +262,7 @@ class TurbineSpool(Spool):
|
|
|
261
262
|
# try:
|
|
262
263
|
calculate_massflows(blade_rows,True,self.fluid)
|
|
263
264
|
print(x0)
|
|
264
|
-
return self.__massflow_std__(blade_rows)
|
|
265
|
+
return self.__massflow_std__(blade_rows[1:-1]) # do not consider inlet and outlet
|
|
265
266
|
# except Exception as e:
|
|
266
267
|
# print(e)
|
|
267
268
|
# finally:
|
|
@@ -278,9 +279,9 @@ class TurbineSpool(Spool):
|
|
|
278
279
|
|
|
279
280
|
print(f"Looping to converge massflow")
|
|
280
281
|
past_err = -100; loop_iter = 0; err = 0.001
|
|
281
|
-
while np.abs((err-past_err)/err)>0.05:
|
|
282
|
+
while (np.abs((err-past_err)/err)>0.05) and loop_iter<10:
|
|
282
283
|
if len(outlet_P) == 1:
|
|
283
|
-
# x = balance_massflows(0.
|
|
284
|
+
# x = balance_massflows(0.22896832148169688,self.blade_rows,self.blade_rows[0].P0,self.blade_rows[-1].P)
|
|
284
285
|
res = minimize_scalar(fun=balance_massflows,args=(self.blade_rows,self.blade_rows[0].P0,self.blade_rows[-1].P),bounds=outlet_P[0],tol=0.001,options={'disp': True},method='bounded')
|
|
285
286
|
x = res.x
|
|
286
287
|
print(x)
|
|
@@ -302,7 +303,9 @@ class TurbineSpool(Spool):
|
|
|
302
303
|
self.blade_rows[-1].transfer_quantities(self.blade_rows[-2])
|
|
303
304
|
self.blade_rows[-1].P = self.blade_rows[-1].get_static_pressure(self.blade_rows[-1].percent_hub_shroud)
|
|
304
305
|
|
|
306
|
+
past_err = err
|
|
305
307
|
err = self.__massflow_std__(self.blade_rows)
|
|
308
|
+
loop_iter += 1
|
|
306
309
|
print(f"Loop {loop_iter} massflow convergenced error:{err}")
|
|
307
310
|
|
|
308
311
|
# calculate Reynolds number
|
|
@@ -393,64 +396,63 @@ def calculate_massflows(blade_rows:List[BladeRow],calculate_vm:bool=False,fluid:
|
|
|
393
396
|
passage (Passage): _description_
|
|
394
397
|
calculate_vm (bool, optional): _description_. Defaults to False.
|
|
395
398
|
"""
|
|
396
|
-
for
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
for _ in range(2):
|
|
414
|
-
if row.row_type == RowType.Rotor:
|
|
415
|
-
rotor_calc(row,upstream,calculate_vm=True)
|
|
416
|
-
# Finds Equilibrium between Vm, P0, T0
|
|
417
|
-
row = radeq(row,upstream,downstream)
|
|
418
|
-
compute_gas_constants(row,fluid)
|
|
419
|
-
rotor_calc(row,upstream,calculate_vm=False)
|
|
420
|
-
elif row.row_type == RowType.Stator:
|
|
421
|
-
stator_calc(row,upstream,downstream,calculate_vm=True)
|
|
422
|
-
# Finds Equilibrium between Vm, P0, T0
|
|
423
|
-
row = radeq(row,upstream,downstream)
|
|
424
|
-
compute_gas_constants(row,fluid)
|
|
425
|
-
stator_calc(row,upstream,downstream,calculate_vm=False)
|
|
426
|
-
compute_gas_constants(row,fluid)
|
|
427
|
-
compute_massflow(row)
|
|
428
|
-
compute_power(row,upstream)
|
|
429
|
-
|
|
430
|
-
elif row.loss_function.loss_type == LossType.Enthalpy:
|
|
399
|
+
for i in range(1,len(blade_rows)-1):
|
|
400
|
+
row = blade_rows[i]
|
|
401
|
+
# Upstream Row
|
|
402
|
+
if i == 0:
|
|
403
|
+
upstream = blade_rows[i]
|
|
404
|
+
else:
|
|
405
|
+
upstream = blade_rows[i-1]
|
|
406
|
+
if i<len(blade_rows)-1:
|
|
407
|
+
downstream = blade_rows[i+1]
|
|
408
|
+
|
|
409
|
+
# Pressure loss = shift in entropy which affects the total pressure of the row
|
|
410
|
+
if row.row_type == RowType.Inlet:
|
|
411
|
+
row.Yp = 0
|
|
412
|
+
else:
|
|
413
|
+
if row.loss_function.loss_type == LossType.Pressure:
|
|
414
|
+
row.Yp = row.loss_function(row,upstream)
|
|
415
|
+
for _ in range(2):
|
|
431
416
|
if row.row_type == RowType.Rotor:
|
|
432
|
-
row
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
rotor_calc(row,upstream,calculate_vm=True)
|
|
438
|
-
row = radeq(row,upstream)
|
|
439
|
-
compute_gas_constants(row,fluid)
|
|
440
|
-
rotor_calc(row,upstream,calculate_vm=False)
|
|
441
|
-
return abs(row.eta_total - eta_total)
|
|
442
|
-
|
|
443
|
-
res = minimize_scalar(find_yp,bounds=[0,0.6],args=(row,upstream))
|
|
444
|
-
row.Yp = res.x
|
|
417
|
+
rotor_calc(row,upstream,calculate_vm=True)
|
|
418
|
+
# Finds Equilibrium between Vm, P0, T0
|
|
419
|
+
row = radeq(row,upstream,downstream)
|
|
420
|
+
compute_gas_constants(row,fluid)
|
|
421
|
+
rotor_calc(row,upstream,calculate_vm=False)
|
|
445
422
|
elif row.row_type == RowType.Stator:
|
|
446
|
-
row.Yp = 0
|
|
447
423
|
stator_calc(row,upstream,downstream,calculate_vm=True)
|
|
448
|
-
|
|
449
|
-
row =
|
|
424
|
+
# Finds Equilibrium between Vm, P0, T0
|
|
425
|
+
row = radeq(row,upstream,downstream)
|
|
426
|
+
compute_gas_constants(row,fluid)
|
|
450
427
|
stator_calc(row,upstream,downstream,calculate_vm=False)
|
|
451
|
-
|
|
428
|
+
compute_gas_constants(row,fluid)
|
|
452
429
|
compute_massflow(row)
|
|
453
430
|
compute_power(row,upstream)
|
|
431
|
+
|
|
432
|
+
elif row.loss_function.loss_type == LossType.Enthalpy:
|
|
433
|
+
if row.row_type == RowType.Rotor:
|
|
434
|
+
row.Yp = 0
|
|
435
|
+
rotor_calc(row,upstream,calculate_vm=calculate_vm)
|
|
436
|
+
eta_total = float(row.loss_function(row,upstream))
|
|
437
|
+
def find_yp(Yp,row,upstream):
|
|
438
|
+
row.Yp = Yp
|
|
439
|
+
rotor_calc(row,upstream,calculate_vm=True)
|
|
440
|
+
row = radeq(row,upstream)
|
|
441
|
+
compute_gas_constants(row,fluid)
|
|
442
|
+
rotor_calc(row,upstream,calculate_vm=False)
|
|
443
|
+
return abs(row.eta_total - eta_total)
|
|
444
|
+
|
|
445
|
+
res = minimize_scalar(find_yp,bounds=[0,0.6],args=(row,upstream))
|
|
446
|
+
row.Yp = res.x
|
|
447
|
+
elif row.row_type == RowType.Stator:
|
|
448
|
+
row.Yp = 0
|
|
449
|
+
stator_calc(row,upstream,downstream,calculate_vm=True)
|
|
450
|
+
row = radeq(row,upstream)
|
|
451
|
+
row = compute_gas_constants(row,fluid)
|
|
452
|
+
stator_calc(row,upstream,downstream,calculate_vm=False)
|
|
453
|
+
row = compute_gas_constants(row,fluid)
|
|
454
|
+
compute_massflow(row)
|
|
455
|
+
compute_power(row,upstream)
|
|
454
456
|
|
|
455
457
|
def massflow_loss_function(exit_angle:float,index:int,row:BladeRow,upstream:BladeRow,downstream:BladeRow=None,fluid:Solution=None):
|
|
456
458
|
"""Finds the blade exit angles that balance the massflow throughout the stage
|
|
@@ -531,14 +533,10 @@ def outlet_pressure(percents:List[float],inletP0:float,outletP:float) -> npt.NDA
|
|
|
531
533
|
Returns:
|
|
532
534
|
npt.NDArray: Array of static pressures
|
|
533
535
|
"""
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
Ps =
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
Ps[i] = p*(maxP - minP) + minP
|
|
542
|
-
maxP = Ps[i]
|
|
543
|
-
i+=1
|
|
544
|
-
return Ps
|
|
536
|
+
percents = convert_to_ndarray(percents)
|
|
537
|
+
Ps = np.zeros((len(percents),))
|
|
538
|
+
for i in range(len(percents)):
|
|
539
|
+
Ps[i] = float(interp1d((0,1),(inletP0,outletP))(percents[i]))
|
|
540
|
+
inletP0 = Ps[i]
|
|
541
|
+
return Ps
|
|
542
|
+
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
turbodesign/__init__.py,sha256=N8Nu0I1vrlEHYJZZ7yhhg-FtbNbLyrgjy7hoicygUqg,325
|
|
2
|
-
turbodesign/arrayfuncs.py,sha256=GHIlTyLfeNsNCQQoh5m1aXK3iyvU6RjdYQipkqpU_ps,519
|
|
3
|
-
turbodesign/bladerow.py,sha256=v4tX27aOL7iuN0ILWYbtSbANWZ_7_LIxksu4ux1aQ2o,24959
|
|
4
|
-
turbodesign/cantera_gas/co2.yaml,sha256=M2o_RzxV9B9rDkgkXJC-l3voKraFZguTZuKKt4F7S_c,887
|
|
5
|
-
turbodesign/compressorspool.py,sha256=z8ZVczJ-EdZvIqqZArC6UdwC5MbU2SZh_MT2CGq5avY,2600
|
|
6
|
-
turbodesign/coolant.py,sha256=evDtUFOYhfZKTVAsDWzxRzUX20gTvfjj0uybaWg4CsI,427
|
|
7
|
-
turbodesign/enums.py,sha256=T4aFrGMnx9fgZkrExMBIY2IbCueA0utqr_afk-TUe9Q,1188
|
|
8
|
-
turbodesign/inlet.py,sha256=L_IHE8zzm3uFMSow0iO-VxI71SnyQZwRhJMlJDcwZ4o,7329
|
|
9
|
-
turbodesign/isentropic.py,sha256=YLTmNx69e_M5fTuLOmk_KvaQ6ABv0aZsityfBihJOmI,2003
|
|
10
|
-
turbodesign/loss/__init__.py,sha256=ZJomzXa6ElduFruURukCrFwJQXMWS2aW8JSaVQ-M2r8,46
|
|
11
|
-
turbodesign/loss/compressor/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
12
|
-
turbodesign/loss/losstype.py,sha256=Vzj3UPk1_5IA3DtL56Eb5Z7LkYyMQ97DGZvgfki8ByA,708
|
|
13
|
-
turbodesign/loss/turbine/TD2.py,sha256=evyTG4K6s56NGdjxrZFD3G7zsB8_2lJTBOxT3Ju2uG8,5207
|
|
14
|
-
turbodesign/loss/turbine/__init__.py,sha256=d1UrbiIicO60FhDlOemo_irYW2asUaYoqlXUz-UG9zk,285
|
|
15
|
-
turbodesign/loss/turbine/ainleymathieson.py,sha256=8UbugNmxI12I68HGctJe2lQpqjKZN1b40UOTzqU6hQQ,5861
|
|
16
|
-
turbodesign/loss/turbine/craigcox.py,sha256=TrbNdpGdyD5kTRFKfNmbRDhCOjA0-GT5xoluLQpO1gA,9664
|
|
17
|
-
turbodesign/loss/turbine/fixedefficiency.py,sha256=JJv4GUS5q9pvuf3akjBtlcHOykRYmRVFfDDrdWqH6S4,774
|
|
18
|
-
turbodesign/loss/turbine/fixedpressureloss.py,sha256=jbm8dt8wtyN1RaOgpgYZsvwM0-0lv2Y73kXleyoy0zE,683
|
|
19
|
-
turbodesign/loss/turbine/kackerokapuu.py,sha256=hUmZdyA1hAhN3_xbwBhka2dyk0Aq9rqq62S2ghuKSOk,5071
|
|
20
|
-
turbodesign/loss/turbine/traupel.py,sha256=aZxFE9JDcCfi1gy-fqS1SxjjlhuDG-H-g3LPurty1M0,4164
|
|
21
|
-
turbodesign/lossinterp.py,sha256=B2KEobp-nD9jwD6UINgBmTlH9kKyWg3UNvXxqfUsr-k,6198
|
|
22
|
-
turbodesign/outlet.py,sha256=-0XpeEmTQpFjUQNYQxOp5WuHkF7cXfx59hxy7BmaxgY,2119
|
|
23
|
-
turbodesign/passage.py,sha256=Ur6zZCzI9Y7HW0o5LrDq9yeatRain1mBLZBcTOzgjEU,11996
|
|
24
|
-
turbodesign/radeq.py,sha256=3XuSf_KtOqddJclcxh9v1V2YWMvbWfd0YxcHGkic7hg,11361
|
|
25
|
-
turbodesign/rotor.py,sha256=tHl9o5H4aQ6Etd4gqa8Ime1UK7k0de4GLt5Yb1sJdGs,1376
|
|
26
|
-
turbodesign/solve_radeq.py,sha256=mGVBHmc20pAXEDKGzyiU3BVUsmY9gJl7zhbtHZqxARg,1956
|
|
27
|
-
turbodesign/spool.py,sha256=XKvYABvfigLulGLHH23X7k6aL6wvfuqgfLkKCMK9X8c,14338
|
|
28
|
-
turbodesign/stage.py,sha256=UP45sDKDLsAkO_WfDWJ6kqXU7cYKh_4QO01QZnSN1oQ,166
|
|
29
|
-
turbodesign/td_math.py,sha256=NMKgHkc36LCrr4bZxjxx7TcA4ztaRps1cIsm1tucMrk,16069
|
|
30
|
-
turbodesign/turbinespool.py,sha256=I5e1l8SsvwsQZZkOv7ric83-uNvT9MExwCimJEAhaI8,25194
|
|
31
|
-
turbo_design-1.3.0.dist-info/METADATA,sha256=qSAB19ivwujv2mpnh8XwkwdSuVNIbiYNMYozn6ccPW0,734
|
|
32
|
-
turbo_design-1.3.0.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
|
33
|
-
turbo_design-1.3.0.dist-info/RECORD,,
|
|
File without changes
|