From edf02f4bd7e466ce3207455dc30d5b01957a2c67 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Thu, 29 Jun 2017 10:48:24 +0200 Subject: [PATCH 01/13] Write transport_mfp to hdf5. --- examples/cs.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/examples/cs.py b/examples/cs.py index 33f8f7c..7bdd594 100644 --- a/examples/cs.py +++ b/examples/cs.py @@ -109,6 +109,8 @@ def elastic_cs_fn(a, E): el_tcs.attrs['units'] = 'm^2' el_icdf = elastic_grp.create_dataset("angle_icdf", (e_el.shape[0], p_el.shape[0])) el_icdf.attrs['units'] = 'radian' + el_tmfp = elastic_grp.create_dataset("transport_mfp", e_el.shape) + el_tmfp.attrs['units'] = 'm' print("# Computing elastic total cross-sections and iCDFs.") for i, K in enumerate(e_el): def dcs(theta): @@ -119,6 +121,28 @@ def dcs(theta): print('.', end='', flush=True) print() + tmfpmax = 0. * units.m + print("# Computing transport mean free path.") + print("K \t tmfp \n") + for i, K in enumerate(e_el): + def dcs(theta): + return elastic_cs_fn(theta, K) * (1 - np.cos(theta)) * s.rho_n + inv_tmfp, icdf_dummy = compute_elastic_tcs_icdf(dcs, p_el) + tmfp = 1./inv_tmfp + if ( K >= s.band_structure.barrier): + # make sure the tmfp is monotonously increasing for energies above + # the vacuum potential barrier + if (tmfp < tmfpmax): + tmfp = tmfpmax + else: + tmfpmax = tmfp + else: + tmfpmax = tmfp + el_tmfp[i] = tmfp.to('m') + print(str(K) + "\t" + str(tmfp.to('nm')) + "\n") + print('.', end='', flush=True) + print() + # inelastic e_inel = np.logspace(np.log10(s.band_structure.fermi.magnitude+0.1), 4, 129) * units.eV p_inel = np.linspace(0.0, 1.0, 1024) From 27dce189e94d11227c2374bf1cf035c1e8493f44 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Fri, 30 Jun 2017 09:47:51 +0200 Subject: [PATCH 02/13] Write electron_range to hdf5. --- examples/cs.py | 95 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 71 insertions(+), 24 deletions(-) diff --git a/examples/cs.py b/examples/cs.py index 7bdd594..e1082f7 100644 --- a/examples/cs.py +++ b/examples/cs.py @@ -109,8 +109,6 @@ def elastic_cs_fn(a, E): el_tcs.attrs['units'] = 'm^2' el_icdf = elastic_grp.create_dataset("angle_icdf", (e_el.shape[0], p_el.shape[0])) el_icdf.attrs['units'] = 'radian' - el_tmfp = elastic_grp.create_dataset("transport_mfp", e_el.shape) - el_tmfp.attrs['units'] = 'm' print("# Computing elastic total cross-sections and iCDFs.") for i, K in enumerate(e_el): def dcs(theta): @@ -121,28 +119,6 @@ def dcs(theta): print('.', end='', flush=True) print() - tmfpmax = 0. * units.m - print("# Computing transport mean free path.") - print("K \t tmfp \n") - for i, K in enumerate(e_el): - def dcs(theta): - return elastic_cs_fn(theta, K) * (1 - np.cos(theta)) * s.rho_n - inv_tmfp, icdf_dummy = compute_elastic_tcs_icdf(dcs, p_el) - tmfp = 1./inv_tmfp - if ( K >= s.band_structure.barrier): - # make sure the tmfp is monotonously increasing for energies above - # the vacuum potential barrier - if (tmfp < tmfpmax): - tmfp = tmfpmax - else: - tmfpmax = tmfp - else: - tmfpmax = tmfp - el_tmfp[i] = tmfp.to('m') - print(str(K) + "\t" + str(tmfp.to('nm')) + "\n") - print('.', end='', flush=True) - print() - # inelastic e_inel = np.logspace(np.log10(s.band_structure.fermi.magnitude+0.1), 4, 129) * units.eV p_inel = np.linspace(0.0, 1.0, 1024) @@ -217,4 +193,75 @@ def dcs(w): ionization_osi = ionization_grp.create_dataset("outer_shells", data=s.elf_file.get_outer_shells().to('eV')) ionization_osi.attrs['units'] = 'eV' + # electron range + e_ran = np.logspace(-2, 3, 129) * units.eV + p_ran = np.linspace(0.0, 1.0, 1024) + + electron_range_grp = outfile.create_group("electron_range") + ran_energies = electron_range_grp.create_dataset("energy", data=e_ran.to('eV')) + ran_energies.attrs['units'] = 'eV' + ran_range = electron_range_grp.create_dataset("range", e_ran.shape) + ran_range.attrs['units'] = 'm' + + ran_tmfp = np.zeros(e_ran.shape) + tmfpmax = 0. * units.m + print("# Computing transport mean free path.") + for i, K in enumerate(e_ran): + def dcs(theta): + return elastic_cs_fn(theta, K) * (1 - np.cos(theta)) * s.rho_n + inv_tmfp, icdf_dummy = compute_elastic_tcs_icdf(dcs, p_ran) + tmfp = 1./inv_tmfp + if ( K >= s.band_structure.barrier): + # make sure the tmfp is monotonously increasing for energies above + # the vacuum potential barrier + if (tmfp < tmfpmax): + tmfp = tmfpmax + else: + tmfpmax = tmfp + else: + tmfpmax = tmfp + ran_tmfp[i] = tmfp.to('m').magnitude + print('.', end='', flush=True) + print() + + rangemax = 0. + tmprange = np.zeros(e_ran.shape) + print("# Computing inelastic electron range.") + for i, K in enumerate(e_ran): + ran_energies[i] = K.to('eV') + if (K < s.band_structure.barrier): + ran_range[i] = 0. * units.m + else: + w0_max = K-s.band_structure.fermi # it is not possible to lose so + # much energy that the primary electron ends up below the Fermi + # level in an inelastic scattering event + + def dcs(w): + return inelastic_cs_fn(s)(K, w) * s.rho_n + tcs, icdf_dummy = compute_inelastic_tcs_icdf(dcs, p_inel, + s.elf_file.get_min_energy(), w0_max, + s.elf_file.get_min_energy_interval()) + #inel_tcs[i] = tcs.to('m^2') + #inel_icdf[i] = icdf.to('eV') + tmprange[i] = (1./tcs).to('m').magnitude + j = 0 + omega = e_ran[0] + omega_old = 0. * units.eV + while (omega < K/2 and omega < K-s.band_structure.fermi): + cdcsvalue = inelastic_cs_fn(s)(K,omega) * s.rho_n * (omega - omega_old) + index = sum(e_ran <= (K - omega)) - 1 # get last energy index smaller + # than the energy remaining after one energy loss event + tmprange[i] = tmprange[i] + tmprange[index] * cdcsvalue / tcs + j = j + 1 + omega_old = omega + omega = e_ran[j] + rangevalue = tmprange[i] + if (2 * ran_tmfp[i] < tmprange[i]): + rangevalue = np.sqrt(2 * ran_tmfp[i] * tmprange[i]) + if (rangevalue > rangemax): + rangemax = rangevalue + ran_range[i] = rangemax * units.m + print('.', end='', flush=True) + print() + outfile.close() From 36ab8ccb6b725c851b2594997b66be87613a5c80 Mon Sep 17 00:00:00 2001 From: Luc van Kessel Date: Fri, 30 Jun 2017 16:56:46 +0200 Subject: [PATCH 03/13] Don't remove units --- examples/cs.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/cs.py b/examples/cs.py index e1082f7..2d41a7c 100644 --- a/examples/cs.py +++ b/examples/cs.py @@ -203,7 +203,7 @@ def dcs(w): ran_range = electron_range_grp.create_dataset("range", e_ran.shape) ran_range.attrs['units'] = 'm' - ran_tmfp = np.zeros(e_ran.shape) + ran_tmfp = np.zeros(e_ran.shape) * units.m; tmfpmax = 0. * units.m print("# Computing transport mean free path.") for i, K in enumerate(e_ran): @@ -220,12 +220,12 @@ def dcs(theta): tmfpmax = tmfp else: tmfpmax = tmfp - ran_tmfp[i] = tmfp.to('m').magnitude + ran_tmfp[i] = tmfp print('.', end='', flush=True) print() - rangemax = 0. - tmprange = np.zeros(e_ran.shape) + rangemax = 0. * units.m + tmprange = np.zeros(e_ran.shape) * units.m print("# Computing inelastic electron range.") for i, K in enumerate(e_ran): ran_energies[i] = K.to('eV') @@ -243,7 +243,7 @@ def dcs(w): s.elf_file.get_min_energy_interval()) #inel_tcs[i] = tcs.to('m^2') #inel_icdf[i] = icdf.to('eV') - tmprange[i] = (1./tcs).to('m').magnitude + tmprange[i] = 1/tcs j = 0 omega = e_ran[0] omega_old = 0. * units.eV @@ -260,7 +260,7 @@ def dcs(w): rangevalue = np.sqrt(2 * ran_tmfp[i] * tmprange[i]) if (rangevalue > rangemax): rangemax = rangevalue - ran_range[i] = rangemax * units.m + ran_range[i] = rangemax.to('m') print('.', end='', flush=True) print() From 46be971254c41c6d56ba56b4b513f94f440faba2 Mon Sep 17 00:00:00 2001 From: Luc van Kessel Date: Tue, 4 Jul 2017 17:09:32 +0200 Subject: [PATCH 04/13] Add "dv1" model. "dv1" is not really an acronym. The "1" is because it is a first attempt. The D is probably for Delft, and the V could perhaps mean "Version". --- cstool/inelastic.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/cstool/inelastic.py b/cstool/inelastic.py index 87085f8..7da242f 100644 --- a/cstool/inelastic.py +++ b/cstool/inelastic.py @@ -39,6 +39,37 @@ def L_Kieft(K, w0, F): return np.maximum(0, (w0 < 50 * units.eV) * L1 + (w0 > 50 * units.eV) * L2) +def L_dv1(K, w0, F): + """Computes electron cross-sections for inelastic scattering from + optical data. Model is conceptually somewhere between L_Kieft and L_Ashley: + L1 is a Fermi-corrected version of Ashley without the factor 3/2 + rescale by Kieft; L2 is the same as in Kieft. + + :param K: + Kinetic energy of electron. + :param w0: + ω₀ - transition energy + :param F: + Fermi energy + """ + + a = (w0 / K).magnitude + b = (F / K).magnitude + s = sqrt(1 - 2*a, where = (a <= .5), out = np.zeros(a.shape)) + + L1_range = (a > 0) * (a < .5) * (a - s < 1 - 2*b) + L2_range = (a > 0) * (a < 1 - b) + + # Calculate L1 + wm = (1 + a - s)/2 + wp = np.minimum((1 + a + s)/2, 1 - b) + L1 = log((wp - a) * wm / (wp * (wm - a)), where = L1_range, out = np.zeros(a.shape)) + + # Calculate L2 + L2 = -log(a, where = L2_range, out = np.zeros(a.shape)) + + return np.maximum(0, (w0 < 50 * units.eV) * L1 + + (w0 > 50 * units.eV) * L2) def L_Ashley_w_ex(K, w0, _): a = w0 / K @@ -54,7 +85,8 @@ def L_Ashley_wo_ex(K, w0, _): methods = { 'Kieft': L_Kieft, 'Ashley_w_ex': L_Ashley_w_ex, - 'Ashley_wo_ex': L_Ashley_wo_ex + 'Ashley_wo_ex': L_Ashley_wo_ex, + 'dv1': L_dv1 } From 1ebdd6be1305d5e4199d11ac5c9e5c3aaad04732 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Thu, 6 Jul 2017 12:12:01 +0200 Subject: [PATCH 05/13] Add function that returns only tcs and no icdf. --- cstool/compile.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cstool/compile.py b/cstool/compile.py index adf2a25..2f63c04 100644 --- a/cstool/compile.py +++ b/cstool/compile.py @@ -147,3 +147,11 @@ def compute_tcs_icdf(f, a, b, P, sampling=100000): if cf[-1]==0: return 0 * x.units*y.units, np.zeros_like(P) * x.units return cf[-1] * x.units*y.units, np.interp(P, cf/cf[-1], x) * x.units + +def compute_tcs(f, a, b, P, sampling=100000): + x = np.linspace(a, b.to(a.units), sampling) * a.units + y = f(x) + cf = np.r_[0, np.cumsum((x[1:] - x[:-1]) * (y[:-1] + y[1:]) / 2.0)] + if cf[-1]==0: + return 0 * x.units*y.units + return cf[-1] * x.units*y.units From ee994b781c4a3bf62b365294b39bd1ca0a202303 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Thu, 6 Jul 2017 12:12:22 +0200 Subject: [PATCH 06/13] Clean up code. --- examples/cs.py | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/examples/cs.py b/examples/cs.py index 2d41a7c..dcf9d22 100644 --- a/examples/cs.py +++ b/examples/cs.py @@ -6,6 +6,7 @@ from cstool.phonon import phonon_cs_fn from cstool.inelastic import inelastic_cs_fn from cstool.compile import compute_tcs_icdf +from cstool.compile import compute_tcs from cstool.ionization import ionization_shells, outer_shell_energies, \ loglog_interpolate as ion_loglog_interp from cslib.noodles import registry @@ -23,6 +24,12 @@ def integrant(theta): return compute_tcs_icdf(integrant, 0*units('rad'), np.pi*units('rad'), P) +def compute_elastic_tcs(dcs, P): + def integrant(theta): + return dcs(theta) * 2 * np.pi * np.sin(theta) + + return compute_tcs(integrant, 0*units('rad'), np.pi*units('rad'), P) + def compute_inelastic_tcs_icdf(dcs, P, K0, K, max_interval): def integrant(w): @@ -33,6 +40,15 @@ def integrant(w): int(np.ceil((K - K0) / max_interval)) ])) +def compute_inelastic_tcs(dcs, P, K0, K, max_interval): + def integrant(w): + return dcs(w) + + return compute_tcs(integrant, K0, K, P, + sampling = np.min([100000, + int(np.ceil((K - K0) / max_interval)) + ])) + if __name__ == "__main__": import argparse @@ -209,7 +225,7 @@ def dcs(w): for i, K in enumerate(e_ran): def dcs(theta): return elastic_cs_fn(theta, K) * (1 - np.cos(theta)) * s.rho_n - inv_tmfp, icdf_dummy = compute_elastic_tcs_icdf(dcs, p_ran) + inv_tmfp = compute_elastic_tcs(dcs, p_ran) tmfp = 1./inv_tmfp if ( K >= s.band_structure.barrier): # make sure the tmfp is monotonously increasing for energies above @@ -238,23 +254,22 @@ def dcs(theta): def dcs(w): return inelastic_cs_fn(s)(K, w) * s.rho_n - tcs, icdf_dummy = compute_inelastic_tcs_icdf(dcs, p_inel, + tcs = compute_inelastic_tcs(dcs, p_inel, s.elf_file.get_min_energy(), w0_max, s.elf_file.get_min_energy_interval()) - #inel_tcs[i] = tcs.to('m^2') - #inel_icdf[i] = icdf.to('eV') tmprange[i] = 1/tcs - j = 0 - omega = e_ran[0] - omega_old = 0. * units.eV - while (omega < K/2 and omega < K-s.band_structure.fermi): - cdcsvalue = inelastic_cs_fn(s)(K,omega) * s.rho_n * (omega - omega_old) - index = sum(e_ran <= (K - omega)) - 1 # get last energy index smaller - # than the energy remaining after one energy loss event - tmprange[i] = tmprange[i] + tmprange[index] * cdcsvalue / tcs - j = j + 1 - omega_old = omega - omega = e_ran[j] + for j, omega in enumerate(e_ran): + if (omega < K/2 and omega < K-s.band_structure.fermi): + if j==0: + omega_old = 0. * units.eV + else: + omega_old = e_ran[j-1] + cdcsvalue = inelastic_cs_fn(s)(K,omega) * s.rho_n * (omega - omega_old) + index = sum(e_ran <= (K - omega)) - 1 # get last energy index smaller + # than the energy remaining after one energy loss event + tmprange[i] += tmprange[index] * cdcsvalue / tcs + else: + break rangevalue = tmprange[i] if (2 * ran_tmfp[i] < tmprange[i]): rangevalue = np.sqrt(2 * ran_tmfp[i] * tmprange[i]) From e9623a7b7ec8ecca5aa9e6345d4c654e0a1c6f78 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Fri, 21 Jul 2017 13:02:20 +0200 Subject: [PATCH 07/13] Update material parameters and add alumina. --- data/materials/alumina.yaml | 55 +++++++++++++++++++++++++++++++++++++ data/materials/gold.yaml | 28 ++++++++++++++----- data/materials/silicon.yaml | 46 +++++++++++++++++++++++-------- 3 files changed, 111 insertions(+), 18 deletions(-) create mode 100644 data/materials/alumina.yaml diff --git a/data/materials/alumina.yaml b/data/materials/alumina.yaml new file mode 100644 index 0000000..d742e09 --- /dev/null +++ b/data/materials/alumina.yaml @@ -0,0 +1,55 @@ +name: alumina # http://www.webelements.com (also for density, + # atomic mass values for all elements) +rho_m: 3.98 g/cm³ # http://accuratus.com/alumox.html this + # link shows the density of alumina increases + # with the purity level + # http://www.azom.com/properties.aspx?ArticleID=52 + # this link gives a range of densities for alumina + # from 3 to 3.98 g/cm³ + # http://www-ferp.ucsd.edu/LIB/PROPS/PANOS/al2o3.html + # this site has a density of 3.9 g/cm³ + # and list a reference: Goodfellow Cambridge Ltd., + # "Metals, Alloys, Compounds, Ceramics, + # Polymers, Composites", Catalogue 1993/94. +elf_file: data/elf/df_Al2O3.dat + +band_structure: + model: insulator + fermi: 0.0 eV # E.O. Filatova, A.S. Konashuk, + # DOI: 10.1021/acs.jpcc.5b06843 J.Phys. + # Chem.C 2015, 119, 20755 − 20761 + # gives the valence band max as + # 3.64 +- 0.04 eV for am-Al2O3 + band_gap: 7.0 eV # E.O. Filatova, A.S. Konashuk, + # DOI: 10.1021/acs.jpcc.5b06843 J.Phys. + # Chem.C 2015, 119, 20755 − 20761 + # gives the band gap as + # 7.0 +- 0.1 eV for am-Al2O3 + # and 7.6 +- 0.1 eV for gamma-Al2O3 + affinity: 1.0 eV # (unrealistic value?) D.V. Morgan et al., + # J.Phys.D 13, 307 (1980). + +phonon: + model: single # dual parameters for ac. def. potentail are yet unknown + lattice: 4.76 Å # http://www.ceramics.nist.gov (does not work anymore) + # https://srdata.nist.gov/CeramicDataPortal/Pds/Scdaos (for sintered alumina) + # hexagonal: a = 4.761 Å and c = 12.991 Å + # Landolt-Bornstein: 5.140 Å and alpha = 55”16’ + m_dos: 1.0 m_e # Density of state mass [] (unknown in KB) + m_eff: 1.0 m_e # Effective mass (unknown in KB) + single: + c_s: 8009 m/s # http://www.ceramics.nist.gov (does not work anymore) + # https://srdata.nist.gov/CeramicDataPortal/Pds/Scdaos (for sintered alumina) + eps_ac: 13.0 eV # J. Shan et al., Phys.Rev.Lett. 90(24), + # 247401 (2003), using model of L.P. + # Kadanoff, Phys.Rev. 130, 1364 (1963). + longitudinal: # idem dito for longitudinal, + c_s: 11003 m/s # https://srdata.nist.gov/CeramicDataPortal/Pds/Scdaos (for sintered alumina) + eps_ac: 6.39 eV # value from silicon + transversal: # and transversal modes + c_s: 6512 m/s # https://srdata.nist.gov/CeramicDataPortal/Pds/Scdaos (for sintered alumina) + eps_ac: 3.01 eV # value from silicon + +elements: + Al: { count: 2, Z: 13, M: 26.982 g/mol } + O: { count: 3, Z: 8, M: 15.999 g/mol } diff --git a/data/materials/gold.yaml b/data/materials/gold.yaml index d36cf94..7f655d3 100644 --- a/data/materials/gold.yaml +++ b/data/materials/gold.yaml @@ -1,18 +1,32 @@ name: gold -rho_m: 19.30 g/cm³ +rho_m: 19.30 g/cm³ # http://www.webelements.com (also for density, + # atomic mass values for all elements) + # also resistivity for gold (2.2 e-8 Ohm m) elf_file: data/elf/df_Au.dat band_structure: model: metal - fermi: 5.53 eV - work_func: 5.4 eV + fermi: 5.53 eV # http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html, + # quoting Ashcroft, N. W. and Mermin, N. + # D., Solid State Physics, Saunders, 1976. (5.53 eV) + # and Ohya et al., report NIFS-DATA-84, Japan. (9.11 eV) + work_func: 5.38 eV # Ohya et al., report NIFS-DATA-84, Japan. (5.38 eV) phonon: - model: single - lattice: 4.079 Å + model: dual + lattice: 4.0782 Å # https://www.webelements.com/gold/crystal_structure.html + # Landolt-Bornstein: 4.0786 Å + m_dos: 1.0 m_e # Density of state mass [] (unknown in KB) + m_eff: 1.0 m_e # Effective mass (unknown in KB) single: - c_s: 2.03 km/s - eps_ac: 8.92 eV + c_s: 1880 m/s # speed of sound + eps_ac: 2.82 eV # acoustic deformation potential + longitudinal: # idem dito for longitudinal, + c_s: 3240 m/s # https://en.wikipedia.org/wiki/Speeds_of_sound_of_the_elements_(data_page) + eps_ac: 4.86 eV # calculated + transversal: # and transversal modes + c_s: 1200 m/s # https://en.wikipedia.org/wiki/Speeds_of_sound_of_the_elements_(data_page) + eps_ac: 1.80 eV # calculated elements: Au: { count: 1, Z: 79, M: 196.97 g/mol } diff --git a/data/materials/silicon.yaml b/data/materials/silicon.yaml index 9057fcb..843b380 100644 --- a/data/materials/silicon.yaml +++ b/data/materials/silicon.yaml @@ -1,29 +1,53 @@ name: silicon -rho_m: 2.3290 g/cm³ +rho_m: 2.3290 g/cm³ # http://www.webelements.com (also for density, + # atomic mass values for all elements) + # and http://www.ioffe.ru/SVA/NSM/Semicond/Si/basic.html elf_file: data/elf/df_Si.dat band_structure: model: semiconductor - fermi: 7.83 eV - band_gap: 1.12 eV - affinity: 4.05 eV + fermi: 7.83 eV # Ohya et al., report NIFS-DATA-84, Japan. (and workfunction? 4.79 eV) + band_gap: 1.12 eV # http://www.ioffe.rssi.ru/SVA/NSM/Semicond/ + # http://www.ioffe.ru/SVA/NSM/Semicond/Si/bandstr.html + affinity: 4.05 eV # http://www.ioffe.ru/SVA/NSM/Semicond/Si/basic.html phonon: model: dual - lattice: 5.430710 Å + lattice: 5.430710 Å # Several volumes in Landolt-Börnstein, + # book series, Group III Condensed Matter, + # Springer-Verlag. (5.43072 Å) m_dos: 1.09 m_e # Density of state mass [] + # https://ecee.colorado.edu/~bart/book/effmass.htm + # http://onlinelibrary.wiley.com/doi/10.1002/9780470769522.app2/pdf m_eff: 0.26 m_e # Effective mass + # https://ecee.colorado.edu/~bart/book/effmass.htm single: - c_s: 6490 m/s - eps_ac: 4.14 eV + c_s: 6618 m/s # S. Smirnov, dissertation at TU Wien, + # http://www.iue.tuwien.ac.at/phd/smirnov/ + # and e.g. M.M. Dignam and A.A. Grinberg, + # Phys.Rev.B 50(7), 4345 (1994); J.A. + # Carrillo, to be published in Commun. + # Comput.Phys. (2007); S.F. Liotta and + # A. Majorana, arXiv preprint + # arXiv:cond-mat/0003456v1. None includes + # a reference to the original data. + eps_ac: 8.47 eV # S. Smirnov, dissertation at TU Wien, + # http://www.iue.tuwien.ac.at/phd/smirnov/ + # and Several volumes in Landolt-Börnstein, + # book series, Group III Condensed Matter, + # Springer-Verlag. longitudinal: # idem dito for longitudinal, alpha: 2.00e-7 m²/s - c_s: 9010 m/s - eps_ac: 6.39 eV + c_s: 9033 m/s # + # Smirnov (zie link hierboven): 9033 m/s + eps_ac: 11.0 eV # + # Smirnov (zie link hierboven): 11.0 eV transversal: # and transversal modes alpha: 2.26e-7 m²/s - c_s: 5230 m/s - eps_ac: 3.01 eV + c_s: 5410 m/s # + # Smirnov (zie link hierboven): 5410 m/s + eps_ac: 7.2 eV # + # Smirnov (zie link hierboven): 7.2 eV elements: Si: { count: 1, Z: 14, M: 28.0855 g/mol } From e7b755656c9fe8c7f9ce4819572768856e741ea5 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Thu, 3 Aug 2017 10:03:48 +0200 Subject: [PATCH 08/13] Add reference for acoustic deformation potential of silicon. --- data/materials/silicon.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/data/materials/silicon.yaml b/data/materials/silicon.yaml index 843b380..521c03a 100644 --- a/data/materials/silicon.yaml +++ b/data/materials/silicon.yaml @@ -42,6 +42,7 @@ phonon: # Smirnov (zie link hierboven): 9033 m/s eps_ac: 11.0 eV # # Smirnov (zie link hierboven): 11.0 eV + # see also http://onlinelibrary.wiley.com/doi/10.1002/pssb.2220430167/pdf transversal: # and transversal modes alpha: 2.26e-7 m²/s c_s: 5410 m/s # From bcaf77bc7ce1f213751e44a4ae5d16f68caa4cb2 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Thu, 3 Aug 2017 10:06:32 +0200 Subject: [PATCH 09/13] Multiply single phonon model with 3 as first order approx. of dual branch model. --- cstool/phonon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cstool/phonon.py b/cstool/phonon.py index 41319d3..ff04608 100644 --- a/cstool/phonon.py +++ b/cstool/phonon.py @@ -103,7 +103,7 @@ def dcs(theta, E): lambda E: 1, partial(dcs_hi, m), h, E_BZ / 4, E_BZ) - return g(E) * norm(m, E) + return g(E) * norm(m, E) * 3.0 # should have units of m²/sr return dcs From c08a5f3fae92c0f6de0b3b83c644be7ce5e5c593 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Mon, 14 Aug 2017 16:14:22 +0200 Subject: [PATCH 10/13] Phonon parameters from Landolt-Bornstein. --- data/materials/silicon.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/materials/silicon.yaml b/data/materials/silicon.yaml index 521c03a..919a8e1 100644 --- a/data/materials/silicon.yaml +++ b/data/materials/silicon.yaml @@ -22,7 +22,7 @@ phonon: m_eff: 0.26 m_e # Effective mass # https://ecee.colorado.edu/~bart/book/effmass.htm single: - c_s: 6618 m/s # S. Smirnov, dissertation at TU Wien, + c_s: 6938 m/s # S. Smirnov, dissertation at TU Wien, # http://www.iue.tuwien.ac.at/phd/smirnov/ # and e.g. M.M. Dignam and A.A. Grinberg, # Phys.Rev.B 50(7), 4345 (1994); J.A. @@ -31,23 +31,23 @@ phonon: # A. Majorana, arXiv preprint # arXiv:cond-mat/0003456v1. None includes # a reference to the original data. - eps_ac: 8.47 eV # S. Smirnov, dissertation at TU Wien, + eps_ac: 6.4 eV # S. Smirnov, dissertation at TU Wien, # http://www.iue.tuwien.ac.at/phd/smirnov/ # and Several volumes in Landolt-Börnstein, # book series, Group III Condensed Matter, # Springer-Verlag. longitudinal: # idem dito for longitudinal, alpha: 2.00e-7 m²/s - c_s: 9033 m/s # + c_s: 9130 m/s # Landolt-Bornstein Vol. III/41A1a 872 # Smirnov (zie link hierboven): 9033 m/s - eps_ac: 11.0 eV # + eps_ac: 9.2 eV # Landolt-Bornstein Vol. III/41A1a 648 # Smirnov (zie link hierboven): 11.0 eV # see also http://onlinelibrary.wiley.com/doi/10.1002/pssb.2220430167/pdf transversal: # and transversal modes alpha: 2.26e-7 m²/s - c_s: 5410 m/s # + c_s: 5842 m/s # Landolt-Bornstein Vol. III/41A1a 872 # Smirnov (zie link hierboven): 5410 m/s - eps_ac: 7.2 eV # + eps_ac: 5.0 eV # Landolt-Bornstein Vol. III/41A1a 648 # Smirnov (zie link hierboven): 7.2 eV elements: From a0fd5d052f28e8e4c56ffbb5ea507b06564c9d8a Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Tue, 15 Aug 2017 11:51:22 +0200 Subject: [PATCH 11/13] Clean-up silicon.yaml material file. --- data/materials/silicon.yaml | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/data/materials/silicon.yaml b/data/materials/silicon.yaml index 919a8e1..3b0a45c 100644 --- a/data/materials/silicon.yaml +++ b/data/materials/silicon.yaml @@ -22,33 +22,24 @@ phonon: m_eff: 0.26 m_e # Effective mass # https://ecee.colorado.edu/~bart/book/effmass.htm single: - c_s: 6938 m/s # S. Smirnov, dissertation at TU Wien, - # http://www.iue.tuwien.ac.at/phd/smirnov/ - # and e.g. M.M. Dignam and A.A. Grinberg, - # Phys.Rev.B 50(7), 4345 (1994); J.A. - # Carrillo, to be published in Commun. - # Comput.Phys. (2007); S.F. Liotta and - # A. Majorana, arXiv preprint - # arXiv:cond-mat/0003456v1. None includes - # a reference to the original data. - eps_ac: 6.4 eV # S. Smirnov, dissertation at TU Wien, - # http://www.iue.tuwien.ac.at/phd/smirnov/ - # and Several volumes in Landolt-Börnstein, - # book series, Group III Condensed Matter, - # Springer-Verlag. - longitudinal: # idem dito for longitudinal, - alpha: 2.00e-7 m²/s + c_s: 6938 m/s # Speed of sound + # weighted average from dual c_s's + eps_ac: 6.4 eV # Acoustic deformation potential + # weighted average from dual eps_ac's + longitudinal: # parameters for longitudinal branch, + alpha: 2.00e-7 m²/s # thesis T. Verduin c_s: 9130 m/s # Landolt-Bornstein Vol. III/41A1a 872 - # Smirnov (zie link hierboven): 9033 m/s + # Smirnov: 9033 m/s + # http://www.iue.tuwien.ac.at/phd/smirnov/ eps_ac: 9.2 eV # Landolt-Bornstein Vol. III/41A1a 648 - # Smirnov (zie link hierboven): 11.0 eV + # Smirnov (see link above): 11.0 eV # see also http://onlinelibrary.wiley.com/doi/10.1002/pssb.2220430167/pdf - transversal: # and transversal modes - alpha: 2.26e-7 m²/s + transversal: # and transversal branch parameters + alpha: 2.26e-7 m²/s # thesis T. Verduin c_s: 5842 m/s # Landolt-Bornstein Vol. III/41A1a 872 - # Smirnov (zie link hierboven): 5410 m/s + # Smirnov (see link above): 5410 m/s eps_ac: 5.0 eV # Landolt-Bornstein Vol. III/41A1a 648 - # Smirnov (zie link hierboven): 7.2 eV + # Smirnov (see link above): 7.2 eV elements: Si: { count: 1, Z: 14, M: 28.0855 g/mol } From 1342c39ee4a5629c305b50ea78c0c20de7c05ceb Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Tue, 15 Aug 2017 12:15:35 +0200 Subject: [PATCH 12/13] Correct DOS mass for silicon. --- data/materials/silicon.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/materials/silicon.yaml b/data/materials/silicon.yaml index 3b0a45c..a51af4f 100644 --- a/data/materials/silicon.yaml +++ b/data/materials/silicon.yaml @@ -16,7 +16,7 @@ phonon: lattice: 5.430710 Å # Several volumes in Landolt-Börnstein, # book series, Group III Condensed Matter, # Springer-Verlag. (5.43072 Å) - m_dos: 1.09 m_e # Density of state mass [] + m_dos: 1.08 m_e # Density of state mass [] # https://ecee.colorado.edu/~bart/book/effmass.htm # http://onlinelibrary.wiley.com/doi/10.1002/9780470769522.app2/pdf m_eff: 0.26 m_e # Effective mass From 7ff2314b81e78bb465ef0fcba1f1210ead5e00f1 Mon Sep 17 00:00:00 2001 From: Annemarie Theulings Date: Sun, 15 Sep 2019 13:32:14 +0200 Subject: [PATCH 13/13] Update README.rst --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 96c8627..235edb0 100644 --- a/README.rst +++ b/README.rst @@ -27,7 +27,7 @@ clone the needed repositories:: ... > git clone http://github.com/eScatter/pyelsepa.git ... - > git clone http://github.com/eScatter/cstool.git + > git clone -b tmfp http://github.com/eScatter/cstool.git ... create a virtual environment::