Skip to content

Instantly share code, notes, and snippets.

@tkphd
Created March 29, 2017 15:00
Show Gist options
  • Save tkphd/a6b170696251d7b9b58bc5c272a93535 to your computer and use it in GitHub Desktop.
Save tkphd/a6b170696251d7b9b58bc5c272a93535 to your computer and use it in GitHub Desktop.
$ Database file written 1900- 1-**
$ From database: USER
ELEMENT /- ELECTRON_GAS 0.0000E+00 0.0000E+00 0.0000E+00!
ELEMENT VA VACUUM 0.0000E+00 0.0000E+00 0.0000E+00!
ELEMENT CR BCC_A2 5.1996E+01 4.0500E+03 2.3560E+01!
ELEMENT NB BCC_A2 9.2906E+01 5.2200E+03 3.6270E+01!
ELEMENT NI FCC_A1 5.8690E+01 4.7870E+03 2.9796E+01!
FUNCTION GLIQCR 298.15 +24339.955-11.420225*T+2.37615E-21*T**7+GHSERCR#;
2180 N !
$ -16459.984+335.616316*T-50*T*LN(T); 6000 N !
FUNCTION GLIQNB 298.15 +29781.555-10.816417*T-3.06098E-23*T**7+GHSERNB#;
2750 N !
$ -7499.398+260.756148*T-41.77*T*LN(T); 6000 N !
FUNCTION GLIQNI 298.15 +16414.686-9.397*T-3.82318E-21*T**7+GHSERNI#;
1728 N !
$ +18290.88-10.537*T-1.12754E+31*T**(-9)+GHSERNI#; 6000 N !
FUNCTION GFCCCR 298.15 +7284+.163*T+GHSERCR#; 6000 N !
FUNCTION GFCCNB 298.15 +13500+1.7*T+GHSERNB#; 6000 N !
FUNCTION GHSERNI 298.15 -5179.159+117.854*T-22.096*T*LN(T)-.0048407*T**2;
1728 N !
$ -27840.655+279.135*T-43.1*T*LN(T)+1.12754E+31*T**(-9); 3000 N !
FUNCTION GHSERCR 298.15 -8856.94+157.48*T-26.908*T*LN(T)+.00189435*T**2
-1.47721E-06*T**3+139250*T**(-1); 2180 N !
$ -34869.344+344.18*T-50*T*LN(T)-2.88526E+32*T**(-9); 6000 N !
FUNCTION GHSERNB 298.15 -8519.353+142.045475*T-26.4711*T*LN(T)
+2.03475E-04*T**2-3.5012E-07*T**3+93399*T**(-1); 2750 N !
$ -37669.3+271.720843*T-41.77*T*LN(T)+1.528238E+32*T**(-9); 6000 N !
FUNCTION GBCCNI 298.15 +8715.084-3.556*T+GHSERNI#; 6000 N !
FUNCTION UN_ASS 298.15 +0; 300 N !
TYPE_DEFINITION % SEQ *!
DEFINE_SYSTEM_DEFAULT ELEMENT 2 !
DEFAULT_COMMAND DEF_SYS_ELEMENT VA /- !
PHASE LIQUID:L % 1 1.0 !
CONSTITUENT LIQUID:L :CR,NB,NI : !
PARAMETER G(LIQUID,CR;0) 298.15 +GLIQCR#; 6000 N REF4 !
PARAMETER G(LIQUID,NB;0) 298.15 +GLIQNB#; 6000 N REF4 !
PARAMETER G(LIQUID,NI;0) 298.15 +GLIQNI#; 6000 N REF1 !
PARAMETER G(LIQUID,CR,NI;0) 298.15 +318-7.3318*T; 6000 N
REF110 !
PARAMETER G(LIQUID,CR,NI;1) 298.15 +16941-6.3696*T; 6000 N
REF110 !
PARAMETER G(LIQUID,CR,NB;0) 298.15 -10304.91+.60618*T; 6000 N
REF116 !
PARAMETER G(LIQUID,CR,NB;1) 298.15 -8513.45+.5008*T; 6000 N
REF116 !
PARAMETER G(LIQUID,NB,NI;0) 298.15 -80037.3-6.31498*T; 6000 N
REF177 !
PARAMETER G(LIQUID,NB,NI;1) 298.15 +97884.9-19.01069*T; 6000 N
REF177 !
PARAMETER G(LIQUID,NB,NI;2) 298.15 +10000; 6000 N REF177 !
PARAMETER G(LIQUID,CR,NB,NI;0) 298.15 -59943; 6000 N 05Du !
PARAMETER G(LIQUID,CR,NB,NI;1) 298.15 -220439; 6000 N 05Du !
PARAMETER G(LIQUID,CR,NB,NI;2) 298.15 -14828; 6000 N 05Du !
TYPE_DEFINITION & GES A_P_D BCC_A2 MAGNETIC -1.0 4.00000E-01 !
PHASE BCC_A2 %& 1 1 !
CONSTITUENT BCC_A2 :CR%,NB,NI% : !
PARAMETER G(BCC_A2,CR;0) 298.15 +GHSERCR#; 6000 N REF1 !
PARAMETER TC(BCC_A2,CR;0) 298.15 -311.5; 6000 N REF1 !
PARAMETER BMAGN(BCC_A2,CR;0) 298.15 -.008; 6000 N REF4 !
PARAMETER G(BCC_A2,NB;0) 298.15 +GHSERNB#; 6000 N REF1 !
PARAMETER G(BCC_A2,NI;0) 298.15 +GBCCNI#; 6000 N REF1 !
PARAMETER TC(BCC_A2,NI;0) 298.15 +575; 3000 N REF4 !
PARAMETER BMAGN(BCC_A2,NI;0) 298.15 +.85; 3000 N REF4 !
PARAMETER G(BCC_A2,CR,NB;0) 298.15 +43426.45-13.0153*T; 6000 N
REF116 !
PARAMETER G(BCC_A2,CR,NB;1) 298.15 +13201.2-6.66604*T; 6000 N
REF116 !
PARAMETER G(BCC_A2,CR,NI;0) 298.15 +17170-11.8199*T; 6000 N
REF110 !
PARAMETER G(BCC_A2,CR,NI;1) 298.15 +34418-11.8577*T; 6000 N
REF110 !
PARAMETER TC(BCC_A2,CR,NI;0) 298.15 +2373; 6000 N REF110 !
PARAMETER TC(BCC_A2,CR,NI;1) 298.15 +617; 6000 N REF110 !
PARAMETER BMAGN(BCC_A2,CR,NI;0) 298.15 +4; 6000 N REF110 !
PARAMETER G(BCC_A2,NB,NI;0) 298.15 -18724.3+5.02405*T; 6000 N
REF177 !
$ TYPE_DEFINITION & GES A_P_D BCC_A2 MAGNETIC -1.0 4.00000E-01 !
$ PHASE BCC_A2 %& 2 1 3 !
$ CONSTITUENT BCC_A2 :CR%,NB,NI% : VA : !
$
$ PARAMETER G(BCC_A2,CR:VA;0) 298.15 +GHSERCR#; 6000 N REF1 !
$ PARAMETER TC(BCC_A2,CR:VA;0) 298.15 -311.5; 6000 N REF1 !
$ PARAMETER BMAGN(BCC_A2,CR:VA;0) 298.15 -.008; 6000 N REF4 !
$ PARAMETER G(BCC_A2,NB:VA;0) 298.15 +GHSERNB#; 6000 N REF1 !
$ PARAMETER G(BCC_A2,NI:VA;0) 298.15 +GBCCNI#; 6000 N REF1 !
$ PARAMETER TC(BCC_A2,NI:VA;0) 298.15 +575; 3000 N REF4 !
$ PARAMETER BMAGN(BCC_A2,NI:VA;0) 298.15 +.85; 3000 N REF4 !
$ PARAMETER G(BCC_A2,CR,NB:VA;0) 298.15 +43426.45-13.0153*T; 6000 N
$ REF116 !
$ PARAMETER G(BCC_A2,CR,NB:VA;1) 298.15 +13201.2-6.66604*T; 6000 N
$ REF116 !
$ PARAMETER G(BCC_A2,CR,NI:VA;0) 298.15 +17170-11.8199*T; 6000 N
$ REF110 !
$ PARAMETER G(BCC_A2,CR,NI:VA;1) 298.15 +34418-11.8577*T; 6000 N
$ REF110 !
$ PARAMETER TC(BCC_A2,CR,NI:VA;0) 298.15 +2373; 6000 N REF110 !
$ PARAMETER TC(BCC_A2,CR,NI:VA;1) 298.15 +617; 6000 N REF110 !
$ PARAMETER BMAGN(BCC_A2,CR,NI:VA;0) 298.15 +4; 6000 N REF110 !
$ PARAMETER G(BCC_A2,NB,NI:VA;0) 298.15 -18724.3+5.02405*T; 6000 N
$ REF177 !
$ High temperature phase in Cr-Nb
PHASE C14_LAVES % 2 2 1 !
$ CONSTITUENT C14_LAVES :CR%,NB,NI : CR,NB% : !
CONSTITUENT C14_LAVES :CR%,NI : CR,NB% : !
PARAMETER G(C14_LAVES,CR:CR;0) 298.15 +15000+3*GHSERCR#; 6000 N
REF129 !
$ PARAMETER G(C14_LAVES,NB:CR;0) 298.15 +42667.55-31.01111*T
$ +5*T*LN(T)+2*GHSERNB#+GHSERCR#; 6000 N REF116 !
PARAMETER G(C14_LAVES,CR:NB;0) 298.15 -12667+31.01111*T-5*T*LN(T)
+2*GHSERCR#+GHSERNB#; 6000 N REF116 !
$ PARAMETER G(C14_LAVES,NB:NB;0) 298.15 +15000+3*GHSERNB#; 6000 N
$ REF116 !
PARAMETER G(C14_LAVES,NI:CR;0) 298.15 +300000
+2*GHSERNI#+GHSERCR#; 6000 N 05Du !
PARAMETER G(C14_LAVES,NI:NB;0) 298.15 -73605+18.05262*T
+2*GHSERNI#+GHSERNB#; 6000 N 05Du !
$ PARAMETER G(C14_LAVES,CR,NB:CR;0) 298.15 +90673.45; 6000 N REF116 !
PARAMETER G(C14_LAVES,CR:CR,NB;0) 298.15 +18511.36; 6000 N REF116 !
$ PARAMETER G(C14_LAVES,NB:CR,NB;0) 298.15 +18511.36; 6000 N REF116 !
$ PARAMETER G(C14_LAVES,CR,NB:NB;0) 298.15 +90673.45; 6000 N REF116 !
PARAMETER G(C14_LAVES,NI:CR,NB;0) 298.15 -549267+72.00585*T; 6000 N 05Du !
PARAMETER G(C14_LAVES,CR,NI:NB;0) 298.15 -128907+22.67436*T; 6000 N 05Du !
$ Low temperature phase in Cr-Nb
PHASE C15_LAVES % 2 2 1 !
$ CONSTITUENT C15_LAVES :CR%,NB,NI : CR,NB% : !
CONSTITUENT C15_LAVES :CR%,NI : CR,NB% : !
PARAMETER G(C15_LAVES,CR:CR;0) 298.15 +15000+3*GHSERCR#; 6000 N
REF1 !
$ PARAMETER G(C15_LAVES,NB:CR;0) 298.15 +48087.03-34.01111*T
$ +5*T*LN(T)+GHSERCR#+2*GHSERNB#; 6000 N REF116 !
PARAMETER G(C15_LAVES,CR:NB;0) 298.15 -18087.03+34.01111*T
-5*T*LN(T)+2*GHSERCR#+GHSERNB#; 6000 N REF116 !
$ PARAMETER G(C15_LAVES,NB:NB;0) 298.15 +15000+3*GHSERNB#; 6000 N
$ REF116 !
PARAMETER G(C15_LAVES,NI:CR;0) 298.15 +300000
+2*GHSERNI#+GHSERCR#; 6000 N 05Du !
PARAMETER G(C15_LAVES,NI:NB;0) 298.15 -60000
+2*GHSERNI#+GHSERNB#; 6000 N 05Du !
$ PARAMETER G(C15_LAVES,CR,NB:CR;0) 298.15 +83366.02; 6000 N REF116 !
PARAMETER G(C15_LAVES,CR:CR,NB;0) 298.15 +17565.57; 6000 N REF116 !
$ PARAMETER G(C15_LAVES,NB:CR,NB;0) 298.15 +17565.57; 6000 N REF116 !
$ PARAMETER G(C15_LAVES,CR,NB:NB;0) 298.15 +83366.02; 6000 N REF116 !
PARAMETER G(C15_LAVES,CR,NI:NB;0) 298.15 -60000; 6000 N 05Du !
$ Also known as delta phase
PHASE D0A_NBNI3 % 2 1 3 !
$ CONSTITUENT D0A_NBNI3 :NB%,NI : CR,NB,NI% : !
CONSTITUENT D0A_NBNI3 :NB%,NI : CR,NI% : !
$ PARAMETER G(D0A_NBNI3,NB:NB;0) 298.15 +20000+4*GHSERNB#; 6000 N
$ REF177 !
$ PARAMETER G(D0A_NBNI3,NI:NB;0) 298.15 +181202.3-19.33288*T
$ +GHSERNI#+3*GHSERNB#; 6000 N REF177 !
PARAMETER G(D0A_NBNI3,NB:NI;0) 298.15 -141202.4+19.33288*T
+GHSERNB#+3*GHSERNI#; 6000 N REF177 !
PARAMETER G(D0A_NBNI3,NI:NI;0) 298.15 +20000+4*GHSERNI#; 6000 N
REF177 !
PARAMETER G(D0A_NBNI3,NB:CR;0) 298.15 +32000+GHSERNB#+3*GHSERCR#;
6000 N 05Du !
PARAMETER G(D0A_NBNI3,NI:CR;0) 298.15 +32000+GHSERNI#+3*GHSERCR#;
6000 N 05Du !
$ PARAMETER G(D0A_NBNI3,NB,NI:NB;0) 298.15 -12318.5; 6000 N REF177 !
$ PARAMETER G(D0A_NBNI3,NB:NB,NI;0) 298.15 +54022.5; 6000 N REF177 !
$ PARAMETER G(D0A_NBNI3,NI:NB,NI;0) 298.15 +54022.5; 6000 N REF177 !
PARAMETER G(D0A_NBNI3,NB,NI:NI;0) 298.15 -12318.5; 6000 N REF177 !
$ Also known as mu phase
PHASE D85_NI7NB6 % 2 6 7 !
CONSTITUENT D85_NI7NB6 :NB : CR,NB,NI% : !
PARAMETER G(D85_NI7NB6,NB:NB;0) 298.15 +65000+13*GHSERNB#; 6000 N
REF177 !
PARAMETER G(D85_NI7NB6,NB:NI;0) 298.15 -312097.5+7.3203*T
+6*GHSERNB#+7*GHSERNI#; 6000 N REF177 !
PARAMETER G(D85_NI7NB6,NB:CR;0) 298.15 -32500
+6*GHSERNB#+7*GHSERCR#; 6000 N 05Du !
PARAMETER G(D85_NI7NB6,NB:NB,NI;0) 298.15 +273734.55; 6000 N REF177 !
PARAMETER G(D85_NI7NB6,NB:NB,NI;1) 298.15 +451218.3; 6000 N REF177 !
PARAMETER G(D85_NI7NB6,NB:CR,NI;0) 298.15 -71006; 6000 N 05Du !
TYPE_DEFINITION ' GES A_P_D FCC_A1 MAGNETIC -3.0 2.80000E-01 !
PHASE FCC_A1 %' 1 1 !
CONSTITUENT FCC_A1 :CR,NB,NI% : !
PARAMETER G(FCC_A1,CR;0) 298.15 +GFCCCR#; 6000 N REF1 !
PARAMETER TC(FCC_A1,CR;0) 298.15 -1109; 6000 N REF1 !
PARAMETER BMAGN(FCC_A1,CR;0) 298.15 -2.46; 6000 N REF1 !
PARAMETER G(FCC_A1,NB;0) 298.15 +GFCCNB#; 6000 N REF1 !
PARAMETER G(FCC_A1,NI;0) 298.15 +GHSERNI#; 6000 N REF1 !
PARAMETER TC(FCC_A1,NI;0) 298.15 +633; 3000 N REF4 !
PARAMETER BMAGN(FCC_A1,NI;0) 298.15 +.52; 3000 N REF4 !
PARAMETER G(FCC_A1,CR,NI;0) 298.15 +8030-12.8801*T; 6000 N
REF110 !
PARAMETER G(FCC_A1,CR,NI;1) 298.15 +33080-16.0362*T; 6000 N
REF110 !
PARAMETER TC(FCC_A1,CR,NI;0) 298.15 -3605; 6000 N REF110 !
PARAMETER BMAGN(FCC_A1,CR,NI;0) 298.15 -1.91; 6000 N REF110 !
PARAMETER G(FCC_A1,NB,NI;0) 298.15 -70007.4-7.39665*T; 6000 N
REF177 !
PARAMETER G(FCC_A1,NB,NI;1) 298.15 +96115-23.07497*T; 6000 N
REF177 !
PARAMETER G(FCC_A1,CR,NB,NI;0) 298.15 -21111; 6000 N 05Du !
$ TYPE_DEFINITION ' GES A_P_D FCC_A1 MAGNETIC -3.0 2.80000E-01 !
$ PHASE FCC_A1 %' 2 1 1 !
$ CONSTITUENT FCC_A1 :CR,NB,NI% : VA : !
$
$ PARAMETER G(FCC_A1,CR:VA;0) 298.15 +GFCCCR#; 6000 N REF1 !
$ PARAMETER TC(FCC_A1,CR:VA;0) 298.15 -1109; 6000 N REF1 !
$ PARAMETER BMAGN(FCC_A1,CR:VA;0) 298.15 -2.46; 6000 N REF1 !
$ PARAMETER G(FCC_A1,NB:VA;0) 298.15 +GFCCNB#; 6000 N REF1 !
$ PARAMETER G(FCC_A1,NI:VA;0) 298.15 +GHSERNI#; 6000 N REF1 !
$ PARAMETER TC(FCC_A1,NI:VA;0) 298.15 +633; 3000 N REF4 !
$ PARAMETER BMAGN(FCC_A1,NI:VA;0) 298.15 +.52; 3000 N REF4 !
$ PARAMETER G(FCC_A1,CR,NI:VA;0) 298.15 +8030-12.8801*T; 6000 N
$ REF110 !
$ PARAMETER G(FCC_A1,CR,NI:VA;1) 298.15 +33080-16.0362*T; 6000 N
$ REF110 !
$ PARAMETER TC(FCC_A1,CR,NI:VA;0) 298.15 -3605; 6000 N REF110 !
$ PARAMETER BMAGN(FCC_A1,CR,NI:VA;0) 298.15 -1.91; 6000 N REF110 !
$ PARAMETER G(FCC_A1,NB,NI:VA;0) 298.15 -70007.4-7.39665*T; 6000 N
$ REF177 !
$ PARAMETER G(FCC_A1,NB,NI:VA;1) 298.15 +96115-23.07497*T; 6000 N
$ REF177 !
$ PARAMETER G(FCC_A1,CR,NB,NI:VA;0) 298.15 -21111; 6000 N 05Du !
LIST_OF_REFERENCES
NUMBER SOURCE
REF4 'A T Dinsdale, SGTE Data for Pure Elements, update 2001'
REF1 'A T Dinsdale, SGTE Data for Pure Elements, Calphad 15(1991)4 p
317-425; '
REF110 'B J Lee, Calphad 16(1992)2 p 121-149; TRITA-MAC 473 (1991); Cr
-Ni'
REF116 'J G Costa Neto, S G Fries, H L Lukas, Calphad 17(1993) p 219
-228; Cr-Nb'
REF177 'A Bolcavage and U.R. Kattner, Journal of phase Equilibria, vol
17 No.2 1996; Nb-Ni'
REF129 'K Zeng, M Hamalainen, I Ansara, Z Metallkde 84(1993)1 p 23-28,
Cr-Zr'
05Du 'Y. Du, S. Liu, Y.A. Chang, Y. Yang, Calphad 29 (2005)
140-148; Cr-Nb-Ni'
!
#!/usr/bin/python
# -*- coding: utf-8 -*-
#####################################################################################
# This software was developed at the National Institute of Standards and Technology #
# by employees of the Federal Government in the course of their official duties. #
# Pursuant to title 17 section 105 of the United States Code this software is not #
# subject to copyright protection and is in the public domain. NIST assumes no #
# responsibility whatsoever for the use of this code by other parties, and makes no #
# guarantees, expressed or implied, about its quality, reliability, or any other #
# characteristic. We would appreciate acknowledgement if the software is used. #
# #
# This software can be redistributed and/or modified freely provided that any #
# derivative works bear some notice that they are derived from it, and any modified #
# versions bear some notice that they have been modified. #
#####################################################################################
# Gibbs free energy expressions for IN625 from ternary CALPHAD Database
# Numerical libraries
import numpy as np
from sympy.utilities.lambdify import lambdify
from sympy.parsing.sympy_parser import parse_expr
# Visualization libraries
import matplotlib.pylab as plt
# Thermodynamics and computer-algebra libraries
from pycalphad import Database, calculate, equilibrium, Model
from pycalphad import variables as v
from sympy.utilities.codegen import codegen
from sympy.parsing.sympy_parser import parse_expr
from sympy import And, Ge, Gt, Le, Lt, Or, Piecewise, true
from sympy import Abs, cse, diff, logcombine, powsimp, simplify, symbols, sympify
from sympy import exp
# Constants
epsilon = 1e-10 # tolerance for comparing floating-point numbers to zero
temp = 870.0 + 273.15 # 1143 Kelvin
RT = 8.3144598*temp # J/mol/K
Vm = 1.0e-5 # m^3/mol
inVm = 1.0 / Vm # mol/m^3
# Let's avoid integer arithmetic in fractions.
fr13by7 = 13.0/7
fr13by3 = 13.0/3
fr13by4 = 13.0/4
fr6by7 = 6.0/7
fr6by13 = 6.0/13
fr7by13 = 7.0/13
fr3by4 = 3.0/4
fr3by2 = 3.0/2
fr4by3 = 4.0/3
fr2by3 = 2.0/3
fr1by3 = 1.0/3
fr1by2 = 1.0/2
rt3by2 = np.sqrt(3.0)/2
# Set composition of interest
xcr = 0.20
xnb = 0.02
xni = xcr - xnb
tdb = Database('Du_Cr-Nb-Ni_simple.tdb')
elements = ['CR', 'NB', 'NI']
species = list(set([i for c in tdb.phases['FCC_A1'].constituents for i in c]))
model = Model(tdb, species, 'FCC_A1')
g_gamma = parse_expr(str(model.ast))
# Declare sublattice variables used in Pycalphad expressions
# Gamma
FCC_A10CR, FCC_A10NB, FCC_A10NI, FCC_A11VA = symbols('FCC_A10CR FCC_A10NB FCC_A10NI FCC_A11VA')
GAMMA_XCR, GAMMA_XNB, GAMMA_XNI = symbols('GAMMA_XCR GAMMA_XNB GAMMA_XNI')
T = symbols('T')
# Make sublattice -> system substitutions
g_gamma = inVm * g_gamma.subs({FCC_A10CR: GAMMA_XCR,
FCC_A10NB: GAMMA_XNB,
FCC_A10NI: GAMMA_XNI,
FCC_A11VA: 1.0,
T: temp})
# Generate numerically efficient system-composition expressions
GG = lambdify([GAMMA_XCR, GAMMA_XNB], g_gamma.subs({GAMMA_XNI: 1-GAMMA_XCR-GAMMA_XNB}), modules='sympy')
# Evaluate expression from pycalphad's model
extractedG = GG(xcr,xnb)
print "Extracted: free energy at ({0}, {1}) is {2}".format(xcr, xnb, extractedG)
# Calculate value with pycalphad
pycalphadG = calculate(tdb, elements, 'FCC_A1', {T:temp, v.X('CR'):xcr, v.X('NB'):xnb, v.X('NI'):xni}, output='GM')
print "Calculated: free energy at ({0}, {1}) is {2}".format(xcr, xnb, pycalphadG)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment