Changeset 1548


Ignore:
Timestamp:
Oct 30, 2014 4:07:50 PM (9 years ago)
Author:
vondreele
Message:

more super structure stuff - now some in unit cell indexing
now using pulldown ComboBoxes? for supersymmetry choices
continue building tables of supersymmetry codes
use deepcopy for peaks in various places; copy wasn't enough
get seq. peak fit to stop when a refinement goes bad; then allow display of results

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r1545 r1548  
    57555755            data.append([])                                 #empty cell list
    57565756            data.append([])                                 #empty dmin
     5757            data.append({})                                 #empty superlattice stuff
    57575758            G2frame.PatternTree.SetItemPyData(item,data)                             
     5759#patch
     5760        if len(data) < 5:
     5761            data.append({'Use':False,'ModVec':[0,0,0.1],'maxH':1,'ssSymb':''})                                 #empty superlattice stuff
     5762            G2frame.PatternTree.SetItemPyData(item,data) 
     5763#end patch
    57585764        G2pdG.UpdateUnitCellsGrid(G2frame,data)
    57595765        if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId):
  • trunk/GSASIIphsGUI.py

    r1547 r1548  
    238238               
    239239            def OnSpaceGroup(event):
    240                 SpcGp = SGTxt.GetValue()
    241                 SGErr,SGData = G2spc.SpcGroup(SpcGp)
     240                Flds = SGTxt.GetValue().split()
     241                #get rid of extra spaces between fields first
     242                for fld in Flds: fld = fld.strip()
     243                SpcGp = ' '.join(Flds)
    242244                # try a lookup on the user-supplied name
    243                 if SGErr:
    244                     SpGrpNorm = G2spc.StandardizeSpcName(SpcGp)
    245                     if SpGrpNorm:
    246                         E,SGData = G2spc.SpcGroup(SpGrpNorm)
    247                         if not E: SGErr = False
     245                SpGrpNorm = G2spc.StandardizeSpcName(SpcGp)
     246                if SpGrpNorm:
     247                    SGErr,SGData = G2spc.SpcGroup(SpGrpNorm)
     248                else:
     249                    SGErr,SGData = G2spc.SpcGroup(SpcGp)
    248250                if SGErr:
    249251                    text = [G2spc.SGErrors(SGErr)+'\nSpace Group set to previous']
     
    256258                    text,table = G2spc.SGPrint(SGData)
    257259                    generalData['SGData'] = SGData
     260                    SGTxt.SetValue(generalData['SGData']['SpGrp'])
    258261                    msg = 'Space Group Information'
    259262                    G2gd.SGMessageBox(General,msg,text,table).Show()
     
    536539                if SSGData:
    537540                    Vec = generalData['SuperVec'][0][0]     #(3+1) only
    538                     generalData['SuperVec'][0][0] = G2spc.SSGModCheck(Vec,SSGData)
     541                    modSymb = SSGData['modSymb']
     542                    generalData['SuperVec'][0][0] = G2spc.SSGModCheck(Vec,modSymb)[0]
    539543                    text,table = G2spc.SSGPrint(generalData['SGData'],SSGData)
    540544                    generalData['SSGData'] = SSGData
     
    601605            modSizer.Add(dimSizer)
    602606            vecSizer = wx.FlexGridSizer(1,5,5,5)
    603             indChoice = ['0','1','2','3','4','5','6','7']
     607            indChoice = ['1','2','3','4','5','6','7']
    604608            for i in range(int(generalData['Super'])):
    605609                vecSizer.Add(wx.StaticText(General,label=' Modulation vector #%d: '%(i+1)),0,WACV)
    606                 vec = generalData['SuperVec'][i][0]
     610                vec = generalData['SuperVec'][i][0] #these need to conform to the fixed modulations, e.g. 1/2 1/2 g
    607611                Vec = wx.TextCtrl(General,size=wx.Size(120,24),
    608612                    value=' %.3f %.3f %.3f '%(vec[0],vec[1],vec[2]),
     
    620624                Max = wx.ComboBox(General,-1,value='%d'%(generalData['SuperVec'][i][2]),choices=indChoice,
    621625                    style=wx.CB_READONLY|wx.CB_DROPDOWN)
    622                 Max.Bind(wx.EVT_TEXT_ENTER,OnMax)       
    623                 Max.Bind(wx.EVT_KILL_FOCUS,OnMax)
     626                Max.Bind(wx.EVT_COMBOBOX,OnMax)       
    624627                vecSizer.Add(Max,0,WACV)
    625628                Indx[Max.GetId()] = i
  • trunk/GSASIIpwdGUI.py

    r1547 r1548  
    353353            Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item)
    354354            G2frame.PatternTree.SetItemPyData(
    355                 G2gd.GetPatternTreeItemId(G2frame,Id,'Peak List'),copy.copy(data))
     355                G2gd.GetPatternTreeItemId(G2frame,Id,'Peak List'),copy.deepcopy(data))
    356356   
    357357    def OnUnDo(event):
     
    407407                names.append(histList[sel])
    408408        dlg.Destroy()
    409         SeqResult = {'histNames':names}
     409        SeqResult = {}
    410410        Reverse = False
    411411        CopyForward = False
     
    428428        FitPgm = 'LSQ'
    429429        prevVaryList = []
     430        Names = []
    430431        if Reverse:
    431432            names.reverse()
     
    438439                PatternId =  G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name)
    439440                if i and CopyForward:
    440                     G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List'),copy.copy(peaks))
     441                    G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List'),copy.deepcopy(peaks))
    441442                    prevVaryList = varyList[:]
    442443                peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List'))
     
    455456                        background,limits,inst,inst2,data,prevVaryList,oneCycle,controls,dlg2)
    456457                finally:
    457                     dlg2.Destroy()   
    458                 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List'),copy.copy(peaks))
    459                 SeqResult[name] = {'variables':result[0],'varyList':varyList,'sig':sig,'Rvals':Rvals,
    460                     'covMatrix':np.eye(len(result[0])),'title':name,'parmDict':parmDict,
    461                     'fullVary':fullvaryList,'badVary':badVary}
    462             else:
    463                 dlg.Destroy()
    464                 print ' ***** Sequential peak fit successful *****'
     458                    dlg2.Destroy()
     459                if len(result[0]) != len(fullvaryList):
     460                    print ' ***** Sequential peak fit stopped at '+name+' *****'
     461                    break
     462                else:
     463                    Names.append(name)   
     464                    G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List'),copy.deepcopy(peaks))
     465                    SeqResult[name] = {'variables':result[0],'varyList':varyList,'sig':sig,'Rvals':Rvals,
     466                        'covMatrix':np.eye(len(result[0])),'title':name,'parmDict':parmDict,
     467                        'fullVary':fullvaryList,'badVary':badVary}
     468            dlg.Destroy()
     469            print ' ***** Sequential peak fit successful *****'
    465470        finally:
    466471            wx.EndBusyCursor()
     472        SeqResult['histNames'] = Names
    467473        Id =  G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Sequential results')
    468474        if Id:
     
    21972203        controls[0] = zeroVar.GetValue()
    21982204       
     2205    def OnSSopt(event):
     2206        ssopt['Use'] = SSopt.GetValue()
     2207        wx.CallAfter(UpdateUnitCellsGrid,G2frame,data)
     2208       
     2209    def OnSelMG(event):
     2210        ssopt['ssSymb'] = selMG.GetValue()
     2211        Vec = ssopt['ModVec']
     2212        modS = G2spc.splitSSsym(ssopt['ssSymb'])[0]
     2213        ssopt['ModVec'] = G2spc.SSGModCheck(Vec,modS)[0]
     2214        wx.CallAfter(UpdateUnitCellsGrid,G2frame,data)
     2215       
     2216    def OnModVal(event):
     2217        pass
     2218       
     2219    def OnMoveMod(event):
     2220        Obj = event.GetEventObject()
     2221        ObjId = cellList.index(Obj.GetId())
     2222        valObj = valDict[Obj.GetId()]
     2223        move = Obj.GetValue()*0.01
     2224        Obj.SetValue(0)
     2225        value = float(valObj.GetValue())+move 
     2226#        SetCellValue(valObj,ObjId,value)
     2227#        OnHklShow(event)
     2228       
    21992229    def OnBravSel(event):
    22002230        brav = bravSel.GetString(bravSel.GetSelection())
     
    22732303        peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Index Peak List'))[0]
    22742304        limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits'))[1]
    2275         controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'))
     2305        controls,bravais,cells,dmin,ssopt = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'))
    22762306        cell = controls[6:12]
    22772307        A = G2lat.cell2A(cell)
     
    23432373            return       
    23442374        print 'Refine cell'
    2345         controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'))
     2375        controls,bravais,cells,dmin,ssopt = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'))
    23462376        cell = controls[6:12]
    23472377        A = G2lat.cell2A(cell)
     
    23822412        keepcells = []
    23832413        try:
    2384             controls,bravais,cells,dmin = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'))
     2414            controls,bravais,cells,dmin,ssopt = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'))
    23852415            for cell in cells:
    23862416                if cell[11]:
     
    24012431        cells[0][10] = True
    24022432        if OK:
    2403             data = [controls,bravais,cells,dmin]
     2433            data = [controls,bravais,cells,dmin,ssopt]
    24042434            G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'),data)
    24052435            bestCell = cells[0]
     
    24822512    G2frame.Bind(wx.EVT_MENU, MakeNewPhase, id=G2gd.wxID_MAKENEWPHASE)
    24832513   
    2484     controls,bravais,cells,dmin = data
     2514    controls,bravais,cells,dmin,ssopt = data
    24852515    if len(controls) < 13:              #add cell volume if missing
    24862516        controls.append(G2lat.calc_V(G2lat.cell2A(controls[6:12])))
     
    25722602    zeroVar.Bind(wx.EVT_CHECKBOX,OnZeroVar)
    25732603    littleSizer.Add(zeroVar,0,WACV)
     2604    SSopt = wx.CheckBox(G2frame.dataDisplay,label="Super lattice?")
     2605    SSopt.SetValue(ssopt['Use'])
     2606    SSopt.Bind(wx.EVT_CHECKBOX,OnSSopt)
     2607    littleSizer.Add(SSopt,0,WACV)
    25742608    hklShow = wx.Button(G2frame.dataDisplay,label="Show hkl positions")
    25752609    hklShow.Bind(wx.EVT_BUTTON,OnHklShow)
    25762610    littleSizer.Add(hklShow,0,WACV)
    2577     #Add super lattice option here
    25782611    mainSizer.Add(littleSizer,0)
    25792612   
     
    26082641            littleSizer.Add(volVal,0,WACV)
    26092642    mainSizer.Add(littleSizer,0)
     2643#ssopt = {'Use':False,'ModVec':[0,0,0.1],'maxH':1,'ssSymb':''})
     2644    if ssopt['Use']:
     2645        indChoice = ['1','2','3','4',]
     2646        SpSg = controls[13]
     2647        ssChoice = G2spc.ssdict[SpSg]
     2648        if ssopt['ssSymb'] not in ssChoice:
     2649            ssopt['ssSymb'] = ssChoice[0]
     2650        ssSizer = wx.BoxSizer(wx.HORIZONTAL)
     2651        ssSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Supersymmetry space group: '+SpSg+' '),0,WACV)
     2652        selMG = wx.ComboBox(G2frame.dataDisplay,value=ssopt['ssSymb'],
     2653                choices=ssChoice,style=wx.CB_READONLY|wx.CB_DROPDOWN)
     2654        selMG.Bind(wx.EVT_COMBOBOX, OnSelMG)
     2655        ssSizer.Add(selMG,0,WACV)
     2656        modS = G2spc.splitSSsym(ssopt['ssSymb'])[0]
     2657        Vec = ssopt['ModVec']
     2658        Vec,ifShow = G2spc.SSGModCheck(Vec,modS)
     2659        modList = []
     2660        modDict = {}
     2661        for val,show in zip(Vec,ifShow):
     2662            if show:
     2663                valSizer = wx.BoxSizer(wx.HORIZONTAL)
     2664                modVal = wx.TextCtrl(G2frame.dataDisplay,value=('%.3f'%(val)),style=wx.TE_PROCESS_ENTER)
     2665                modVal.Bind(wx.EVT_TEXT_ENTER,OnModVal)       
     2666                modVal.Bind(wx.EVT_KILL_FOCUS,OnModVal)
     2667                valSizer.Add(modVal,0,WACV)
     2668                modSpin = wx.SpinButton(G2frame.dataDisplay,style=wx.SP_VERTICAL,size=wx.Size(20,20))
     2669                modSpin.SetValue(0)
     2670                modSpin.SetRange(-1,1)
     2671                modSpin.Bind(wx.EVT_SPIN, OnMoveMod)
     2672                valSizer.Add(modSpin,0,WACV)
     2673                ssSizer.Add(valSizer,0,WACV)
     2674                modList.append(modVal.GetId())
     2675                modList.append(modSpin.GetId())
     2676                modDict[modSpin.GetId()] = modVal
     2677
     2678       
     2679       
     2680        mainSizer.Add(ssSizer,0)
    26102681    #if super lattice add super lattice choice based on space group & modulation values
    26112682    #based on super lattice choice - do refl gen following these choices as above
  • trunk/GSASIIspc.py

    r1547 r1548  
    175175    returns SSGPtGrp & SSGKl (only defaults for Mono & Ortho)
    176176    '''
    177     Flds = SGData['SpGrp'].split(' ')
     177    Flds = SGData['SpGrp'].split()
     178    if len(Flds) < 2:
     179        return '',[]
    178180    if SGData['SGLaue'] == '-1':    #triclinic
    179181        if '-' in Flds[1]:
     
    430432    """
    431433   
    432     def splitSSsym(SSymbol):
    433         '''
    434         Splits supersymmetry symbol into two lists of strings
    435         '''
    436         modsym,gensym = SSymbol.replace(' ','').split(')')
    437         nfrac = modsym.count('/')
    438         modsym = modsym.lstrip('(')
    439         if nfrac == 0:
    440             modsym = list(modsym)
    441         elif nfrac == 1:
    442             pos = modsym.find('/')
    443             if pos == 1:
    444                 modsym = [modsym[:3],modsym[3],modsym[4]]
    445             elif pos == 2:
    446                 modsym = [modsym[0],modsym[1:4],modsym[4]]
    447             else:
    448                 modsym = [modsym[0],modsym[1],modsym[2:]]
    449         else:
    450             lpos = modsym.find('/')
    451             rpos = modsym.rfind('/')
    452             if lpos == 1 and rpos == 4:
    453                 modsym = [modsym[:3],modsym[3:6],modsym[6]]
    454             elif lpos == 1 and rpos == 5:
    455                 modsym = [modsym[:3],modsym[3],modsym[4:]]
    456             else:
    457                 modsym = [modsym[0],modsym[1:4],modsym[4:]]
    458         gensym = list(gensym)
    459         return modsym,gensym
    460        
    461434    def checkModSym():
    462435        '''
     
    589562        if SGData['SGInv']:
    590563            SSGOps += [[-1*M,V] for M,V in SSGOps[:]]
    591 # monoclinic - all done
     564# monoclinic - all done & all checked
    592565        if SGData['SGPtGrp'] in ['2','m']:  #OK
    593566            SSGOps[1][0][3,3] = SSGKl[0]
     
    602575                for k in iFrac:
    603576                    SSGOps[j][0][3,k] = SSGKl[i]
    604                 E,SSGOps = extendSSGOps(SSGOps)
    605577           
    606578# orthorhombic
     
    626598        elif SGData['SGPtGrp'] in ['4/m',]:
    627599            if '1/2' in SSGData['modSymb']:
    628                 SSGOps[1][0][3,1] = -1
     600                SSGOps[1][0][3,1] = SSGKl[0]
    629601            for i,j in enumerate([1,6]):
    630602                SSGOps[j][0][3,3] = SSGKl[i]
     
    634606        elif SGData['SGPtGrp'] in ['422','4mm','-42m','-4m2',]:
    635607            if '1/2' in SSGData['modSymb']:
    636                 SSGOps[1][0][3,1] = -1
     608                SSGOps[1][0][3,1] = SSGKl[0]
    637609            for i,j in enumerate([1,4,5]):
    638610                SSGOps[j][0][3,3] = SSGKl[i]
     
    856828        return Result+'\nOperator conflict - incorrect superspace symbol',None
    857829
     830def splitSSsym(SSymbol):
     831    '''
     832    Splits supersymmetry symbol into two lists of strings
     833    '''
     834    modsym,gensym = SSymbol.replace(' ','').split(')')
     835    nfrac = modsym.count('/')
     836    modsym = modsym.lstrip('(')
     837    if nfrac == 0:
     838        modsym = list(modsym)
     839    elif nfrac == 1:
     840        pos = modsym.find('/')
     841        if pos == 1:
     842            modsym = [modsym[:3],modsym[3],modsym[4]]
     843        elif pos == 2:
     844            modsym = [modsym[0],modsym[1:4],modsym[4]]
     845        else:
     846            modsym = [modsym[0],modsym[1],modsym[2:]]
     847    else:
     848        lpos = modsym.find('/')
     849        rpos = modsym.rfind('/')
     850        if lpos == 1 and rpos == 4:
     851            modsym = [modsym[:3],modsym[3:6],modsym[6]]
     852        elif lpos == 1 and rpos == 5:
     853            modsym = [modsym[:3],modsym[3],modsym[4:]]
     854        else:
     855            modsym = [modsym[0],modsym[1:4],modsym[4:]]
     856    gensym = list(gensym)
     857    return modsym,gensym
     858       
    858859def SSGPrint(SGData,SSGData):
    859860    '''
     
    897898    return SSGText,SSGTable
    898899   
    899 def SSGModCheck(Vec,SSGData):
     900def SSGModCheck(Vec,modSymb):
    900901    ''' Checks modulation vector compatibility with supersymmetry space group symbol.
    901902    Superspace group symbol takes precidence & the vector will be modified accordingly
    902903    '''
    903     modQ = SSGData['modQ']
    904     modSymb = SSGData['modSymb']
     904    Fracs = {'1/2':0.5,'1/3':1./3,'1':1.0,'0':0.,'a':0.,'b':0.,'g':0.}
     905    modQ = [Fracs[mod] for mod in modSymb]
    905906    Vec = [0.1 if (vec == 0.0 and mod in ['a','b','g']) else vec for [vec,mod] in zip(Vec,modSymb)]
    906     return [Q if mod not in ['a','b','g'] and vec != Q else vec for [vec,mod,Q] in zip(Vec,modSymb,modQ)]
     907    return [Q if mod not in ['a','b','g'] and vec != Q else vec for [vec,mod,Q] in zip(Vec,modSymb,modQ)],  \
     908        [True if mod in ['a','b','g'] else False for mod in modSymb]
    907909
    908910def SSMT2text(Opr):
     
    16561658        rspc = rspc[:-1]
    16571659        rhomb = ' R'
    1658     if rspc[-1:] == 'H': # hexagonal is assumed and thus can be ignored
     1660    elif rspc[-1:] == 'H': # hexagonal is assumed and thus can be ignored
    16591661        rspc = rspc[:-1]
    16601662    # look for a match in the spacegroup lists
     
    17641766    'P 1':['(abg)',],'P -1':['(abg)',],
    17651767    #monoclinic - done
    1766     'P 2':['(a0g)','(a1/2g)','(0b0)','(0b0)s','(1/2b0)','(0b1/2)',],
     1768    'P 2':['(a0g)','(a1/2g)','(0b0)','(0b0)s','(1/2b0)','(0b1/2)','(1/2b0)s','(0b1/2)s',],
    17671769    'P 21':['(a0g)','(0b0)','(0b0)s','(1/2b0)','(0b1/2)','(1/2b0)s','(0b1/2)s',],
    17681770    'P m':['(a0g)','(a0g)s','(a1/2g)','(a1/2g)s','(0b0)','(1/2b0)','(0b1/2)',],
     
    17721774    'P 2/m':['(a0g)','(a1/2g)','(a0g)0s','(a1/2g)0s',
    17731775        '(0b0)','(0b0)s0','(1/2b0)','(0b1/2)','(1/2b0)s0','(0b1/2)s0',],
    1774     'P 21/m':['(a0g)','(a0g)0s','(0b0)','(0b0)s',
     1776    'P 21/m':['(a0g)','(a0g)0s','(0b0)','(0b0)s0',
    17751777        '(1/2b0)','(0b1/2)','(1/2b0)s0','(0b1/2)s0'],
    17761778    'P 2/c':['(a0g)','(a1/2g)','(a0g)0s','(a1/2g)0s',
     
    17871789    'C c':['(a0g)','(a0g)s','(0b0)',],
    17881790    'C n':['(a0g)','(a0g)s','(0b0)',],
    1789     'C 2/m':['(a0g)','(a0g)0s','(0b0)','(0b0)s0',
    1790         '(1/2b0)','(0b1/2)','(1/2b0)s0','(0b1/2)s0',],
     1791    'C 2/m':['(a0g)','(a0g)0s','(0b0)','(0b0)s0','(0b1/2)','(0b1/2)s0',],
    17911792    'C 2/c':['(a0g)','(a0g)0s','(0b0)','(0b0)s0',],
    17921793    'C 2/n':['(a0g)','(a0g)0s','(0b0)','(0b0)s0',],
     
    19141915    'P c m a':[],
    19151916       
    1916     'P c c n':[],
    1917     'P n a a':[],
    1918     'P b n b':[],
     1917    'P c c n':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1918        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1919    'P n a a':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1920        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1921    'P b n b':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1922        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
    19191923       
    19201924    'P b c m':[],
     
    19251929    'P c m b':[],
    19261930       
    1927     'P n n m':[],
    1928     'P m n n':[],
    1929     'P n m n':[],
     1931    'P n n m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1932        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1933    'P m n n':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1934        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1935    'P n m n':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1936        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
    19301937       
    19311938    'P m m n':[],
     
    19331940    'P m n m':[],
    19341941       
    1935     'P b c n':[],
    1936     'P c a n':[],
    1937     'P n c a':[],
    1938     'P n a b':[],
    1939     'P b n a':[],
    1940     'P c n b':[],
     1942    'P b c n':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1943        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1944    'P c a n':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1945        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1946    'P n c a':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1947        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1948    'P n a b':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1949        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1950    'P b n a':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1951        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1952    'P c n b':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1953        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
    19411954       
    19421955    'P b c a':[],
    19431956    'P c a b':[],
    19441957       
    1945     'P n m a':[],
    1946     'P m n b':[],
    1947     'P b n m':[],
    1948     'P c m n':[],
    1949     'P m c n':[],
    1950     'P n a m':[],
     1958    'P n m a':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1959        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1960    'P m n b':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1961        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1962    'P b n m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1963        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1964    'P c m n':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1965        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1966    'P m c n':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1967        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     1968    'P n a m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     1969        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
    19511970       
    19521971    'C 2 2 21':['(a00)','(0b0)','(00g)','(10g)','(01g)',],
     
    19922011    'I m 2 a':[],
    19932012       
    1994     'I b a m':[],
    1995     'I m c b':[],
    1996     'I c m a':[],
    1997        
    1998     'I b c a':[],
    1999     'I c a b':[],
    2000        
    2001     'I m m a':[],
    2002     'I m m b':[],
    2003     'I b m m ':[],
    2004     'I c m m':[],
    2005     'I m c m':[],
    2006     'I m a m':[],
    2007        
    2008     'F 2 2 2':[],
    2009     'F m m m':[],
    2010     'F d d d':[],
    2011        
    2012     'F m m 2':[],
    2013     'F m 2 m':[],
    2014     'F 2 m m':[],
    2015        
    2016     'F d d 2':[],
    2017     'F d 2 d':[],
    2018     'F 2 d d':[],       
     2013    'I b a m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2014        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2015    'I m c b':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2016        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2017    'I c m a':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2018        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2019       
     2020    'I b c a':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2021        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2022    'I c a b':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2023        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2024       
     2025    'I m m a':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2026        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2027    'I m m b':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2028        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2029    'I b m m ':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2030        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2031    'I c m m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2032        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2033    'I m c m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2034        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2035    'I m a m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2036        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2037       
     2038    'F 2 2 2':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2039        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s',
     2040        '(10g)','(10g)s00','(10g)0s0','(10g)ss0','(a10)','(a10)0s0',
     2041        '(a10)00s','(a10)0ss','(0b1)','(0b1)s00','(0b1)00s','(0b1)s0s',
     2042        '(01g)','(01g)s00','(01g)0s0','(01g)ss0','(a01)','(a01)0s0',
     2043        '(a01)00s','(a01)0ss','(1b0)','(1b0)s00','(1b0)00s','(1b0)s0s'],
     2044       
     2045    'F m m m':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2046        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s',
     2047        '(10g)','(10g)s00','(10g)0s0','(10g)ss0','(a10)','(a10)0s0',
     2048        '(a10)00s','(a10)0ss','(0b1)','(0b1)s00','(0b1)00s','(0b1)s0s',
     2049        '(01g)','(01g)s00','(01g)0s0','(01g)ss0','(a01)','(a01)0s0',
     2050        '(a01)00s','(a01)0ss','(1b0)','(1b0)s00','(1b0)00s','(1b0)s0s'],
     2051       
     2052    'F d d d':['(00g)','(00g)s00','(00g)0s0','(00g)ss0','(a00)','(a00)0s0',
     2053        '(a00)00s','(a00)0ss','(0b0)','(0b0)s00','(0b0)00s','(0b0)s0s'],
     2054       
     2055    'F m m 2':['(00g)','(00g)ss0','(00g)0ss','(00g)s0s','(a00)','(a00)0s0',
     2056        '(0b0)','(0b0)s00','(10g)','(10g)ss0','(10g)0ss','(10g)s0s','(a01)','(a01)0s0',
     2057        '(1b0)','(1b0)s00','(01g)','(01g)ss0','(01g)0ss','(01g)s0s','(a10)','(a10)0s0',
     2058        '(0b1)','(0b1)s00',],
     2059       
     2060    'F m 2 m':['(0b0)','(0b0)ss0','(0b0)0ss','(0b0)s0s','(a00)','(a00)00s',
     2061        '(00g)','(00g)s00','(1b0)','(1b0)ss0','(1b0)0ss','(1b0)s0s','(a01)','(a01)00s',
     2062        '(01g)','(01g)s00','(0b1)','(0b1)ss0','(0b1)0ss','(0b1)s0s','(a10)','(a10)00s',
     2063        '(10g)','(10g)s00',],
     2064       
     2065    'F 2 m m':['(a00)','(a00)ss0','(a00)0ss','(a00)s0s','(0b0)','(0b0)00s',
     2066        '(00g)','(00g)0s0','(a10)','(a10)ss0','(a10)0ss','(a10)s0s','(0b1)','(0b1)00s',
     2067        '(10g)','(10g)0s0','(a01)','(a01)ss0','(a01)0ss','(a01)s0s','(1b0)','(1b0)00s',
     2068        '(01g)','(01g)0s0',],
     2069       
     2070    'F d d 2':['(00g)','(00g)ss0','(00g)0ss','(00g)s0s','(a00)','(a00)0s0',
     2071        '(0b0)','(0b0)s00',],
     2072    'F d 2 d':['(0b0)','(0b0)ss0','(0b0)0ss','(0b0)s0s','(a00)','(a00)00s',
     2073        '(00g)','(00g)s00',],
     2074    'F 2 d d':['(a00)','(a00)ss0','(a00)0ss','(a00)s0s','(0b0)','(0b0)00s',
     2075        '(00g)','(00g)0s0',],       
    20192076    #tetragonal - done
    20202077    'P 4':['(00g)','(00g)q','(00g)s','(1/21/2g)','(1/21/2g)q',],
Note: See TracChangeset for help on using the changeset viewer.