Beispiel #1
0
 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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #5
0
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