Changeset 2006
- Timestamp:
- Oct 15, 2015 3:29:26 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIImath.py
r2005 r2006 926 926 ################################################################################ 927 927 928 def Modulation(waveTypes,H, FSSdata,XSSdata,USSdata,Mast):928 def Modulation(waveTypes,H,Phi,FSSdata,XSSdata,USSdata,Mast): 929 929 ''' 930 930 H: array nRefBlk x ops X hklt … … 941 941 Af = np.array(FSSdata[0]).T #sin frac mods x waves x atoms 942 942 Bf = np.array(FSSdata[1]).T #cos frac mods... 943 Au = Mast*np.array(G2lat.U6toUij(USSdata[:6])).T #atoms x waves x sin Uij mods 944 Bu = Mast*np.array(G2lat.U6toUij(USSdata[6:])).T #...cos Uij mods 943 Au = Mast*np.array(G2lat.U6toUij(USSdata[:6])).T #atoms x waves x sin Uij mods as betaij 944 Bu = Mast*np.array(G2lat.U6toUij(USSdata[6:])).T #...cos Uij mods as betaij 945 945 946 946 if 'Fourier' in waveTypes: … … 966 966 Fmod = 1.0 967 967 tauX = np.arange(1.,Ax.shape[1]+1-nx)[:,nxs]*glTau #Xwaves x 32 968 XmodA = Ax[:,nx:,:,nxs]*np.sin(twopi*tauX[nxs,:,nxs,:]) #atoms X waves X posX 32968 XmodA = Ax[:,nx:,:,nxs]*np.sin(twopi*tauX[nxs,:,nxs,:]) #atoms X waves X 3 X 32 969 969 XmodB = Bx[:,nx:,:,nxs]*np.cos(twopi*tauX[nxs,:,nxs,:]) #ditto 970 Xmod = np.sum(XmodA+XmodB+XmodZ,axis=1) #atoms X pos X 32; sum waves 970 Xmod = np.sum(XmodA+XmodB+XmodZ,axis=1) #atoms X 3 X 32; sum waves 971 Tau = np.reshape(np.tile(glTau,Xmod.shape[0]),(Xmod.shape[0],-1)) #atoms x 32 972 XmodT = np.swapaxes(np.concatenate((Xmod,Tau[:,nxs,:]),axis=1),1,2) # atoms x 32 x 4 (x,y,z,t) 971 973 if Au.shape[1]: 972 974 tauU = np.arange(1.,Au.shape[1]+1)[:,nxs]*glTau #Uwaves x 32 … … 977 979 else: 978 980 HbH = 1.0 979 D = H[:,:,3][:,:,nxs]*glTau[nxs,nxs,:] #m*tau;refBlk x ops X 32 980 HdotX = np.inner(H[:,:,:3],np.swapaxes(Xmod,1,2))+D[:,:,nxs,:] #refBlk X ops x atoms X 32 981 HdotX = np.inner(H,XmodT) #refBlk X ops x atoms X 32 981 982 cosHA = np.sum(Fmod*HbH*np.cos(twopi*HdotX)*glWt,axis=-1) #real part; refBlk X ops x atoms; sum for G-L integration 982 983 sinHA = np.sum(Fmod*HbH*np.sin(twopi*HdotX)*glWt,axis=-1) #imag part; ditto … … 984 985 return np.array([cosHA,sinHA]) # 2 x refBlk x SGops x atoms 985 986 986 def ModulationDerv(waveTypes,H, Hij,FSSdata,XSSdata,USSdata,Mast):987 def ModulationDerv(waveTypes,H,Phi,Hij,FSSdata,XSSdata,USSdata,Mast): 987 988 ''' 988 989 H: array ops X hklt … … 995 996 nxs = np.newaxis 996 997 numeric = False 997 cosHA,sinHA = Modulation(waveTypes,np.array([H,]), FSSdata,XSSdata,USSdata,Mast)998 cosHA,sinHA = Modulation(waveTypes,np.array([H,]),np.array([Phi,]),FSSdata,XSSdata,USSdata,Mast) 998 999 Mf = [H.shape[0],]+list(FSSdata.T.shape) #ops x atoms x waves x 2 (sin+cos frac mods) 999 1000 dGdMfC = np.zeros(Mf) -
trunk/GSASIIstrMath.py
r2005 r2006 1066 1066 fa = np.array([np.reshape(((FF+FP).T-Bab).T,cosp.shape)*cosp*Tcorr,-Flack*FPP*sinp*Tcorr]) 1067 1067 fb = np.array([Flack*FPP*cosp*Tcorr,np.reshape(((FF+FP).T-Bab).T,sinp.shape)*sinp*Tcorr]) 1068 GfpuA = G2mth.Modulation(waveTypes,Uniq, FSSdata,XSSdata,USSdata,Mast) #2 x refBlk x sym X atoms1069 fag = fa*GfpuA[0]-fb*GfpuA[1] 1068 GfpuA = G2mth.Modulation(waveTypes,Uniq,Phi,FSSdata,XSSdata,USSdata,Mast) #2 x refBlk x sym X atoms 1069 fag = fa*GfpuA[0]-fb*GfpuA[1] #real; 2 x refBlk x sym x atoms 1070 1070 fbg = fb*GfpuA[0]+fa*GfpuA[1] 1071 fas = np.sum(np.sum(fag,axis=-1),axis=-1) 1071 fas = np.sum(np.sum(fag,axis=-1),axis=-1) #2 x refBlk; sum sym & atoms 1072 1072 fbs = np.sum(np.sum(fbg,axis=-1),axis=-1) 1073 #GSASIIpath.IPyBreak()1073 # GSASIIpath.IPyBreak() 1074 1074 if 'P' in calcControls[hfx+'histType']: 1075 1075 refl.T[10] = np.sum(fas**2,axis=0)+np.sum(fbs**2,axis=0) … … 1082 1082 refl.T[11] = atan2d(fbs[0].T[0],fas[0].T[0]) #ignore f' & f" 1083 1083 else: 1084 refl.T[10] = np.sum(fas**2,axis=0)+np.sum(fbs**2,axis=0) 1084 refl.T[10] = np.sum(fas**2,axis=0)+np.sum(fbs**2,axis=0) #sum of squares 1085 1085 refl.T[8] = np.copy(refl.T[10]) 1086 1086 refl.T[11] = atan2d(fbs[0],fas[0]) #ignore f' & f" … … 1197 1197 fot = (FF+FP-Bab)*Tcorr #ops x atoms 1198 1198 fotp = FPP*Tcorr #ops x atoms 1199 GfpuA,dGdf,dGdx,dGdu = G2mth.ModulationDerv(waveTypes,Uniq, Hij,FSSdata,XSSdata,USSdata,Mast)1199 GfpuA,dGdf,dGdx,dGdu = G2mth.ModulationDerv(waveTypes,Uniq,Phi,Hij,FSSdata,XSSdata,USSdata,Mast) 1200 1200 # derivs are: ops x atoms x waves x 1,3,or 6 parms as [real,imag] parts 1201 1201 fa = np.array([((FF+FP).T-Bab).T*cosp*Tcorr,-Flack*FPP*sinp*Tcorr]) # array(2,nTwin,nEqv,nAtoms)
Note: See TracChangeset
for help on using the changeset viewer.