Example #1
0
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)
Example #2
0
    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()
Example #3
0

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))
Example #4
0
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,
Example #5
0
    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
Example #6
0
        [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):
Example #8
0
                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)}