Changeset 2126


Ignore:
Timestamp:
Jan 19, 2016 9:17:05 AM (8 years ago)
Author:
vondreele
Message:

add laueUnique to G2lattice for reindexing hkls to just unique Laue part
fix printing error for odd nos. symmetry operators in PrintDistAngle? in G2strmain

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIimgGUI.py

    r2125 r2126  
    11071107   
    11081108    mainSizer.Add((5,5),0)
    1109     DataSizer = wx.FlexGridSizer(0,2,5,5)
     1109    DataSizer = wx.FlexGridSizer(0,2,5,0)
    11101110    DataSizer.Add(CalibCoeffSizer(),0)
    11111111    DataSizer.Add(IntegrateSizer(),0)       
  • trunk/GSASIIlattice.py

    r2120 r2126  
    5151RSQPI = 1./np.sqrt(np.pi)
    5252R2pisq = 1./(2.*np.pi**2)
     53nxs = np.newaxis
    5354
    5455def sec2HMS(sec):
     
    923924                        HKLs.append([h,k,l,dH,d])   
    924925    return HKLs
     926   
     927def LaueUnique(Laue,HKLF):
     928    ''' Impose Laue symmetry on hkl
     929    :param Laue: str Laue symbol
     930    centrosymmetric Laue groups
     931     ['-1','2/m','2/m(c)','2/m(a)','mmm','-3','3/m','4/m','4/mmm','6/m','6/mmm','m3','m3m']
     932     noncentrosymmetric Laue groups
     933     ['1','2','2(a)','2(c)','m','m(a)','m(c)','222','mm2','m2m','2mm','3','32','3m',
     934        '4','-4','422','-42m','42m','6','-6','622','-62m','62m','23','432','-432']
     935    :param HKLF: np.array([[h,k,l,...]]) reflection set to be converted
     936   
     937    :return: HKLF new reflection array with imposed Laue symmetry
     938    '''
     939    HKLFT = HKLF.T
     940    mat4 = np.array([[0,1,0],[-1,0,0],[0,0,1]])
     941    mat3 = np.array([[0,-1,0],[1,-1,0],[0,0,1]])
     942    #triclinic
     943    if Laue == '1':
     944        pass
     945    elif Laue == '-1':
     946        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     947    #monoclinic - all 3 settings
     948    elif Laue == '2(a)':       
     949        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([1,-1,-1])[:,nxs],HKLFT[:3])
     950    elif Laue == '2':
     951        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,1,-1])[:,nxs],HKLFT[:3])
     952    elif Laue == '2(c)':       
     953        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,1])[:,nxs],HKLFT[:3])
     954    elif Laue == 'm(a)':       
     955        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,1,1])[:,nxs],HKLFT[:3])
     956    elif Laue == 'm':
     957        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([1,-1,1])[:,nxs],HKLFT[:3])
     958    elif Laue == 'm(c)':       
     959        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([1,1,-1])[:,nxs],HKLFT[:3])
     960    elif Laue == '2/m(a)':       
     961        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([1,-1,-1])[:,nxs],HKLFT[:3])
     962        HKLFT[:3] = np.where(HKLFT[2]<0,HKLFT[:3]*np.array([-1,1,1])[:,nxs],HKLFT[:3])
     963    elif Laue == '2/m':
     964        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,1,-1])[:,nxs],HKLFT[:3])
     965        HKLFT[:3] = np.where(HKLFT[2]<0,HKLFT[:3]*np.array([1,-1,1])[:,nxs],HKLFT[:3])
     966    elif Laue == '2/m(c)':
     967        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,1])[:,nxs],HKLFT[:3])
     968        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([1,1,-1])[:,nxs],HKLFT[:3])
     969    #orthorhombic - 3 settings
     970    elif Laue == '222':
     971        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,1])[:,nxs],HKLFT[:3])
     972        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([1,-1,-1])[:,nxs],HKLFT[:3])
     973    elif Laue == '2mm':       
     974        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([1,1,-1])[:,nxs],HKLFT[:3])
     975        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([1,-1,1])[:,nxs],HKLFT[:3])
     976    elif Laue == 'm2m':       
     977        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,1,1])[:,nxs],HKLFT[:3])
     978        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([1,1,-1])[:,nxs],HKLFT[:3])
     979    elif Laue == 'mm2':       
     980        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,1,1])[:,nxs],HKLFT[:3])
     981        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([1,-1,1])[:,nxs],HKLFT[:3])
     982    elif Laue == 'mmm':
     983        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,1,1])[:,nxs],HKLFT[:3])
     984        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([1,-1,1])[:,nxs],HKLFT[:3])
     985        HKLFT[:3] = np.where(HKLFT[2]<0,HKLFT[:3]*np.array([1,1,-1])[:,nxs],HKLFT[:3])
     986    #trigonal
     987    elif Laue == '-3':
     988        HKLFT[:3] = np.where(HKLFT[2]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     989        HKLFT[:3] = np.where(HKLFT[0]<HKLF[1],np.inner(HKLFT[:3]*mat3[:,:,nxs]),HKLFT[:3])
     990    elif Laue == '3/m':
     991        HKLFT[:3] = np.where(HKLFT[2]<0,HKLFT[:3]*np.array([1,1,-1])[:,nxs],HKLFT[:3])
     992        HKLFT[:3] = np.where(HKLFT[0]<HKLF[1],np.inner(HKLFT[:3]*mat3[:,:,nxs]),HKLFT[:3])
     993    elif Laue == '3':
     994        HKLFT[:3] = np.where(HKLFT[0]<HKLF[1],np.inner(HKLFT[:3]*mat3[:,:,nxs]),HKLFT[:3])
     995    elif Laue == '32':
     996        HKLFT[:3] = np.where(HKLFT[2]<0,HKLFT[:3]*np.array([-1,1,-1])[:,nxs],HKLFT[:3])
     997        HKLFT[:3] = np.where(HKLFT[0]<HKLF[1],np.inner(HKLFT[:3]*mat3[:,:,nxs]),HKLFT[:3])
     998        HKLFT[:3] = np.where(HKLFT[0]<HKLF[1],np.inner(HKLFT[:3]*mat3[:,:,nxs]),HKLFT[:3])
     999    elif Laue == '3m':
     1000        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,1,1])[:,nxs],HKLFT[:3])
     1001        HKLFT[:3] = np.where(HKLFT[0]<HKLF[1],np.inner(HKLFT[:3]*mat3[:,:,nxs]),HKLFT[:3])
     1002    #tetragonal
     1003    elif Laue == '4/m':
     1004        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,1])[:,nxs],HKLFT[:3])
     1005        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([1,1,-1])[:,nxs],HKLFT[:3])
     1006        HKLFT[:3] = np.where(HKLFT[1]<HKLF[0],np.inner(HKLFT[:3]*mat4[:,:,nxs]),HKLFT[:3])
     1007    elif Laue == '4/mmm':
     1008        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1009        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1010        HKLFT[:3] = np.where(HKLFT[2]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1011        HKLFT[:3] = np.where(HKLFT[1]<HKLF[0],np.inner(HKLFT[:3]*mat4[:,:,nxs]),HKLFT[:3])
     1012    elif Laue == '4':
     1013        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,1])[:,nxs],HKLFT[:3])
     1014        HKLFT[:3] = np.where(HKLFT[1]<HKLF[0],np.inner(HKLFT[:3]*mat4[:,:,nxs]),HKLFT[:3])
     1015    elif Laue == '-4':
     1016        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1017        HKLFT[:3] = np.where(HKLFT[1]<HKLF[0],np.inner(HKLFT[:3]*mat4[:,:,nxs]),HKLFT[:3])
     1018    elif Laue == '422':
     1019        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,1])[:,nxs],HKLFT[:3])
     1020        HKLFT[:3] = np.where(HKLFT[1]<0,HKLFT[:3]*np.array([1,-1,-1])[:,nxs],HKLFT[:3])
     1021        HKLFT[:3] = np.where(HKLFT[1]<HKLF[0],np.inner(HKLFT[:3]*mat4[:,:,nxs]),HKLFT[:3])
     1022    elif Laue == '-42m':
     1023        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1024    elif Laue == '42m':
     1025        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1026    #hexagonal
     1027    elif Laue == '6/m':
     1028        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1029    elif Laue == '6/mmm':
     1030        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1031    elif Laue == '6':
     1032        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1033    elif Laue == '-6':
     1034        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1035    elif Laue == '622':
     1036        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1037    elif Laue == '-62m':
     1038        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1039    elif Laue == '62m':
     1040        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1041    #cubic
     1042    elif Laue == 'm3':
     1043        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1044    elif Laue == 'm3m':
     1045        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1046    elif Laue == '23':
     1047        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1048    elif Laue == '432':
     1049        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1050    elif Laue == '-432':
     1051        HKLFT[:3] = np.where(HKLFT[0]<0,HKLFT[:3]*np.array([-1,-1,-1])[:,nxs],HKLFT[:3])
     1052    return HKLFT.T
     1053       
    9251054
    9261055#Spherical harmonics routines
  • trunk/GSASIIstrMain.py

    r2091 r2126  
    586586    if len(SGtable) > 1:
    587587        for i,item in enumerate(SGtable[::2]):
    588             line = ' %s %s'%(item.ljust(30),SGtable[2*i+1].ljust(30))
     588            if 2*i+1 == len(SGtable):
     589                line = ' %s'%(item.ljust(30))
     590            else:
     591                line = ' %s %s'%(item.ljust(30),SGtable[2*i+1].ljust(30))
    589592            MyPrint(line)   
    590593    else:
Note: See TracChangeset for help on using the changeset viewer.