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

db = Database()
db.elements = frozenset({'A', 'B', 'C'})
db.add_phase('TEST', {}, [1])
db.add_phase_constituents('TEST', [['A', 'B', 'C']])
my_phases = ['TEST']

eq = equilibrium(db, ['A', 'B', 'C'], my_phases,
                 {v.X('A'): .2, v.X('B'): .2, v.T: 1273, v.P: 101325}, calc_opts={'pdens': 100},
                 verbose=True, pbar=False)
print(eq)


Calculation Backend: Interpreted (autograd)
Components: A B C
Phases: Phase({'model_hints': {}, 'sublattices': (1,), 'constituents': (frozenset({'A', 'B', 'C'}),), 'name': 'TEST'}) A
Y(TEST,0,A)
Phase({'model_hints': {}, 'sublattices': (1,), 'constituents': (frozenset({'A', 'B', 'C'}),), 'name': 'TEST'}) B
Y(TEST,0,B)
Phase({'model_hints': {}, 'sublattices': (1,), 'constituents': (frozenset({'A', 'B', 'C'}),), 'name': 'TEST'}) C
Y(TEST,0,C)
TEST [done]
Computing initial grid [506 points, 44.6KB]
Computing convex hull [iteration 1]
progress 15790.6579866 [0 conditions updated]
Global search complete
Refining equilibrium
INITIAL CONFIGURATION
<xarray.DataArray 'MU' (P: 1, T: 1, X_A: 1, X_B: 1, component: 3)>
array([[[[[-15790.65798661, -15449.20256191,  -6264.80667561]]]]])
Coordinates:
  * P          (P) float64 1.013e+05
  * T          (T) float64 1.273e+03
  * X_A        (X_A) float64 0.2
  * X_B        (X_B) float64 0.2
  * component  (component) object 'A' 'B' 'C'
<xarray.DataArray 'Phase' (P: 1, T: 1, X_A: 1, X_B: 1, vertex: 3)>
array([[[[['TEST', 'TEST', 'TEST']]]]], dtype=object)
Coordinates:
  * P        (P) float64 1.013e+05
  * T        (T) float64 1.273e+03
  * X_A      (X_A) float64 0.2
  * X_B      (X_B) float64 0.2
  * vertex   (vertex) int64 0 1 2
<xarray.DataArray 'NP' (P: 1, T: 1, X_A: 1, X_B: 1, vertex: 3)>
array([[[[[ 0.83290365,  0.13705325,  0.0300431 ]]]]])
Coordinates:
  * P        (P) float64 1.013e+05
  * T        (T) float64 1.273e+03
  * X_A      (X_A) float64 0.2
  * X_B      (X_B) float64 0.2
  * vertex   (vertex) int64 0 1 2
<xarray.DataArray 'X' (P: 1, T: 1, X_A: 1, X_B: 1, vertex: 3, component: 3)>
array([[[[[[ 0.18527226,  0.19565353,  0.61907421],
           [ 0.28444337,  0.206836  ,  0.50872063],
           [ 0.22308508,  0.28931482,  0.4876001 ]]]]]])
Coordinates:
  * P          (P) float64 1.013e+05
  * T          (T) float64 1.273e+03
  * X_A        (X_A) float64 0.2
  * X_B        (X_B) float64 0.2
  * vertex     (vertex) int64 0 1 2
  * component  (component) object 'A' 'B' 'C'
<xarray.DataArray 'Y' (P: 1, T: 1, X_A: 1, X_B: 1, vertex: 3, internal_dof: 3)>
array([[[[[[ 0.18527226,  0.19565353,  0.61907421],
           [ 0.28444337,  0.206836  ,  0.50872063],
           [ 0.22308508,  0.28931482,  0.4876001 ]]]]]])
Coordinates:
  * P             (P) float64 1.013e+05
  * T             (T) float64 1.273e+03
  * X_A           (X_A) float64 0.2
  * X_B           (X_B) float64 0.2
  * vertex        (vertex) int64 0 1 2
  * internal_dof  (internal_dof) int64 0 1 2
---------------------
CONSTRAINT_JAC [[ 1.          1.          1.          0.          0.          0.          0.
   0.          0.          0.          0.          0.        ]
 [ 0.          0.          0.          1.          1.          1.          0.
   0.          0.          0.          0.          0.        ]
 [ 0.          0.          0.          0.          0.          0.          1.
   1.          1.          0.          0.          0.        ]
 [ 0.83290365  0.          0.          0.13705325  0.          0.
   0.0300431   0.          0.          0.18527226  0.28444337  0.22308508]
 [ 0.          0.83290365  0.          0.          0.13705325  0.          0.
   0.0300431   0.          0.19565353  0.206836    0.28931482]
 [ 0.          0.          0.83290365  0.          0.          0.13705325
   0.          0.          0.0300431   0.61907421  0.50872063  0.4876001 ]]
