Changeset 1891
- Timestamp:
- Jun 16, 2015 2:31:56 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIddataGUI.py
r1887 r1891 781 781 def OnAddTwin(event): 782 782 twinMat = np.array([[-1,0,0],[0,-1,0],[0,0,-1]]) #inversion by default 783 twinVal = [0.0,False]783 twinVal = 0.0 784 784 UseList[G2frame.hist]['Twins'].append([twinMat,twinVal]) 785 785 addtwin.SetValue(False) … … 805 805 raise ValueError 806 806 except ValueError: 807 val = UseList[G2frame.hist]['Twins'][it][1] [0]808 UseList[G2frame.hist]['Twins'][it][1] [0]= val807 val = UseList[G2frame.hist]['Twins'][it][1] 808 UseList[G2frame.hist]['Twins'][it][1] = val 809 809 sumTw = 0. 810 810 for it,twin in enumerate(UseList[G2frame.hist]['Twins']): 811 811 if it: 812 sumTw += twin[1] [0]812 sumTw += twin[1] 813 813 UseList[G2frame.hist]['Twins'][0][1][0] = 1.-sumTw 814 814 wx.CallLater(100,RepaintHistogramInfo) … … 816 816 def OnTwinRef(event): 817 817 Obj = event.GetEventObject() 818 it = Indx[Obj.GetId()] 819 UseList[G2frame.hist]['Twins'][it][1][1] = Obj.GetValue() 818 UseList[G2frame.hist]['Twins'][0][1][1] = Obj.GetValue() 820 819 821 820 def OnTwinDel(event): … … 826 825 for it,twin in enumerate(UseList[G2frame.hist]['Twins']): 827 826 if it: 828 sumTw += twin[1] [0]827 sumTw += twin[1] 829 828 UseList[G2frame.hist]['Twins'][0][1][0] = 1.-sumTw 829 if len(UseList[G2frame.hist]['Twins']) == 1: 830 UseList[G2frame.hist]['Twins'][0][1][1] = False 830 831 wx.CallLater(100,RepaintHistogramInfo) 831 832 … … 838 839 twinsizer.Add(topsizer) 839 840 Indx = {} 840 for it,Twin in enumerate(UseList[G2frame.hist]['Twins']): 841 twinMat,twinVal = Twin 842 matSizer = wx.BoxSizer(wx.HORIZONTAL) 843 matSizer.Add(wx.StaticText(DData,-1,' Twin Law: '),0,WACV) 844 Style = wx.TE_READONLY 845 if it: 846 Style = wx.TE_PROCESS_ENTER 847 for im,Mat in enumerate(twinMat): 848 mat = wx.TextCtrl(DData,wx.ID_ANY,'%3d %3d %3d'%(Mat[0],Mat[1],Mat[2]), 849 style=Style) 841 nTwin = len(UseList[G2frame.hist]['Twins']) 842 if nTwin > 1: 843 for it,Twin in enumerate(UseList[G2frame.hist]['Twins']): 844 twinMat,twinVal = Twin 845 matSizer = wx.BoxSizer(wx.HORIZONTAL) 846 matSizer.Add(wx.StaticText(DData,-1,' Twin Law: '),0,WACV) 850 847 if it: 851 Indx[mat.GetId()] = [it,im] 852 mat.Bind(wx.EVT_TEXT_ENTER,OnMat) 853 mat.Bind(wx.EVT_KILL_FOCUS,OnMat) 848 Style = wx.TE_PROCESS_ENTER 849 TwVal = Twin[1] 854 850 else: 855 mat.SetBackgroundColour(VERY_LIGHT_GREY) 856 matSizer.Add(mat,0,WACV|wx.LEFT,5) 857 twinsizer.Add(matSizer,0,WACV|wx.LEFT,5) 858 valSizer = wx.BoxSizer(wx.HORIZONTAL) 859 valSizer.Add(wx.StaticText(DData,-1,label=' Twin element fraction:'),0,WACV) 860 twinval = wx.TextCtrl(DData,-1,'%.3f'%(Twin[1][0]),style=wx.TE_PROCESS_ENTER) 861 Indx[twinval.GetId()] = it 862 twinval.Bind(wx.EVT_TEXT_ENTER,OnTwinVal) 863 twinval.Bind(wx.EVT_KILL_FOCUS,OnTwinVal) 864 valSizer.Add(twinval,0,WACV) 865 if it: 866 twinref = wx.CheckBox(DData,wx.ID_ANY,label=' Refine?') 867 Indx[twinref.GetId()] = it 868 twinref.SetValue(Twin[1][1]) 869 twinref.Bind(wx.EVT_CHECKBOX, OnTwinRef) 870 valSizer.Add(twinref,0,WACV) 871 twindel = wx.CheckBox(DData,wx.ID_ANY,label=' Delete?') 872 Indx[twindel.GetId()] = it 873 twindel.Bind(wx.EVT_CHECKBOX, OnTwinDel) 874 valSizer.Add(twindel,0,WACV) 875 twinsizer.Add(valSizer,0,WACV|wx.LEFT,5) 851 Style = wx.TE_READONLY 852 TwVal = Twin[1][0] 853 for im,Mat in enumerate(twinMat): 854 mat = wx.TextCtrl(DData,wx.ID_ANY,'%3d %3d %3d'%(Mat[0],Mat[1],Mat[2]), 855 style=Style) 856 if it: 857 Indx[mat.GetId()] = [it,im] 858 mat.Bind(wx.EVT_TEXT_ENTER,OnMat) 859 mat.Bind(wx.EVT_KILL_FOCUS,OnMat) 860 else: 861 mat.SetBackgroundColour(VERY_LIGHT_GREY) 862 matSizer.Add(mat,0,WACV|wx.LEFT,5) 863 twinsizer.Add(matSizer,0,WACV|wx.LEFT,5) 864 valSizer = wx.BoxSizer(wx.HORIZONTAL) 865 valSizer.Add(wx.StaticText(DData,-1,label=' Twin element fraction:'),0,WACV) 866 twinval = wx.TextCtrl(DData,-1,'%.3f'%(TwVal),style=wx.TE_PROCESS_ENTER) 867 Indx[twinval.GetId()] = it 868 twinval.Bind(wx.EVT_TEXT_ENTER,OnTwinVal) 869 twinval.Bind(wx.EVT_KILL_FOCUS,OnTwinVal) 870 if not it: 871 twinval.SetBackgroundColour(VERY_LIGHT_GREY) 872 valSizer.Add(twinval,0,WACV) 873 if it: 874 twindel = wx.CheckBox(DData,wx.ID_ANY,label=' Delete?') 875 Indx[twindel.GetId()] = it 876 twindel.Bind(wx.EVT_CHECKBOX, OnTwinDel) 877 valSizer.Add(twindel,0,WACV) 878 else: 879 twinref = wx.CheckBox(DData,wx.ID_ANY,label=' Refine?') 880 twinref.SetValue(Twin[1][1]) 881 twinref.Bind(wx.EVT_CHECKBOX, OnTwinRef) 882 valSizer.Add(twinref,0,WACV) 883 twinsizer.Add(valSizer,0,WACV|wx.LEFT,5) 876 884 return twinsizer 877 885 -
trunk/GSASIIstrIO.py
r1887 r1891 201 201 print G2mv.VarRemapShow(varyList,True) 202 202 return errmsg, warnmsg 203 203 204 def GetRestraints(GPXfile): 204 205 '''Read the restraints from the GPX file. … … 1940 1941 * hapVary: list of refined variables 1941 1942 * hapDict: dict with refined variables and their values 1942 * controlDict: dict with computation controls (?)1943 * controlDict: dict with fixed parameters 1943 1944 ''' 1944 1945 … … 2247 2248 for it,twin in enumerate(Twins): 2248 2249 controlDict[pfx+'TwinLaw'].append(twin[0]) 2249 hapDict[pfx+'TwinFr;'+str(it)] = twin[1][0]2250 2250 if it: 2251 sumTwFr += twin[1][0] 2252 if twin[1][1]: 2251 hapDict[pfx+'TwinFr;'+str(it)] = twin[1] 2252 sumTwFr += twin[1] 2253 else: 2254 hapDict[pfx+'TwinFr;'+str(it)] = twin[1][0] 2255 if Twins[0][1][1] and it: 2253 2256 hapVary.append(pfx+'TwinFr;'+str(it)) 2257 #need to make constraint on TwinFr 2254 2258 controlDict[pfx+'TwinLaw'] = np.array(controlDict[pfx+'TwinLaw']) 2255 2259 if len(Twins) > 1: #force sum to unity … … 2271 2275 if len(Twins) > 1: 2272 2276 for it,twin in enumerate(Twins): 2273 print >>pFile,' Twin law: %s'%(str(twin[0]).replace('\n',',')),' Twin fr.: %5.3f Refine? '%(hapDict[pfx+'TwinFr;'+str(it)]), twin[1][1]2277 print >>pFile,' Twin law: %s'%(str(twin[0]).replace('\n',',')),' Twin fr.: %5.3f Refine? '%(hapDict[pfx+'TwinFr;'+str(it)]),Twins[0][1][1] 2274 2278 2275 2279 Histogram['Reflection Lists'] = phase … … 2433 2437 for it,item in enumerate(twinData): 2434 2438 ptlbls += ' twin #%d'%(it) 2435 ptstr += '%12.3f'%(item[1][0]) 2439 if it: 2440 ptstr += '%12.3f'%(item[1]) 2441 else: 2442 ptstr += '%12.3f'%(item[1][0]) 2436 2443 if pfx+'TwinFr;'+str(it) in TwinSig: 2437 2444 sigstr += '%12.3f'%(TwinSig[pfx+'TwinFr;'+str(it)]) … … 2535 2542 BabSig[pfx+item] = sigDict[pfx+item] 2536 2543 if 'Twins' in hapData: 2537 it = 02544 it = 1 2538 2545 sumTwFr = 0. 2539 2546 while True: 2540 2547 try: 2541 hapData['Twins'][it][1] [0]= parmDict[pfx+'TwinFr;'+str(it)]2548 hapData['Twins'][it][1] = parmDict[pfx+'TwinFr;'+str(it)] 2542 2549 if pfx+'TwinFr;'+str(it) in sigDict: 2543 2550 TwinFrSig[pfx+'TwinFr;'+str(it)] = sigDict[pfx+'TwinFr;'+str(it)] 2544 2551 if it: 2545 sumTwFr += hapData['Twins'][it][1] [0]2552 sumTwFr += hapData['Twins'][it][1] 2546 2553 it += 1 2547 2554 except KeyError: -
trunk/GSASIIstrMath.py
r1890 r1891 975 975 fbx = np.array([fot*cosp,-fotp*sinp]) 976 976 #sum below is over Uniq 977 dfadfr = np.sum(fa/occ,axis=-2) #Fdata != 0 everavoids /0. problem977 dfadfr = np.sum(fa/occ,axis=-2) #Fdata != 0 avoids /0. problem 978 978 dfadba = np.sum(-cosp*Tcorr[:,np.newaxis],axis=1) 979 979 dfadui = np.sum(-SQfactor*fa,axis=-2) … … 985 985 dfadua = np.sum(-Hij*np.swapaxes(fa,-2,-1)[:,:,:,np.newaxis],axis=-2) 986 986 if not SGData['SGInv']: 987 dfbdfr = np.sum(fb/occ,axis=-2) #Fdata != 0 everavoids /0. problem987 dfbdfr = np.sum(fb/occ,axis=-2) #Fdata != 0 avoids /0. problem 988 988 dfbdba = np.sum(-sinp*Tcorr[:,np.newaxis],axis=1) 989 989 dfadfl = np.sum(-FPP*Tcorr*sinp) … … 1018 1018 SB = fbs[0]+fas[1] 1019 1019 if nTwin > 1: 1020 dFdfr[iref] = [ 2.*SA[it]*(dfadfr[0][it]+dfbdfr[1][it])*Mdata/len(Uniq[it])+ \1021 2.*SB[it]*(dfbdfr[0][it]+dfadfr[1][it])*Mdata/len(Uniq[it]) for it in range(nTwin)]1022 dFdx[iref] = [ 2.*SA[it]*(dfadx[it][0]+dfbdx[it][1])+2.*SB[it]*(dfbdx[it][0]+dfadx[it][1]) for it in range(nTwin)]1023 dFdui[iref] = [ 2.*SA[it]*(dfadui[0][it]+dfbdui[1][it])+2.*SB[it]*(dfbdui[0][it]+dfadui[1][it]) for it in range(nTwin)]1024 dFdua[iref] = [ 2.*SA[it]*(dfadua[it][0]+dfbdua[it][1])+2.*SB[it]*(dfbdua[it][0]+dfadua[it][1]) for it in range(nTwin)]1020 dFdfr[iref] = [SA[it]*(dfadfr[0][it]+dfbdfr[1][it])*Mdata/len(Uniq[it])+ \ 1021 SB[it]*(dfbdfr[0][it]+dfadfr[1][it])*Mdata/len(Uniq[it]) for it in range(nTwin)] 1022 dFdx[iref] = [SA[it]*(dfadx[it][0]+dfbdx[it][1])+SB[it]*(dfbdx[it][0]+dfadx[it][1]) for it in range(nTwin)] 1023 dFdui[iref] = [SA[it]*(dfadui[0][it]+dfbdui[1][it])+SB[it]*(dfbdui[0][it]+dfadui[1][it]) for it in range(nTwin)] 1024 dFdua[iref] = [SA[it]*(dfadua[it][0]+dfbdua[it][1])+SB[it]*(dfbdua[it][0]+dfadua[it][1]) for it in range(nTwin)] 1025 1025 dFdfl[iref] = -SA*dfadfl-SB*dfbdfl 1026 1026 dFdtw[iref] = 2.*SA+2.*SB … … 1037 1037 #loop over atoms - each dict entry is list of derivatives for all the reflections 1038 1038 if nTwin > 1: 1039 for i in range(len(Mdata)): 1039 for i in range(len(Mdata)): #these all OK? 1040 1040 dFdvDict[pfx+'Afrac:'+str(i)] = np.sum(dFdfr.T[i]*TwinFr[:,np.newaxis],axis=0) 1041 dFdvDict[pfx+'dAx:'+str(i)] = np.sum(dFdx.T[0][i]*TwinFr[:,np.newaxis],axis=0) 1042 dFdvDict[pfx+'dAy:'+str(i)] = np.sum(dFdx.T[1][i]*TwinFr[:,np.newaxis],axis=0) 1043 dFdvDict[pfx+'dAz:'+str(i)] = np.sum(dFdx.T[2][i]*TwinFr[:,np.newaxis],axis=0) 1044 dFdvDict[pfx+'AUiso:'+str(i)] = np.sum(dFdui.T[i]*TwinFr[:,np.newaxis],axis=0) 1045 dFdvDict[pfx+'AU11:'+str(i)] = np.sum(dFdua.T[0][i]*TwinFr[:,np.newaxis],axis=0) 1046 dFdvDict[pfx+'AU22:'+str(i)] = np.sum(dFdua.T[1][i]*TwinFr[:,np.newaxis],axis=0) 1047 dFdvDict[pfx+'AU33:'+str(i)] = np.sum(dFdua.T[2][i]*TwinFr[:,np.newaxis],axis=0) 1048 dFdvDict[pfx+'AU12:'+str(i)] = np.sum(0.5*dFdua.T[3][i]*TwinFr[:,np.newaxis],axis=0) 1049 dFdvDict[pfx+'AU13:'+str(i)] = np.sum(0.5*dFdua.T[4][i]*TwinFr[:,np.newaxis],axis=0) 1050 dFdvDict[pfx+'AU23:'+str(i)] = np.sum(0.5*dFdua.T[5][i]*TwinFr[:,np.newaxis],axis=0) 1051 dFdvDict[phfx+'Flack'] = 4.*np.sum(dFdfl.T*TwinFr[:,np.newaxis],axis=0)1041 dFdvDict[pfx+'dAx:'+str(i)] = np.sum(dFdx.T[0][i]*TwinFr[:,np.newaxis],axis=0)/2. 1042 dFdvDict[pfx+'dAy:'+str(i)] = np.sum(dFdx.T[1][i]*TwinFr[:,np.newaxis],axis=0)/2. 1043 dFdvDict[pfx+'dAz:'+str(i)] = np.sum(dFdx.T[2][i]*TwinFr[:,np.newaxis],axis=0)/2. 1044 dFdvDict[pfx+'AUiso:'+str(i)] = np.sum(dFdui.T[i]*TwinFr[:,np.newaxis],axis=0)/2. 1045 dFdvDict[pfx+'AU11:'+str(i)] = np.sum(dFdua.T[0][i]*TwinFr[:,np.newaxis],axis=0)/2. 1046 dFdvDict[pfx+'AU22:'+str(i)] = np.sum(dFdua.T[1][i]*TwinFr[:,np.newaxis],axis=0)/2. 1047 dFdvDict[pfx+'AU33:'+str(i)] = np.sum(dFdua.T[2][i]*TwinFr[:,np.newaxis],axis=0)/2. 1048 dFdvDict[pfx+'AU12:'+str(i)] = np.sum(0.5*dFdua.T[3][i]*TwinFr[:,np.newaxis],axis=0)/2. 1049 dFdvDict[pfx+'AU13:'+str(i)] = np.sum(0.5*dFdua.T[4][i]*TwinFr[:,np.newaxis],axis=0)/2. 1050 dFdvDict[pfx+'AU23:'+str(i)] = np.sum(0.5*dFdua.T[5][i]*TwinFr[:,np.newaxis],axis=0)/2. 1051 dFdvDict[phfx+'Flack'] = np.sum(dFdfl*TwinFr,axis=1) #? 1052 1052 else: 1053 1053 for i in range(len(Mdata)):
Note: See TracChangeset
for help on using the changeset viewer.