Changeset 4533 for trunk/GSASIIstrMath.py
- Timestamp:
- Jul 23, 2020 12:28:51 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIstrMath.py
r4531 r4533 1516 1516 if SGData['SGGray']: 1517 1517 mXYZ = np.hstack((mXYZ,mXYZ)) 1518 # this done in wrong place - should be 1519 MmodA ,MmodB= G2mth.MagMod(glTau,mXYZ,modQ,MSSdata,SGData,SSGData) #Ntau,Nops,Natm,Mxyz cos,sim parts sum matches drawing1520 Mmod = MmodA+MmodB 1518 1519 MmodAp,MmodBp,MmodAm,MmodBm = G2mth.MagMod(glTau,mXYZ,modQ,MSSdata,SGData,SSGData) #Ntau,Nops,Natm,Mxyz cos,sim parts sum matches drawing 1520 # MmodAp,MmodBp,MmodAm,MmodBm = G2mth.MagMod2(mXYZ,modQ,MSSdata,SGData,SSGData) #Nops,Natm,Mxyz cos,sim parts sum matches drawing 1521 1521 1522 1522 if not SGData['SGGray']: #for fixed Mx,My,Mz … … 1527 1527 GSdata = SGData['MagMom'][nxs,:,nxs]*GSdata #flip vectors according to spin flip * det(opM) 1528 1528 GSdata = np.swapaxes(GSdata,0,1) #Nop,Natm,Mxyz 1529 Mmod += GSdata[nxs,:,:,:]1530 1531 # Kdata = np.inner(Mmod,uAmat) #Ntau,Nops,Natm,Mxyz1532 # Kmean = np.mean(np.sqrt(np.sum(Kdata**2,axis=0)),axis=0)1533 # Kdata /= Kmean #Ntau,Nops,Natm,Mxyz Cartesian unit vectors along mag moments1534 1529 1535 1530 FF = np.zeros(len(Tdata)) … … 1608 1603 eM = (HM/np.sqrt(np.sum(HM**2,axis=0))).T # normalize HP Nref,hkl=Unit vectors || Q 1609 1604 1610 fam0 = 0.1611 fbm0 = 0.1605 # fam0 = 0. 1606 # fbm0 = 0. 1612 1607 if not SGData['SGGray']: #correct -fixed Mx,My,Mz contribution 1613 1608 fam0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*cosm[:,:,:,nxs] #Nref,Nops,Natm,Mxyz 1614 1609 fbm0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*sinm[:,:,:,nxs] 1615 1610 # calc mag. structure factors; Nref,Ntau,Nops,Natm,Mxyz 1616 fams = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,(MmodA*cosm[i,nxs,:,:,nxs]+ 1617 H[3,i]*MmodB*sinm[i,nxs,:,:,nxs]),0.) for i in range(mRef)]) #Nref,Ntau,Nops,Natm,Mxyz 1611 # fams = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,(MmodA*cosm[i,nxs,:,:,nxs]+ 1612 # H[3,i]*MmodB*sinm[i,nxs,:,:,nxs]),0.) for i in range(mRef)]) #Nref,Ntau,Nops,Natm,Mxyz 1613 # 1614 # fbms = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,(MmodA*sinm[i,nxs,:,:,nxs]+ 1615 # H[3,i]*MmodB*cosm[i,nxs,:,:,nxs]),0.) for i in range(mRef)]) #Nref,Ntau,Nops,Natm,Mxyz 1616 # 1617 # if not SGData['SGGray']: 1618 # fams += fam0[:,nxs,:,:,:] 1619 # fbms += fbm0[:,nxs,:,:,:] 1620 1621 fams = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,np.where(H[3,i]>0, 1622 (MmodAp*cosm[i,nxs,:,:,nxs]+MmodBp*sinm[i,nxs,:,:,nxs]), 1623 (MmodAm*cosm[i,nxs,:,:,nxs]+MmodBm*sinm[i,nxs,:,:,nxs])),0.) for i in range(mRef)]) #Nref,Nops,Natm,Mxyz 1618 1624 1619 fbms = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,(MmodA*sinm[i,nxs,:,:,nxs]+ 1620 H[3,i]*MmodB*cosm[i,nxs,:,:,nxs]),0.) for i in range(mRef)]) #Nref,Ntau,Nops,Natm,Mxyz 1625 fbms = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,np.where(H[3,i]>0, 1626 (MmodAp*sinm[i,nxs,:,:,nxs]+MmodBp*cosm[i,nxs,:,:,nxs]), 1627 (MmodAm*sinm[i,nxs,:,:,nxs]+MmodBm*cosm[i,nxs,:,:,nxs])),0.) for i in range(mRef)]) #Nref,Nops,Natm,Mxyz 1621 1628 1622 1629 if not SGData['SGGray']: … … 1624 1631 fbms += fbm0[:,nxs,:,:,:] 1625 1632 1626 # this is the best, but not exactly right1627 1633 #sum ops & atms 1628 fasm = np.sum(np.sum(fams,axis=-2),axis=-2) #Nref, Ntau,Mxyz; sum ops & atoms1634 fasm = np.sum(np.sum(fams,axis=-2),axis=-2) #Nref,Mxyz; sum ops & atoms 1629 1635 fbsm = np.sum(np.sum(fbms,axis=-2),axis=-2) 1630 1636 #put into cartesian space … … 1635 1641 eDotFb = np.sum(eM[:,nxs,:]*fbcm,axis=-1) 1636 1642 #intensity Halpern & Johnson 1637 # fass = np.sum((facm-eM[:,nxs,:]*eDotFa[:,:,nxs])**2,axis=-1) 1638 # fbss = np.sum((fbcm-eM[:,nxs,:]*eDotFb[:,:,nxs])**2,axis=-1) 1639 fass = np.sum(facm**2,axis=-1)-eDotFa**2 1640 fbss = np.sum(fbcm**2,axis=-1)-eDotFb**2 1643 fass = np.sum((facm-eM[:,nxs,:]*eDotFa[:,:,nxs])**2,axis=-1) 1644 fbss = np.sum((fbcm-eM[:,nxs,:]*eDotFb[:,:,nxs])**2,axis=-1) 1641 1645 ## #do integration 1642 1646 fas = np.sum(fass*glWt[nxs,:],axis=1)
Note: See TracChangeset
for help on using the changeset viewer.