CONSTRAINT_JAC RANK 6
M,N 6 12
REDUCED HESSIAN [[ 2526.48242731  1192.22467955  1381.80663843   731.26406878
   -456.64031845   743.44712914]
 [ 1192.22467955  2487.0424527   1525.53890379    61.69494198
  -1231.68459514  2597.45712059]
 [ 1381.80663843  1525.53890379  2372.41255883  1157.90654752
    -14.58637134   -94.99718885]
 [  731.26406878    61.69494198  1157.90654752  2235.12415043
   1924.95589209  2820.53688845]
 [ -456.64031845 -1231.68459514   -14.58637134  1924.95589209
    773.46759852  1852.14113161]
 [  743.44712914  2597.45712059   -94.99718885  2820.53688845
   1852.14113161  3563.08102711]]
REDUCED HESSIAN CONDITION NUMBER 10.140686441
REDUCED HESSIAN EIGENVALUES [ 8062.79985974  4710.34424317  2644.93147069  1211.18527701  -795.0940902
 -1876.55654551]
OLD ENERGY -10006.8561151
L_HESSIAN [[ 47582.67997866      0.              0.              0.              0.
       0.              0.              0.              0.           8530.54119689
       0.              0.        ]
 [     0.          45057.96933763      0.              0.              0.
       0.              0.              0.              0.           8766.13399815
       0.              0.        ]
 [     0.              0.          14240.21662138      0.              0.
       0.              0.              0.              0.          11773.64633689
       0.              0.        ]
 [     0.              0.              0.           5099.85792239      0.
       0.              0.              0.              0.              0.
   13068.1376655       0.        ]
 [     0.              0.              0.              0.           7013.38631052
       0.              0.              0.              0.              0.
    9354.42124453      0.        ]
 [     0.              0.              0.              0.              0.
    2851.50765049      0.              0.              0.              0.
    9695.66009645      0.        ]
 [     0.              0.              0.              0.              0.
       0.           1425.40653201      0.              0.              0.
       0.          10496.34012184]
 [     0.              0.              0.              0.              0.
       0.              0.           1099.10351071      0.              0.
       0.          12906.41783326]
 [     0.              0.              0.              0.              0.
       0.              0.              0.            652.14697179      0.
       0.           9246.84733225]
 [  8530.54119689   8766.13399815  11773.64633689      0.              0.
       0.              0.              0.              0.              0.
       0.              0.        ]
 [     0.              0.              0.          13068.1376655
    9354.42124453   9695.66009645      0.              0.              0.
       0.              0.              0.        ]
 [     0.              0.              0.              0.              0.
       0.          10496.34012184  12906.41783326   9246.84733225      0.
       0.              0.        ]]
GRADIENT_TERM [ -6046.97775388  -5566.35218181   4588.33264619   -373.13026821
   -835.30961       470.20962422   -159.05771594    -76.39313343
     89.58974278  -9826.64218981 -10874.03562517 -11047.06379198]
STEP [ 0.01611921  0.00447107 -0.02059028 -0.0872353  -0.0044395   0.0916748
 -0.01622135 -0.09597625  0.1121976   0.01074697 -0.00939006 -0.00135691]
OLD OBJ -10006.8561151
OLD CONSTRAINTS [  0.00000000e+00   0.00000000e+00   0.00000000e+00   5.55111512e-17
   0.00000000e+00  -1.11022302e-16]
OLD L MULTIPLIERS [  8984.24163254   1391.34631636    314.7858875  -17015.82953031
 -17114.73747847  -5477.93008285]
CANDIDATE_L_CONSTRAINTS [  0.00000000e+00  -1.11022302e-16   0.00000000e+00   1.01438847e-03
   2.19969141e-04  -1.23435761e-03]
CANDIDATE L MULS [  8984.24163254   1391.34631636    314.7858875  -17015.82953031
 -17114.73747847  -5477.93008285]
CANDIDATE L MUL*CONS [  0.00000000e+00  -1.54470472e-13   0.00000000e+00  -1.72606614e+01
  -3.76471409e+00   6.76172471e+00]
ALPHA: 1
CANDIDATE ENERGY <xarray.DataArray 'T' ()>
array(-10072.181326122422)
Coordinates:
    T        float64 1.273e+03
CANDIDATE OBJ <xarray.DataArray 'T' ()>
array(-10033.230523092669)
Coordinates:
    T        float64 1.273e+03
CANDIDATE SITE FRACS [ 0.20139148  0.2001246   0.59848393  0.19720807  0.2023965   0.60039543
  0.20686373  0.19333857  0.5997977 ]
