Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def flash_UNIFAC_sequential_substitution(T, P, zs, Psats, chemgroups):
gammas = UNIFAC(chemgroups=chemgroups, T=T, xs=zs)
Ks = [K_value(P=P, Psat=Psat, gamma=gamma) for Psat, gamma in zip(Psats, gammas)]
V_over_F, xs, ys = flash_inner_loop(zs, Ks)
for i in range(100):
gammas = UNIFAC(chemgroups=chemgroups, T=T, xs=xs)
Ks = [K_value(P=P, Psat=Psat, gamma=gamma) for Psat, gamma in zip(Psats, gammas)]
V_over_F, xs_new, ys_new = flash_inner_loop(zs, Ks)
err = (sum([abs(x_new - x_old) for x_new, x_old in zip(xs_new, xs)]) +
sum([abs(y_new - y_old) for y_new, y_old in zip(ys_new, ys)]))
xs, ys = xs_new, ys_new
if err < 1E-11:
break
return V_over_F, xs, ys
def flash_UNIFAC_sequential_substitution(T, P, zs, Psats, chemgroups):
gammas = UNIFAC(chemgroups=chemgroups, T=T, xs=zs)
Ks = [K_value(P=P, Psat=Psat, gamma=gamma) for Psat, gamma in zip(Psats, gammas)]
V_over_F, xs, ys = flash_inner_loop(zs, Ks)
for i in range(100):
gammas = UNIFAC(chemgroups=chemgroups, T=T, xs=xs)
Ks = [K_value(P=P, Psat=Psat, gamma=gamma) for Psat, gamma in zip(Psats, gammas)]
V_over_F, xs_new, ys_new = flash_inner_loop(zs, Ks)
err = (sum([abs(x_new - x_old) for x_new, x_old in zip(xs_new, xs)]) +
sum([abs(y_new - y_old) for y_new, y_old in zip(ys_new, ys)]))
xs, ys = xs_new, ys_new
if err < 1E-11:
break
return V_over_F, xs, ys
def Ks(self, T, P, xs, ys, Psats):
gammas = self.gammas(T=T, xs=xs)
if self.use_phis:
phis_g = self.phis_g(T=T, P=P, ys=ys)
phis_l = self.phis_l(T=T, P=P, xs=xs)
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i], Poynting=Poyntings[i]) for i in self.cmps]
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i]) for i in self.cmps]
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i], Poynting=Poyntings[i]) for i in self.cmps]
return Ks
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i]) for i in self.cmps]
return Ks
def flash_TVF_zs(self, T, VF, zs):
assert 0 <= VF <= 1
Psats = self._Psats(T)
# handle one component
if self.N == 1:
return 'l/g', [1.0], [1.0], VF, Psats[0]
if VF == 0:
P = bubble_at_T(zs, Psats)
elif VF == 1:
P = dew_at_T(zs, Psats)
else:
P = brenth(self._T_VF_err, min(Psats)*(1+1E-7), max(Psats)*(1-1E-7), args=(VF, zs, Psats))
Ks = [K_value(P=P, Psat=Psat) for Psat in Psats]
V_over_F, xs, ys = flash_inner_loop(zs=zs, Ks=Ks)
return 'l/g', xs, ys, V_over_F, P
def _T_VF_err(self, P, VF, zs, Psats):
Ks = [K_value(P=P, Psat=Psat) for Psat in Psats]
return flash_inner_loop(zs=zs, Ks=Ks)[0] - VF
def Ks(self, T, P, xs, ys, Psats):
gammas = self.gammas(T=T, xs=xs)
if self.use_phis:
phis_g = self.phis_g(T=T, P=P, ys=ys)
phis_l = self.phis_l(T=T, P=P, xs=xs)
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i], Poynting=Poyntings[i]) for i in self.cmps]
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i]) for i in self.cmps]
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i], Poynting=Poyntings[i]) for i in self.cmps]
return Ks
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i]) for i in self.cmps]
return Ks
def _P_VF_err(self, T, P, VF, zs):
Psats = self._Psats(T)
Ks = [K_value(P=P, Psat=Psat) for Psat in Psats]
return flash_inner_loop(zs=zs, Ks=Ks)[0] - VF
def Ks(self, T, P, xs, ys, Psats):
gammas = self.gammas(T=T, xs=xs)
if self.use_phis:
phis_g = self.phis_g(T=T, P=P, ys=ys)
phis_l = self.phis_l(T=T, P=P, xs=xs)
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i], Poynting=Poyntings[i]) for i in self.cmps]
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i]) for i in self.cmps]
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i], Poynting=Poyntings[i]) for i in self.cmps]
return Ks
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i]) for i in self.cmps]
return Ks
def Ks(self, T, P, xs, ys, Psats):
gammas = self.gammas(T=T, xs=xs)
if self.use_phis:
phis_g = self.phis_g(T=T, P=P, ys=ys)
phis_l = self.phis_l(T=T, P=P, xs=xs)
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i], Poynting=Poyntings[i]) for i in self.cmps]
return [K_value(P=P, Psat=Psats[i], gamma=gammas[i],
phi_l=phis_l[i], phi_g=phis_g[i]) for i in self.cmps]
if self.use_Poynting:
Poyntings = self.Poyntings(T=T, P=P, Psats=Psats)
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i], Poynting=Poyntings[i]) for i in self.cmps]
return Ks
Ks = [K_value(P=P, Psat=Psats[i], gamma=gammas[i]) for i in self.cmps]
return Ks