34 lines
764 B
Python
34 lines
764 B
Python
import numpy as np
|
|
|
|
g = np.array([1, 4/3, 4/3, 4/3, 4/3, 4/3, 4/3, 1])
|
|
b = np.array([2, 3, 1, 2, 3, 1, 1, 1])
|
|
p = np.array([1, 2, 2, 2, 2, 2, 2, 1])
|
|
h = np.empty_like(g)
|
|
sizing = np.array([3, 2, 2, 2, 2, 2, 2, 3])
|
|
min_sizing = np.array([3,4,4,4,4,4,4,3])
|
|
|
|
C_in = np.array([3,0,0,0,0,0,0,0,45], dtype=np.float32)
|
|
|
|
N = len(C_in) - 1
|
|
H = C_in[-1] / C_in[0]
|
|
G = np.prod(g)
|
|
B = np.prod(b)
|
|
|
|
P = np.sum(p)
|
|
|
|
for i in range(4):
|
|
F = G*B*H
|
|
f_opt = F**(1/N)
|
|
D = N*f_opt + P
|
|
|
|
for j in range(N)[::-1]:
|
|
C_in[j] = g[j]*b[j]*C_in[j+1]/f_opt
|
|
|
|
for j in range(N)[::-1]:
|
|
C_in[j] = np.rint(C_in[j]/sizing[j])*sizing[j]
|
|
if C_in[j] < min_sizing[j]:
|
|
C_in[j] = min_sizing[j]
|
|
h[j] = C_in[j+1] / C_in[j]
|
|
H = np.prod(h)
|
|
|