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 [ ]:
Content source: richardotis/pycalphad-sandbox
Similar notebooks: