Changeset 4165


Ignore:
Timestamp:
Oct 1, 2019 9:21:28 AM (2 years ago)
Author:
vondreele
Message:

fix Dysnomia bug for TOF data - array indexing issue
remove unused mag code
fix mag math

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r4152 r4165  
    13981398    return MmodA,MmodB    #Ntau,Nops,Natm,,Mxyz; cos & sin parts; sum matches drawn atom moments
    13991399       
    1400 #def MagMod2(XYZ,modQ,MSSdata,SGData,SSGData):
    1401 #    '''
    1402 #    this needs to make magnetic moment modulations & magnitudes
    1403 #    '''
    1404 #    Am = np.array(MSSdata[:3]).T   #atoms x waves x sin mag mods
    1405 #    Bm = np.array(MSSdata[3:]).T  #...cos mag mods
    1406 #    nWaves = Am.shape[1]
    1407 #    if not nWaves:
    1408 #        return 0.0,0.0
    1409 #    SGMT = np.array([ops[0] for ops in SGData['SGOps']])        #not .T!!
    1410 #    Sinv = np.array([nl.inv(ops[0]) for ops in SSGData['SSGOps']])
    1411 #    SGT = np.array([ops[1] for ops in SSGData['SSGOps']])
    1412 #    if SGData['SGInv']:
    1413 #        SGMT = np.vstack((SGMT,-SGMT))
    1414 #        Sinv = np.vstack((Sinv,-Sinv))
    1415 #        SGT = np.vstack((SGT,-SGT))
    1416 #    SGMT = np.vstack([SGMT for cen in SGData['SGCen']])     #Nops,3,3
    1417 #    Sinv = np.vstack([Sinv for cen in SGData['SGCen']])     #Nops,4,4
    1418 #    SGT = np.vstack([SGT+cen for cen in SSGData['SSGCen']])%1.
    1419 #    detSM = nl.det(SGMT)
    1420 #    mst = Sinv[:,3,:3]
    1421 #    epsinv = Sinv[:,3,3]            #Nops
    1422 #    kdr = np.inner(XYZ,modQ).T      #Nops,Natm
    1423 #   
    1424 #    phase = (np.sum(mst*(XYZ-SGT[nxs,:,:3]),axis=-1)).T+epsinv[:,nxs]*(kdr-SGT[:,nxs,3])
    1425 #   
    1426 #    psin = np.sin(twopi*phase)      #Nops,Natm
    1427 #    pcos = np.cos(twopi*phase)
    1428 #    MmodA = np.sum(Bm[nxs,:,:,:]*pcos[:,:,nxs,nxs],axis=2)
    1429 #    MmodB = np.sum(Am[nxs,:,:,:]*psin[:,:,nxs,nxs],axis=2)      #Nops,Natm,3
    1430 #    MmodA = np.sum(SGMT[:,nxs,:,:]*MmodA[:,:,nxs,:],axis=-1)
    1431 #    MmodB = np.sum(SGMT[:,nxs,:,:]*MmodB[:,:,nxs,:],axis=-1)
    1432 #    if SGData['SGGray']:
    1433 #        MmodA = -MmodA*detSM[:,nxs,nxs]
    1434 #        MmodB = -MmodB*detSM[:,nxs,nxs]
    1435 #    else:       
    1436 #        MmodA = MmodA*SGData['MagMom'][:,nxs,nxs]
    1437 #        MmodB = MmodB*SGData['MagMom'][:,nxs,nxs]
    1438 ##MmodA+MmodB matches drawn tau=0 atom moments
    1439 #    return MmodA,MmodB    #Nops,Natm,Mxyz; cos & sin parts
    1440 #       
    14411400def Modulation(H,HP,nWaves,Fmod,Xmod,Umod,glTau,glWt):
    14421401    '''
     
    14681427    return np.array([cosHA,sinHA])             # 2 x refBlk x SGops x atoms
    14691428   
    1470 def MagModulation(H,HP,nWaves,Fmod,Xmod,Umod,Mmod,glTau,glWt):
    1471     '''
    1472     H: array nRefBlk x ops X hklt
    1473     HP: array nRefBlk x ops X hklt proj to hkl
    1474     nWaves: list number of waves for frac, pos, uij & mag
    1475     Fmod: array 2 x atoms x waves    (sin,cos terms)
    1476     Xmod: array atoms X 3 X ngl
    1477     Umod: array atoms x 3x3 x ngl
    1478     Mmod: array atoms x 3x3 x ngl
    1479     glTau,glWt: arrays Gauss-Lorentzian pos & wts
    1480     '''
    1481    
    1482     if nWaves[2]:       #uij (adp) waves
    1483         if len(HP.shape) > 2:
    1484             HbH = np.exp(-np.sum(HP[:,:,nxs,nxs,:]*np.inner(HP,Umod),axis=-1)) # refBlk x ops x atoms x ngl add Overhauser corr.?
    1485         else:
    1486             HbH = np.exp(-np.sum(HP[:,nxs,nxs,:]*np.inner(HP,Umod),axis=-1)) # refBlk x ops x atoms x ngl add Overhauser corr.?
    1487     else:
    1488         HbH = 1.0
    1489     HdotX = np.inner(HP,Xmod)                   #refBlk x ops x atoms X ngl
    1490     if len(H.shape) > 2:
    1491         D = H[:,:,3:]*glTau[nxs,nxs,:]              #m*e*tau; refBlk x ops X ngl
    1492         HdotXD = twopi*(HdotX+D[:,:,nxs,:])
    1493     else:
    1494         D = H[:,3:]*glTau[nxs,:]              #m*e*tau; refBlk x ops X ngl
    1495         HdotXD = twopi*(HdotX+D[:,nxs,:])
    1496     M = np.swapaxes(Mmod,1,2)
    1497     cosHA = np.sum(M[nxs,nxs,:,:,:]*(Fmod*HbH*np.cos(HdotXD)[:,:,:,nxs,:]*glWt),axis=-1)       #real part; refBlk X ops x atoms; sum for G-L integration
    1498     sinHA = np.sum(M[nxs,nxs,:,:,:]*(Fmod*HbH*np.sin(HdotXD)[:,:,:,nxs,:]*glWt),axis=-1)       #imag part; ditto
    1499     return np.array([cosHA,sinHA])             # 2 x refBlk x SGops x atoms
    1500 
     1429#def MagModulation(H,HP,nWaves,Fmod,Xmod,Umod,Mmod,glTau,glWt):
     1430#    '''
     1431#    H: array nRefBlk x ops X hklt
     1432#    HP: array nRefBlk x ops X hklt proj to hkl
     1433#    nWaves: list number of waves for frac, pos, uij & mag
     1434#    Fmod: array 2 x atoms x waves    (sin,cos terms)
     1435#    Xmod: array atoms X 3 X ngl
     1436#    Umod: array atoms x 3x3 x ngl
     1437#    Mmod: array atoms x 3x3 x ngl
     1438#    glTau,glWt: arrays Gauss-Lorentzian pos & wts
     1439#    '''
     1440#   
     1441#    if nWaves[2]:       #uij (adp) waves
     1442#        if len(HP.shape) > 2:
     1443#            HbH = np.exp(-np.sum(HP[:,:,nxs,nxs,:]*np.inner(HP,Umod),axis=-1)) # refBlk x ops x atoms x ngl add Overhauser corr.?
     1444#        else:
     1445#            HbH = np.exp(-np.sum(HP[:,nxs,nxs,:]*np.inner(HP,Umod),axis=-1)) # refBlk x ops x atoms x ngl add Overhauser corr.?
     1446#    else:
     1447#        HbH = 1.0
     1448#    HdotX = np.inner(HP,Xmod)                   #refBlk x ops x atoms X ngl
     1449#    if len(H.shape) > 2:
     1450#        D = H[:,:,3:]*glTau[nxs,nxs,:]              #m*e*tau; refBlk x ops X ngl
     1451#        HdotXD = twopi*(HdotX+D[:,:,nxs,:])
     1452#    else:
     1453#        D = H[:,3:]*glTau[nxs,:]              #m*e*tau; refBlk x ops X ngl
     1454#        HdotXD = twopi*(HdotX+D[:,nxs,:])
     1455#    M = np.swapaxes(Mmod,1,2)
     1456#    cosHA = np.sum(M[nxs,nxs,:,:,:]*(Fmod*HbH*np.cos(HdotXD)[:,:,:,nxs,:]*glWt),axis=-1)       #real part; refBlk X ops x atoms; sum for G-L integration
     1457#    sinHA = np.sum(M[nxs,nxs,:,:,:]*(Fmod*HbH*np.sin(HdotXD)[:,:,:,nxs,:]*glWt),axis=-1)       #imag part; ditto
     1458#    return np.array([cosHA,sinHA])             # 2 x refBlk x SGops x atoms
     1459#
    15011460def ModulationTw(H,HP,nWaves,Fmod,Xmod,Umod,glTau,glWt):
    15021461    '''
  • trunk/GSASIIphsGUI.py

    r4164 r4165  
    41704170        reflData = reflSets[generalData['Name']]['RefList']
    41714171        refDmin = reflData[-1][4]
    4172         mulMin = np.argmin(reflData[:,3])
    4173         if reflData[mulMin,3] < 0:
    4174             refDmin = reflData[mulMin-1,4]
     4172        mulMin = np.argmin(reflData[:][3])
     4173        if reflData[mulMin][3] < 0:
     4174            refDmin = reflData[mulMin-1][4]
    41754175        MEMData = G2frame.MEMData
    41764176        if MEMData.GetSizer():
  • trunk/GSASIIstrMath.py

    r4163 r4165  
    14871487    SGInv = SGData['SGInv']
    14881488    SGMT = np.array([ops[0].T for ops in SGData['SGOps']])
    1489     Ncen = len(SGData['SGCen'])
     1489#    Ncen = len(SGData['SGCen'])
    14901490    Nops = len(SGMT)*(1+SGData['SGInv'])
    14911491    SSGMT = np.array([ops[0].T for ops in SSGData['SSGOps']])
     
    15221522            Mmod += GSdata[nxs,:,:,:]
    15231523           
    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       
     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       
    15281528
    15291529    FF = np.zeros(len(Tdata))
     
    15941594        if 'N' in calcControls[hfx+'histType'] and parmDict[pfx+'isMag']:       #TODO: mag math here??           
    15951595           
    1596             phasem = twopi*np.inner(HP.T[:,:3],mXYZ)    #2pi(Q.r)
     1596            phasem = twopi*np.inner(HP.T,mXYZ)    #2pi(Q.r)
    15971597            phasem = np.swapaxes(phasem,1,2)            #Nref,Nops,Natm
    15981598            cosm = np.cos(phasem)
     
    16341634            eDotFb = np.sum(eM[:,nxs,:]*fbcm,axis=-1)
    16351635#intensity
    1636             fass = np.sum(fasm**2,axis=-1)-eDotFa**2
    1637             fbss = np.sum(fbsm**2,axis=-1)-eDotFb**2               
     1636            fass = np.sum(facm**2,axis=-1)-eDotFa**2
     1637            fbss = np.sum(fbcm**2,axis=-1)-eDotFb**2               
    16381638#do integration           
    16391639            fas = np.sum(glWt*fass,axis=1)/2.
Note: See TracChangeset for help on using the changeset viewer.