Changeset 2182
- Timestamp:
- Mar 23, 2016 8:56:54 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r2177 r2182 505 505 self.lmax = '2' 506 506 self.lmaxChoice = [str(i+1) for i in range(6)] 507 self.mult = ' 2'508 self.multChoice = [str( i+1) for i in range(15)]507 self.mult = '1' 508 self.multChoice = [str(2**i) for i in range(10)] 509 509 self.Draw() 510 510 … … 574 574 def GetSelection(self): 575 575 if 'powder' in self.calcType: 576 return '0\n0\n3\n','' 576 return '0\n0\n3\n','','' 577 577 elif 'selected' in self.calcType: 578 578 return '0\n0\n4\n1\n%d\n%d\n16\n1\n%d\n0\nend\n'% \ -
trunk/GSASIIphsGUI.py
r2181 r2182 430 430 if 'Layers' not in data: 431 431 data['Layers'] = {'Laue':'-1','Cell':[False,1.,1.,1.,90.,90.,90,1.], 432 'Width':[[1 0.,10.],[False,False]],'Toler':0.01,'AtInfo':{},432 'Width':[[1.,1.],[False,False]],'Toler':0.01,'AtInfo':{}, 433 433 'Layers':[],'Stacking':[],'Transitions':[]} 434 434 G2frame.layerData = wx.ScrolledWindow(G2frame.dataDisplay) … … 2510 2510 id = Indx[Obj] 2511 2511 try: 2512 Layers['Width'][0][id] = float(Obj.GetValue())2512 Layers['Width'][0][id] = max(0.005,min(1.0,float(Obj.GetValue()))) 2513 2513 except ValueError: 2514 2514 pass … … 2525 2525 widthSizer = wx.BoxSizer(wx.HORIZONTAL) 2526 2526 for i in range(2): 2527 widthSizer.Add(wx.StaticText(layerData,label=' layer width(%s) \xb5m: '%(Labels[i])),0,WACV)2527 widthSizer.Add(wx.StaticText(layerData,label=' layer width(%s) (<= 1\xb5m): '%(Labels[i])),0,WACV) 2528 2528 widthVal = wx.TextCtrl(layerData,value='%.3f'%(widths[i]),style=wx.TE_PROCESS_ENTER) 2529 2529 widthVal.Bind(wx.EVT_TEXT_ENTER,OnWidthChange) … … 2551 2551 2552 2552 def OnImportLayer(event): 2553 print 'Import atoms for a layer - TBD' 2553 2554 #from where? DIFFaX files? other phases? NB: transformation issues 2554 2555 event.Skip() … … 2671 2672 rowLabels.append(Xname) 2672 2673 if transArray[Yi][Xi][0] > 0.: 2673 allowedTrans.append([str(Yi+1),str(Xi+1)])2674 Layers['allowedTrans'].append([str(Yi+1),str(Xi+1)]) 2674 2675 transTable = G2G.Table(table,rowLabels=rowLabels,colLabels=transLabels,types=transTypes) 2675 2676 transGrid = G2G.GSGrid(layerData) … … 2792 2793 if len(Slist) < 2: 2793 2794 stack = 'Error in sequence - too short!' 2794 OKlist = [Slist[i:i+2] in allowedTransfor i in range(len(Slist[:-1]))]2795 OKlist = [Slist[i:i+2] in Layers['allowedTrans'] for i in range(len(Slist[:-1]))] 2795 2796 if all(OKlist): 2796 2797 data['Layers']['Stacking'][2] = stack … … 2815 2816 numLayers.Bind(wx.EVT_KILL_FOCUS,OnNumLayers) 2816 2817 topLine.Add(numLayers,0,WACV) 2818 stackSizer.Add(topLine) 2817 2819 elif Layers['Stacking'][0] == 'explicit': 2818 2820 topLine.Add(wx.StaticText(layerData,label=' layer sequence: '),0,WACV) … … 2846 2848 Layers = data['Layers'] 2847 2849 layerNames = [] 2848 allowedTrans= []2850 Layers['allowedTrans'] = [] 2849 2851 if len(Layers['Layers']): 2850 2852 layerNames = [layer['Name'] for layer in Layers['Layers']] … … 2964 2966 else: #selected area 2965 2967 G2pwd.StackSim(data['Layers'],ctrls) 2968 # G2pwd.CalcStackingSADP(data['Layers']) 2966 2969 wx.CallAfter(UpdateLayerData) 2967 2970 -
trunk/GSASIIpwd.py
r2175 r2182 1739 1739 1740 1740 def StackSim(Layers,ctrls,HistName='',scale=0.,background={},limits=[],inst={},profile=[]): 1741 '''Simulate powder pattern from stacking faults using DIFFaX1741 '''Simulate powder or selected area diffraction pattern from stacking faults using DIFFaX 1742 1742 1743 1743 param: Layers dict: 'Laue':'-1','Cell':[False,1.,1.,1.,90.,90.,90,1.], … … 1758 1758 if 'bin' in name: 1759 1759 DIFFaX = name+'/DIFFaX.exe' 1760 print ' Execute ',DIFFaX 1760 1761 break 1761 1762 # make form factor file that DIFFaX wants - atom types are GSASII style … … 1909 1910 os.remove('GSASII-DIFFaX.dat') 1910 1911 1912 def CalcStackingSADP(Layers): 1913 1914 def getXY_HK(hk,Layers): 1915 XY_HK = {} 1916 for layer in Layers['Layers']: 1917 if not layer['SameAs']: #a real layer 1918 XY_HK[layer['Name']] = np.inner(hk,np.array([atom[2:4] for atom in layer['Atoms']]))*2.*np.pi 1919 return XY_HK 1920 1921 def getDXY_HK(hk,Trans,detune): 1922 N = Trans.shape[0] 1923 DXY_HK = np.zeros((N,N),dtype='cfloat') 1924 Lphi = np.zeros((N,N),dtype='cfloat') 1925 for iY in range(N): 1926 for iX in range(N): 1927 if [str(iY+1),str(iX+1)] in Layers['allowedTrans']: 1928 dot = 2.*np.pi*np.inner(hk,Trans[iY,iX,1:3]) 1929 Lphi[iY,iX] = complex(np.cos(dot),np.sin(dot)) 1930 DXY_HK[iY][iX] = detune*Trans[iY,iX,0]*Lphi[iY,iX] 1931 return DXY_HK,Lphi 1932 1933 1934 1935 sadpSize = 256 1936 G,g = G2lat.cell2Gmat(Layers['Cell'][1:7]) #recip/real met. tensors 1937 A = G2lat.Gmat2A(G) 1938 lmax = float(Layers['Sadp']['Lmax']) 1939 Smax = G2lat.calc_rDsq([0.,0.,lmax],A) 1940 plane = Layers['Sadp']['Plane'] 1941 if plane == 'h0l': 1942 hkmax = int(lmax*np.sqrt(A[2]/A[0])) 1943 elif plane == '0kl': 1944 hkmax = int(lmax*np.sqrt(A[2]/A[1])) 1945 elif plane == 'hhl': 1946 hkmax = int(lmax*np.sqrt(A[2]/(A[0]+A[1]+A[5]))) 1947 elif plane == 'h-hl': 1948 hkmax = int(lmax*np.sqrt(A[2]/(A[0]+A[1]-A[5]))) 1949 dl = 2.*lmax/sadpSize 1950 Trans = [] 1951 for Ytrans in Layers['Transitions']: 1952 Trans.append([trans[:4] for trans in Ytrans]) #get just the numbers 1953 Trans = np.array(Trans,dtype='float') 1954 N = np.sqrt(Trans.shape[0]) 1955 lmax -= 0.5*dl #shift lmax to avoid l=0 1956 lmin = -lmax 1957 sadpBlock = sadpSize 1958 if Layers['Laue'] not in ['-1','2/m(c)','-3','-3m','axial']: 1959 lmin = -0.5*dl 1960 sadpBlock /= 2 1961 #start 1962 cnt = 0 1963 Names = [layer['Name'] for layer in Layers['Layers']] 1964 Nlayers = len(Names) 1965 detune = 1.0-0.001 1966 for i in range(hkmax+1): 1967 if plane == 'h0l': 1968 hk = np.array([i,0]) 1969 elif plane == '0kl': 1970 hk = np.array([0,i]) 1971 elif lane == 'hhl': 1972 hk = np.array([i,i]) 1973 else: 1974 hk = np.array([i,-i]) 1975 print ' h = %d k = %d'%(hk[0],hk[1]) 1976 XY_HK = getXY_HK(hk,Layers) #good 1977 DXY_HK,Lphi = getDXY_HK(hk,Trans,detune) #good 1978 1979 1980 1981 1982 1983 1911 1984 #testing data 1912 1985 NeedTestData = True
Note: See TracChangeset
for help on using the changeset viewer.