Changeset 2061
- Timestamp:
- Nov 19, 2015 9:15:05 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r2056 r2061 3139 3139 file.write('#wavelength = %10.6f\n'%(wave)) 3140 3140 if 'T' in Type: 3141 file.write('#% 10s %12s %10s %10s %10s %10s %10s\n'%('pos','int','alp','bet','sig','gam','FWHM'))3141 file.write('#%9s %10s %12s %10s %10s %10s %10s %10s\n'%('pos','dsp','int','alp','bet','sig','gam','FWHM')) 3142 3142 else: 3143 file.write('#% 10s %12s %10s %10s %10s\n'%('pos','int','sig','gam','FWHM'))3143 file.write('#%9s %10s %12s %10s %10s %10s\n'%('pos','dsp','int','sig','gam','FWHM')) 3144 3144 for peak in peaks: 3145 dsp = G2lat.Pos2dsp(Inst,peak[0]) 3145 3146 if 'T' in Type: #TOF - more cols 3146 3147 FWHM = 2.*G2pwd.getgamFW(peak[10],peak[8]) #to get delta-TOF from Gam(peak) 3147 file.write("%10. 5f %12.2f %10.3f %10.3f %10.3f %10.3f %10.3f\n" % \3148 (peak[0], peak[2],np.sqrt(max(0.0001,peak[4])),peak[6],peak[8],peak[10],FWHM))3148 file.write("%10.2f %10.5f %12.2f %10.3f %10.3f %10.3f %10.3f %10.3f\n" % \ 3149 (peak[0],dsp,peak[2],np.sqrt(max(0.0001,peak[4])),peak[6],peak[8],peak[10],FWHM)) 3149 3150 else: #CW 3150 3151 FWHM = 2.*G2pwd.getgamFW(peak[6],peak[4]) #to get delta-2-theta in deg. from Gam(peak) 3151 file.write("%10. 5f %12.2f %10.5f %10.5f %10.5f \n" % \3152 (peak[0], peak[2],np.sqrt(max(0.0001,peak[4]))/100.,peak[6]/100.,FWHM/100.)) #convert to deg3152 file.write("%10.3f %10.5f %12.2f %10.5f %10.5f %10.5f \n" % \ 3153 (peak[0],dsp,peak[2],np.sqrt(max(0.0001,peak[4]))/100.,peak[6]/100.,FWHM/100.)) #convert to deg 3153 3154 item, cookie = self.PatternTree.GetNextChild(self.root, cookie) 3154 3155 file.close() -
trunk/GSASIImath.py
r2060 r2061 980 980 else: 981 981 HbH = 1.0 982 D = twopi*H[:,:,3:]*glTau[nxs,nxs,:] #m*e*tau; refBlk x ops X 32983 HdotX = twopi*np.inner(HP,Xmod) #refBlk x ops x atoms X 32984 HdotXD = HdotX+D[:,:,nxs,:]982 D = H[:,:,3:]*glTau[nxs,nxs,:] #m*e*tau; refBlk x ops X 32 983 HdotX = np.inner(HP,Xmod) #refBlk x ops x atoms X 32 984 HdotXD = twopi*(HdotX+D[:,:,nxs,:]) 985 985 cosHA = np.sum(Fmod*HbH*np.cos(HdotXD)*glWt,axis=-1) #real part; refBlk X ops x atoms; sum for G-L integration 986 986 sinHA = np.sum(Fmod*HbH*np.sin(HdotXD)*glWt,axis=-1) #imag part; ditto … … 993 993 HP: array nRefBlk x ops X hklt proj to hkl 994 994 FSSdata: array 2 x atoms x waves (sin,cos terms) 995 Hij: array 3x3995 Hij: array 2pi^2[a*^2h^2 b*^2k^2 c*^2l^2 a*b*hk a*c*hl b*c*kl] of projected hklm to hkl space 996 996 XSSdata: array 2x3 x atoms X waves (sin,cos terms) 997 997 USSdata: array 2x6 x atoms X waves (sin,cos terms) … … 1043 1043 HdotX = twopi*np.inner(HP,Xmod) #ops x atoms X 32 1044 1044 HdotXD = HdotX+D[:,nxs,:] 1045 # HdotXA = twopi*HP[:,nxs,nxs,nxs,:]*np.swapaxes(XmodA,-1,-2)[nxs,:,:,:,:]+D[:,nxs,nxs,:,nxs] #ops x atoms x waves x 32 x xyz1046 # HdotXB = twopi*HP[:,nxs,nxs,nxs,:]*np.swapaxes(XmodB,-1,-2)[nxs,:,:,:,:]+D[:,nxs,nxs,:,nxs]1047 1045 if Af.shape[1]: 1048 1046 tauF = np.arange(1.,Af.shape[1]+1-nf)[:,nxs]*glTau #Fwaves x 32 … … 1056 1054 if Au.shape[1]: 1057 1055 tauU = np.arange(1.,Au.shape[1]+1)[:,nxs]*glTau #Uwaves x 32 1058 StauU = np.ones_like(Au)[:,:,:,:,nxs]*np.sin(twopi*tauU)[nxs,:,nxs,nxs,:] #also dUmod /dAu1059 CtauU = np.ones_like(Bu)[:,:,:,:,nxs]*np.cos(twopi*tauU)[nxs,:,nxs,nxs,:] #also dUmod /dBu1056 StauU = np.ones_like(Au)[:,:,:,:,nxs]*np.sin(twopi*tauU)[nxs,:,nxs,nxs,:] #also dUmodA/dAu 1057 CtauU = np.ones_like(Bu)[:,:,:,:,nxs]*np.cos(twopi*tauU)[nxs,:,nxs,nxs,:] #also dUmodB/dBu 1060 1058 UmodA = Au[:,:,:,:,nxs]*StauU #atoms x waves x 3x3 x 32 1061 1059 UmodB = Bu[:,:,:,:,nxs]*CtauU #ditto 1062 1060 Umod = np.swapaxes((UmodA+UmodB),2,4) #atoms x waves x 32 x 3x3 (symmetric so I can do this!) 1063 1061 HuH = np.sum(HP[:,nxs,nxs,nxs]*np.inner(HP,Umod),axis=-1) #ops x atoms x waves x 32 1064 HbH = np.exp(-np.sum(HuH,axis=-2)) # ops x atoms x 32; sum waves 1062 HbH = np.exp(-np.sum(HuH,axis=-2)) # ops x atoms x 32; sum waves - OK vs Modulation version 1065 1063 #derivs need to be ops x atoms x waves x 6uij; ops x atoms x waves x 32 x 6uij before sum 1066 1064 StauU = np.rollaxis(np.rollaxis(np.swapaxes(StauU,2,4),-1),-1) 1067 1065 CtauU = np.rollaxis(np.rollaxis(np.swapaxes(CtauU,2,4),-1),-1) 1068 dUdAu = Hij[:,nxs,nxs,nxs,:]*np.rollaxis(G2lat.UijtoU6(StauU),0,4)[nxs,:,:,:,:] #ops x atoms x waves x 32 x 6 Uij1069 dUdBu = Hij[:,nxs,nxs,nxs,:]*np.rollaxis(G2lat.UijtoU6(CtauU),0,4)[nxs,:,:,:,:] #ops x atoms x waves x 32 x 6 Uij1070 part1 = - HuH*np.exp(-HuH)*Fmod[:,:,nxs,:] #ops x atoms x waves x 321066 dUdAu = Hij[:,nxs,nxs,nxs,:]*np.rollaxis(G2lat.UijtoU6(StauU),0,4)[nxs,:,:,:,:] #ops x atoms x waves x 32 x 6sinUij 1067 dUdBu = Hij[:,nxs,nxs,nxs,:]*np.rollaxis(G2lat.UijtoU6(CtauU),0,4)[nxs,:,:,:,:] #ops x atoms x waves x 32 x 6cosUij 1068 part1 = -np.exp(-HuH)*Fmod[:,:,nxs,:] #ops x atoms x waves x 32 1071 1069 dGdMuCa = np.sum(part1[:,:,:,:,nxs]*dUdAu*np.cos(HdotXD)[:,:,nxs,:,nxs]*glWt[nxs,nxs,nxs,:,nxs],axis=-2) #ops x atoms x waves x 6uij; G-L sum 1072 1070 dGdMuCb = np.sum(part1[:,:,:,:,nxs]*dUdBu*np.cos(HdotXD)[:,:,nxs,:,nxs]*glWt[nxs,nxs,nxs,:,nxs],axis=-2) 1073 dGdMuC = np.concatenate((dGdMuCa,dGdMuCb),axis=-1) #ops x atoms x waves x 12uij ; G-L sum1071 dGdMuC = np.concatenate((dGdMuCa,dGdMuCb),axis=-1) #ops x atoms x waves x 12uij 1074 1072 dGdMuSa = np.sum(part1[:,:,:,:,nxs]*dUdAu*np.sin(HdotXD)[:,:,nxs,:,nxs]*glWt[nxs,nxs,nxs,:,nxs],axis=-2) #ops x atoms x waves x 6uij; G-L sum 1075 1073 dGdMuSb = np.sum(part1[:,:,:,:,nxs]*dUdBu*np.sin(HdotXD)[:,:,nxs,:,nxs]*glWt[nxs,nxs,nxs,:,nxs],axis=-2) 1076 dGdMuS = np.concatenate((dGdMuSa,dGdMuSb),axis=-1) #ops x atoms x waves x 12uij; G-L sum 1074 dGdMuS = np.concatenate((dGdMuSa,dGdMuSb),axis=-1) #ops x atoms x waves x 12uij 1075 # #GSASIIpath.IPyBreak() 1077 1076 else: 1078 1077 HbH = np.ones_like(HdotX) … … 1082 1081 dGdMxCb = -np.sum((Fmod*HbH)[:,:,nxs,:,nxs]*(dHdXB*np.sin(HdotXD)[:,:,nxs,:,nxs])*glWt[nxs,nxs,nxs,:,nxs],axis=-2) 1083 1082 dGdMxC = np.concatenate((dGdMxCa,dGdMxCb),axis=-1) 1084 # ops x atoms x waves x 2xyz - real part 1083 # ops x atoms x waves x 2xyz - real part - good 1085 1084 dGdMxSa = np.sum((Fmod*HbH)[:,:,nxs,:,nxs]*(dHdXA*np.cos(HdotXD)[:,:,nxs,:,nxs])*glWt[nxs,nxs,nxs,:,nxs],axis=-2) 1086 1085 dGdMxSb = np.sum((Fmod*HbH)[:,:,nxs,:,nxs]*(dHdXB*np.cos(HdotXD)[:,:,nxs,:,nxs])*glWt[nxs,nxs,nxs,:,nxs],axis=-2) 1087 1086 dGdMxS = np.concatenate((dGdMxSa,dGdMxSb),axis=-1) 1088 # ops x atoms x waves x 2xyz - imaginary part 1087 # ops x atoms x waves x 2xyz - imaginary part - good 1089 1088 return np.array([cosHA,sinHA]),[dGdMfC,dGdMfS],[dGdMxC,dGdMxS],[dGdMuC,dGdMuS] 1090 1089 -
trunk/GSASIIspc.py
r2025 r2061 2170 2170 def U2Uij(U): 2171 2171 #returns the UIJ vector U11,U22,U33,U12,U13,U23 from tensor U 2172 return [U[0][0],U[1][1],U[2][2], 2.*U[0][1],2.*U[0][2],2.*U[1][2]]2172 return [U[0][0],U[1][1],U[2][2],U[0][1],U[0][2],U[1][2]] 2173 2173 2174 2174 def Uij2U(Uij): 2175 2175 #returns the thermal motion tensor U from Uij as numpy array 2176 return np.array([[Uij[0],Uij[3] /2.,Uij[4]/2.],[Uij[3]/2.,Uij[1],Uij[5]/2.],[Uij[4]/2.,Uij[5]/2.,Uij[2]]])2176 return np.array([[Uij[0],Uij[3],Uij[4]],[Uij[3],Uij[1],Uij[5]],[Uij[4],Uij[5],Uij[2]]]) 2177 2177 2178 2178 def StandardizeSpcName(spcgroup): -
trunk/GSASIIstrMath.py
r2052 r2061 1345 1345 dFdvDict[pfx+'U22sin:'+str(i)+':'+str(j)] = dFdGu.T[1][j][i] 1346 1346 dFdvDict[pfx+'U33sin:'+str(i)+':'+str(j)] = dFdGu.T[2][j][i] 1347 dFdvDict[pfx+'U12sin:'+str(i)+':'+str(j)] = dFdGu.T[3][j][i]1348 dFdvDict[pfx+'U13sin:'+str(i)+':'+str(j)] = dFdGu.T[4][j][i]1349 dFdvDict[pfx+'U23sin:'+str(i)+':'+str(j)] = dFdGu.T[5][j][i]1347 dFdvDict[pfx+'U12sin:'+str(i)+':'+str(j)] = 2.*dFdGu.T[3][j][i] 1348 dFdvDict[pfx+'U13sin:'+str(i)+':'+str(j)] = 2.*dFdGu.T[4][j][i] 1349 dFdvDict[pfx+'U23sin:'+str(i)+':'+str(j)] = 2.*dFdGu.T[5][j][i] 1350 1350 dFdvDict[pfx+'U11cos:'+str(i)+':'+str(j)] = dFdGu.T[6][j][i] 1351 1351 dFdvDict[pfx+'U22cos:'+str(i)+':'+str(j)] = dFdGu.T[7][j][i] 1352 1352 dFdvDict[pfx+'U33cos:'+str(i)+':'+str(j)] = dFdGu.T[8][j][i] 1353 dFdvDict[pfx+'U12cos:'+str(i)+':'+str(j)] = dFdGu.T[9][j][i]1354 dFdvDict[pfx+'U13cos:'+str(i)+':'+str(j)] = dFdGu.T[10][j][i]1355 dFdvDict[pfx+'U23cos:'+str(i)+':'+str(j)] = dFdGu.T[11][j][i]1353 dFdvDict[pfx+'U12cos:'+str(i)+':'+str(j)] = 2.*dFdGu.T[9][j][i] 1354 dFdvDict[pfx+'U13cos:'+str(i)+':'+str(j)] = 2.*dFdGu.T[10][j][i] 1355 dFdvDict[pfx+'U23cos:'+str(i)+':'+str(j)] = 2.*dFdGu.T[11][j][i] 1356 1356 1357 1357 dFdvDict[phfx+'BabA'] = dFdbab.T[0]
Note: See TracChangeset
for help on using the changeset viewer.