ALPHA*STEP [ 0.01611921  0.00447107 -0.02059028 -0.0872353  -0.0044395   0.0916748
 -0.01622135 -0.09597625  0.1121976   0.01074697 -0.00939006 -0.00135691]
WOLFE CONDITION 1 <xarray.DataArray 'T' ()>
array(True, dtype=bool)
Coordinates:
    T        float64 1.273e+03
RESULT ALPHA 1
Chem pot progress 1665.53491657
Energy progress -65.3252110523
CONSTRAINT_JAC [[ 1.          1.          1.          0.        ]
 [ 1.          0.          0.          0.20139148]
 [ 0.          1.          0.          0.2001246 ]
 [ 0.          0.          1.          0.59848393]]
CONSTRAINT_JAC RANK 4
M,N 4 4
OLD ENERGY -10072.1813261
L_HESSIAN [[ 52556.13921971      0.              0.          10638.70464878]
 [     0.          52888.84372042      0.          10670.81993792]
 [     0.              0.          17685.28447866  10628.74876567]
 [ 10638.70464878  10670.81993792  10628.74876567      0.        ]]
GRADIENT_TERM [ -6377.12488152  -6443.91754056   5150.81868281 -10075.56130402]
STEP [ -1.39147695e-03  -1.24596332e-04   1.51607328e-03  -1.62630326e-19]
OLD OBJ -10024.2311014
OLD CONSTRAINTS [ 0.          0.00139148  0.0001246  -0.00151607]
OLD L MULTIPLIERS [ 10584.3775953  -17034.63313288 -17034.88489177  -5406.74672529]
CANDIDATE_L_CONSTRAINTS [ 0.  0.  0.  0.]
CANDIDATE L MULS [ 10584.3775953  -17034.63313288 -17034.88489177  -5406.74672529]
CANDIDATE L MUL*CONS [ 0. -0. -0. -0.]
ALPHA: 1
CANDIDATE ENERGY <xarray.DataArray 'T' ()>
array(-10058.004059232871)
Coordinates:
    T        float64 1.273e+03
CANDIDATE OBJ <xarray.DataArray 'T' ()>
array(-10058.004059232871)
Coordinates:
    T        float64 1.273e+03
CANDIDATE SITE FRACS [ 0.2  0.2  0.6]
ALPHA*STEP [ -1.39147695e-03  -1.24596332e-04   1.51607328e-03  -1.62630326e-19]
WOLFE CONDITION 1 <xarray.DataArray 'T' ()>
array(True, dtype=bool)
Coordinates:
    T        float64 1.273e+03
RESULT ALPHA 1
Chem pot progress 79.8525867055
Energy progress 14.1772668896
CONSTRAINT_JAC [[ 1.   1.   1.   0. ]
 [ 1.   0.   0.   0.2]
 [ 0.   1.   0.   0.2]
 [ 0.   0.   1.   0.6]]
CONSTRAINT_JAC RANK 4
M,N 4 4
OLD ENERGY -10058.0040592
L_HESSIAN [[ 52921.7925          0.              0.          10584.12378418]
 [     0.          52921.7925          0.          10584.37554307]
 [     0.              0.          17640.5975      10584.34369236]
 [ 10584.12378418  10584.37554307  10584.34369236      0.        ]]
GRADIENT_TERM [ -6450.50934869  -6450.50934869   5177.59696707 -10058.00405923]
STEP [ 0.  0.  0.  0.]
OLD OBJ -10058.0040592
OLD CONSTRAINTS [ 0.  0.  0.  0.]
OLD L MULTIPLIERS [ 10584.3585     -17034.86784869 -17034.86784869  -5406.76153293]
CANDIDATE_L_CONSTRAINTS [ 0.  0.  0.  0.]
CANDIDATE L MULS [ 10584.3585     -17034.86784869 -17034.86784869  -5406.76153293]
CANDIDATE L MUL*CONS [ 0. -0. -0. -0.]
ALPHA: 1
CANDIDATE ENERGY <xarray.DataArray 'T' ()>
array(-10058.004059232871)
Coordinates:
    T        float64 1.273e+03
CANDIDATE OBJ <xarray.DataArray 'T' ()>
array(-10058.004059232871)
Coordinates:
    T        float64 1.273e+03
CANDIDATE SITE FRACS [ 0.2  0.2  0.6]
ALPHA*STEP [ 0.  0.  0.  0.]
WOLFE CONDITION 1 <xarray.DataArray 'T' ()>
array(True, dtype=bool)
Coordinates:
    T        float64 1.273e+03
RESULT ALPHA 1
Chem pot progress 0.234715818999
Energy progress 0.0
CONSTRAINT_JAC [[ 1.   1.   1.   0. ]
 [ 1.   0.   0.   0.2]
 [ 0.   1.   0.   0.2]
 [ 0.   0.   1.   0.6]]
