Changeset 1564
- Timestamp:
- Nov 5, 2014 5:05:13 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r1548 r1564 176 176 for line in text: 177 177 mainSizer.Add(wx.StaticText(self.panel,label=' %s '%(line)),0,WACV) 178 tableSizer = wx.FlexGridSizer(0,2,0,0) 179 for item in self.table: 180 tableSizer.Add(wx.StaticText(self.panel,label=' %s'%(item.ljust(30))),0,WACV) 181 mainSizer.Add(tableSizer) 178 ncol = self.table[0].count(',')+1 179 tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0) 180 for j,item in enumerate(self.table): 181 num,flds = item.split(')') 182 tableSizer.Add(wx.StaticText(self.panel,label=' %s '%(num+')')),0,WACV|wx.ALIGN_LEFT) 183 flds = flds.replace(' ','').split(',') 184 for i,fld in enumerate(flds): 185 if i < ncol-1: 186 tableSizer.Add(wx.StaticText(self.panel,label='%s, '%(fld)),0,WACV|wx.ALIGN_RIGHT) 187 else: 188 tableSizer.Add(wx.StaticText(self.panel,label='%s'%(fld)),0,WACV|wx.ALIGN_RIGHT) 189 if not j%2: 190 tableSizer.Add((20,0)) 191 mainSizer.Add(tableSizer,0,wx.ALIGN_LEFT) 182 192 btnsizer = wx.StdDialogButtonSizer() 183 193 OKbtn = wx.Button(self.panel, wx.ID_OK) -
trunk/GSASIIspc.py
r1561 r1564 446 446 except ValueError: 447 447 pass 448 if SGData['SGUniq'] == 'a' and LaueModId in [5,6,7,8,9, ]:448 if SGData['SGUniq'] == 'a' and LaueModId in [5,6,7,8,9,10,]: 449 449 return True 450 elif SGData['SGUniq'] == 'b' and LaueModId in [3,4,13,14,15, ]:450 elif SGData['SGUniq'] == 'b' and LaueModId in [3,4,13,14,15,16,]: 451 451 return True 452 elif SGData['SGUniq'] == 'c' and LaueModId in [1,2,19,20,21, ]:452 elif SGData['SGUniq'] == 'c' and LaueModId in [1,2,19,20,21,22,]: 453 453 return True 454 454 elif LaueId in [2,] and LaueModId in [i+7 for i in range(18)]: … … 525 525 def extendSSGOps(SSGOps): 526 526 nOps = len(SSGOps) 527 for i in range(nOps): 528 if np.allclose(SSGOps[i][0][3],np.zeros(4)): 527 for OpA in SSGOps[1:]: 528 OpAtxt = SSMT2text(OpA) 529 if 't' not in OpAtxt: 529 530 continue 530 for j in range(nOps): 531 if np.allclose(SSGOps[j][0][3],np.zeros(4)): 531 for OpB in SSGOps[1:]: 532 OpBtxt = SSMT2text(OpB) 533 if 't' not in OpBtxt: 532 534 continue 533 OpC = list(SGProd( SSGOps[j],SSGOps[i]))535 OpC = list(SGProd(OpA,OpB)) 534 536 OpC[1] %= 1. 535 for k in range(nOps): 536 OpD = SSGOps[k] 537 if SSMT2text(OpC) == SSMT2text(OpD): 537 OpCtxt = SSMT2text(OpC) 538 # print OpAtxt.replace(' ','')+'*'+OpBtxt.replace(' ','')+'='+OpCtxt.replace(' ','') 539 for k,OpD in enumerate(SSGOps[1:]): 540 OpDtxt = SSMT2text(OpD) 541 if 't' in OpDtxt: 538 542 continue 539 elif np.allclose(OpC[0][:3,:3],OpD[0][:3,:3]): 540 if np.allclose(OpD[0][3],np.zeros(4)): 541 SSGOps[k] = OpC 542 elif np.any([np.allclose(OpC[0][3][:3],cen) for cen in SGData['SGCen']]): #? 543 continue 543 # print ' ('+OpCtxt.replace(' ','')+'=? '+OpDtxt.replace(' ','')+')' 544 if OpCtxt == OpDtxt: 545 continue 546 elif OpCtxt.split(',')[:3] == OpDtxt.split(',')[:3]: 547 if 't' not in OpDtxt: 548 SSGOps[k+1] = OpC 549 # print k+1,' new:',OpCtxt.replace(' ','') 544 550 else: 545 OpCtxt = SSMT2text(OpC).replace(' ','') 546 OpDtxt = SSMT2text(OpD).replace(' ','') 547 print 'OpC',OpCtxt,'OpD',OpDtxt 548 return False,OpCtxt+' conflict with '+OpDtxt 551 OpCtxt = OpCtxt.replace(' ','') 552 OpDtxt = OpDtxt.replace(' ','') 553 Txt = OpCtxt+' conflict with '+OpDtxt 554 print Txt 555 return False,Txt 549 556 return True,SSGOps 550 557 … … 556 563 iFrac[i] = frac 557 564 print SGData['SpGrp']+SSymbol 558 print 'SSGKl',SSGKl,'genQ',genQ,'iFrac',iFrac 565 print 'SSGKl',SSGKl,'genQ',genQ,'iFrac',iFrac,'modSymb',SSGData['modSymb'] 559 566 # set identity & 1,-1; triclinic 560 567 SSGOps[0][0][3,3] = 1. … … 596 603 if '1/2' in SSGData['modSymb']: 597 604 SSGOps[1][0][3,1] = 1 598 elif SGData['SGPtGrp'] in ['4/m',]: 605 elif SGData['SGPtGrp'] in ['4/m',]: #OK 599 606 if '1/2' in SSGData['modSymb']: 600 SSGOps[1][0][3,1] = SSGKl[0]607 SSGOps[1][0][3,1] = -SSGKl[0] 601 608 for i,j in enumerate([1,6]): 602 609 SSGOps[j][0][3,3] = SSGKl[i] … … 604 611 SSGOps[j][1][3] = genQ[i] 605 612 E,SSGOps = extendSSGOps(SSGOps) 613 if not E: 614 return E,SSGOps 606 615 elif SGData['SGPtGrp'] in ['422','4mm','-42m','-4m2',]: 607 if '1/2' in SSGData['modSymb']:608 SSGOps[1][0][3,1] = SSGKl[0]609 616 for i,j in enumerate([1,4,5]): 610 SSGOps[j][0][3,3] = SSGKl[i] 611 if genQ[i]: 612 SSGOps[j][1][3] = genQ[i] 617 if '1/2' in SSGData['modSymb']: 618 SSGOps[j][0][3,1] = -SSGKl[i] 619 if SGData['SGPtGrp'] in ['422','-42m','-4m2',]: 620 SSGOps[j][0][3,3] = SSGKl[i] 621 if i and genQ[2]: 622 SSGOps[j][1][3] = genQ[i] 623 else: #4mm 624 SSGOps[j][0][3,3] = -SSGKl[i] 625 if genQ[i]: 626 SSGOps[j][1][3] = genQ[i] 613 627 E,SSGOps = extendSSGOps(SSGOps) 628 if not E: 629 return E,SSGOps 614 630 elif SGData['SGPtGrp'] in ['4/mmm',]: 615 631 if '1/2' in SSGData['modSymb']: 616 SSGOps[1][0][3,1] = -1 632 SSGOps[1][0][3,1] = -SSGKl[0] 633 SSGOps[6][0][3,1] = SSGKl[1] 617 634 for i,j in enumerate([1,10,6,7]): 618 635 SSGOps[j][0][3,3] = SSGKl[i] 619 636 if genQ[i]: 620 637 SSGOps[j][1][3] = genQ[i] 621 # for k in iFrac: 622 # SSGOps[j][0][3,k] = SSGKl[i] 623 E,SSGOps = extendSSGOps(SSGOps) 638 E,Result = extendSSGOps(SSGOps) 639 if not E: 640 for Op in SSGOps: 641 print SSMT2text(Op) 642 return E,Result 643 else: 644 SSGOps = Result 624 645 625 646 # trigonal - all done … … 639 660 for i,j in enumerate([1,5]): 640 661 if SGData['SGPtGrp'] in ['3m','-3m']: 641 SSGOps[j][0][3,3] = SSGKl[i]662 SSGOps[j][0][3,3] = 1 642 663 else: 643 664 SSGOps[j][0][3,3] = SSGKl[i+1] … … 654 675 ids = [7,3] 655 676 if '1/3' in SSGData['modSymb']: 656 SSGOps[ids[0]][0][3,1] = - 1677 SSGOps[ids[0]][0][3,1] = -SSGKl[0] 657 678 for i,j in enumerate(ids): 658 679 SSGOps[j][0][3,3] = SSGKl[i] … … 660 681 SSGOps[j][1][3] = genQ[i+1] 661 682 662 # hexagonal - all done683 # hexagonal 663 684 elif SGData['SGPtGrp'] == '6': #OK 664 685 SSGOps[1][0][3,3] = SSGKl[0] … … 676 697 SSGOps[j][1][3] = genQ[i] 677 698 E,SSGOps = extendSSGOps(SSGOps) 678 elif SGData['SGPtGrp'] in ['6/mmm',]: # OK699 elif SGData['SGPtGrp'] in ['6/mmm',]: #not OK 679 700 for i,j in enumerate([1,15,10,11]): 680 701 SSGOps[j][0][3,3] = SSGKl[i] … … 730 751 elif SGData['SGPtGrp'] in ['4mm',] and sym not in ['','ss0','s0s','0ss','qq0','qqs']: 731 752 return False 732 elif SGData['SGPtGrp'] in ['-4m2',] and sym not in ['','0 0s','00q']:753 elif SGData['SGPtGrp'] in ['-4m2',] and sym not in ['','0s0','0q0']: 733 754 return False 734 elif SGData['SGPtGrp'] in ['-42m',] and sym not in ['','0 s0','0q0']:755 elif SGData['SGPtGrp'] in ['-42m',] and sym not in ['','00s','00q']: 735 756 return False 736 elif SGData['SGPtGrp'] in ['4/mmm',] and sym not in ['','s00s','s0s0','00ss',' q0q0','q0qs']:757 elif SGData['SGPtGrp'] in ['4/mmm',] and sym not in ['','s00s','s0s0','00ss','000s',]: 737 758 return False 738 759 #trigonal/rhombohedral - all done … … 764 785 elif SGData['SGPtGrp'] in ['-6m2',] and sym not in ['','0s0']: 765 786 return False 766 elif SGData['SGPtGrp'] in ['-62m',] and sym not in ['','0 ss']:787 elif SGData['SGPtGrp'] in ['-62m',] and sym not in ['','00s']: 767 788 return False 768 789 elif SGData['SGPtGrp'] in ['6/mmm',] and sym not in ['','s00s','s0s0','00ss']: … … 770 791 return True 771 792 772 LaueModList = [ 'abg', 'ab0', 'ab1/2', 'a0g', 'a1/2g','0bg', '1/2bg',773 'a00', 'a01/2', 'a1/20', 'a1/21/2', 'a01', 'a10',774 '0b0', '0b1/2', '1/2b0', '1/2b1/2', '0b1', '1b0',775 '00g', '01/2g', '1/20g', '1/21/2g', '01g', '10g','1/31/3g']793 LaueModList = [ 794 'abg','ab0','ab1/2','a0g','a1/2g', '0bg','1/2bg','a00','a01/2','a1/20', 795 'a1/21/2','a01','a10','0b0','0b1/2', '1/2b0','1/2b1/2','0b1','1b0','00g', 796 '01/2g','1/20g','1/21/2g','01g','10g', '1/31/3g'] 776 797 LaueList = ['-1','2/m','mmm','4/m','4/mmm','3R','3mR','3','3m1','31m','6/m','6/mmm','m3','m3m'] 777 GenSymList = ['','s','0s','s0', '00s','0s0','s00','s0s','ss0','0ss','q00','0q0','00q','qq0','q0q','0qq',778 'q','q 0','0q','qqs','s0s0','00ss','s00s','q0q0','q0qs','t','t00','t0','h','h00']798 GenSymList = ['','s','0s','s0', '00s','0s0','s00','s0s','ss0','0ss','q00','0q0','00q','qq0','q0q', '0qq', 799 'q','qqs','s0s0','00ss','s00s','000s','t','t00','t0','h','h00'] 779 800 Fracs = {'1/2':0.5,'1/3':1./3,'1':1.0,'0':0.,'s':.5,'t':1./3,'q':.25,'h':1./6,'a':0.,'b':0.,'g':0.} 780 801 LaueId = LaueList.index(SGData['SGLaue']) … … 980 1001 A,U = OpA 981 1002 B,V = OpB 982 M = np.inner(B .T,A)1003 M = np.inner(B,A) 983 1004 W = np.inner(B,U)+V 984 return M .T,W1005 return M,W 985 1006 986 1007 def MoveToUnitCell(xyz): … … 2108 2129 'P 4/m':['(00g)','(00g)s0','(1/21/2g)','(1/21/2g)s0',], 2109 2130 'P 42/m':['(00g)','(00g)s0','(1/21/2g)','(1/21/2g)s0',], 2110 'P 4/n':['(00g)','(00g)s0','(1/21/2g)', '(1/21/2g)q0',],2111 'P 42/n':['(00g)','(00g)s0','(1/21/2g)', '(1/21/2g)q0',],2131 'P 4/n':['(00g)','(00g)s0','(1/21/2g)',], 2132 'P 42/n':['(00g)','(00g)s0','(1/21/2g)',], 2112 2133 'P 4 2 2':['(00g)','(00g)q00','(00g)s00','(1/21/2g)','(1/21/2g)q00','(1/21/2g)s00',], 2113 2134 'P 4 21 2':['(00g)','(00g)q00','(00g)s00',], … … 2143 2164 '(1/21/2g)','(1/21/2g)s0s0','(1/21/2g)00ss','(1/21/2g)s00s',], 2144 2165 'P 4/n b m':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s', 2145 '(1/21/2g)','(1/21/2g) q0q0','(1/21/2g)q0qs',],2166 '(1/21/2g)','(1/21/2g)000s',], 2146 2167 'P 4/n n c':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s', 2147 '(1/21/2g)','(1/21/2g) q0q0','(1/21/2g)q0qs',],2168 '(1/21/2g)','(1/21/2g)000s',], 2148 2169 'P 4/m b m':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s',], 2149 2170 'P 4/m n c':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s',], … … 2155 2176 '(1/21/2g)','(1/21/2g)s0s0','(1/21/2g)00ss','(1/21/2g)s00s',], 2156 2177 'P 42/n b c':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s', 2157 '(1/21/2g)','(1/21/2g) q0q0','(1/21/2g)q0qs',],2178 '(1/21/2g)','(1/21/2g)000s',], 2158 2179 'P 42/n n m':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s', 2159 '(1/21/2g)','(1/21/2g) q0q0','(1/21/2g)q0qs',],2180 '(1/21/2g)','(1/21/2g)000s',], 2160 2181 'P 42/m b c':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s',], 2161 2182 'P 42/m n m':['(00g)','(00g)s0s0','(00g)00ss','(00g)s00s',],
Note: See TracChangeset
for help on using the changeset viewer.