Changeset 1594
- Timestamp:
- Dec 3, 2014 4:33:28 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r1593 r1594 2738 2738 Id = G2gd.GetPatternTreeItemId(self,item, 'Reflection Lists') 2739 2739 refList = self.PatternTree.GetItemPyData(Id) 2740 for i,item in DelList: 2741 del(refList[item]) 2740 if len(refList): 2741 for i,item in DelList: 2742 del(refList[item]) 2742 2743 self.PatternTree.SetItemPyData(Id,refList) 2743 2744 item, cookie = self.PatternTree.GetNextChild(self.root, cookie) -
trunk/GSASIIIO.py
r1588 r1594 1244 1244 } 1245 1245 if Super and Super.get('Use',False): 1246 phaseData['General'].update({'Type':'modulated','Super': 1,'SuperSg':Super['ssSymb']})1246 phaseData['General'].update({'Type':'modulated','Super':True,'SuperSg':Super['ssSymb']}) 1247 1247 phaseData['General']['SSGData'] = G2spc.SSpcGroup(SGData,Super['ssSymb']) 1248 phaseData['General']['SuperVec'] = [[Super['ModVec'],False,Super['maxH']], 1249 [[0,0,.1],False,4],[[0.,0.,.1],False,4]] 1248 phaseData['General']['SuperVec'] = [Super['ModVec'],False,Super['maxH']] 1250 1249 1251 1250 return phaseData -
trunk/GSASIIlattice.py
r1587 r1594 35 35 import GSASIIpath 36 36 import GSASIImath as G2mth 37 import GSASIIspc as G2spc 37 38 GSASIIpath.SetVersionNumber("$Revision$") 38 39 # trig functions in degrees … … 853 854 HKL.append([h,k,l,1/math.sqrt(rdsq)]) 854 855 return sortHKLd(HKL,True,True) 856 857 def GenSSHLaue(dmin,SGData,SSGData,Vec,maxH,A): 858 'needs a doc string' 859 HKLs = [] 860 vec = np.array(Vec) 861 vstar = np.sqrt(calc_rDsq(vec,A)) #find extra needed for -n SS reflections 862 dvec = 1./(maxH*vstar+1./dmin) 863 HKL = GenHLaue(dvec,SGData,A) 864 SSdH = [vec*h for h in range(-maxH,maxH+1)] 865 SSdH = dict(zip(range(-maxH,maxH+1),SSdH)) 866 for h,k,l,d in HKL: 867 ext = G2spc.GenHKLf([h,k,l],SGData)[0] 868 if not ext and d >= dmin: 869 HKLs.append([h,k,l,0,d]) 870 for dH in SSdH: 871 if dH: 872 DH = SSdH[dH] 873 H = [h+DH[0],k+DH[1],l+DH[2]] 874 d = 1/np.sqrt(calc_rDsq(H,A)) 875 if d >= dmin: 876 HKLM = np.array([h,k,l,dH]) 877 if G2spc.checkSSextc(HKLM,SSGData): 878 HKLs.append([h,k,l,dH,d]) 879 return sortHKLd(HKLs,True,True,True) 855 880 856 881 #Spherical harmonics routines -
trunk/GSASIIphsGUI.py
r1590 r1594 245 245 generalData['Type'] = TypeTxt.GetValue() 246 246 if generalData['Type'] in ['modulated',]: 247 generalData['SuperSg'] = SetDefaultSSsymbol() 248 generalData['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1] 247 if 'SuperSg' not in generalData: 248 generalData['SuperSg'] = SetDefaultSSsymbol() 249 generalData['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1] 249 250 wx.CallAfter(UpdateGeneral) 250 251 else: … … 552 553 E,SSGData = G2spc.SSpcGroup(generalData['SGData'],SSymbol) 553 554 if SSGData: 554 Vec = generalData['SuperVec'][0] [0]#(3+1) only555 Vec = generalData['SuperVec'][0] #(3+1) only 555 556 modSymb = SSGData['modSymb'] 556 generalData['SuperVec'][0] [0]= G2spc.SSGModCheck(Vec,modSymb)[0]557 generalData['SuperVec'][0] = G2spc.SSGModCheck(Vec,modSymb)[0] 557 558 text,table = G2spc.SSGPrint(generalData['SGData'],SSGData) 558 559 generalData['SSGData'] = SSGData … … 576 577 Obj = event.GetEventObject() 577 578 ind = Indx[Obj.GetId()] 578 v ec = Obj.GetValue().split()579 val = Obj.GetValue() 579 580 try: 580 Vec = [float(vec[i]) for i in range(3)] 581 Vec = G2spc.SSGModCheck(Vec,generalData['SSGData']) 582 except (ValueError,IndexError): 583 Vec = generalData['SuperVec'][ind][0] 584 if not np.any(np.array(Vec)): 585 Vec = generalData['SuperVec'][ind][0] 586 generalData['SuperVec'][ind][0] = Vec 587 h,k,l = Vec 588 Obj.SetValue('%.3f %.3f %.3f'%(h,k,l)) 581 val = min(1.0,max(0.0,float(val))) 582 except ValueError: 583 val = generalData['SuperVec'][0][ind] 584 generalData['SuperVec'][0][ind] = val 585 Obj.SetValue('%.4f'%(generalData['SuperVec'][0][ind])) 589 586 590 587 def OnVecRef(event): 591 Obj = event.GetEventObject() 592 ind = Indx[Obj.GetId()] 593 generalData['SuperVec'][ind][1] = Obj.GetValue() 588 generalData['SuperVec'][1] = Ref.GetValue() 594 589 595 590 def OnMax(event): 596 Obj = event.GetEventObject() 597 ind = Indx[Obj.GetId()] 598 generalData['SuperVec'][ind][2] = int(Obj.GetValue()) 591 generalData['SuperVec'][2] = int(Max.GetValue()) 599 592 600 593 Indx = {} 601 modSizer = wx.BoxSizer(wx.VERTICAL) 602 dimSizer = wx.BoxSizer(wx.HORIZONTAL) 603 dimSizer.Add(wx.StaticText(General,label=' '+name.capitalize()+' structure controls: '),0,WACV) 604 dimSizer.Add(wx.StaticText(General,label=' Modulated structure dimension: '),0,WACV) 605 dimChoice = ['1'] # restricted to (3+1) superlattices for now 606 dim = wx.ComboBox(General,value=str(generalData['Super']),choices=dimChoice, 607 style=wx.CB_READONLY|wx.CB_DROPDOWN) 608 dim.Bind(wx.EVT_COMBOBOX,OnDim) 609 dimSizer.Add(dim,0,WACV) 610 dimSizer.Add(wx.StaticText(General,label=' Superspace group: '+generalData['SGData']['SpGrp']),0,WACV) 594 ssSizer = wx.BoxSizer(wx.VERTICAL) 595 modSizer = wx.BoxSizer(wx.HORIZONTAL) 596 modSizer.Add(wx.StaticText(General,label=' '+name.capitalize()+' structure controls: '),0,WACV) 597 modSizer.Add(wx.StaticText(General,label=' Superspace group: '+generalData['SGData']['SpGrp']),0,WACV) 611 598 SSChoice = G2spc.ssdict.get(generalData['SGData']['SpGrp'],[]) 612 599 if SSChoice: … … 616 603 superGp = wx.TextCtrl(General,value=generalData['SuperSg'],style=wx.TE_PROCESS_ENTER) 617 604 superGp.Bind(wx.EVT_TEXT_ENTER,OnSuperGp) 618 dimSizer.Add(superGp,0,WACV) 619 modSizer.Add(dimSizer) 605 modSizer.Add(superGp,0,WACV) 606 modSizer.Add(wx.StaticText(General,label=' Max index: '),0,WACV) 607 indChoice = ['1','2','3','4','5','6','7'] 608 Max = wx.ComboBox(General,-1,value='%d'%(generalData['SuperVec'][2]),choices=indChoice, 609 style=wx.CB_READONLY|wx.CB_DROPDOWN) 610 Max.Bind(wx.EVT_COMBOBOX,OnMax) 611 modSizer.Add(Max,0,WACV) 612 ssSizer.Add(modSizer,0,WACV) 620 613 vecSizer = wx.FlexGridSizer(1,5,5,5) 621 indChoice = ['1','2','3','4','5','6','7'] 622 for i in range(int(generalData['Super'])): 623 vecSizer.Add(wx.StaticText(General,label=' Modulation vector #%d: '%(i+1)),0,WACV) 624 vec = generalData['SuperVec'][i][0] #these need to conform to the fixed modulations, e.g. 1/2 1/2 g 625 Vec = wx.TextCtrl(General,size=wx.Size(120,24), 626 value=' %.3f %.3f %.3f '%(vec[0],vec[1],vec[2]), 627 style=wx.TE_PROCESS_ENTER) 628 Vec.Bind(wx.EVT_TEXT_ENTER,OnVec) 629 Vec.Bind(wx.EVT_KILL_FOCUS,OnVec) 630 vecSizer.Add(Vec,0,WACV) 631 Indx[Vec.GetId()] = i 632 Ref = wx.CheckBox(General,label='Refine?') 633 Ref.SetValue(generalData['SuperVec'][i][1]) 634 Indx[Ref.GetId()] = i 635 Ref.Bind(wx.EVT_CHECKBOX, OnVecRef) 636 vecSizer.Add(Ref,0,WACV) 637 vecSizer.Add(wx.StaticText(General,label=' max index: '),0,WACV) 638 Max = wx.ComboBox(General,-1,value='%d'%(generalData['SuperVec'][i][2]),choices=indChoice, 639 style=wx.CB_READONLY|wx.CB_DROPDOWN) 640 Max.Bind(wx.EVT_COMBOBOX,OnMax) 641 vecSizer.Add(Max,0,WACV) 642 Indx[Max.GetId()] = i 643 modSizer.Add(vecSizer) 644 return modSizer 614 vecSizer.Add(wx.StaticText(General,label=' Modulation vector: '),0,WACV) 615 modS = G2spc.splitSSsym(generalData['SuperSg'])[0] 616 generalData['SuperVec'][0],ifShow = G2spc.SSGModCheck(generalData['SuperVec'][0],modS) 617 vec = generalData['SuperVec'][0] 618 for i,[val,show] in enumerate(zip(generalData['SuperVec'][0],ifShow)): 619 if show: 620 modVal = wx.TextCtrl(General,value=('%.4f'%(val)), 621 size=wx.Size(50,20),style=wx.TE_PROCESS_ENTER) 622 modVal.Bind(wx.EVT_TEXT_ENTER,OnVec) 623 modVal.Bind(wx.EVT_KILL_FOCUS,OnVec) 624 vecSizer.Add(modVal,0,WACV) 625 Indx[modVal.GetId()] = i 626 else: 627 modVal = wx.TextCtrl(General,value=('%.3f'%(val)), 628 size=wx.Size(50,20),style=wx.TE_READONLY) 629 modVal.SetBackgroundColour(VERY_LIGHT_GREY) 630 vecSizer.Add(modVal,0,WACV) 631 Ref = wx.CheckBox(General,label='Refine?') 632 Ref.SetValue(generalData['SuperVec'][1]) 633 Ref.Bind(wx.EVT_CHECKBOX, OnVecRef) 634 vecSizer.Add(Ref,0,WACV) 635 ssSizer.Add(vecSizer) 636 return ssSizer 645 637 646 638 def MapSizer(): … … 967 959 968 960 if generalData['Type'] in ['modulated','magnetic',]: 969 mainSizer.Add(wx.StaticText(General,label='NB: This does nothing yet'),0,WACV)970 961 mainSizer.Add(ModulatedSizer(generalData['Type'])) 971 962 G2gd.HorizontalLine(mainSizer,General) … … 5021 5012 # FillPawleyReflectionsGrid executable starts here 5022 5013 G2frame.dataFrame.SetStatusText('To delete a few Pawley reflections: select rows & press Delete') 5014 generalData = data['General'] 5023 5015 if 'Pawley ref' in data: 5024 5016 PawleyPeaks = data['Pawley ref'] 5025 5017 rowLabels = [] 5026 5018 for i in range(len(PawleyPeaks)): rowLabels.append(str(i)) 5027 colLabels = ['h','k','l','mul','d','refine','Fsq(hkl)','sig(Fsq)'] 5028 Types = 4*[wg.GRID_VALUE_LONG,]+[wg.GRID_VALUE_FLOAT+':10,4',wg.GRID_VALUE_BOOL,]+ \ 5029 2*[wg.GRID_VALUE_FLOAT+':10,2',] 5019 if generalData['Type'] in ['modulated','magnetic',]: 5020 colLabels = ['h','k','l','m','mul','d','refine','Fsq(hkl)','sig(Fsq)'] 5021 Types = 5*[wg.GRID_VALUE_LONG,]+[wg.GRID_VALUE_FLOAT+':10,4',wg.GRID_VALUE_BOOL,]+ \ 5022 2*[wg.GRID_VALUE_FLOAT+':10,2',] 5023 pos = [6,7] 5024 else: 5025 colLabels = ['h','k','l','mul','d','refine','Fsq(hkl)','sig(Fsq)'] 5026 Types = 4*[wg.GRID_VALUE_LONG,]+[wg.GRID_VALUE_FLOAT+':10,4',wg.GRID_VALUE_BOOL,]+ \ 5027 2*[wg.GRID_VALUE_FLOAT+':10,2',] 5028 pos = [5,6] 5030 5029 PawleyTable = G2gd.Table(PawleyPeaks,rowLabels=rowLabels,colLabels=colLabels,types=Types) 5031 5030 G2frame.PawleyRefl.SetTable(PawleyTable, True) … … 5033 5032 for r in range(G2frame.PawleyRefl.GetNumberRows()): 5034 5033 for c in range(G2frame.PawleyRefl.GetNumberCols()): 5035 if c in [5,6]:5034 if c in pos: 5036 5035 G2frame.PawleyRefl.SetReadOnly(r,c,isReadOnly=False) 5037 5036 else: … … 5043 5042 def OnPawleyLoad(event): 5044 5043 generalData = data['General'] 5045 dmin = generalData['Pawley dmin']5046 5044 cell = generalData['Cell'][1:7] 5047 5045 A = G2lat.cell2A(cell) 5048 5046 SGData = generalData['SGData'] 5047 dmin = generalData['Pawley dmin'] 5048 PawleyPeaks = [] 5049 5049 HKLd = np.array(G2lat.GenHLaue(dmin,SGData,A)) 5050 PawleyPeaks = [] 5051 wx.BeginBusyCursor() 5052 try: 5053 for h,k,l,d in HKLd: 5054 ext,mul = G2spc.GenHKLf([h,k,l],SGData)[:2] 5055 if not ext: 5056 mul *= 2 #for powder multiplicity 5057 PawleyPeaks.append([h,k,l,mul,d,False,100.0,1.0]) 5058 finally: 5059 wx.EndBusyCursor() 5050 if generalData['Type'] in ['modulated','magnetic',]: 5051 Vec,x,maxH = generalData['SuperVec'] 5052 SSGData = G2spc.SSpcGroup(SGData,generalData['SuperSg'])[1] 5053 wx.BeginBusyCursor() 5054 try: 5055 HKLd = G2lat.GenSSHLaue(dmin,SGData,SSGData,Vec,maxH,A) 5056 for h,k,l,m,d in HKLd: 5057 ext,mul = G2spc.GenHKLf([h,k,l],SGData)[:2] 5058 if not ext: 5059 mul *= 2 #for powder multiplicity 5060 PawleyPeaks.append([h,k,l,m,mul,d,False,100.0,1.0]) 5061 finally: 5062 wx.EndBusyCursor() 5063 else: 5064 wx.BeginBusyCursor() 5065 try: 5066 for h,k,l,d in HKLd: 5067 ext,mul = G2spc.GenHKLf([h,k,l],SGData)[:2] 5068 if not ext: 5069 mul *= 2 #for powder multiplicity 5070 PawleyPeaks.append([h,k,l,mul,d,False,100.0,1.0]) 5071 finally: 5072 wx.EndBusyCursor() 5060 5073 data['Pawley ref'] = PawleyPeaks 5061 5074 FillPawleyReflectionsGrid() -
trunk/GSASIIpwd.py
r1578 r1594 826 826 if d >= dmin: 827 827 HKLM = np.array([h,k,l,dH]) 828 if G2spc.checkSSextc(HKLM,SSGData [1]):828 if G2spc.checkSSextc(HKLM,SSGData): 829 829 HKLs.append([h,k,l,dH,d,G2lat.Dsp2pos(Inst,d),-1]) 830 830 return G2lat.sortHKLd(HKLs,True,True,True) -
trunk/GSASIIpwdGUI.py
r1593 r1594 2112 2112 spc = controls[13] 2113 2113 SGData = G2spc.SpcGroup(spc)[1] 2114 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb']) 2114 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb'])[1] 2115 2115 Vec = ssopt['ModVec'] 2116 2116 maxH = ssopt['maxH'] … … 2380 2380 dmin = G2lat.Pos2dsp(Inst,limits[0]) 2381 2381 if ssopt.get('Use',False): 2382 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb']) 2382 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb'])[1] 2383 2383 Vec = ssopt['ModVec'] 2384 2384 maxH = ssopt['maxH'] … … 2463 2463 if ssopt.get('Use',False): 2464 2464 vecFlags = [True if x in ssopt['ssSymb'] else False for x in ['a','b','g']] 2465 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb']) 2465 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb'])[1] 2466 2466 G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,ssopt['ModVec'],ssopt['maxH'],A) 2467 2467 peaks = [G2indx.IndexSSPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #put peak fit esds back in peaks … … 2610 2610 finally: 2611 2611 dlg.Destroy() 2612 2612 2613 if G2frame.dataDisplay: 2613 2614 G2frame.dataFrame.DestroyChildren() … … 2619 2620 G2frame.Bind(wx.EVT_MENU, CopyUnitCell, id=G2gd.wxID_COPYCELL) 2620 2621 G2frame.Bind(wx.EVT_MENU, RefineCell, id=G2gd.wxID_REFINECELL) 2621 G2frame.Bind(wx.EVT_MENU, MakeNewPhase, id=G2gd.wxID_MAKENEWPHASE) 2622 2622 G2frame.Bind(wx.EVT_MENU, MakeNewPhase, id=G2gd.wxID_MAKENEWPHASE) 2623 2623 controls,bravais,cells,dmin,ssopt = data 2624 2624 if len(controls) < 13: #add cell volume if missing -
trunk/GSASIIstrIO.py
r1570 r1594 628 628 elif SGData['SGLaue'] in ['m3m','m3']: 629 629 return [pfx+'A0',] 630 631 def modVary(pfx,SSGData): 632 vary = [] 633 for i,item in SSGData['modSymb']: 634 if item in ['a','b','g']: 635 vary.append(pfx+'mV%d'%(i)) 636 return vary 630 637 631 638 ################################################################################ … … 966 973 if cell[0]: 967 974 phaseVary += cellVary(pfx,SGData) 975 if General['Type'] in ['modulated','magnetic']: 976 Vec,vRef,maxH = General['SuperVec'] 977 phaseDict.update({pfx+'mV0':Vec[0],pfx+'mV1':Vec[1],pfx+'mV2':Vec[2]}) 978 SSGData = General['SSGData'] 979 SSGtext,SSGtable = G2spc.SSGPrint(SGData,SSGData) 980 if vRef: 981 phaseVary += modVary(pfx,SSGData) 968 982 resRBData = PhaseData[name]['RBModels'].get('Residue',[]) 969 983 if resRBData:
Note: See TracChangeset
for help on using the changeset viewer.