CONSTRAINT_JAC RANK 4
M,N 4 4
OLD ENERGY -10058.0040592
L_HESSIAN [[ 52921.7925      0.          0.      10584.3585]
 [     0.      52921.7925      0.      10584.3585]
 [     0.          0.      17640.5975  10584.3585]
 [ 10584.3585  10584.3585  10584.3585      0.    ]]
GRADIENT_TERM [ -6450.50934869  -6450.50934869   5177.59696707 -10058.00405923]
STEP [ 0.  0.  0.  0.]
OLD OBJ -10058.0040592
OLD CONSTRAINTS [ 0.  0.  0.  0.]
OLD L MULTIPLIERS [ 10584.3585     -17034.86784869 -17034.86784869  -5406.76153293]
CANDIDATE_L_CONSTRAINTS [ 0.  0.  0.  0.]
CANDIDATE L MULS [ 10584.3585     -17034.86784869 -17034.86784869  -5406.76153293]
CANDIDATE L MUL*CONS [ 0. -0. -0. -0.]
ALPHA: 1
CANDIDATE ENERGY <xarray.DataArray 'T' ()>
array(-10058.004059232871)
Coordinates:
    T        float64 1.273e+03
CANDIDATE OBJ <xarray.DataArray 'T' ()>
array(-10058.004059232871)
Coordinates:
    T        float64 1.273e+03
CANDIDATE SITE FRACS [ 0.2  0.2  0.6]
ALPHA*STEP [ 0.  0.  0.  0.]
WOLFE CONDITION 1 <xarray.DataArray 'T' ()>
array(True, dtype=bool)
Coordinates:
    T        float64 1.273e+03
RESULT ALPHA 1
Chem pot progress 0.0
Energy progress 0.0
No progress
<xarray.Dataset>
Dimensions:       (P: 1, T: 1, X_A: 1, X_B: 1, component: 3, internal_dof: 3, vertex: 3)
Coordinates:
  * P             (P) float64 1.013e+05
  * T             (T) float64 1.273e+03
  * X_A           (X_A) float64 0.2
  * X_B           (X_B) float64 0.2
  * vertex        (vertex) int64 0 1 2
  * component     (component) object 'A' 'B' 'C'
  * internal_dof  (internal_dof) int64 0 1 2
Data variables:
    MU            (P, T, X_A, X_B, component) float64 -1.703e+04 -1.703e+04 ...
    NP            (P, T, X_A, X_B, vertex) float64 1.0 nan nan
    GM            (P, T, X_A, X_B) float64 -1.006e+04
    X             (P, T, X_A, X_B, vertex, component) float64 0.2 0.2 0.6 ...
    Y             (P, T, X_A, X_B, vertex, internal_dof) float64 0.2 0.2 0.6 ...
    Phase         (P, T, X_A, X_B, vertex) object 'TEST' '' ''
Attributes:
    solve_iterations: 4
    hull_iterations: 1
    engine: pycalphad 0.3.6+31.g49b14f2.dirty
    created: 2016-07-31 03:54:17.154817
/home/rotis/anaconda/envs/calphadpy3/lib/python3.5/site-packages/autograd-1.1.2-py3.5-linux-x86_64.egg/autograd/core.py:68: UserWarning: Output seems independent of input. Returning zero gradient.

In [2]:
8.3145*1273*(0.2*np.log(0.2)+0.2*np.log(0.2)+0.6*np.log(0.6))


Out[2]:
-10058.004059232871

In [3]:
8.3145*1273*(np.log(0.6))


Out[3]:
-5406.7615329253658

In [4]:
eq.MU


Out[4]:
<xarray.DataArray 'MU' (P: 1, T: 1, X_A: 1, X_B: 1, component: 3)>
array([[[[[-17034.86784869, -17034.86784869,  -5406.76153293]]]]])
Coordinates:
  * P          (P) float64 1.013e+05
  * T          (T) float64 1.273e+03
  * X_A        (X_A) float64 0.2
  * X_B        (X_B) float64 0.2
  * component  (component) object 'A' 'B' 'C'

In [5]:
total_comp = np.nansum(eq.NP.values[..., np.newaxis] * eq.X.values, axis=-2)
print(total_comp)
print((eq.MU * total_comp).sum(axis=-1) - eq.GM)


[[[[[ 0.2  0.2  0.6]]]]]
<xarray.DataArray (P: 1, T: 1, X_A: 1, X_B: 1)>
array([[[[ -1.81898940e-12]]]])
Coordinates:
  * P        (P) float64 1.013e+05
  * T        (T) float64 1.273e+03
  * X_A      (X_A) float64 0.2
  * X_B      (X_B) float64 0.2

In [ ]: