Changeset 1777


Ignore:
Timestamp:
Apr 5, 2015 7:00:17 PM (7 years ago)
Author:
vondreele
Message:

fixes to SH texture penalty fxn

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstrIO.py

    r1775 r1777  
    20712071                    controlDict[pfx+'SHord'] = hapData['Pref.Ori.'][4]
    20722072                    controlDict[pfx+'SHncof'] = len(hapData['Pref.Ori.'][5])
     2073                    controlDict[pfx+'SHnames'] = G2lat.GenSHCoeff(SGData['SGLaue'],'0',controlDict[pfx+'SHord'],False)
    20732074                    controlDict[pfx+'SHhkl'] = []
    20742075                    if hapData['Pref.Ori.'][6][0] != '':
  • trunk/GSASIIstrMath.py

    r1776 r1777  
    408408                    wt = 1./toler**2
    409409                    HKLs = calcControls[phfx+'SHhkl']
    410                     SHcofNames = Phases[phase]['Histograms'][hist]['Pref.Ori.'][5].keys()
    411                     SHcof = dict(zip(SHcofNames,[parmDict[phfx+cof] for cof in SHcofNames]))
     410                    SHnames = calcControls[phfx+'SHnames']
     411                    SHcof = dict(zip(SHnames,[parmDict[phfx+cof] for cof in SHnames]))
    412412                    for i,PH in enumerate(HKLs):
    413413                        phi,beta = G2lat.CrsAng(PH,cell,SGData)
     
    424424                            pVals.append(Y[ind])
    425425                            pWt.append(wt)
    426                             pWsum[name] += wt*(-Y[ind])**2
     426                            pWsum[name] += wt*(Y[ind])**2
    427427    pWsum['PWLref'] = 0.
    428428    for item in varyList:
     
    534534                        pass
    535535       
    536 #        lasthkl = np.array([0,0,0])
    537 #        for ip,pName in enumerate(pNames):
    538 #            deriv = []
    539 #            dNames = []
    540 #            if np.any(lasthkl-hkl):
    541 #                PH = np.array(hkl)
    542 #                phi,beta = G2lat.CrsAng(np.array(hkl),cell,SGData)
    543 #                ODFln = G2lat.Flnh(False,SHCoef,phi,beta,SGData)
    544 #                lasthkl = copy.copy(hkl)                       
    545 
    546 #                        gam = float(pnames[3])
    547 #                        psi = float(pnames[4])
    548 #                        for SHname in ODFln:
    549 #                            l,m,n = eval(SHname[1:])
    550 #                            Ksl = G2lat.GetKsl(l,m,sam,psi,gam)[0]
    551 #                            dNames += [str(pId)+'::'+SHname]
    552 #                            deriv.append(-ODFln[SHname][0]*Ksl/SHCoef[SHname])
    553 #                for dName,drv in zip(dNames,deriv):
    554 #                    try:
    555 #                        ind = varyList.index(dName)
    556 #                        pDerv[ind][ip] += drv
    557 #                    except ValueError:
    558 #                        pass
    559 #            pnames = pNames.split(':')
    560 #            if 'SH-' in pName and pId == int(pnames[0]):
    561 #                hId = int(pnames[1])
    562 #                phfx = '%d:%d:'%(pId,hId)
    563 #                hklId = int(pnames[3])
    564 #                gam = float(pnames[4])
    565 #                HKLs = calcControls[phfx+'SHhkl']
    566 #                phi,beta = G2lat.CrsAng(HKLs[hklId],cell,SGData)
    567 #                SHcofNames = Phases[phase]['Histograms'][hist]['Pref.Ori.'][5].keys()
    568 #                SHcof = dict(zip(SHcofNames,[parmDict[phfx+cof] for cof in SHcofNames]))
    569 #     
    570 #                L,N = eval(name.strip('C'))
    571        
    572 #            raise Exception
    573 
     536        lasthkl = np.array([0,0,0])
     537        for ip,pName in enumerate(pNames):
     538            deriv = []
     539            dNames = []
     540            pnames = pName.split(':')
     541            if 'SH-' in pName and pId == int(pnames[0]):
     542                hId = int(pnames[1])
     543                phfx = '%d:%d:'%(pId,hId)
     544                psi = float(pnames[4])
     545                HKLs = calcControls[phfx+'SHhkl']
     546                SHnames = calcControls[phfx+'SHnames']
     547                SHcof = dict(zip(SHnames,[parmDict[phfx+cof] for cof in SHnames]))
     548                hkl = np.array(HKLs[int(pnames[3])])     
     549                if np.any(lasthkl-hkl):
     550                    PH = np.array(hkl)
     551                    phi,beta = G2lat.CrsAng(np.array(hkl),cell,SGData)
     552                    SH3Coef = {}
     553                    for item in SHcof:
     554                        L,N = eval(item.strip('C'))
     555                        SH3Coef['C%d,0,%d'%(L,N)] = SHcof[item]                       
     556                    ODFln = G2lat.Flnh(False,SH3Coef,phi,beta,SGData)
     557                    lasthkl = copy.copy(hkl)                       
     558                for SHname in SHnames:
     559                    l,n = eval(SHname[1:])
     560                    SH3name = 'C%d,0,%d'%(l,n)
     561                    Ksl = G2lat.GetKsl(l,0,'0',psi,0.0)[0]
     562                    dNames += [phfx+SHname]
     563                    deriv.append(ODFln[SH3name][0]*Ksl/SHcof[SHname])
     564            for dName,drv in zip(dNames,deriv):
     565                try:
     566                    ind = varyList.index(dName)
     567                    pDerv[ind][ip] += drv
     568                except ValueError:
     569                    pass
     570                   
     571#    raise Exception
    574572    return pDerv
    575573
     
    12731271    phi,beta = G2lat.CrsAng(H,cell,SGData)
    12741272    psi,gam,x,x = G2lat.SamAng(tth/2.,Gangls,Sangl,IFCoup) #ignore 2 sets of angle derivs.
    1275     SHnames = G2lat.GenSHCoeff(SGData['SGLaue'],'0',calcControls[phfx+'SHord'],False)
     1273    SHnames = calcControls[phfx+'SHnames']
    12761274    for item in SHnames:
    12771275        L,N = eval(item.strip('C'))
     
    13001298    phi,beta = G2lat.CrsAng(H,cell,SGData)
    13011299    psi,gam,x,x = G2lat.SamAng(tth/2.,Gangls,Sangl,IFCoup) #ignore 2 sets of angle derivs.
    1302     SHnames = G2lat.GenSHCoeff(SGData['SGLaue'],'0',calcControls[phfx+'SHord'],False)
     1300    SHnames = calcControls[phfx+'SHnames']
    13031301    for item in SHnames:
    13041302        L,N = eval(item.strip('C'))
Note: See TracChangeset for help on using the changeset viewer.