Changeset 2766
- Timestamp:
- Mar 30, 2017 1:31:01 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/GSASIIplot.py ¶
r2764 r2766 2820 2820 2821 2821 def PlotXY(G2frame,XY,XY2=None,labelX='X',labelY='Y',newPlot=False, 2822 Title='',lines=False,names=[],names2=[] ):2822 Title='',lines=False,names=[],names2=[],vertLines=[]): 2823 2823 '''simple plot of xy data 2824 2824 … … 2833 2833 :param list of str names: legend names for each XY plot 2834 2834 :param list of str names2: legend names for each XY2 plot 2835 :param lists of vertical line x-positions list; can be one for each XY 2835 2836 :return nothing 2836 2837 … … 2906 2907 else: 2907 2908 Plot.plot(X,Y,colors[ixy%6]+'+',picker=False) 2908 if XY2 and len(XY2): 2909 if len(vertLines): 2910 for ixy,X in enumerate(vertLines): 2911 dX = Page.Offset[0]*(ixy+1)*Xmax/500. 2912 for x in X: 2913 Plot.axvline(x+dX,color=colors[ixy%6],dashes=(5,5),picker=False) 2914 if XY2 is not None and len(XY2): 2909 2915 for ixy,xy in enumerate(XY2): 2910 2916 X,Y = XY2[ixy] -
TabularUnified trunk/GSASIIpwdGUI.py ¶
r2763 r2766 4740 4740 SaveState() 4741 4741 G2pwd.REFDRefine(Profile,ProfDict,Inst,Limits,Substances,data) 4742 x,xr,y = G2pwd.makeSLDprofile(data,Substances)4743 ModelPlot(data,x,xr,y)4742 # x,xr,y = G2pwd.makeSLDprofile(data,Substances) 4743 # ModelPlot(data,x,xr,y) 4744 4744 G2plt.PlotPatterns(G2frame,plotType='REFD') 4745 4745 wx.CallLater(100,UpdateREFDModelsGrid,G2frame,data) … … 4782 4782 4783 4783 def ModelPlot(data,x,xr,y): 4784 nLines = len(data['Layers'])-1 4785 linePos = np.zeros(nLines) 4786 for ilay,layer in enumerate(data['Layers'][1:-1]): 4787 linePos[ilay+1:] += layer['Thick'][0] 4784 4788 if data['Zero']: 4785 4789 XY = [[x,y],] … … 4788 4792 XY = [[xr,y],] 4789 4793 disLabel = r'$Distance\ from\ substrate,\ \AA$' 4790 G2plt.PlotXY(G2frame,XY,labelX=disLabel,labelY=r'$SLD,\ 10^{10}cm^{-2}$',newPlot= False,4791 Title='Scattering length density',lines=True,names=[] )4794 G2plt.PlotXY(G2frame,XY,labelX=disLabel,labelY=r'$SLD,\ 10^{10}cm^{-2}$',newPlot=True, 4795 Title='Scattering length density',lines=True,names=[],vertLines=[linePos,]) 4792 4796 4793 4797 def OnUnDo(event): … … 4797 4801 G2frame.dataFrame.REFDUndo.Enable(False) 4798 4802 G2pwd.REFDModelFxn(Profile,Inst,Limits,Substances,data) 4799 x,xr,y = G2pwd.makeSLDprofile(data,Substances)4800 ModelPlot(data,x,xr,y)4803 # x,xr,y = G2pwd.makeSLDprofile(data,Substances) 4804 # ModelPlot(data,x,xr,y) 4801 4805 G2plt.PlotPatterns(G2frame,plotType='REFD') 4802 4806 wx.CallLater(100,UpdateREFDModelsGrid,G2frame,data) … … 4822 4826 def OnRefPos(event): 4823 4827 data['Zero'] = refpos.GetValue() 4828 x,xr,y = G2pwd.makeSLDprofile(data,Substances) 4829 ModelPlot(data,x,xr,y) 4824 4830 4825 4831 def OnMinSel(event): … … 4926 4932 return 4927 4933 G2pwd.REFDModelFxn(Profile,Inst,Limits,Substances,data) 4928 x,xr,y = G2pwd.makeSLDprofile(data,Substances)4929 ModelPlot(data,x,xr,y)4934 # x,xr,y = G2pwd.makeSLDprofile(data,Substances) 4935 # ModelPlot(data,x,xr,y) 4930 4936 G2plt.PlotPatterns(G2frame,plotType='REFD') 4931 4937 wx.CallLater(100,UpdateREFDModelsGrid,G2frame,data) … … 5046 5052 Size = mainSizer.Fit(G2frame.dataFrame) 5047 5053 Size[0] += 25 5048 G2frame.dataFrame.setSizePosLeft(Size) 5054 G2frame.dataFrame.setSizePosLeft(Size) 5055 x,xr,y = G2pwd.makeSLDprofile(data,Substances) 5056 ModelPlot(data,x,xr,y) 5057 5049 5058 5050 5059 ################################################################################ -
TabularUnified trunk/GSASIIstrIO.py ¶
r2753 r2766 1534 1534 def getCellEsd(pfx,SGData,A,covData): 1535 1535 'needs a doc string' 1536 dpr = 180./np.pi1537 1536 rVsq = G2lat.calc_rVsq(A) 1538 1537 G,g = G2lat.A2Gmat(A) #get recip. & real metric tensors 1539 cell = np.array(G2lat.Gmat2cell(g)) #real cell1540 cellst = np.array(G2lat.Gmat2cell(G)) #recip. cell1541 scos = cosd(cellst[3:6])1542 ssin = sind(cellst[3:6])1543 scot = scos/ssin1544 rcos = cosd(cell[3:6])1545 rsin = sind(cell[3:6])1546 rcot = rcos/rsin1547 1538 RMnames = [pfx+'A0',pfx+'A1',pfx+'A2',pfx+'A3',pfx+'A4',pfx+'A5'] 1548 1539 varyList = covData['varyList'] … … 1559 1550 vcov[1,2] = vcov[2,1] = vcov[0,2] 1560 1551 elif SGData['SGLaue'] in ['3R','3mR']: 1561 vcov[0:2,0:2] = vcov[0,0] 1562 vcov[4,4] = vcov[5,5] = vcov[3,3] 1552 vcov[0:3,0:3] = vcov[0,0] 1553 # vcov[4,4] = vcov[5,5] = vcov[3,3] 1554 vcov[3:6,3:6] = vcov[3,3] 1563 1555 vcov[0:3,3:6] = vcov[0,3] 1564 1556 vcov[3:6,0:3] = vcov[3,0] 1565 Ax = np.array(A)1566 Ax[3:] /= 2.1567 drVdA = np.array([1568 A x[1]*Ax[2]-Ax[5]**2,1569 Ax[0]*Ax[2]-Ax[4]**2,1570 A x[0]*Ax[1]-Ax[3]**2,1571 Ax[4]*Ax[5]-Ax[2]*Ax[3],1572 A x[3]*Ax[5]-Ax[1]*Ax[4],1573 Ax[3]*Ax[4]-Ax[0]*Ax[5]])1557 delt = 1.e-9 1558 drVdA = np.zeros(6) 1559 for i in range(6): 1560 A[i] += delt 1561 drVdA[i] = G2lat.calc_rVsq(A) 1562 A[i] -= 2*delt 1563 drVdA[i] -= G2lat.calc_rVsq(A) 1564 A[i] += delt 1565 drVdA /= 2.*delt 1574 1566 srcvlsq = np.inner(drVdA,np.inner(drVdA,vcov)) 1575 1567 Vol = 1/np.sqrt(rVsq) 1576 1568 sigVol = Vol**3*np.sqrt(srcvlsq)/2. #ok - checks with GSAS 1577 1569 1578 R123 = Ax[0]*Ax[1]*Ax[2] 1579 dsasdg = np.zeros((3,6)) 1580 dadg = np.zeros((6,6)) 1581 for i0 in range(3): #0 1 2 1582 i1 = (i0+1)%3 #1 2 0 1583 i2 = (i1+1)%3 #2 0 1 1584 i3 = 5-i2 #3 5 4 1585 i4 = 5-i1 #4 3 5 1586 i5 = 5-i0 #5 4 3 1587 dsasdg[i0][i1] = 0.5*scot[i0]*scos[i0]/Ax[i1] 1588 dsasdg[i0][i2] = 0.5*scot[i0]*scos[i0]/Ax[i2] 1589 dsasdg[i0][i5] = -scot[i0]/np.sqrt(Ax[i1]*Ax[i2]) 1590 denmsq = Ax[i0]*(R123-Ax[i1]*Ax[i4]**2-Ax[i2]*Ax[i3]**2)+(Ax[i4]*Ax[i3])**2 1591 denom = np.sqrt(denmsq) 1592 dadg[i5][i0] = -Ax[i5]/denom-rcos[i0]/denmsq*(R123-0.5*Ax[i1]*Ax[i4]**2-0.5*Ax[i2]*Ax[i3]**2) 1593 dadg[i5][i1] = -0.5*rcos[i0]/denmsq*(Ax[i0]**2*Ax[i2]-Ax[i0]*Ax[i4]**2) 1594 dadg[i5][i2] = -0.5*rcos[i0]/denmsq*(Ax[i0]**2*Ax[i1]-Ax[i0]*Ax[i3]**2) 1595 dadg[i5][i3] = Ax[i4]/denom+rcos[i0]/denmsq*(Ax[i0]*Ax[i2]*Ax[i3]-Ax[i3]*Ax[i4]**2) 1596 dadg[i5][i4] = Ax[i3]/denom+rcos[i0]/denmsq*(Ax[i0]*Ax[i1]*Ax[i4]-Ax[i3]**2*Ax[i4]) 1597 dadg[i5][i5] = -Ax[i0]/denom 1598 for i0 in range(3): 1599 i1 = (i0+1)%3 1600 i2 = (i1+1)%3 1601 i3 = 5-i2 1602 for ij in range(6): 1603 dadg[i0][ij] = cell[i0]*(rcot[i2]*dadg[i3][ij]/rsin[i2]-dsasdg[i1][ij]/ssin[i1]) 1604 if ij == i0: 1605 dadg[i0][ij] = dadg[i0][ij]-0.5*cell[i0]/Ax[i0] 1606 dadg[i3][ij] = -dadg[i3][ij]*rsin[2-i0]*dpr 1607 # GSASIIpath.IPyBreak() 1608 sigMat = np.inner(dadg,np.inner(dadg,vcov)) 1570 dcdA = np.zeros((6,6)) 1571 for i in range(6): 1572 pdcdA =np.zeros(6) 1573 A[i] += delt 1574 pdcdA += G2lat.A2cell(A) 1575 A[i] -= 2*delt 1576 pdcdA -= G2lat.A2cell(A) 1577 A[i] += delt 1578 dcdA[i] = pdcdA/(2.*delt) 1579 1580 sigMat = np.inner(dcdA,np.inner(dcdA,vcov)) 1609 1581 var = np.diag(sigMat) 1610 1582 CS = np.where(var>0.,np.sqrt(var),0.)
Note: See TracChangeset
for help on using the changeset viewer.