Special _MIX
Reference State¶
pycalphad also includes special mixing reference state that is referenced to the endmembers for that phase with the _MIX
suffix (GM_MIX
, HM_MIX
, SM_MIX
, CPM_MIX
). This is particularly useful for seeing how the mixing contributions from physical or excess models affect the energy.
Below is an example for calculating this endmember-referenced mixing enthalpy for the \(\chi\) phase in Nb-Re. Notice that the four endmembers have a mixing enthalpy of zero.
[1]:
from pycalphad import Database, calculate
import matplotlib.pyplot as plt
dbf = Database("nbre_liu.tdb")
comps = ["NB", "RE", "VA"]
# Calculate HMR for the Chi at 2800 K from X(RE)=0 to X(RE)=1
result = calculate(dbf, comps, "CHI_RENB", P=101325, T=2800, output='HM_MIX')
# Plot
fig = plt.figure(figsize=(9,6))
ax = fig.gca()
ax.scatter(result.X.sel(component='RE'), result.HM_MIX, marker='.', s=5, label='CHI_RENB')
ax.set_xlim((0, 1))
ax.set_xlabel('X(RE)')
ax.set_ylabel('HM_MIX')
ax.set_title('Nb-Re CHI Mixing Enthalpy')
ax.legend()
plt.show()
![../_images/examples_LegacyReferenceState_1_0.png](../_images/examples_LegacyReferenceState_1_0.png)
Calculations at specific site fractions¶
In the previous example, the mixing energy for the CHI phase in Nb-Re is sampled by sampling site fractions linearly between endmembers and then randomly across site fraction space.
Imagine now that you’d like to calculate the mixing energy along a single internal degree of freedom (i.e. between two endmembers), referenced to those endmembers.
A custom 2D site fraction array can be passed to the points
argument of calculate
and the HM_MIX
property can be calculated as above.
The sublattice model for CHI is RE : NB,RE : NB,RE
.
If we are interested in the interaction along the second sublattice when NB occupies the third sublattice, we need to construct a site fraction array of
# RE, NB, RE, NB, RE
[ 1.0, x, 1-x, 1.0, 0.0 ]
where x
varies from 0 to 1. This fixes the site fraction of RE in the first sublattice to 1 and the site fractions of NB and RE in the third sublattice to 1 and 0, respectively. Note that the site fraction array is sorted first in sublattice order, then in alphabetic order within each sublattice (e.g. NB is always before RE within a sublattice)
[2]:
from pycalphad import Database, calculate
import numpy as np
import matplotlib.pyplot as plt
dbf = Database("nbre_liu.tdb")
comps = ["NB", "RE", "VA"]
# The values for the internal degree of freedom we will vary
n_pts = 1001
x = np.linspace(1e-12, 1, n_pts)
# Create the site fractions
# The site fraction array is ordered first by sublattice, then alphabetically be species within a sublattice.
# The site fraction array is therefore `[RE#0, NB#1, RE#1, NB#2, RE#2]`, where `#0` is the sublattice at index 0.
# To calculate a RE:NB,RE:NB interaction requires the site fraction array to be [1, x, 1-x, 1, 0]
# Note the 1-x is required for site fractions to sum to 1 in sublattice #1.
site_fractions = np.array([np.ones(n_pts), x, 1-x, np.ones(n_pts), np.zeros(n_pts)]).T
print('Site fractions:')
print(site_fractions)
print('Site fractions shape: {} ({} points, {} internal degrees of freedom)'.format(site_fractions.shape, site_fractions.shape[0], site_fractions.shape[1]))
# Calculate HMR for the Chi at 2800 K from Y(CHI, 1, RE)=0 to Y(CHI, 1, RE)=1
# Pass the custom site fractions to the `points` argument
result = calculate(dbf, comps, "CHI_RENB", P=101325, T=2800, points=site_fractions, output='HM_MIX')
# Extract the site fractions of RE in sublattice 1.
Y_CHI_1_RE = result.Y.squeeze()[:, 2]
# Plot
fig = plt.figure(figsize=(9,6))
ax = fig.gca()
ax.scatter(Y_CHI_1_RE, result.HM_MIX, marker='.', s=5)
ax.set_xlim((0, 1))
ax.set_xlabel('Y(CHI, 1, RE)')
ax.set_ylabel('HM_MIX')
ax.set_title('Nb-Re CHI Mixing Enthalpy')
plt.show()
Site fractions:
[[1.00e+00 1.00e-12 1.00e+00 1.00e+00 0.00e+00]
[1.00e+00 1.00e-03 9.99e-01 1.00e+00 0.00e+00]
[1.00e+00 2.00e-03 9.98e-01 1.00e+00 0.00e+00]
...
[1.00e+00 9.98e-01 2.00e-03 1.00e+00 0.00e+00]
[1.00e+00 9.99e-01 1.00e-03 1.00e+00 0.00e+00]
[1.00e+00 1.00e+00 0.00e+00 1.00e+00 0.00e+00]]
Site fractions shape: (1001, 5) (1001 points, 5 internal degrees of freedom)
![../_images/examples_LegacyReferenceState_3_1.png](../_images/examples_LegacyReferenceState_3_1.png)