Changeset 1548
- Timestamp:
- Oct 30, 2014 4:07:50 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r1545 r1548 5755 5755 data.append([]) #empty cell list 5756 5756 data.append([]) #empty dmin 5757 data.append({}) #empty superlattice stuff 5757 5758 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 5758 5764 G2pdG.UpdateUnitCellsGrid(G2frame,data) 5759 5765 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): -
trunk/GSASIIphsGUI.py
r1547 r1548 238 238 239 239 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) 242 244 # 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 = False245 SpGrpNorm = G2spc.StandardizeSpcName(SpcGp) 246 if SpGrpNorm: 247 SGErr,SGData = G2spc.SpcGroup(SpGrpNorm) 248 else: 249 SGErr,SGData = G2spc.SpcGroup(SpcGp) 248 250 if SGErr: 249 251 text = [G2spc.SGErrors(SGErr)+'\nSpace Group set to previous'] … … 256 258 text,table = G2spc.SGPrint(SGData) 257 259 generalData['SGData'] = SGData 260 SGTxt.SetValue(generalData['SGData']['SpGrp']) 258 261 msg = 'Space Group Information' 259 262 G2gd.SGMessageBox(General,msg,text,table).Show() … … 536 539 if SSGData: 537 540 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] 539 543 text,table = G2spc.SSGPrint(generalData['SGData'],SSGData) 540 544 generalData['SSGData'] = SSGData … … 601 605 modSizer.Add(dimSizer) 602 606 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'] 604 608 for i in range(int(generalData['Super'])): 605 609 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 607 611 Vec = wx.TextCtrl(General,size=wx.Size(120,24), 608 612 value=' %.3f %.3f %.3f '%(vec[0],vec[1],vec[2]), … … 620 624 Max = wx.ComboBox(General,-1,value='%d'%(generalData['SuperVec'][i][2]),choices=indChoice, 621 625 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) 624 627 vecSizer.Add(Max,0,WACV) 625 628 Indx[Max.GetId()] = i -
trunk/GSASIIpwdGUI.py
r1547 r1548 353 353 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item) 354 354 G2frame.PatternTree.SetItemPyData( 355 G2gd.GetPatternTreeItemId(G2frame,Id,'Peak List'),copy. copy(data))355 G2gd.GetPatternTreeItemId(G2frame,Id,'Peak List'),copy.deepcopy(data)) 356 356 357 357 def OnUnDo(event): … … 407 407 names.append(histList[sel]) 408 408 dlg.Destroy() 409 SeqResult = { 'histNames':names}409 SeqResult = {} 410 410 Reverse = False 411 411 CopyForward = False … … 428 428 FitPgm = 'LSQ' 429 429 prevVaryList = [] 430 Names = [] 430 431 if Reverse: 431 432 names.reverse() … … 438 439 PatternId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 439 440 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)) 441 442 prevVaryList = varyList[:] 442 443 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List')) … … 455 456 background,limits,inst,inst2,data,prevVaryList,oneCycle,controls,dlg2) 456 457 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 *****' 465 470 finally: 466 471 wx.EndBusyCursor() 472 SeqResult['histNames'] = Names 467 473 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Sequential results') 468 474 if Id: … … 2197 2203 controls[0] = zeroVar.GetValue() 2198 2204 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 2199 2229 def OnBravSel(event): 2200 2230 brav = bravSel.GetString(bravSel.GetSelection()) … … 2273 2303 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Index Peak List'))[0] 2274 2304 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')) 2276 2306 cell = controls[6:12] 2277 2307 A = G2lat.cell2A(cell) … … 2343 2373 return 2344 2374 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')) 2346 2376 cell = controls[6:12] 2347 2377 A = G2lat.cell2A(cell) … … 2382 2412 keepcells = [] 2383 2413 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')) 2385 2415 for cell in cells: 2386 2416 if cell[11]: … … 2401 2431 cells[0][10] = True 2402 2432 if OK: 2403 data = [controls,bravais,cells,dmin ]2433 data = [controls,bravais,cells,dmin,ssopt] 2404 2434 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'),data) 2405 2435 bestCell = cells[0] … … 2482 2512 G2frame.Bind(wx.EVT_MENU, MakeNewPhase, id=G2gd.wxID_MAKENEWPHASE) 2483 2513 2484 controls,bravais,cells,dmin = data2514 controls,bravais,cells,dmin,ssopt = data 2485 2515 if len(controls) < 13: #add cell volume if missing 2486 2516 controls.append(G2lat.calc_V(G2lat.cell2A(controls[6:12]))) … … 2572 2602 zeroVar.Bind(wx.EVT_CHECKBOX,OnZeroVar) 2573 2603 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) 2574 2608 hklShow = wx.Button(G2frame.dataDisplay,label="Show hkl positions") 2575 2609 hklShow.Bind(wx.EVT_BUTTON,OnHklShow) 2576 2610 littleSizer.Add(hklShow,0,WACV) 2577 #Add super lattice option here2578 2611 mainSizer.Add(littleSizer,0) 2579 2612 … … 2608 2641 littleSizer.Add(volVal,0,WACV) 2609 2642 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) 2610 2681 #if super lattice add super lattice choice based on space group & modulation values 2611 2682 #based on super lattice choice - do refl gen following these choices as above -
trunk/GSASIIspc.py
r1547 r1548 175 175 returns SSGPtGrp & SSGKl (only defaults for Mono & Ortho) 176 176 ''' 177 Flds = SGData['SpGrp'].split(' ') 177 Flds = SGData['SpGrp'].split() 178 if len(Flds) < 2: 179 return '',[] 178 180 if SGData['SGLaue'] == '-1': #triclinic 179 181 if '-' in Flds[1]: … … 430 432 """ 431 433 432 def splitSSsym(SSymbol):433 '''434 Splits supersymmetry symbol into two lists of strings435 '''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,gensym460 461 434 def checkModSym(): 462 435 ''' … … 589 562 if SGData['SGInv']: 590 563 SSGOps += [[-1*M,V] for M,V in SSGOps[:]] 591 # monoclinic - all done 564 # monoclinic - all done & all checked 592 565 if SGData['SGPtGrp'] in ['2','m']: #OK 593 566 SSGOps[1][0][3,3] = SSGKl[0] … … 602 575 for k in iFrac: 603 576 SSGOps[j][0][3,k] = SSGKl[i] 604 E,SSGOps = extendSSGOps(SSGOps)605 577 606 578 # orthorhombic … … 626 598 elif SGData['SGPtGrp'] in ['4/m',]: 627 599 if '1/2' in SSGData['modSymb']: 628 SSGOps[1][0][3,1] = -1600 SSGOps[1][0][3,1] = SSGKl[0] 629 601 for i,j in enumerate([1,6]): 630 602 SSGOps[j][0][3,3] = SSGKl[i] … … 634 606 elif SGData['SGPtGrp'] in ['422','4mm','-42m','-4m2',]: 635 607 if '1/2' in SSGData['modSymb']: 636 SSGOps[1][0][3,1] = -1608 SSGOps[1][0][3,1] = SSGKl[0] 637 609 for i,j in enumerate([1,4,5]): 638 610 SSGOps[j][0][3,3] = SSGKl[i] … … 856 828 return Result+'\nOperator conflict - incorrect superspace symbol',None 857 829 830 def 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 858 859 def SSGPrint(SGData,SSGData): 859 860 ''' … … 897 898 return SSGText,SSGTable 898 899 899 def SSGModCheck(Vec, SSGData):900 def SSGModCheck(Vec,modSymb): 900 901 ''' Checks modulation vector compatibility with supersymmetry space group symbol. 901 902 Superspace group symbol takes precidence & the vector will be modified accordingly 902 903 ''' 903 modQ = SSGData['modQ']904 mod Symb = 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] 905 906 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] 907 909 908 910 def SSMT2text(Opr): … … 1656 1658 rspc = rspc[:-1] 1657 1659 rhomb = ' R' 1658 if rspc[-1:] == 'H': # hexagonal is assumed and thus can be ignored1660 elif rspc[-1:] == 'H': # hexagonal is assumed and thus can be ignored 1659 1661 rspc = rspc[:-1] 1660 1662 # look for a match in the spacegroup lists … … 1764 1766 'P 1':['(abg)',],'P -1':['(abg)',], 1765 1767 #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',], 1767 1769 'P 21':['(a0g)','(0b0)','(0b0)s','(1/2b0)','(0b1/2)','(1/2b0)s','(0b1/2)s',], 1768 1770 'P m':['(a0g)','(a0g)s','(a1/2g)','(a1/2g)s','(0b0)','(1/2b0)','(0b1/2)',], … … 1772 1774 'P 2/m':['(a0g)','(a1/2g)','(a0g)0s','(a1/2g)0s', 1773 1775 '(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', 1775 1777 '(1/2b0)','(0b1/2)','(1/2b0)s0','(0b1/2)s0'], 1776 1778 'P 2/c':['(a0g)','(a1/2g)','(a0g)0s','(a1/2g)0s', … … 1787 1789 'C c':['(a0g)','(a0g)s','(0b0)',], 1788 1790 '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',], 1791 1792 'C 2/c':['(a0g)','(a0g)0s','(0b0)','(0b0)s0',], 1792 1793 'C 2/n':['(a0g)','(a0g)0s','(0b0)','(0b0)s0',], … … 1914 1915 'P c m a':[], 1915 1916 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'], 1919 1923 1920 1924 'P b c m':[], … … 1925 1929 'P c m b':[], 1926 1930 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'], 1930 1937 1931 1938 'P m m n':[], … … 1933 1940 'P m n m':[], 1934 1941 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'], 1941 1954 1942 1955 'P b c a':[], 1943 1956 'P c a b':[], 1944 1957 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'], 1951 1970 1952 1971 'C 2 2 21':['(a00)','(0b0)','(00g)','(10g)','(01g)',], … … 1992 2011 'I m 2 a':[], 1993 2012 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',], 2019 2076 #tetragonal - done 2020 2077 'P 4':['(00g)','(00g)q','(00g)s','(1/21/2g)','(1/21/2g)q',],
Note: See TracChangeset
for help on using the changeset viewer.