Changeset 945
- Timestamp:
- Jun 11, 2013 9:58:44 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r938 r945 730 730 return [G2IO.makeInstDict(names,data,codes),{}] 731 731 elif 'T' in DataType: 732 names = ['Type','2-theta','difC','difA','Zero','alpha','beta-0','beta-1','sig-0','sig-1','X','Y','Azimuth'] 733 codes = [0,0,0,0,0,0,0,0,0,0,0,0,0] 732 names = ['Type','2-theta','difC','difA','Zero','alpha','beta-0','beta-1', 733 'beta-q','sig-0','sig-1','sig-q','X','Y','Azimuth'] 734 codes = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 734 735 azm = 0. 735 736 if 'INS 1DETAZM' in Iparm: … … 745 746 data.extend([G2IO.sfloat(s[1]),G2IO.sfloat(s[2]),G2IO.sfloat(s[3])]) 746 747 s = Iparm['INS 1PRCF12'].split() 747 data.extend([0.0, G2IO.sfloat(s[1]),0.0,0.0,azm])748 data.extend([0.0,0.0,G2IO.sfloat(s[1]),0.0,0.0,0.0,azm]) 748 749 elif abs(pfType) in [3,4,5]: 749 750 data.extend([G2IO.sfloat(s[0]),G2IO.sfloat(s[1]),G2IO.sfloat(s[2])]) 750 751 if abs(pfType) == 4: 751 data.extend([0.0, G2IO.sfloat(s[3]),0.0,0.0,azm])752 data.extend([0.0,0.0,G2IO.sfloat(s[3]),0.0,0.0,0.0,azm]) 752 753 else: 753 754 s = Iparm['INS 1PRCF12'].split() 754 data.extend([0.0, G2IO.sfloat(s[0]),0.0,0.0,azm])755 data.extend([0.0,0.0,G2IO.sfloat(s[0]),0.0,0.0,0.0,azm]) 755 756 Inst1 = G2IO.makeInstDict(names,data,codes) 756 757 Inst2 = {} -
trunk/GSASIImath.py
r943 r945 1465 1465 return Ind 1466 1466 1467 def getCWsig(ins,pos): 1468 tp = tand(pos/2.0) 1469 return ins['U']*tp**2+ins['V']*tp+ins['W'] 1470 1471 def getCWsigDeriv(pos): 1472 tp = tand(pos/2.0) 1473 return tp**2,tp,1.0 1474 1475 def getCWgam(ins,pos): 1476 return ins['X']/cosd(pos/2.0)+ins['Y']*tand(pos/2.0) 1477 1478 def getCWgamDeriv(pos): 1479 return 1./cosd(pos/2.0),tand(pos/2.0) 1480 1481 def getTOFsig(ins,dsp): 1482 return ins['sig-0']+ins['sig-1']*dsp**2+ins['sig-q']*dsp 1483 1484 def getTOFsigDeriv(dsp): 1485 return 1.0,dsp**2,dsp 1486 1487 def getTOFgamma(ins,dsp): 1488 return ins['X']*dsp+ins['Y']*dsp**2 1489 1490 def getTOFgammaDeriv(dsp): 1491 return dsp,dsp**2 1492 1493 def getTOFbeta(ins,dsp): 1494 return ins['beta-0']+ins['beta-1']/dsp**4+ins['beta-q']/dsp 1495 1496 def getTOFbetaDeriv(dsp): 1497 return 1.0,1./dsp**4,1./dsp 1498 1499 def getTOFalpha(ins,dsp): 1500 return ins['alpha']/dsp 1501 1502 def getTOFalphaDeriv(dsp): 1503 return 1./dsp 1504 1467 1505 def setPeakparms(Parms,Parms2,pos,mag,ifQ=False,useFit=False): 1468 1506 'Needs a doc string' … … 1476 1514 if ifQ: #qplot - convert back to 2-theta 1477 1515 pos = 2.0*asind(pos*wave/(4*math.pi)) 1478 sig = ins['U']*tand(pos/2.0)**2+ins['V']*tand(pos/2.0)+ins['W']1479 gam = ins['X']/cosd(pos/2.0)+ins['Y']*tand(pos/2.0)1516 sig = getCWsig(ins,pos) 1517 gam = getCWgam(ins,pos) 1480 1518 XY = [pos,0, mag,1, sig,0, gam,0] #default refine intensity 1st 1481 1519 else: … … 1486 1524 dsp = pos/Parms['difC'][1] 1487 1525 if 'Pdabc' in Parms2: 1488 for x in ['sig-0','sig-1',' X','Y']:1526 for x in ['sig-0','sig-1','sig-q','X','Y']: 1489 1527 ins[x] = Parms[x][ind] 1490 1528 Pdabc = Parms2['Pdabc'].T … … 1492 1530 bet = np.interp(dsp,Pdabc[0],Pdabc[2]) 1493 1531 else: 1494 for x in ['alpha','beta-0','beta-1',' sig-0','sig-1','X','Y']:1532 for x in ['alpha','beta-0','beta-1','beta-q','sig-0','sig-1','sig-q','X','Y']: 1495 1533 ins[x] = Parms[x][ind] 1496 alp = ins['alpha']/dsp1497 bet = ins['beta-0']+ins['beta-1']/dsp**41498 sig = ins['sig-0']+ins['sig-1']*dsp**21499 gam = ins['X']*dsp+ins['Y']*dsp**21534 alp = getTOFalpha(ins,dsp) 1535 bet = getTOFbeta(ins,dsp) 1536 sig = getTOFsig(ins,dsp) 1537 gam = getTOFgamma(ins,dsp) 1500 1538 XY = [pos,0,mag,1,alp,0,bet,0,sig,0,gam,0] 1501 1539 return XY -
trunk/GSASIIpwd.py
r939 r945 716 716 cw = np.append(cw,cw[-1]) 717 717 if 'C' in dataType: 718 U = parmDict['U']719 V = parmDict['V']720 W = parmDict['W']721 X = parmDict['X']722 Y = parmDict['Y']723 718 shl = max(parmDict['SH/L'],0.002) 724 719 Ka2 = False … … 737 732 sig = parmDict[sigName] 738 733 else: 739 sig = U*tand(theta)**2+V*tand(theta)+W734 sig = G2mth.getCWsig(parmDict,theta) 740 735 sig = max(sig,0.001) #avoid neg sigma 741 736 gamName = 'gam'+str(iPeak) … … 743 738 gam = parmDict[gamName] 744 739 else: 745 gam = X/cosd(theta)+Y*tand(theta)740 gam = G2mth.getCWgam(parmDict,theta) 746 741 gam = max(gam,0.001) #avoid neg gamma 747 742 Wd,fmin,fmax = getWidthsCW(pos,sig,gam,shl) … … 766 761 Pdabc = parmDict['Pdabc'] 767 762 difC = parmDict['difC'] 768 alp0 = parmDict['alpha']769 bet0 = parmDict['beta-0']770 bet1 = parmDict['beta-1']771 sig0 = parmDict['sig-0']772 sig1 = parmDict['sig-1']773 X = parmDict['X']774 Y = parmDict['Y']775 763 iPeak = 0 776 764 while True: … … 787 775 alp = np.interp(dsp,Pdabc[0],Pdabc[1]) 788 776 else: 789 alp = alp0/dsp777 alp = G2mth.getTOFalpha(parmDict,dsp) 790 778 betName = 'bet'+str(iPeak) 791 779 if betName in varyList: … … 795 783 bet = np.interp(dsp,Pdabc[0],Pdabc[2]) 796 784 else: 797 bet = bet0+bet1/dsp**4785 bet = G2mth.getTOFbeta(parmDict,dsp) 798 786 sigName = 'sig'+str(iPeak) 799 787 if sigName in varyList: 800 788 sig = parmDict[sigName] 801 789 else: 802 sig = sig0+sig1*dsp**2790 sig = G2mth.getTOFsig(parmDict,dsp) 803 791 gamName = 'gam'+str(iPeak) 804 792 if gamName in varyList: 805 793 gam = parmDict[gamName] 806 794 else: 807 gam = X*dsp**2+Y*dsp795 gam = G2mth.getTOFgamma(parmDict,dsp) 808 796 gam = max(gam,0.001) #avoid neg gamma 809 797 Wd,fmin,fmax = getWidthsTOF(pos,alp,bet,sig,gam) … … 849 837 cw = np.append(cw,cw[-1]) 850 838 if 'C' in dataType: 851 U = parmDict['U']852 V = parmDict['V']853 W = parmDict['W']854 X = parmDict['X']855 Y = parmDict['Y']856 839 shl = max(parmDict['SH/L'],0.002) 857 840 Ka2 = False … … 872 855 sig = parmDict[sigName] 873 856 else: 874 sig = U*tanth**2+V*tanth+W 875 dsdU = tanth**2 876 dsdV = tanth 877 dsdW = 1.0 857 sig = G2mth.getCWsig(parmDict,theta) 858 dsdU,dsdV,dsdW = G2mth.getCWsigDeriv(theta) 878 859 sig = max(sig,0.001) #avoid neg sigma 879 860 gamName = 'gam'+str(iPeak) … … 881 862 gam = parmDict[gamName] 882 863 else: 883 gam = X/costh+Y*tanth 884 dgdX = 1.0/costh 885 dgdY = tanth 864 gam = G2mth.getCWgam(parmDict,theta) 865 dgdX,dgdY = G2mth.getCWgamDeriv(theta) 886 866 gam = max(gam,0.001) #avoid neg gamma 887 867 Wd,fmin,fmax = getWidthsCW(pos,sig,gam,shl) … … 936 916 Pdabc = parmDict['Pdabc'] 937 917 difC = parmDict['difC'] 938 alp0 = parmDict['alpha']939 bet0 = parmDict['beta-0']940 bet1 = parmDict['beta-1']941 sig0 = parmDict['sig-0']942 sig1 = parmDict['sig-1']943 X = parmDict['X']944 Y = parmDict['Y']945 918 iPeak = 0 946 919 while True: … … 957 930 alp = np.interp(dsp,Pdabc[0],Pdabc[1]) 958 931 else: 959 alp = alp0/dsp960 dada0 = 1./dsp932 alp = G2mth.getTOFalpha(parmDict,dsp) 933 dada0 = G2mth.getTOFalphaDeriv(dsp) 961 934 betName = 'bet'+str(iPeak) 962 935 if betName in varyList: … … 966 939 bet = np.interp(dsp,Pdabc[0],Pdabc[2]) 967 940 else: 968 bet = bet0+bet1/dsp**4 969 dbdb0 = 1. 970 dbdb1 = 1/dsp**4 941 bet = G2mth.getTOFbeta(parmDict,dsp) 942 dbdb0,dbdb1,dbdb2 = G2mth.getTOFbetaDeriv(dsp) 971 943 sigName = 'sig'+str(iPeak) 972 944 if sigName in varyList: 973 945 sig = parmDict[sigName] 974 946 else: 975 sig = sig0+sig1*dsp**2 976 dsds0 = 1. 977 dsds1 = dsp**2 947 sig = G2mth.getTOFsig(parmDict,dsp) 948 dsds0,dsds1,dsds2 = G2mth.getTOFsigDeriv(dsp) 978 949 gamName = 'gam'+str(iPeak) 979 950 if gamName in varyList: 980 951 gam = parmDict[gamName] 981 952 else: 982 gam = X*dsp**2+Y*dsp 983 dsdX = dsp**2 984 dsdY = dsp 953 gam = G2mth.getTOFgamma(parmDict,dsp) 954 dsdX,dsdY = G2mth.getTOFgammaDeriv(dsp) 985 955 gam = max(gam,0.001) #avoid neg gamma 986 956 Wd,fmin,fmax = getWidthsTOF(pos,alp,bet,sig,gam) … … 1016 986 if 'beta-1' in varyList: 1017 987 dMdv[varyList.index('beta-1')] += dbdb1*dervDict['bet'] 988 if 'beta-q' in varyList: 989 dMdv[varyList.index('beta-q')] += dbdb2*dervDict['bet'] 1018 990 if 'sig-0' in varyList: 1019 991 dMdv[varyList.index('sig-0')] += dsds0*dervDict['sig'] 1020 992 if 'sig-1' in varyList: 1021 993 dMdv[varyList.index('sig-1')] += dsds1*dervDict['sig'] 994 if 'sig-q' in varyList: 995 dMdv[varyList.index('sig-q')] += dsds2*dervDict['sig'] 1022 996 if 'X' in varyList: 1023 997 dMdv[varyList.index('X')] += dsdX*dervDict['gam'] … … 1172 1146 insVals.append(Inst[parm][1]) 1173 1147 if parm in ['U','V','W','X','Y','SH/L','I(L2)/I(L1)','alpha', 1174 'beta-0','beta-1',' sig-0','sig-1',] and Inst[parm][2]:1148 'beta-0','beta-1','beta-q','sig-0','sig-1','sig-q',] and Inst[parm][2]: 1175 1149 insVary.append(parm) 1176 1150 instDict = dict(zip(insNames,insVals)) … … 1191 1165 if sigName not in varyList: 1192 1166 if 'C' in Inst['Type'][0]: 1193 parmDict[sigName] = parmDict['U']*tand(pos/2.0)**2+parmDict['V']*tand(pos/2.0)+parmDict['W']1167 parmDict[sigName] = G2mth.getCWsig(parmDict,pos) 1194 1168 else: 1195 1169 dsp = pos/Inst['difC'][1] 1196 parmDict[sigName] = parmDict['sig-0']+parmDict['sig-1']*dsp**21170 parmDict[sigName] = G2mth.getTOFsig(parmDict,dsp) 1197 1171 gamName = 'gam'+str(iPeak) 1198 1172 if gamName not in varyList: 1199 1173 if 'C' in Inst['Type'][0]: 1200 parmDict[gamName] = parmDict['X']/cosd(pos/2.0)+parmDict['Y']*tand(pos/2.0)1174 parmDict[gamName] = G2mth.getCWgam(parmDict,pos) 1201 1175 else: 1202 1176 dsp = pos/Inst['difC'][1] 1203 parmDict[ sigName] = parmDict['X']*dsp**2+parmDict['Y']*dsp1177 parmDict[gamName] = G2mth.getTOFgamma(parmDict,dsp) 1204 1178 iPeak += 1 1205 1179 except KeyError: … … 1214 1188 for parm in Inst: 1215 1189 if parm in ['U','V','W','X','Y','SH/L','I(L2)/I(L1)','alpha', 1216 'beta-0','beta-1',' sig-0','sig-1',]:1190 'beta-0','beta-1','beta-q','sig-0','sig-1','sig-q',]: 1217 1191 ptlbls += "%s" % (parm.center(12)) 1218 1192 ptstr += ptfmt % (Inst[parm][1]) … … 1258 1232 peak[2*j] = parmDict['alpha']/dsp 1259 1233 elif 'beta' in parName: 1260 peak[2*j] = parmDict['beta-0']+parmDict['beta-1']/dsp**41234 peak[2*j] = G2mth.getTOFbeta(parmDict,dsp) 1261 1235 elif 'sig' in parName: 1262 1236 if 'C' in Inst['Type'][0]: 1263 peak[2*j] = parmDict['U']*tand(pos/2.0)**2+parmDict['V']*tand(pos/2.0)+parmDict['W']1237 peak[2*j] = G2mth.getCWsig(parmDict,pos) 1264 1238 else: 1265 peak[2*j] = parmDict['sig-0']+parmDict['sig-1']*dsp**21239 peak[2*j] = G2mth.getTOFsig(parmDict,dsp) 1266 1240 elif 'gam' in parName: 1267 1241 if 'C' in Inst['Type'][0]: 1268 peak[2*j] = parmDict['X']/cosd(pos/2.0)+parmDict['Y']*tand(pos/2.0)1242 peak[2*j] = G2mth.getCWgam(parmDict,pos) 1269 1243 else: 1270 peak[2*j] = parmDict['X']*dsp**2+parmDict['Y']*dsp1244 peak[2*j] = G2mth.getTOFgamma(parmDict,dsp) 1271 1245 1272 1246 def PeaksPrint(dataType,parmDict,sigDict,varyList): -
trunk/GSASIIpwdGUI.py
r938 r945 312 312 X = [] 313 313 for key in T: X.append(D[key]) 314 data = X 314 data = X 315 315 G2frame.PatternTree.SetItemPyData(G2frame.PickId,data) 316 316 G2frame.PeakTable = G2gd.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types) … … 604 604 '''respond to selection of PWDR Limits data tree item. 605 605 ''' 606 #Add excluded regions here 606 607 if G2frame.dataDisplay: 607 608 G2frame.dataFrame.Clear() … … 666 667 for key in keys: 667 668 if key in ['Type','U','V','W','X','Y','SH/L','I(L2)/I(L1)','alpha', 668 'beta-0','beta-1',' sig-0','sig-1','Polariz.','Lam','Azimuth','2-theta',669 ' difC','difA','Zero','Lam1','Lam2']:669 'beta-0','beta-1','beta-q','sig-0','sig-1','sig-q','Polariz.', 670 'Lam','Azimuth','2-theta','difC','difA','Zero','Lam1','Lam2']: 670 671 good.append(key) 671 672 return good … … 1009 1010 topSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' alpha, beta: fixed by table'),0,wx.ALIGN_CENTER_VERTICAL) 1010 1011 else: 1011 Items = ['difC','difA','Zero','alpha','beta-0','beta-1',' sig-0','sig-1','X','Y']1012 Items = ['difC','difA','Zero','alpha','beta-0','beta-1','beta-q','sig-0','sig-1','sig-q','X','Y'] 1012 1013 for item in Items: 1013 1014 fmt = '%10.3f'
Note: See TracChangeset
for help on using the changeset viewer.