In [1]:
from pycalphad.tests.datasets import *
from pycalphad.core.solver import InteriorPointSolver
from pycalphad import equilibrium, Database, variables as v
ALFE_DBF = Database(ALFE_TDB)
ISSUE43_DBF = Database('issue43.tdb')
class ProblemSaver(InteriorPointSolver):
saved_problem = [None]
def solve(self, prob):
self.saved_problem[0] = prob
self.verbose = True
return super(ProblemSaver, self).solve(prob)
#ISSUE43_DBF._parameters.purge_tables()
#eq = equilibrium(ALFE_DBF, ['AL', 'FE', 'VA'], ['FCC_A1', 'AL13FE4'],
# {v.MU('FE'): -123110, v.T: 300, v.P: 1e5}, solver=ProblemSaver())
eq = equilibrium(ISSUE43_DBF, ['AL', 'CR', 'NI', 'VA'], ['FCC_A1', 'GAMMA_PRIME'],
{v.MU('AL'): -119330.66377529, v.X('CR'): 1e-6, v.T: 1273, v.P: 101325},
solver=ProblemSaver(), global_min=False, verbose=True,
user_starting_point=[('FCC_A1', [1, 1e5, 1273, 4.10199831e-01, 1.08835854e-12, 5.89800169e-01, 1.00000000e+00]),
('GAMMA_PRIME', [1, 1e5, 1273, 1.36316508e-01, 7.62260190e-13, 8.63683492e-01, 9.99950107e-01, 5.77654607e-14
, 4.98930987e-05])])
In [2]:
eq.X
Out[2]:
In [3]:
eq2 = equilibrium(ISSUE43_DBF, ['AL', 'CR', 'NI', 'VA'], ['FCC_A1', 'GAMMA_PRIME'],
{v.X('AL'): 0.4, v.X('CR'): 1e-12, v.T: 1273, v.P: 101325}, global_min=True, verbose=True)
In [4]:
from pycalphad import calculate
import matplotlib.pyplot as plt
from pycalphad.plot.utils import phase_legend
import numpy as np
my_phases = ['FCC_A1', 'GAMMA_PRIME']
legend_handles, colorlist = phase_legend(my_phases)
fig = plt.figure(figsize=(9,6))
ax = fig.gca()
for name in my_phases:
result = calculate(ISSUE43_DBF, ['AL', 'NI', 'VA'], name, P=101325, T=1273, output='GM')
ax.scatter(result.X.sel(component='AL'), result.GM,
marker='.', s=5, color=colorlist[name.upper()])
ax.set_xlim((0, 1))
ax.legend(handles=legend_handles, loc='center left', bbox_to_anchor=(1, 0.6))
plt.show()
In [5]:
np.array(ProblemSaver.saved_problem[0].cl)
Out[5]:
In [ ]: