コード例 #1
0
def main():
    from materials import CZTS, Cu2S_low, ZnS_zincblende, SnS, S2
    import numpy as np

    # Surface model from ab initio calcs and NIST data

    T = np.linspace(573.15, 873.15, 100)  # K
    P = np.array(np.logspace(-8, 2, 100), ndmin=2).transpose()  # Pa

    D_mu = CZTS.mu_kJ(T, P) - (Cu2S_low.mu_kJ(T, P) + ZnS_zincblende.mu_kJ(
        T, P) + SnS.mu_kJ(T, P) + 0.5 * S2.mu_kJ(T, P))

    D_mu_label = '$\Delta G_f$ / kJ mol$^{-1}$'
    scale_range = [-50, 70]

    # Stability lines from figure 5, J. J. Scragg et al., Chem. Mater. (2011) 23 4625-4633
    kinetic_data = np.genfromtxt('jscragg_2011.csv',
                                 delimiter=',',
                                 skip_header=1)
    # Convert log pressure to absolute pressure in mbar
    kinetic_data[:, 1:] = np.power(10, kinetic_data[:, 1:])
    # Columnwise conversion to SI units from deg C and mbar
    kinetic_data_si = (kinetic_data + [273.15, 0., 0.]) * [1., 100., 100.]

    plot_potential(T,
                   P,
                   D_mu,
                   D_mu_label,
                   scale_range,
                   filename='plots/DG_CZTS_SnS_Scragg.png',
                   T_units='K',
                   P_units='Pa',
                   overlay=kinetic_data_si)
コード例 #2
0
def main():
    from materials import CZTS, Cu2S_low, ZnS_zincblende, SnS, S2
    import numpy as np

    # Surface model from ab initio calcs and NIST data

    T = np.linspace(573.15,873.15,100)    # K
    P = np.array( np.logspace(-8,2,100),ndmin=2).transpose() # Pa
    
    D_mu = CZTS.mu_kJ(T,P) - (Cu2S_low.mu_kJ(T,P) +
                              ZnS_zincblende.mu_kJ(T,P) +
                              SnS.mu_kJ(T,P) +
                              0.5*S2.mu_kJ(T,P) )
    
    D_mu_label = '$\Delta G_f$ / kJ mol$^{-1}$'
    scale_range = [-50,70]

    # Stability lines from figure 5, J. J. Scragg et al., Chem. Mater. (2011) 23 4625-4633
    kinetic_data = np.genfromtxt('jscragg_2011.csv',delimiter=',',skip_header=1)
    # Convert log pressure to absolute pressure in mbar
    kinetic_data[:,1:] = np.power(10,kinetic_data[:,1:])
    # Columnwise conversion to SI units from deg C and mbar
    kinetic_data_si = (kinetic_data + [273.15, 0., 0.]) * [1., 100., 100.]
    
    plot_potential(T,P,D_mu,D_mu_label,scale_range, filename='plots/DG_CZTS_SnS_Scragg.png',
                   T_units='K', P_units='Pa', overlay=kinetic_data_si)
コード例 #3
0
def main():
    from materials import CZTS, Cu2S_low, ZnS_zincblende, SnS2
    import numpy as np

    from DG_CZTS_S8 import plot_potential

    T = np.linspace(100,1500,100)    # K
    P = np.array( np.logspace(1,7,100),ndmin=2).transpose() # Pa
    
    D_mu = CZTS.mu_kJ(T,P) - (Cu2S_low.mu_kJ(T,P) +
                              ZnS_zincblende.mu_kJ(T,P) +
                              SnS2.mu_kJ(T,P)
                                      )
    
    D_mu_label = '$\Delta G_f$ / kJ mol$^{-1}$'
    scale_range = [-50,-40]
    
    plot_potential(T,P,D_mu,D_mu_label,scale_range, filename='plots/DG_CZTS_binaries.png', precision="%.1f")
コード例 #4
0
      '{0:f} eV / formula unit'.format(DH_f_CZTS_eV - DE_f_CZTS_eV))
"""Binary phases"""

DH_f_Cu2S_eV = Cu2S.H_eV(T, P) - (2. * Cu.H_eV(T, P) + alpha_S.H_eV(T, P))

DH_f_Cu2S_kJ = Cu2S.H_kJ(T, P) - (2. * Cu.H_kJ(T, P) + alpha_S.H_kJ(T, P))

DH_f_SnS_eV = SnS.H_eV(T, P) - (Sn.H_eV(T, P) + alpha_S.H_eV(T, P))

DH_f_SnS_kJ = SnS.H_kJ(T, P) - (Sn.H_kJ(T, P) + alpha_S.H_kJ(T, P))

DH_f_SnS2_eV = SnS2.H_eV(T, P) - (Sn.H_eV(T, P) + 2. * alpha_S.H_eV(T, P))

DH_f_SnS2_kJ = SnS2.H_kJ(T, P) - (Sn.H_kJ(T, P) + 2. * alpha_S.H_kJ(T, P))

DH_f_ZnS_eV = ZnS.H_eV(T, P) - (Zn.H_eV(T, P) + alpha_S.H_eV(T, P))

DH_f_ZnS_kJ = ZnS.H_kJ(T, P) - (Zn.H_kJ(T, P) + alpha_S.H_kJ(T, P))

print('Formation enthalpy of low Cu2S: ' +
      '{0:3.2f} eV / formula unit'.format(DH_f_Cu2S_eV))

print('                                      ' +
      '{0:3.2f} kJ / mol'.format(DH_f_Cu2S_kJ))

print('Formation enthalpy of SnS: ' +
      '{0:3.2f} eV / formula unit'.format(DH_f_SnS_eV))

print('                                      ' +
      '{0:3.2f} kJ / mol'.format(DH_f_SnS_kJ))