def gethkls_xfab(self,dsmax,spg): """ Generate hkl list Argument dsmax is the d* limit (eg 1/d) Argument spg is the space group name, e.g. 'R3-c' """ stl_max = dsmax/2. from xfab import tools,sg raw_peaks = tools.genhkl_all(self.lattice_parameters, 0 , stl_max, sgname=spg, output_stl=True) peaks = [] for i in range(len(raw_peaks)): peaks.append([raw_peaks[i,3]*2,(raw_peaks[i,0],raw_peaks[i,1],raw_peaks[i,2])]) self.peaks = peaks return peaks
def gen_miller(param, phase): """ Generate set of miller indices. Changed from old tools.genhkl to new tools.genhkl_all """ sintlmin = n.sin(param['theta_min'] * n.pi / 180) / param['wavelength'] sintlmax = n.sin(param['theta_max'] * n.pi / 180) / param['wavelength'] hkl = tools.genhkl_all( param['unit_cell_phase_%i' % phase], sintlmin, sintlmax, sgname=param['sgname_phase_%i' % phase], cell_choice=param['cell_choice_phase_%i' % phase], ) return hkl
def initializeHKL(PARfile, sg): # Read files for information from both .log and .gve (unitcell, lattice, distance, omat, tilts, wavelength, wedge, centers, pixsize) = readparfile(PARfile) pixx = 2048 pixy = pixx ## Calculate largest possible ring portion on detector ## units in mm from edge of detector xdist_a = (pixx - centers[0]) * pixsize[0] xdist_b = (centers[0]) * pixsize[0] ydist_a = (pixy - centers[1]) * pixsize[1] ydist_b = (centers[1]) * pixsize[1] ring_rad = np.zeros((4)) ring_rad[0] = math.sqrt(xdist_a**2 + ydist_a**2) ring_rad[1] = math.sqrt(xdist_a**2 + ydist_b**2) ring_rad[2] = math.sqrt(xdist_b**2 + ydist_a**2) ring_rad[3] = math.sqrt(xdist_b**2 + ydist_b**2) max_rad = np.max(ring_rad) max2th = math.atan(max_rad / distance) ## Calculates min and max sin2th on detector sintlmin = 0 sintlmax = np.sin((max2th) / 2) / wavelength sintlmax = sintlmax * 1.05 # over estimates a bit # Lattice information for unit cell hkls = tools.genhkl_all(unitcell, sintlmin, sintlmax, sgno=int(sg), output_stl=True) sinth = np.zeros((hkls.shape[0])) for i in range(0, hkls.shape[0]): sinth[i] = hkls[i, 3] * wavelength sinth_unique = np.unique(sinth) return (sinth_unique)
def gen_miller(param, phase): """ Generate set of miller indices. Henning Osholm Sorensen, Risoe DTU Changed from old tools.genhkl to new tools.genhkl_all Jette Oddershede, DTU Physics, March 2013 """ sintlmin = n.sin(param['theta_min'] * n.pi / 180) / param['wavelength'] sintlmax = n.sin(param['theta_max'] * n.pi / 180) / param['wavelength'] hkl = tools.genhkl_all( param['unit_cell_phase_%i' % phase], sintlmin, sintlmax, sgname=param['sgname_phase_%i' % phase], cell_choice=param['cell_choice_phase_%i' % phase], ) return hkl
def gen_Miller_ds(param, phasenum): """ Generate a list of peaks for a given crystal structure Parameter: - param - phasenum: phase number In the param dictionnary - param['theta_min'] - param['theta_max'] - param['wavelength'] - param['unit_cell_phase_%i' % phasenum] as [a,b,c,alpha,beta,gamma'] - param['sgname_phase_%i' % phasenum]: space group number - param['cell_choice_phase_%i' % phasenum] Returns - an array of hkl with hkl[i]=[h, k, l, ds] with ds = 1/d Inspired from code in polyxsim.reflections, with the addition of ds in return value Created: 12/2019, S. Merkel, Univ. Lille, France """ sintlmin = numpy.sin(numpy.radians( param['theta_min'])) / param['wavelength'] sintlmax = numpy.sin(numpy.radians( param['theta_max'])) / param['wavelength'] hkl = tools.genhkl_all(param['unit_cell_phase_%i' % phasenum], \ sintlmin, \ sintlmax, \ sgname=param['sgname_phase_%i' % phasenum], \ cell_choice=param['cell_choice_phase_%i' % phasenum], \ output_stl=True) # Calculating ds, with is 2*sin(theta)/lambda hkl[:, 3] = hkl[:, 3] * 2 # print hkl # exit() return hkl