Changeset 2476
- Timestamp:
- Sep 22, 2016 11:42:28 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIlattice.py
r2473 r2476 657 657 rdsq = calc_rDsq(H[:3]+(H[3][:,np.newaxis]*vec).T,A)+Z/difC 658 658 return rdsq 659 660 def PlaneIntercepts(Amat,Bmat,H,phase,stack): 661 ''' find unit cell intercepts for a stack of hkl planes 662 ''' 663 Steps = range(-1,2,2) 664 if stack: 665 Steps = range(-10,10,1) 666 Stack = [] 667 Ux = np.array([[0,0],[1,0],[1,1],[0,1]]) 668 for step in Steps: 669 HX = [] 670 for i in [0,1,2]: 671 if H[i]: 672 h,k,l = [(i+1)%3,(i+2)%3,(i+3)%3] 673 for j in [0,1,2,3]: 674 hx = [0,0,0] 675 intcpt = (phase/360.+step-H[h]*Ux[j,0]-H[k]*Ux[j,1])/H[l] 676 if 0. <= intcpt <= 1.: 677 hx[h] = Ux[j,0] 678 hx[k] = Ux[j,1] 679 hx[l] = intcpt 680 HX.append(hx) 681 if len(HX)> 2: 682 HX = np.array(HX) 683 DX = np.inner(HX-HX[0],Amat) 684 D = np.sqrt(np.sum(DX**2,axis=1)) 685 Dsort = np.argsort(D) 686 HX = HX[Dsort] 687 DX = DX[Dsort] 688 D = D[Dsort] 689 DX[1:,:] = DX[1:,:]/D[1:,nxs] 690 A = 2.*np.ones(HX.shape[0]) 691 A[1:] = [np.dot(DX[1],dx) for dx in DX[1:]] 692 HX = HX[np.argsort(A)] 693 # GSASIIpath.IPyBreak() 694 Stack.append(HX) 695 return Stack 659 696 660 697 def MaxIndex(dmin,A): -
trunk/GSASIIphsGUI.py
r2475 r2476 3812 3812 'vdwScale':0.67,'ellipseProb':50,'sizeH':0.50,'unitCellBox':True, 3813 3813 'showABC':True,'selectedAtoms':[],'Atoms':[],'oldxy':[], 3814 'bondList':{},'viewDir':[1,0,0] }3814 'bondList':{},'viewDir':[1,0,0],'Plane':[[0,0,1],False,False,0.0,[255,255,0]]} 3815 3815 V0 = np.array([0,0,1]) 3816 3816 V = np.inner(Amat,V0) … … 3835 3835 if 'showRigidBodies' not in drawingData: 3836 3836 drawingData['showRigidBodies'] = True 3837 if 'Plane' not in drawingData: 3838 drawingData['Plane'] = [[0,0,1],False,False,0.0,[255,255,0]] 3837 3839 cx,ct,cs,ci = [0,0,0,0] 3838 3840 if generalData['Type'] in ['nuclear','faulted',]: … … 3847 3849 DrawAtomAdd(drawingData,atom) 3848 3850 data['Drawing'] = drawingData 3851 if len(drawingData['Plane']) < 5: 3852 drawingData['Plane'].append([255,255,0]) 3849 3853 3850 3854 def DrawAtomAdd(drawingData,atom): … … 4982 4986 radSizer.Add(radFactor,0,WACV) 4983 4987 return radSizer 4988 4989 def PlaneSizer(): 4990 4991 def OnPlane(event): 4992 event.Skip() 4993 vals = plane.GetValue().split() 4994 try: 4995 hkl = [int(vals[i]) for i in range(3)] 4996 if not np.any(np.array(hkl)): #can't be all zeros! 4997 raise ValueError 4998 except (ValueError,IndexError): 4999 hkl = drawingData['Plane'][0] 5000 drawingData['Plane'][0] = hkl 5001 plane.SetValue('%3d %3d %3d'%(hkl[0],hkl[1],hkl[2])) 5002 G2plt.PlotStructure(G2frame,data) 5003 5004 def OnShowPlane(event): 5005 drawingData['Plane'][1] = showPlane.GetValue() 5006 G2plt.PlotStructure(G2frame,data) 5007 5008 def OnShowStack(event): 5009 drawingData['Plane'][2] = showStack.GetValue() 5010 G2plt.PlotStructure(G2frame,data) 5011 5012 def OnPhase(event): 5013 event.Skip() 5014 try: 5015 val = float(phase.GetValue()) 5016 except ValueError: 5017 val = drawingData['Plane'][3] 5018 drawingData['Plane'][3] = val 5019 phase.SetValue('%.2f'%(val)) 5020 G2plt.PlotStructure(G2frame,data) 5021 5022 def OnPlaneColor(event): 5023 drawingData['Plane'][4] = event.GetValue() 5024 G2plt.PlotStructure(G2frame,data) 5025 5026 planeSizer = wx.BoxSizer(wx.VERTICAL) 5027 planeSizer1 = wx.BoxSizer(wx.HORIZONTAL) 5028 planeSizer1.Add(wx.StaticText(drawOptions,label=' Plane: '),0,WACV) 5029 H = drawingData['Plane'][0] 5030 plane = wx.TextCtrl(drawOptions,value='%3d %3d %3d'%(H[0],H[1],H[2]), 5031 style=wx.TE_PROCESS_ENTER) 5032 plane.Bind(wx.EVT_TEXT_ENTER,OnPlane) 5033 plane.Bind(wx.EVT_KILL_FOCUS,OnPlane) 5034 planeSizer1.Add(plane,0,WACV) 5035 showPlane = wx.CheckBox(drawOptions,label=' Show plane?') 5036 showPlane.SetValue(drawingData['Plane'][1]) 5037 showPlane.Bind(wx.EVT_CHECKBOX, OnShowPlane) 5038 planeSizer1.Add(showPlane,0,WACV) 5039 showStack = wx.CheckBox(drawOptions,label=' As a stack?') 5040 showStack.SetValue(drawingData['Plane'][2]) 5041 showStack.Bind(wx.EVT_CHECKBOX, OnShowStack) 5042 planeSizer1.Add(showStack,0,WACV) 5043 planeSizer2 = wx.BoxSizer(wx.HORIZONTAL) 5044 planeSizer2.Add(wx.StaticText(drawOptions,label=' Phase shift (deg): '),0,WACV) 5045 phase = wx.TextCtrl(drawOptions,value='%.2f'%(drawingData['Plane'][3]), 5046 style=wx.TE_PROCESS_ENTER) 5047 phase.Bind(wx.EVT_TEXT_ENTER,OnPhase) 5048 phase.Bind(wx.EVT_KILL_FOCUS,OnPhase) 5049 planeSizer2.Add(phase,0,WACV) 5050 planeSizer2.Add(wx.StaticText(drawOptions,-1,' Plane color: '),0,WACV) 5051 planeColor = wcs.ColourSelect(drawOptions, -1,colour=drawingData['Plane'][4],size=wx.Size(25,25)) 5052 planeColor.Bind(wcs.EVT_COLOURSELECT, OnPlaneColor) 5053 planeSizer2.Add(planeColor,0,WACV) 5054 planeSizer.Add(planeSizer1) 5055 planeSizer.Add(planeSizer2) 5056 return planeSizer 5057 4984 5058 4985 5059 # UpdateDrawOptions exectable code starts here … … 5005 5079 mainSizer.Add((5,5),0) 5006 5080 mainSizer.Add(RadSizer(),0,) 5081 mainSizer.Add((5,5),0) 5082 mainSizer.Add(PlaneSizer(),0,) 5007 5083 SetPhaseWindow(G2frame.dataFrame,drawOptions,mainSizer) 5008 5084 -
trunk/GSASIIplot.py
r2475 r2476 4749 4749 def PlotStructure(G2frame,data,firstCall=False): 4750 4750 '''Crystal structure plotting package. Can show structures as balls, sticks, lines, 4751 thermal motion ellipsoids and polyhedra 4751 thermal motion ellipsoids and polyhedra. Magnetic moments shown as black/red 4752 arrows according to spin state 4752 4753 ''' 4753 4754 … … 5211 5212 glEnable(GL_LIGHT0) 5212 5213 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,0) 5213 glLightfv(GL_LIGHT0,GL_AMBIENT,[. 5,.5,.5,1])5214 glLightfv(GL_LIGHT0,GL_AMBIENT,[.8,.8,.8,1]) 5214 5215 glLightfv(GL_LIGHT0,GL_DIFFUSE,[.8,.8,.8,1]) 5215 glLightfv(GL_LIGHT0,GL_SPECULAR,[1,1,1,1]) 5216 # glLightfv(GL_LIGHT0,GL_SPECULAR,[1,1,1,1]) 5217 # glLightfv(GL_LIGHT0,GL_POSITION,[0,0,1,1]) 5216 5218 5217 5219 def GetRoll(newxy,rhoshape): … … 5404 5406 glColor4ubv([0,0,0,0]) 5405 5407 glDisable(GL_COLOR_MATERIAL) 5408 5409 def RenderPlane(plane,color): 5410 fade = list(color) + [.25,] 5411 glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,fade) 5412 glShadeModel(GL_FLAT) 5413 glEnable(GL_BLEND) 5414 glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) 5415 glPushMatrix() 5416 glShadeModel(GL_SMOOTH) 5417 glPolygonMode(GL_FRONT_AND_BACK,GL_FILL) 5418 glFrontFace(GL_CW) 5419 glBegin(GL_TRIANGLE_FAN) 5420 for vertex in plane: 5421 glVertex3fv(vertex) 5422 glEnd() 5423 glPopMatrix() 5424 glDisable(GL_BLEND) 5425 glShadeModel(GL_SMOOTH) 5406 5426 5407 5427 def RenderSphere(x,y,z,radius,color): … … 5518 5538 glPushMatrix() 5519 5539 glTranslate(x,y,z) 5520 glMaterialfv(GL_FRONT_AND_BACK,GL_ DIFFUSE,color)5540 glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,color) 5521 5541 glShadeModel(GL_SMOOTH) 5522 5542 glMultMatrixf(B4mat.T) … … 5599 5619 #useful debug? 5600 5620 # if caller: 5601 # print caller 5621 # print caller,generalData['Name'] 5602 5622 # end of useful debug 5603 5623 mapData = generalData['Map'] … … 5666 5686 glMultMatrixf(A4mat.T) 5667 5687 glTranslate(-Tx,-Ty,-Tz) 5668 if drawingData['unitCellBox']:5669 RenderBox()5670 5688 if drawingData['showABC']: 5671 5689 x,y,z = drawingData['viewPoint'][0] … … 5820 5838 Backbone = Backbones[chain] 5821 5839 RenderBackbone(Backbone,BackboneColor,bondR) 5840 if drawingData['unitCellBox']: 5841 RenderBox() 5842 if drawingData['Plane'][1]: 5843 H,phase,stack,phase,color = drawingData['Plane'] 5844 Planes = G2lat.PlaneIntercepts(Amat,Bmat,H,phase,stack) 5845 for plane in Planes: 5846 RenderPlane(plane,color) 5822 5847 # print time.time()-time0 5823 5848 try:
Note: See TracChangeset
for help on using the changeset viewer.