Chciałem skrótowo to napisać, ale poniżej jest kod który udało mi się napisać:
# -*- coding: utf-8 -*-
import math
A0 = -6.5314
A1 = 0.072452
A2 = -0.23951e-03
A3 = 0.25493e-06
B0 = -15.587
B1 = 0.15915
B2 = -0.50612e-03
B3 = 0.53290e-06
Ws = 47/2 # kg
Cps = 924 # J/kg*K
Cpw = 4180 # J/kg*K
Cp_cond = Cpw # J/kg*K
Cp_cool = Cpw # J/kg*K
Cp_chill = Cpw # J/kg*K
Cp_Cu = 386 # J/kg*K
Wk_Hex = 52.20 # kg
Cp_Al = 905 # J/kg*K
Wf_Hex = 64.04 # kg
Wcond = 24.28 # kg
Wew = 50 # kg
Weva = 12.45 # kg
Lw = 2.5*10**6 # J/kg
Qst = 2.8*10**6 # J/kg
Twater_in = 85 + 273.15 # K
Ts = 31 + 273.15 # K
Tcool_in = 31 + 273.15 # K
Kdeso = 1724.14 # W/m2*K
Kads = 1602.56 # W/m2*K
Kcond = 4115.23 # W/m2*K
Keva = 2557.54 # W/m2*K
Ahex = 2.46 # m2
Acond = 3.53 # m2
Aeva = 1.91 # m2
mw_hot = 1.3 # kg/s
mw_cool = 1.3 # kg/s
mw_cool_ads = 1.6 # kg/s
mw_chill = 0.7 # kg/s
Tchill_in = 14 + 273.15 # K
Tpary = 10 + 273.15 # K
Dso = 2.54*(10**-4) # m2/s
Ea = 4.2*(10**4) # J/mol
R = 8.3144 # J/mol*K
Rp = 1.7*10**-4 # m
def Antoine(T):
Psat_T = 133.32*math.exp(18.3 - (3820/(T - 46.1)))
return Psat_T
def q_equilibrium(T1, T2):
A_T1 = A0 + A1*T1 + A2*T1**2 + A3*T1**3
B_T1 = B0 + B1*T1 + B2*T1**2 + B3*T1**3
q_eq = A_T1*pow(Antoine(T2)/Antoine(T1),B_T1)
return q_eq
def SorptionRate(T, q_eq, q):
Ds = Dso*math.exp(-Ea/(R*T))
ksap = (15*Ds)/(Rp**2) # 1/s
dq_dt = ksap*(q_eq - q)
return dq_dt
def TempWaterOut(T, Tw_in, K, A, m, Cp):
Twater_out = (T + (Tw_in - T)*math.exp(-(K*A)/(m*Cp))) # K
return Twater_out
def Sorpcja(dq, q, mw, Tw_in, Tw_out, t):
T_bed = (((Qst*Ws*dq)+(mw*Cpw*(Tw_in - Tw_out)))/(Ws*(Cps + Cpw*q)+(Cp_Cu*Wk_Hex+Cp_Al*Wf_Hex)))*t
return T_bed
def Kondensacja(dq_dt, Tcool_in, Tcool_out, Tcond, t):
T_cond = (((-Lw+Cpw*Tcond)*(Ws*dq_dt)+(mw_cool*Cp_cool*(Tcool_in-Tcool_out)))/(Cp_Cu*Wcond))*t
return T_cond
def Parowanie(dqa_dt, dqd_dt, Tchill_in, Tchill_out, Tcond, t):
T_eva = (((-Lw*Ws*dqa_dt)+(Cpw*Tcond*Ws*dqd_dt)-(mw_chill*Cp_chill*(Tchill_in-Tchill_out)))/(Cpw*Wew+Cp_Cu*Weva))*t
return T_eva
def summ(czas, cykl):
TW_OUT_WYNIK = []
TS_WYNIK = []
q_WYNIK = []
dq_dt_WYNIK = []
TCOND_WYNIK =[]
TCOOL_OUT = []
TW_OUT_WA = []
TS_WA = []
q_WA = []
TEVA_WA =[]
TCHILL_OUT_WA = []
for c in range(1, cykl):
if c == 1:
Ts = 31 + 273.15
Tcond = 31 + 273.15
q = 0.128
Teva = 10 + 273.15
else:
Ts = TS_WA[-1]
Tcond = TCOND_WYNIK[-1]
q = q_WA[-1]
Teva = TEVA_WA[-1]
dq_dt = 0.0000
dqa_dt = 0.0000
for t in range(1, czas):
Tw_out = TempWaterOut(Ts, Twater_in, Kdeso, Ahex, mw_hot, Cpw)
TW_OUT_WYNIK.append(round(Tw_out - 273.15,2))
TCOND_WYNIK.append(Tcond)
q_WYNIK.append(q)
dq_dt_WYNIK.append(dq_dt)
if t <= 30:
Tcool_out = 31 + 273.15
Tc_dt = 0
else:
dq_dt = SorptionRate(Ts, q_equilibrium(Ts, Tcond), q)
q += dq_dt
Tc_dt = Kondensacja(dq_dt, Tcool_in, Tcool_out, Tcond, t)/t
Tcool_out = TempWaterOut(Tcond, Tcool_in, Kcond, Acond, mw_cool, Cp_cond)
TCOOL_OUT.append(Tcool_out)
Tcond += Tc_dt
TS_WYNIK.append(Ts)
Ts += Sorpcja(dq_dt, q, mw_hot, Twater_in, Tw_out, t)/t
Tads = TS_WYNIK[-1]
q_ads = q_WYNIK[-1]
# dqa_dt = 0.0000
for t in range(1, czas):
Tw_out_a = TempWaterOut(Tads, Tcool_in, Kads, Ahex, mw_cool_ads, Cpw)
TW_OUT_WA.append(round(Tw_out_a - 273.15,2))
TEVA_WA.append(Teva)
q_WA.append(q_ads)
Tchill_out = TempWaterOut(Teva, Tchill_in, Keva, Aeva, mw_chill, Cp_chill)
TCHILL_OUT_WA.append(Tchill_out - 273.15)
if t <= 30:
Teva_dt = 0
else:
dqa_dt = SorptionRate(Tads, q_equilibrium(Tads, Teva), q_ads)
q_ads += dqa_dt
Teva_dt = Parowanie(dqa_dt, dq_dt_WYNIK[t + 450*(c - 1) - 1], -Tchill_in, -Tchill_out, TCOND_WYNIK[t + 450*(c - 1) - 1], t)/t
Teva += Teva_dt
TS_WA.append(Tads)
Tads += Sorpcja(dqa_dt, q_ads, mw_cool, Tcool_in, Tw_out_a, t)/t
return TW_OUT_WYNIK, TS_WYNIK, q_WYNIK, TCOND_WYNIK, TCOOL_OUT, TW_OUT_WA, TS_WA, q_WA, TEVA_WA, TCHILL_OUT_WA
no i po wpisaniu
TW_OUT_WYNIK, TS_WYNIK = summ(450,1)
TW_OUT_WYNIK
wyrzuca mi pustą tablicę []
a przecież są dopisywane elementy do niej
Macie pomysły?