Changeset 1976


Ignore:
Timestamp:
Sep 23, 2015 12:23:50 PM (6 years ago)
Author:
vondreele
Message:

fix bug in plotting 3D HKLs
SS str. Fctr. mods - add site fraction & Uij modulation math

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r1974 r1976  
    924924################################################################################
    925925   
    926 def Modulation(waveTypes,SSUniq,SGT,FSSdata,XSSdata,USSdata,SStauM,Mast):
     926def Modulation(waveTypes,SSUniq,SGT,FSSdata,XSSdata,USSdata,Mast):
    927927    import pypowder as pwd
    928928   
     
    937937        S: array ops
    938938        '''
    939         nx = 1
    940939        if 'Fourier' in waveTypes:
     940            nf = 0
    941941            nx = 0
    942942            XmodZ = 0
     943            FmodZ = 0
     944            if 'Crenel' in waveTypes:
     945                nf = 1
     946                FmodC = 0   #replace
    943947        else:
    944948            nx = 1
    945949            if 'Sawtooth' in waveTypes:
    946                 XmodZ = 0
     950                XmodZ = 0   #replace
    947951            else:
    948                 XmodZ = 0
    949         tau = np.arange(1.,Ax.shape[1]+1-nx)[:,nxs]*glTau #waves x 32
    950         XmodA = Ax[:,nx:,:,nxs]*np.sin(twopi*tau[nxs,:,nxs,:]) #atoms X waves X pos X 32
    951         XmodB = Bx[:,nx:,:,nxs]*np.cos(twopi*tau[nxs,:,nxs,:]) #atoms X waves X pos  X 32
    952         Xmod = np.sum(XmodA+XmodB+XmodZ,axis=1)                    #atoms X pos X 32; sum waves
    953         D = H[:,3][:,nxs]*(glTau[nxs,:]+S[:,nxs])                                     #m*tau; ops X 32
    954         HdotX = np.inner(np.swapaxes(Xmod,1,2),H[:,:3])+D.T[nxs,:,:]         #atoms X 32 X ops
    955         sinHA = np.sum(np.sin(twopi*HdotX)*glWt[nxs,:,nxs],axis=1)              #atoms X ops
    956         cosHA = np.sum(np.cos(twopi*HdotX)*glWt[nxs,:,nxs],axis=1)
    957 #        GSASIIpath.IPyBreak()     
    958            
     952                XmodZ = 0   #replace (use?)
     953        if Af.shape[1]:
     954            tauF = np.arange(1.,Af.shape[1]+1-nf)[:,nxs]*glTau  #Fwaves x 32
     955            FmodA = Af[:,nf:,nxs]*np.sin(twopi*tauF[nxs,:,:])
     956            FmodB = Bf[:,nf:,nxs]*np.cos(twopi*tauF[nxs,:,:])
     957            Fmod = np.sum(FmodA+FmodB+FmodC,axis=1)
     958        else:
     959            Fmod = 1.0           
     960        if Ax.shape[1]:
     961            tauX = np.arange(1.,Ax.shape[1]+1-nx)[:,nxs]*glTau  #Xwaves x 32
     962            XmodA = Ax[:,nx:,:,nxs]*np.sin(twopi*tauX[nxs,:,nxs,:]) #atoms X waves X pos X 32
     963            XmodB = Bx[:,nx:,:,nxs]*np.cos(twopi*tauX[nxs,:,nxs,:]) #ditto
     964            Xmod = np.sum(XmodA+XmodB+XmodZ,axis=1)                #atoms X pos X 32; sum waves
     965        if Au.shape[1]:
     966            tauU = np.arange(1.,Au.shape[1]+1)[:,nxs]*glTau     #Uwaves x 32
     967            UmodA = Au[:,:,:,:,nxs]*np.sin(twopi*tauU[nxs,:,nxs,nxs,:]) #atoms x waves x 3x3 x 32
     968            UmodB = Bu[:,:,:,:,nxs]*np.cos(twopi*tauU[nxs,:,nxs,nxs,:]) #ditto
     969            Umod = np.swapaxes(np.sum(UmodA+UmodB,axis=1),1,3)      #atoms x 3x3 x 32; sum waves
     970            HbH = np.exp(np.swapaxes(np.array([-np.inner(h,np.inner(Umod,h)) for h in H[:,:3]]),1,2)).T #Overhauser corr.?
     971        else:
     972            HbH = 1.0
     973        D = H[:,3][:,nxs]*(glTau[nxs,:]+S[:,nxs])              #m*tau; ops X 32
     974        HdotX = np.inner(np.swapaxes(Xmod,1,2),H[:,:3])+D.T[nxs,:,:]     #atoms X 32 X ops
     975        sinHA = np.sum(Fmod*HbH*np.sin(twopi*HdotX)*glWt[nxs,:,nxs],axis=1)       #atoms X ops; sum for G-L integration
     976        cosHA = np.sum(Fmod*HbH*np.cos(twopi*HdotX)*glWt[nxs,:,nxs],axis=1)       #ditto
     977        GSASIIpath.IPyBreak()                 
    959978        return cosHA.T,sinHA.T      #ops X atoms
    960979
    961     Smult,TauT = SStauM             # both atoms x SGops
    962980    Ax = np.array(XSSdata[:3]).T   #atoms x waves x sin pos mods
    963981    Bx = np.array(XSSdata[3:]).T   #...cos pos mods
  • trunk/GSASIIplot.py

    r1973 r1976  
    601601                    A = np.arccos(np.sum(V1*V0))
    602602                    Q = G2mth.AV2Q(-A,viewChoice[key][2])
     603                G2frame.G2plotNB.status.SetStatusText('zone = %s'%(str(viewChoice[key][0])),1)
    603604            else:
    604605                V0 = np.array(viewChoice[key][0])
     
    914915            Zclip = 0.1
    915916        Q = drawingData['Quaternion']
    916         Tx,Ty,Tz = drawingData['viewPoint'][0]
     917        Tx,Ty,Tz = drawingData['viewPoint'][0][:3]
    917918        G,g = G2lat.cell2Gmat(cell)
    918919        GS = G
  • trunk/GSASIIstrMath.py

    r1973 r1976  
    10361036            SSPhi = np.hstack((SSPhi,-SSPhi))
    10371037#        GSASIIpath.IPyBreak()
    1038         GfpuA = G2mth.Modulation(waveTypes,SSUniq,SST,FSSdata,XSSdata,USSdata,SStauM,Mast)
     1038        GfpuA = G2mth.Modulation(waveTypes,SSUniq,SST,FSSdata,XSSdata,USSdata,Mast)
    10391039        phase = twopi*(np.inner(Uniq,(dXdata.T+Xdata.T))+Phi[:,np.newaxis])
    10401040        sinp = np.sin(phase)
Note: See TracChangeset for help on using the changeset viewer.