fig3 = mpimg.imread('figures/Oates_1996_Fig_3.png') fig = plt.figure(figsize=(8, 12)) ax = [fig.add_subplot(2, 2, i) for i in range(1, 5)] ax[0].imshow(fig1, extent=[0.0, 0.5, -5, 0.], aspect='auto') ax[1].imshow(fig2, extent=[0.0, 0.5, -5.5, -3.5], aspect='auto') ax[2].imshow(fig3, extent=[0.0, 0.5, 0, 0.15], aspect='auto') wAB = -1. * R T = 1. p_As = np.linspace(0.001, 0.5, 101) Es = np.empty_like(p_As) ss = CSAModel(cluster_energies=binary_cluster_energies(wAB), gamma=1., site_species=[['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']]) for i, p_A in enumerate(p_As): print(p_A) minimize_energy(T, p_A, ss) Es[i] = ss.molar_gibbs ax[0].plot(p_As, Es / R) # AB - AC xs = np.linspace(0.001, 0.999, 101) p_ABCC = np.empty_like(xs) p_AABC = np.empty_like(xs) p_B = np.empty_like(xs)
u[0, 0, 0, 0] = 0. return u wAB = -1.*R T = 1. cluster_energies = binary_cluster_energies(wAB*4.) site_species = [['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']] ss = IUCAModel(cluster_energies, site_species, 3./4., [[0, 1, 2, 3]]) ss2 = NewModel(cluster_energies=binary_cluster_energies(wAB*4.), gamma=1.*4., site_species=[['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']]) ss3 = CSAModel(cluster_energies=binary_cluster_energies(wAB), gamma=1., site_species=[['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']]) temperatures = np.linspace(0.1, 5., 101) Ss = np.empty_like(temperatures) Ss2 = np.empty_like(temperatures) Ss3 = np.empty_like(temperatures) Es = np.empty_like(temperatures) Es2 = np.empty_like(temperatures) Es3 = np.empty_like(temperatures) Gs = np.empty_like(temperatures) Gs2 = np.empty_like(temperatures) Gs3 = np.empty_like(temperatures) fig = plt.figure()
fig1 = plt.figure(figsize=(16, 12)) ax1 = [fig1.add_subplot(2, 2, i) for i in range(1, 5)] reduced_temperatures = np.linspace(0.2, 2., 51) Ss_disordered = np.empty_like(reduced_temperatures) Ss_equilibrium = np.empty_like(reduced_temperatures) for lmda in [0.]: # lmda has no effect in this simple binary system for gamma in [1., 1.2]: print(gamma) interactions = np.array([[0., lmda / 2.], [lmda / 2., 0.]]) ss = CSAModel(cluster_energies=two_site_cluster_energies(wAB=-2. * R), gamma=gamma, site_species=[['A', 'B'], ['A', 'B']], compositional_interactions=interactions) for i, T in enumerate(reduced_temperatures): ss.equilibrate(composition={'A': 1., 'B': 1.}, temperature=T) Ss_equilibrium[i] = ss.molar_entropy Cp_equilibrium = reduced_temperatures * np.gradient( Ss_equilibrium, reduced_temperatures) ax1[0].plot(reduced_temperatures, Ss_equilibrium / R, label='$\\lambda$:{0} $\\gamma$: {1}'.format(lmda, gamma)) ax1[1].plot(reduced_temperatures, Cp_equilibrium / R, label='$\\lambda$:{0} $\\gamma$: {1}'.format(lmda, gamma))
ax1 = [fig1.add_subplot(2, 3, i) for i in range(1, 7)] ax1[0].imshow(pfig1, extent=[0.0, 1.0, 0.3, 0.9], aspect='auto') ax1[1].imshow(pfig2, extent=[0.6, 1.2, 0., 0.6], aspect='auto') ax1[2].imshow(pfig3, extent=[0.0, 1.0, 0.3, 1.], aspect='auto') ax1[4].imshow(pfig4, extent=[0.0, 1.0, 1.08 * 3. / 7., 1.08], aspect='auto') ax1[5].imshow(pfig5, extent=[0.0, 1.0, 1.08 * 3. / 7., 1.08], aspect='auto') reduced_temperatures = np.linspace(0.2, 1.2, 61) Ss_disordered = np.empty_like(reduced_temperatures) Ss_equilibrium = np.empty_like(reduced_temperatures) gamma = 1.42 ss = CSAModel(cluster_energies=binary_cluster_energies(wAB=-R), gamma=gamma, site_species=[['A', 'B'], ['A', 'B'], ['A', 'D'], ['A', 'D']]) T = 5.2 ss.equilibrate(composition={'A': 1.7, 'B': 1.1, 'D': 1.2}, temperature=T) S_c = -R * np.sum(ss.cluster_proportions * np.log(ss.cluster_proportions)) S_s = -R * np.sum(ss.p_s * np.log(ss.p_s)) print(ss.cluster_proportions) print(ss.p_s) print(S_c, S_s) print(ss.molar_entropy) print(gamma * S_c + (1. / 4. - gamma) * S_s) for gamma in [1., 1.22]: ss = CSAModel(cluster_energies=binary_cluster_energies(wAB=-R), gamma=gamma,
u[1, 0, 1, 0] = 4. * wAB u[1, 1, 0, 0] = 4. * wAB u[0, 0, 0, 1] = 3. * wAB * (1. + alpha) u[0, 0, 1, 0] = 3. * wAB * (1. + alpha) u[0, 1, 0, 0] = 3. * wAB * (1. + alpha) u[1, 0, 0, 0] = 3. * wAB * (1. + alpha) u[0, 0, 0, 0] = 0. return u gamma = 1.22 wAB = -1. * R ss = CSAModel(cluster_energies=binary_cluster_energies(wAB), gamma=gamma, site_species=[['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']]) T = 0.8 ss.set_state(T) ss.set_composition_from_p_ind(np.array([-0.6, 0.3, 0.15, 0.5, 0.65])) ss.equilibrate_clusters() G0 = ss.molar_gibbs S0 = ss.molar_entropy JG = ss.molar_chemical_potentials JS = ss.partial_molar_entropies HG = ss.hessian_gibbs HS = ss.hessian_entropy c0 = ss.c
[0.696, 0.0, 0.0, 1.22, 0.4], [0.22, 1.0, 0.92, 1.42, 0.4], [0.444, 1.0, 0.92, 1.42, 0.4], [0.556, 1.0, 0.92, 1.42, 0.4], [0.738, 1.0, 0.92, 1.42, 0.4], [0.388, 1.0, 0.92, 1.42, 0.6], [0.402, 1.0, 0.92, 1.42, 0.6], [0.542, 1.0, 0.92, 1.42, 0.6], [0.598, 1.0, 0.92, 1.42, 0.6], [0.612, 1.0, 0.92, 1.42, 0.6], [0.654, 1.0, 0.92, 1.42, 0.6]] for x, alpha, beta, gamma, T in prms: ss = CSAModel(cluster_energies=binary_cluster_energies(wAB=-R, alpha=alpha, beta=beta), gamma=gamma, site_species=[['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']]) ss.equilibrate(composition={'A': 4. * (1.-x), 'B': 4.*x}, temperature=T) try: ss.equilibrate(composition={'A': 4. * (1.-x), 'B': 4.*x}, temperature=T) print('Good', x, alpha, beta, gamma, T) except Exception as exc: print(exc) eprint('Bad', x, alpha, beta, gamma, T)
u[1, 0, 0, 0] = 3. * wAB * (1. + alpha) u[0, 0, 0, 0] = 0. return u gamma = 1.22 * 4. wAB = -1. * R * 4. ss = NewModel(cluster_energies=binary_cluster_energies(wAB), gamma=gamma, site_species=[['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']]) gamma = 1.22 wAB = -1. * R ss2 = CSAModel(cluster_energies=binary_cluster_energies(wAB), gamma=gamma, site_species=[['A', 'B'], ['A', 'B'], ['A', 'B'], ['A', 'B']]) fig = plt.figure() ax = [fig.add_subplot(2, 2, i) for i in range(1, 5)] fs = np.linspace(0.01, 0.99, 101) Ss1 = np.empty_like(fs) Ss2 = np.empty_like(fs) Ss3 = np.empty_like(fs) Ss4 = np.empty_like(fs) Gs1 = np.empty_like(fs) Gs2 = np.empty_like(fs) for T in [0.1, 4.0]: ss.set_state(T) for i, f in enumerate(fs):
Ss_equilibrium[i] = ss.molar_entropy Cp_equilibrium = reduced_temperatures*np.gradient(Ss_equilibrium, reduced_temperatures) ax[0].plot(reduced_temperatures, Ss_equilibrium, label='$\\alpha$:{0} $\\gamma$: {1}'.format(alpha, gamma)) ax[0].legend() """ Vinograd_S = mpimg.imread('figures/Vinograd_pymaj_edited.png') ax[1].imshow(Vinograd_S, extent=[0.0, 1.0, 0., 11.], aspect='auto') gamma = 1. ss = CSAModel(cluster_energies=binary_cluster_energies(wAB=-1.*R), gamma=gamma, site_species=[['Mg', 'Si', 'Al'], ['Mg', 'Si', 'Al'], ['Mg', 'Si', 'Al'], ['Mg', 'Si', 'Al']]) x_majs = np.linspace(0.01, 0.99, 25) Ss_equilibrium = np.empty_like(x_majs) ideal_entropy = (x_majs/2. * np.log(x_majs / 2.) + x_majs/2. * np.log(x_majs / 2.) + (1. - x_majs) * np.log(1. - x_majs))*R*-1. ax[1].plot(x_majs, ideal_entropy) for T in [0.5, 1., 1.5, 2., 2.5]: for i, x in enumerate(x_majs): print(x) composition = {'Mg': 2.*x, 'Si': 2.*x, 'Al': 4.*(1. - x)}