Changeset 1777
- Timestamp:
- Apr 5, 2015 7:00:17 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIstrIO.py
r1775 r1777 2071 2071 controlDict[pfx+'SHord'] = hapData['Pref.Ori.'][4] 2072 2072 controlDict[pfx+'SHncof'] = len(hapData['Pref.Ori.'][5]) 2073 controlDict[pfx+'SHnames'] = G2lat.GenSHCoeff(SGData['SGLaue'],'0',controlDict[pfx+'SHord'],False) 2073 2074 controlDict[pfx+'SHhkl'] = [] 2074 2075 if hapData['Pref.Ori.'][6][0] != '': -
trunk/GSASIIstrMath.py
r1776 r1777 408 408 wt = 1./toler**2 409 409 HKLs = calcControls[phfx+'SHhkl'] 410 SH cofNames = Phases[phase]['Histograms'][hist]['Pref.Ori.'][5].keys()411 SHcof = dict(zip(SH cofNames,[parmDict[phfx+cof] for cof in SHcofNames]))410 SHnames = calcControls[phfx+'SHnames'] 411 SHcof = dict(zip(SHnames,[parmDict[phfx+cof] for cof in SHnames])) 412 412 for i,PH in enumerate(HKLs): 413 413 phi,beta = G2lat.CrsAng(PH,cell,SGData) … … 424 424 pVals.append(Y[ind]) 425 425 pWt.append(wt) 426 pWsum[name] += wt*( -Y[ind])**2426 pWsum[name] += wt*(Y[ind])**2 427 427 pWsum['PWLref'] = 0. 428 428 for item in varyList: … … 534 534 pass 535 535 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 574 572 return pDerv 575 573 … … 1273 1271 phi,beta = G2lat.CrsAng(H,cell,SGData) 1274 1272 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'] 1276 1274 for item in SHnames: 1277 1275 L,N = eval(item.strip('C')) … … 1300 1298 phi,beta = G2lat.CrsAng(H,cell,SGData) 1301 1299 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'] 1303 1301 for item in SHnames: 1304 1302 L,N = eval(item.strip('C'))
Note: See TracChangeset
for help on using the changeset viewer.