示例#1
0
def _straight_intensity_v2(lattice, peakmax=5):
    qsvec, lenqs = generate_qvecs_lenqs_full(peakmax)
    lattice_num = len(lattice)
    x, y, z = np.mgrid[:1:lattice_num * 1j, :1:lattice_num * 1j, :1:lattice_num * 1j]
    intensity = []
    for m in range(len(qsvec)):
        qvec = qsvec[m]
        fexp = lambda x, y, z: np.exp(1j * 2 * np.pi * (x * qvec[0] + y * qvec[1] + z * qvec[2]))
        cuber = fexp(x, y, z) * lattice
        intensity.append((np.abs(cuber.sum())).astype(float)**2)
    intensity = np.array(intensity)
    intensity *= lenqs**2*factor_calc_multiplicity_intens(qsvec)
    intensity /= max(intensity)
    return qsvec, intensity
示例#2
0
def straight_intensity(lattice, peakmax=5, sizelat=1):
    qsvec, lenqs = generate_qvecs_lenqs_full(peakmax, uniquelenq=False)
    lattice_num = len(lattice)
    x, y, z = np.mgrid[:sizelat:lattice_num * 1j, :sizelat:lattice_num * 1j, :sizelat:lattice_num * 1j]
    intensity = []
    for m in range(len(qsvec)):
        qvec = qsvec[m]
        qC = x*qvec[0] + y*qvec[1] + z*qvec[2]
        expqC = np.exp(2*np.pi*1j*qC)
        amplitude = np.abs((expqC*lattice).sum()).astype(float)
        #print(lenqs[m], np.abs(amplitude))
        intensity.append((amplitude*lenqs[m])**2)
    intensity = np.array(intensity)
    intensity *= factor_calc_multiplicity_intens(qsvec)
    lenqs, intensity = filter_unique(np.round(lenqs,4), intensity, concat=True)
    intensity /= max(intensity)
    return lenqs, intensity