Source code for xoppylib.crystals.create_bragg_preprocessor_file_v2

"""
Create Bragg preprocessor files version 2 using dabax or xraylib.
"""

import numpy
from dabax.dabax_xraylib import DabaxXraylib
try: import xraylib
except: pass

import scipy.constants as codata

from xoppylib.crystals.tools import bragg_calc2

[docs]def create_bragg_preprocessor_file_v2(interactive=True, DESCRIPTOR="Si", H_MILLER_INDEX=1, K_MILLER_INDEX=1, L_MILLER_INDEX=1, TEMPERATURE_FACTOR=1.0, E_MIN=5000.0, E_MAX=15000.0, E_STEP=100.0, SHADOW_FILE="bragg.dat", material_constants_library=None): """ SHADOW preprocessor for crystals - python+xraylib version -""" if material_constants_library is None: try: material_constants_library = xraylib except: material_constants_library = DabaxXraylib() # codata_e2_mc2 = 2.81794032e-15 = Classical electron radius in S.I. codata_e2_mc2 = codata.hbar * codata.alpha / codata.m_e / codata.c if interactive: print("bragg: SHADOW preprocessor for crystals - python+xraylib version") fileout = input("Name of output file : ") print(" bragg (python) only works now for ZincBlende Cubic structures. ") print(" Valid descriptor are: ") print(" Si (alternatively Si_NIST, Si2) ") print(" Ge") print(" Diamond") print(" GaAs, GaSb, GaP") print(" InAs, InP, InSb") print(" SiC") descriptor = input("Name of crystal descriptor : ") print("Miller indices of crystal plane of reeflection.") miller = input("H K L: ") miller = miller.split() hh = int(miller[0]) kk = int(miller[1]) ll = int(miller[2]) temper = input("Temperature (Debye-Waller) factor (set 1 for default): ") temper = float(temper) emin = input("minimum photon energy (eV): ") emin = float(emin) emax = input("maximum photon energy (eV): ") emax = float(emax) estep = input("energy step (eV): ") estep = float(estep) else: fileout = SHADOW_FILE descriptor = DESCRIPTOR hh = int(H_MILLER_INDEX) kk = int(K_MILLER_INDEX) ll = int(L_MILLER_INDEX) temper = float(TEMPERATURE_FACTOR) emin = float(E_MIN) emax = float(E_MAX) estep = float(E_STEP) # # end input section, start calculations # out_dict = bragg_calc2(descriptor=descriptor, hh=hh,kk=kk,ll=ll,temper=temper, emin=emin,emax=emax,estep=estep,fileout=fileout, material_constants_library=material_constants_library) # dump_bragg_preprocessor_file_v1(out_dict, fileout=fileout) return out_dict
if __name__ == "__main__": from xoppylib.crystals.bragg_preprocessor_file_io import bragg_preprocessor_file_v2_read for method in [0,1]: if method == 0: dx = DabaxXraylib() SHADOW_FILE = "bragg_v2_dabax.dat" tmp = create_bragg_preprocessor_file_v2(interactive=False, DESCRIPTOR="Si", H_MILLER_INDEX=1, K_MILLER_INDEX=1, L_MILLER_INDEX=1, TEMPERATURE_FACTOR=1.0, E_MIN=5000.0, E_MAX=15000.0, E_STEP=100.0, SHADOW_FILE=SHADOW_FILE, material_constants_library=dx) else: SHADOW_FILE = "bragg_v2_xraylib.dat" tmp = create_bragg_preprocessor_file_v2(interactive=False, DESCRIPTOR="Si", H_MILLER_INDEX=1, K_MILLER_INDEX=1, L_MILLER_INDEX=1, TEMPERATURE_FACTOR=1.0, E_MIN=5000.0, E_MAX=15000.0, E_STEP=100.0, SHADOW_FILE=SHADOW_FILE, material_constants_library=xraylib) tmp1 = bragg_preprocessor_file_v2_read(SHADOW_FILE) for key in tmp1.keys(): print("---------------", key) for key in tmp.keys(): print("---------------", key) oo = tmp[key] try: oo1 = tmp1[key] print(type(oo), type(oo1)) if isinstance(oo, list): pass # print(key,oo[0][0],oo1[0][0]) elif isinstance(oo, numpy.ndarray): print(key,oo[0][0],oo1[0][0]) else: print(key,oo,oo1) except: print("key %s not found " % key)