Changeset 2006 for trunk/GSASIImath.py


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

minor work on SS structure factors

File:
1 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)
Note: See TracChangeset for help on using the changeset viewer.