In [1]:
# Only needed in a Jupyter Notebook
%matplotlib inline
# Optional plot styling
import matplotlib
matplotlib.style.use('fivethirtyeight')

In [2]:
import matplotlib.pyplot as plt
from pycalphad import Database, binplot, calculate, Model, equilibrium
import pycalphad.variables as v
import numpy as np

In [3]:
db = Database('N.TDB')

In [4]:
my_phases = ['Q']

In [5]:
eq = equilibrium(db, ['MG', 'AL', 'SI', 'CU'], my_phases, {v.X('SI'): 7/21,v.X('MG'): 9/21,v.X('CU'): 2/21, v.T: (300,2000,50), v.P: 101325},
                 output='heat_capacity')


Solve (3/3):  24%|██▎       | 8/34 [00:18<01:04,  2.50s/cond]
Failed to compute  OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(650.0)
Coordinates:
    T        float64 650.0), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  26%|██▋       | 9/34 [00:25<01:35,  3.81s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(700.0)
Coordinates:
    T        float64 700.0), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  29%|██▉       | 10/34 [00:31<01:45,  4.39s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(750.0)
Coordinates:
    T        float64 750.0), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  32%|███▏      | 11/34 [00:36<01:48,  4.73s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(800.0)
Coordinates:
    T        float64 800.0), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  35%|███▌      | 12/34 [00:44<02:04,  5.66s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(850.0)
Coordinates:
    T        float64 850.0), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  38%|███▊      | 13/34 [00:50<02:03,  5.88s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(900.0)
Coordinates:
    T        float64 900.0), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  41%|████      | 14/34 [00:56<01:57,  5.89s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(950.0)
Coordinates:
    T        float64 950.0), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  44%|████▍     | 15/34 [01:00<01:38,  5.16s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1000.0)
Coordinates:
    T        float64 1e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  47%|████▋     | 16/34 [01:05<01:32,  5.14s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1050.0)
Coordinates:
    T        float64 1.05e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  50%|█████     | 17/34 [01:09<01:24,  5.00s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1100.0)
Coordinates:
    T        float64 1.1e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  56%|█████▌    | 19/34 [01:15<01:00,  4.04s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1150.0)
Coordinates:
    T        float64 1.15e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  59%|█████▉    | 20/34 [01:17<00:45,  3.27s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1250.0)
Coordinates:
    T        float64 1.25e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  62%|██████▏   | 21/34 [01:17<00:31,  2.43s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1300.0)
Coordinates:
    T        float64 1.3e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  65%|██████▍   | 22/34 [01:22<00:37,  3.13s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1350.0)
Coordinates:
    T        float64 1.35e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  68%|██████▊   | 23/34 [01:25<00:34,  3.13s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1400.0)
Coordinates:
    T        float64 1.4e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  71%|███████   | 24/34 [01:26<00:23,  2.33s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1450.0)
Coordinates:
    T        float64 1.45e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  74%|███████▎  | 25/34 [01:27<00:18,  2.03s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1500.0)
Coordinates:
    T        float64 1.5e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  76%|███████▋  | 26/34 [01:28<00:14,  1.82s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1550.0)
Coordinates:
    T        float64 1.55e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  79%|███████▉  | 27/34 [01:29<00:10,  1.43s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1600.0)
Coordinates:
    T        float64 1.6e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  82%|████████▏ | 28/34 [01:30<00:08,  1.48s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1650.0)
Coordinates:
    T        float64 1.65e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  85%|████████▌ | 29/34 [01:32<00:07,  1.43s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1700.0)
Coordinates:
    T        float64 1.7e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  88%|████████▊ | 30/34 [01:33<00:05,  1.49s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1750.0)
Coordinates:
    T        float64 1.75e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  91%|█████████ | 31/34 [01:35<00:04,  1.52s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1800.0)
Coordinates:
    T        float64 1.8e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
Solve (3/3):  94%|█████████▍| 32/34 [01:35<00:02,  1.20s/cond]
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1850.0)
Coordinates:
    T        float64 1.85e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])
Failed to compute 
                                                              
 OrderedDict([('P', <xarray.DataArray 'P' ()>
array(101325.0)
Coordinates:
    P        float64 1.013e+05), ('T', <xarray.DataArray 'T' ()>
array(1900.0)
Coordinates:
    T        float64 1.9e+03), ('X_CU', <xarray.DataArray 'X_CU' ()>
array(0.09523809523809523)
Coordinates:
    X_CU     float64 0.09524), ('X_MG', <xarray.DataArray 'X_MG' ()>
array(0.42857142857142855)
Coordinates:
    X_MG     float64 0.4286), ('X_SI', <xarray.DataArray 'X_SI' ()>
array(0.3333333333333333)
Coordinates:
    X_SI     float64 0.3333)])


In [6]:
fig = plt.figure(figsize=(9,6))
fig.gca().set_xlabel('Temperature (K)')
fig.gca().set_ylabel('Isobaric Heat Capacity (J/mol-formula-K)')
fig.gca().plot(eq['T'], np.squeeze(eq['heat_capacity'].values))
plt.show()



In [ ]: