Changeset 4145
- Timestamp:
- Sep 13, 2019 1:57:37 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIstrMath.py
r4144 r4145 1051 1051 Gdata = SGData['MagMom'][nxs,:,nxs]*Gdata #flip vectors according to spin flip * det(opM) 1052 1052 Mag = np.tile(Mag[:,nxs],Nops).T #make Mag same length as Gdata 1053 Kdata = np.inner(Gdata.T,uAmat).T #Cartesian unit vectors1053 Kdata = np.inner(Gdata.T,uAmat).T 1054 1054 Kmean = np.mean(np.sqrt(np.sum(Kdata**2,axis=0)),axis=0) 1055 Kdata /= Kmean 1055 Kdata /= Kmean #Cartesian unit vectors 1056 1056 Uij = np.array(G2lat.U6toUij(Uijdata)) 1057 1057 bij = Mast*Uij.T … … 1511 1511 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 1512 1512 MmodA,MmodB = G2mth.MagMod(glTau,mXYZ,modQ,MSSdata,SGData,SSGData) #Ntau,Nops,Natm,Mxyz sum matches drawing 1513 Mmod = MmodA+MmodB 1513 1514 1514 1515 if not SGData['SGGray']: #for fixed Mx,My,Mz … … 1519 1520 GSdata = SGData['MagMom'][nxs,:,nxs]*GSdata #flip vectors according to spin flip * det(opM) 1520 1521 GSdata = np.swapaxes(GSdata,0,1) #Nop,Natm,Mxyz 1522 Mmod += GSdata[nxs,:,:,:] 1523 1524 Kdata = np.inner(Mmod,uAmat) #Ntau,Nop,Natm,Mxyz 1525 Mag = np.sqrt(np.sum(Kdata**2,axis=-1)) 1526 Kdata /= Mag[:,:,:,nxs] #Cartesian unit vectors 1527 Kdata = np.nan_to_num(Kdata) #Ntau,Nops,Natm,Mxyz 1521 1528 1522 1529 FF = np.zeros(len(Tdata)) … … 1595 1602 1596 1603 HM = np.inner(Bmat,HP.T) #put into cartesian space X||H,Z||H*L 1597 eM = HM/np.sqrt(np.sum(HM**2,axis=0)) #& normalize 1604 eM = (HM/np.sqrt(np.sum(HM**2,axis=0))).T #& normalize Nref,hkl 1605 eDotK = np.sum(eM[:,nxs,nxs,nxs,:]*Kdata[nxs,:,:,:,:],axis=-1) #Nref,Ntau,Nops,Natm 1598 1606 #for fixed moments --> m=0 reflections 1599 1607 fam0 = 0. … … 1616 1624 fbms += fbm0[:,nxs,:,:,:] 1617 1625 # do sum on ops, atms 1st 1618 famqs = np.sum(np.sum(fams,axis=-2),axis=-2) #Nref,Ntau,Mxyz; sum ops & atoms 1619 fbmqs = np.sum(np.sum(fbms,axis=-2),axis=-2) 1626 cos2 = np.sqrt(1.-eDotK**2) 1620 1627 1621 fam cs = np.inner(famqs,Bmat) #convert to cartesian1622 fbm cs = np.inner(fbmqs,Bmat) # as Nref,Ntau,Mxyz1628 famqs = np.sum(np.sum(fams*cos2[:,:,:,:,nxs],axis=-2),axis=-2) #Nref,Ntau,Mxyz; sum ops & atoms 1629 fbmqs = np.sum(np.sum(fbms*cos2[:,:,:,:,nxs],axis=-2),axis=-2) 1623 1630 1624 fa mcs /= np.sqrt(np.sum(famcs**2,axis=-1))[:,:,nxs] #normalize1625 fb mcs /= np.sqrt(np.sum(fbmcs**2,axis=-1))[:,:,nxs]1631 fass = np.sum(famqs**2,axis=-1) #mag intensity calc F^2-(e.F)^2 1632 fbss = np.sum(fbmqs**2,axis=-1) 1626 1633 1627 famcs = np.nan_to_num(famcs) #nan --> 0.01628 fbmcs = np.nan_to_num(fbmcs)1629 1630 fass = np.sum(famqs**2,axis=-1)*(1.-np.sum(eM.T[:,nxs,:]*famcs,axis=-1)**2) #mag intensity calc F^2-(e.F)^21631 fbss = np.sum(fbmqs**2,axis=-1)*(1.-np.sum(eM.T[:,nxs,:]*fbmcs,axis=-1)**2)1632 1633 # do sum on ops atoms last? No!1634 # famcs = np.inner(fams,Bmat) #convert to cartesian1635 # fbmcs = np.inner(fbms,Bmat) # as Nref,Ntau,Mxyz1636 #1637 # famcs /= np.sqrt(np.sum(famcs**2,axis=-1))[:,:,:,:,nxs] #normalize1638 # fbmcs /= np.sqrt(np.sum(fbmcs**2,axis=-1))[:,:,:,:,nxs]1639 #1640 # famcs = np.nan_to_num(famcs) #nan --> 0.01641 # fbmcs = np.nan_to_num(fbmcs)1642 #1643 # famqs = np.sum(fams**2,axis=-1)*(1.-np.sum(eM.T[:,nxs,nxs,nxs,:]*famcs,axis=-1)**2) #mag intensity calc F^2-(e.F)^21644 # fbmqs = np.sum(fbms**2,axis=-1)*(1.-np.sum(eM.T[:,nxs,nxs,nxs,:]*fbmcs,axis=-1)**2)1645 #1646 # fass = np.sum(np.sum(famqs,axis=-1),axis=-1) #Nref,Ntau,Mxyz; sum ops & atoms1647 # fbss = np.sum(np.sum(fbmqs,axis=-1),axis=-1)1648 #1649 1634 #do integration 1650 1635 fas = np.sum(glWt*fass,axis=1)
Note: See TracChangeset
for help on using the changeset viewer.