Ignore:
Timestamp:
Jul 3, 2020 10:18:43 AM (3 years ago)
Author:
vondreele
Message:

fix problem after setting 1-->2 transformation. A block of code neededto be tabbed in once more.
better mag. str. fctr stuff - closer but not right.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstrMath.py

    r4488 r4513  
    15121512    modQ = np.array([parmDict[pfx+'mV0'],parmDict[pfx+'mV1'],parmDict[pfx+'mV2']])
    15131513
    1514     if parmDict[pfx+'isMag']:       #This part correct for making modulated mag moments on equiv atoms - matched drawing & Bilbao drawings
    1515    
    1516         mTau = np.linspace(0,1.,ngl,False)   
     1514    if parmDict[pfx+'isMag']:       #This part correct for making modulated mag moments on equiv atoms - Mmod matched drawing & Bilbao drawings
     1515   
     1516#        mTau = np.linspace(0,1.,ngl,False)   
    15171517        mXYZ = np.array([[XYZ[0] for XYZ in list(G2spc.GenAtom(xyz,SGData,All=True,Move=True))] for xyz in (Xdata+dXdata).T]) #Natn,Nop,xyz
    15181518        if SGData['SGGray']:
    15191519            mXYZ = np.hstack((mXYZ,mXYZ))
    1520         MmodA,MmodB = G2mth.MagMod(mTau,mXYZ,modQ,MSSdata,SGData,SSGData)  #Ntau,Nops,Natm,Mxyz cos,sim parts sum matches drawing
     1520        MmodA,MmodB = G2mth.MagMod(glTau,mXYZ,modQ,MSSdata,SGData,SSGData)  #Ntau,Nops,Natm,Mxyz cos,sim parts sum matches drawing
    15211521        Mmod = MmodA+MmodB
    15221522       
     
    15291529            GSdata = np.swapaxes(GSdata,0,1)    #Nop,Natm,Mxyz
    15301530            Mmod += GSdata[nxs,:,:,:]
    1531            
    1532         Kdata = np.inner(Mmod,uAmat)    #Ntau,Nop,Natm,Mxyz
    1533         Mag = np.sqrt(np.sum(Kdata**2,axis=-1)) #ntau,nop,natm
    1534         Kdata /= Mag[:,:,:,nxs]     #Cartesian unit vectors
    1535         Kdata = np.nan_to_num(Kdata)    #Ntau,Nops,Natm,Mxyz checked against drawing   
    15361531
    15371532    FF = np.zeros(len(Tdata))
     
    16071602            MF = refDict['FF']['MF'][iBeg:iFin].T[Tindx].T   #Nref,Natm
    16081603            TMcorr = 0.539*(np.reshape(Tiso,Tuij.shape)*Tuij)[:,0,:]*Mdata*Fdata*MF/(2*Nops)     #Nref,Natm
    1609 
    1610 #method 1     very wrong                 
    16111604            HM = np.inner(uBmat,HP.T)                            #put into cartesian space X||H,Z||H*L
    16121605            eM = (HM/np.sqrt(np.sum(HM**2,axis=0))).T              # normalize  HP  Nref,hkl=Unit vectors || Q
    1613             # edotK = np.sum(eM*HP.T,axis=-1)                                               #nRef
    1614             # Q = edotK[:,nxs,nxs,nxs,nxs]*eM[:,nxs,nxs,nxs,:]-Kdata[nxs,:,:,:,:]           #nRef,ntau,noops,natm,Mxyz     
    1615             # fam = Q*TMcorr[:,nxs,nxs,:,nxs]*cosm[:,nxs,:,:,nxs]*Mag[nxs,:,:,:,nxs]    #nRef,ntau,noops,natm,Mxyz
    1616             # fbm = Q*TMcorr[:,nxs,nxs,:,nxs]*sinm[:,nxs,:,:,nxs]*Mag[nxs,:,:,:,nxs]
    1617             # fama = np.sum(np.sum(fam,axis=2),axis=2)                                      #nRef,ntau,Mxyz; sum natm & nops
    1618             # fbma = np.sum(np.sum(fbm,axis=2),axis=2)
    1619             # fas = np.sum(np.sum(1./ngl*fama**2,axis=1),axis=-1)
    1620             # fbs = np.sum(np.sum(1./ngl*fbma**2,axis=1),axis=-1)
    1621            
    1622 #method 2   sort of wrong         
     1606
    16231607            fam0 = 0.
    16241608            fbm0 = 0.
    16251609            if not SGData['SGGray']:     #correct -fixed Mx,My,Mz contribution             
    16261610                fam0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*cosm[:,:,:,nxs]    #Nref,Nops,Natm,Mxyz
    1627                 fbm0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*sinm[:,:,:,nxs]   
    1628 #for modulated moments --> m != 0 reflections
    1629                        
    1630             fams = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,(MmodA*cosm[i,nxs,:,:,nxs]-    \
    1631                 np.sign(H[3,i])*MmodB*sinm[i,nxs,:,:,nxs]),0.) for i in range(mRef)])          #Nref,Ntau,Nops,Natm,Mxyz
     1611                fbm0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*sinm[:,:,:,nxs]
     1612                           
     1613            fams = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,(MmodA*cosm[i,nxs,:,:,nxs]+    \
     1614                np.sign(H[3,i])*MmodB*sinm[i,nxs,:,:,nxs]),0.) for i in range(mRef)])/2.          #Nref,Ntau,Nops,Natm,Mxyz
    16321615                       
    16331616            fbms = TMcorr[:,nxs,nxs,:,nxs]*np.array([np.where(H[3,i]!=0,(MmodA*sinm[i,nxs,:,:,nxs]+    \
    1634                 np.sign(H[3,i])*MmodB*cosm[i,nxs,:,:,nxs]),0.) for i in range(mRef)])          #Nref,Ntau,Nops,Natm,Mxyz
     1617                np.sign(H[3,i])*MmodB*cosm[i,nxs,:,:,nxs]),0.) for i in range(mRef)])/2.          #Nref,Ntau,Nops,Natm,Mxyz
    16351618           
    16361619            if not SGData['SGGray']:
     
    16381621                fbms += fbm0[:,nxs,:,:,:]
    16391622            # else:
    1640             #     fams *= Ncen
    1641             #     fbms *= Ncen
    1642                
    1643 # do sum on ops, atms 1st                       
     1623            #     fams /= 2.
     1624            #     fbms /= 2.
     1625                               
     1626# # do sum on ops, atms 1st                       
    16441627            fasm = np.sum(np.sum(fams,axis=-2),axis=-2)    #Nref,Ntau,Mxyz; sum ops & atoms
    1645             fbsm = np.sum(np.sum(fbms,axis=-2),axis=-2)           
    1646 #put into cartesian space
    1647             facm = np.inner(fasm,uAmat)
    1648             fbcm = np.inner(fbsm,uAmat)
    1649 #form e.F dot product
     1628            fbsm = np.sum(np.sum(fbms,axis=-2),axis=-2)
     1629# #put into cartesian space
     1630            facm = np.inner(fasm,uBmat.T)
     1631            fbcm = np.inner(fbsm,uBmat.T)
     1632# #form e.F dot product
    16501633            eDotFa = np.sum(eM[:,nxs,:]*facm,axis=-1)    #Nref,Ntau       
    16511634            eDotFb = np.sum(eM[:,nxs,:]*fbcm,axis=-1)
    1652 #intensity
    1653             fass = np.sum(facm**2,axis=-1)-eDotFa**2
    1654             fbss = np.sum(fbcm**2,axis=-1)-eDotFb**2
    1655 #do integration
     1635# #intensity
     1636            fass = np.sum((facm-eM[:,nxs,:]*eDotFa[:,:,nxs])**2,axis=-1)
     1637            fbss = np.sum((fbcm-eM[:,nxs,:]*eDotFb[:,:,nxs])**2,axis=-1)
     1638            # fass = np.sum(facm**2,axis=-1)-eDotFa**2
     1639            # fbss = np.sum(fbcm**2,axis=-1)-eDotFb**2
    16561640           
    1657             fas = np.sum(1./ngl*fass,axis=1)
    1658             fbs = np.sum(1./ngl*fbss,axis=1)
     1641# #do integration           
     1642            fas = np.sum(fass*glWt[nxs,:],axis=1)
     1643            fbs = np.sum(fbss*glWt[nxs,:],axis=1)
    16591644           
    1660             # if SGData['SGInv']:
    1661             #     fbs *= 4.
    1662             #     fas = 0.
    1663                
    16641645            refl.T[10] = fas+fbs   #Sum(fams**2,Mxyz) Re + Im
    16651646            refl.T[11] = atan2d(fbs,fas)
Note: See TracChangeset for help on using the changeset viewer.