Changeset 2006


Ignore:
Timestamp:
Oct 15, 2015 3:29:26 PM (6 years ago)
Author:
vondreele
Message:

minor work on SS structure factors

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r2005 r2006  
    926926################################################################################
    927927   
    928 def Modulation(waveTypes,H,FSSdata,XSSdata,USSdata,Mast):
     928def Modulation(waveTypes,H,Phi,FSSdata,XSSdata,USSdata,Mast):
    929929    '''
    930930    H: array nRefBlk x ops X hklt
     
    941941    Af = np.array(FSSdata[0]).T    #sin frac mods x waves x atoms
    942942    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
    945945   
    946946    if 'Fourier' in waveTypes:
     
    966966        Fmod = 1.0           
    967967    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 pos X 32
     968    XmodA = Ax[:,nx:,:,nxs]*np.sin(twopi*tauX[nxs,:,nxs,:]) #atoms X waves X 3 X 32
    969969    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)
    971973    if Au.shape[1]:
    972974        tauU = np.arange(1.,Au.shape[1]+1)[:,nxs]*glTau     #Uwaves x 32
     
    977979    else:
    978980        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
    981982    cosHA = np.sum(Fmod*HbH*np.cos(twopi*HdotX)*glWt,axis=-1)       #real part; refBlk X ops x atoms; sum for G-L integration
    982983    sinHA = np.sum(Fmod*HbH*np.sin(twopi*HdotX)*glWt,axis=-1)       #imag part; ditto
     
    984985    return np.array([cosHA,sinHA])             # 2 x refBlk x SGops x atoms
    985986   
    986 def ModulationDerv(waveTypes,H,Hij,FSSdata,XSSdata,USSdata,Mast):
     987def ModulationDerv(waveTypes,H,Phi,Hij,FSSdata,XSSdata,USSdata,Mast):
    987988    '''
    988989    H: array ops X hklt
     
    995996    nxs = np.newaxis
    996997    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)
    998999    Mf = [H.shape[0],]+list(FSSdata.T.shape)    #ops x atoms x waves x 2 (sin+cos frac mods)
    9991000    dGdMfC = np.zeros(Mf)
  • trunk/GSASIIstrMath.py

    r2005 r2006  
    10661066            fa = np.array([np.reshape(((FF+FP).T-Bab).T,cosp.shape)*cosp*Tcorr,-Flack*FPP*sinp*Tcorr])
    10671067            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 atoms
    1069         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
    10701070        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
    10721072        fbs = np.sum(np.sum(fbg,axis=-1),axis=-1)
    1073 #        GSASIIpath.IPyBreak()
     1073   #     GSASIIpath.IPyBreak()
    10741074        if 'P' in calcControls[hfx+'histType']:
    10751075            refl.T[10] = np.sum(fas**2,axis=0)+np.sum(fbs**2,axis=0)
     
    10821082                refl.T[11] = atan2d(fbs[0].T[0],fas[0].T[0])  #ignore f' & f"
    10831083            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
    10851085                refl.T[8] = np.copy(refl.T[10])               
    10861086                refl.T[11] = atan2d(fbs[0],fas[0])  #ignore f' & f"
     
    11971197        fot = (FF+FP-Bab)*Tcorr     #ops x atoms
    11981198        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)
    12001200        # derivs are: ops x atoms x waves x 1,3,or 6 parms as [real,imag] parts
    12011201        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.