def test_madeup_20(): N = 20 rs, qs = make_rsqs(N) taus = make_taus(N) xs = normalize([random() for i in range(N)]) T = 350.0 GE = UNIQUAC(T=T, xs=xs, rs=rs, qs=qs, tau_coeffs=taus)
def test_madeup_NRTL(): N = 6 alphas = make_alphas(N) taus = make_taus(N) xs = normalize([random() for i in range(N)]) T = 350.0 GE = NRTL(T, xs, taus, alphas)
def NRTL_gammas_200(): # ten component # Takes 40 ms - not a great idea N = 200 taus = [[random() for i in range(N)] for j in range(N)] alphas = [[random() for i in range(N)] for j in range(N)] xs = normalize([random() for i in range(N)]) gammas = NRTL_gammas(xs=xs, taus=taus, alphas=alphas)
def __init__(self): super().__init__() for N in Diguilio_Teja_ns: Diguilio_Teja_kwargs = dict(T=298.15, xs=normalize([0.1606, 0.8394] * N), sigmas_Tb=[0.01424, 0.02530] * N, Tbs=[309.21, 312.95] * N, Tcs=[469.7, 508.0] * N) N *= 2 setattr(self, 'DT%d' % N, Diguilio_Teja_kwargs) Diguilio_Teja_kwargs = Diguilio_Teja_kwargs.copy() for s in ('sigmas_Tb', 'xs', 'Tbs', 'Tcs'): Diguilio_Teja_kwargs[s] = np.array(Diguilio_Teja_kwargs[s]) setattr(self, 'DTnp%d' % N, Diguilio_Teja_kwargs) for N in Weinaug_Katz_ns: Weinaug_Katz_kwargs = dict(parachors=[5.1e-5, 7.2e-5] * N, Vml=0.000125, Vmg=0.02011, xs=normalize([.4, .6] * N), ys=normalize([.6, .4] * N)) N *= 2 setattr(self, 'WK%d' % N, Weinaug_Katz_kwargs) Weinaug_Katz_kwargs = Weinaug_Katz_kwargs.copy() for s in ('parachors', 'xs', 'ys'): Weinaug_Katz_kwargs[s] = np.array(Weinaug_Katz_kwargs[s]) setattr(self, 'WKnp%d' % N, Weinaug_Katz_kwargs) for N in Winterfeld_Scriven_Davis_ns: Winterfeld_Scriven_Davis_kwargs = dict( xs=normalize([0.1606, 0.8394] * N), sigmas=[0.01547, 0.02877] * N, rhoms=[8610., 15530.] * N) N *= 2 setattr(self, 'WS%d' % N, Winterfeld_Scriven_Davis_kwargs) Winterfeld_Scriven_Davis_kwargs = Winterfeld_Scriven_Davis_kwargs.copy( ) for s in ('sigmas', 'xs', 'rhoms'): Winterfeld_Scriven_Davis_kwargs[s] = np.array( Winterfeld_Scriven_Davis_kwargs[s]) setattr(self, 'WSnp%d' % N, Winterfeld_Scriven_Davis_kwargs)
def setup(self): N = 3 T = 331.42 xs = [0.229, 0.175, 0.596] rs = [2.5735, 2.87, 1.4311] qs = [2.336, 2.41, 1.432] # madeup numbers to match Wilson example roughly tausA = [[0.0, -1.05e-4, -2.5e-4], [3.9e-4, 0.0, 1.6e-4], [-1.123e-4, 6.5e-4, 0]] tausB = [[0.0, 235.0, -169.0], [-160, 0.0, -715.0], [11.2, 144.0, 0.0]] tausC = [[0.0, -4.23e-4, 2.9e-4], [6.1e-4, 0.0, 8.2e-5], [-7.8e-4, 1.11e-4, 0]] tausD = [[0.0, -3.94e-5, 2.22e-5], [8.5e-5, 0.0, 4.4e-5], [-7.9e-5, 3.22e-5, 0]] tausE = [[0.0, -4.2e2, 8.32e2], [2.7e2, 0.0, 6.8e2], [3.7e2, 7.43e2, 0]] tausF = [[0.0, 9.64e-8, 8.94e-8], [1.53e-7, 0.0, 1.11e-7], [7.9e-8, 2.276e-8, 0]] ABCDEF = (tausA, tausB, tausC, tausD, tausE, tausF) self.GE2 = UNIQUAC(T=T, xs=xs, rs=rs, qs=qs, ABCDEF=ABCDEF) if not IS_PYPY: self.GE2nb = UNIQUAC(T=T, xs=np.array(xs), rs=np.array(rs), qs=np.array(qs), ABCDEF=(np.array(v) for v in ABCDEF)) self.xs2nb = np.array([.1, .2, .7]) def make_rsqs(N): cmps = range(N) rs = [float('%.3g' % (random() * 2.5)) for _ in cmps] qs = [float('%.3g' % (random() * 1.3)) for _ in cmps] return rs, qs def make_taus(N): cmps = range(N) data = [] base = [1e-4, 200.0, -5e-4, -7e-5, 300, 9e-8] for i in cmps: row = [] for j in cmps: if i == j: row.append([0.0] * 6) else: row.append( [float('%.3g' % (random() * n)) for n in base]) data.append(row) return data N = 20 rs, qs = make_rsqs(N) taus = make_taus(N) xs = normalize([random() for i in range(N)]) T = 350.0 self.GE20 = UNIQUAC(T=T, xs=xs, rs=rs, qs=qs, tau_coeffs=taus) self.xs20 = normalize([random() for i in range(N)]) if not IS_PYPY: self.GE20nb = UNIQUAC(T=T, xs=np.array(xs), rs=np.array(rs), qs=np.array(qs), tau_coeffs=np.array(taus)) self.xs20nb = np.array(self.xs20)
def to_diff_dnGE2_dninj(ns): nt = sum(ns) xs = normalize(ns) return nt * GE.to_T_xs(T, xs).GE()
def gammas_to_diff(xs): xs = normalize(xs) return np.array(Wilson_gammas(xs, lambdas))
def diff_for_dnGE_dn(xs): nt = sum(xs) xs = normalize(xs) return nt * GE.to_T_xs(T, xs).GE()
def diff_for_dGE_dn(xs): xs = normalize(xs) return GE.to_T_xs(T, xs).GE()
def diff_for_dSE_dns(xs): xs = normalize(xs) return GE.to_T_xs(T, xs).SE()
def NRTL_gammas_44(): N = 44 taus = [[random() for i in range(N)] for j in range(N)] alphas = [[random() for i in range(N)] for j in range(N)] xs = normalize([random() for i in range(N)]) gammas = NRTL_gammas(xs=xs, taus=taus, alphas=alphas)