Ignore:
Timestamp:
Sep 6, 2019 3:35:55 PM (3 years ago)
Author:
vondreele
Message:

more mag. str. fctr. stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstrMath.py

    r4138 r4139  
    14821482    phfx = pfx.split(':')[0]+hfx
    14831483    ast = np.sqrt(np.diag(G))
    1484 #    GS = G/np.outer(ast,ast)
    1485 #    uAmat = G2lat.Gmat2AB(GS)[0]
     1484    g = nl.inv(G)
     1485    ainv = np.sqrt(np.diag(g))
     1486    GS = G/np.outer(ast,ast)
     1487    uAmat = G2lat.Gmat2AB(GS)[0]
     1488    Ginv = g/np.outer(ainv,ainv)
    14861489    Mast = twopisq*np.multiply.outer(ast,ast)   
    14871490    SGInv = SGData['SGInv']
    14881491    SGMT = np.array([ops[0].T for ops in SGData['SGOps']])
    1489     Ncen = len(SGData['SGCen'])
     1492#    Ncen = len(SGData['SGCen'])
    14901493    Nops = len(SGMT)*(1+SGData['SGInv'])
    14911494    SSGMT = np.array([ops[0].T for ops in SSGData['SSGOps']])
     
    15111514        mXYZ = np.array([[xyz[0] for xyz in list(G2spc.GenAtom(xyz,SGData,All=True,Move=True))] for xyz in (Xdata+dXdata).T])%1. #Natn,Nop,xyz
    15121515        MmodA,MmodB = G2mth.MagMod(glTau,mXYZ,modQ,MSSdata,SGData,SSGData)  #Ntau,Nops,Natm,Mxyz sum matches drawing
     1516        Mmod = MmodA+MmodB
    15131517       
    15141518        if not SGData['SGGray']:    #for fixed Mx,My,Mz
     
    15191523            GSdata = SGData['MagMom'][nxs,:,nxs]*GSdata   #flip vectors according to spin flip * det(opM)
    15201524            GSdata = np.swapaxes(GSdata,0,1)    #Nop,Natm,Mxyz
     1525            Mmod += GSdata[nxs,:,:,:]
     1526           
     1527        Mag = np.array([np.sqrt(np.inner(mag,np.inner(mag,Ginv))) for mag in Mmod])     #Ntau,Nop,Natm
     1528        Kdata = np.inner(Mmod,uAmat)     #Cartesian vectors; Mxyz,Natm,Nop,Ntau
     1529        Kmean = np.sqrt(np.sum(Kdata**2,axis=-1))
     1530        Kdata /= Kmean[:,:,:,nxs]      #Ntau,Nop,Natm,Mxyz
     1531
    15211532
    15221533    FF = np.zeros(len(Tdata))
     
    15951606#                     
    15961607            HM = np.inner(Bmat,HP.T)                            #put into cartesian space
    1597             eM = HM/np.sqrt(np.sum(HM**2,axis=0))               #& normalize
    1598 #for fixed moments --> m=0 reflections
     1608            eM = HM/np.sqrt(np.sum(HM**2,axis=0)).T               #& normalize; Nref,Mhkl
     1609            eDotK = np.sum(eM[:,nxs,nxs,:]*Kdata[:,nxs,:,:],axis=0)
     1610           
    15991611            fam0 = 0.
    16001612            fbm0 = 0.
     
    16111623           
    16121624            if not SGData['SGGray']:
    1613                 fams *= 0.5
    1614                 fbms *= 0.5
     1625                fams *= .5
     1626                fbms *= .5
    16151627                fams += fam0[:,nxs,:,:,:]
    16161628                fbms += fbm0[:,nxs,:,:,:]
    1617                        
     1629               
     1630#   do GL integral before making mag F's - less correct; gives F's where there shouldn't be any                     
     1631           
     1632            faqs = np.sum(fams**2,axis=-1)*(1.-eDotK**2)      #mag intensity calc F^2-(e.F)^2
     1633            fbqs = np.sum(fbms**2,axis=-1)*(1.-eDotK**2)
     1634           
     1635            fass = np.sum(glWt[nxs,:,nxs,nxs]*faqs,axis=1)         #GL integration
     1636            fbss = np.sum(glWt[nxs,:,nxs,nxs]*fbqs,axis=1)
     1637           
     1638            fas = np.sum(np.sum(fass,axis=-1),axis=-1)      #Nref,Ntau,Mxyz; sum ops & atoms
     1639            fbs = np.sum(np.sum(fbss,axis=-1),axis=-1)
     1640
     1641# do GL integral after making mag. F's - better but not right               
    16181642            famqs = np.sum(np.sum(fams,axis=-2),axis=-2)      #Nref,Ntau,Mxyz; sum ops & atoms
    16191643            fbmqs = np.sum(np.sum(fbms,axis=-2),axis=-2)
     
    16311655            fbss = np.sum(fbmqs**2,axis=-1)*(1.-np.sum(eM.T[:,nxs,:]*fbmcs,axis=-1)**2)
    16321656           
    1633             fas = np.sum(glWt*fass,axis=1)
     1657            fas = np.sum(glWt*fass,axis=1)          #GL integration
    16341658            fbs = np.sum(glWt*fbss,axis=1)
    16351659           
Note: See TracChangeset for help on using the changeset viewer.