Changeset 1597
- Timestamp:
- Dec 6, 2014 3:12:32 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIlattice.py
r1596 r1597 467 467 return np.inner(H,np.inner(G,H)) 468 468 469 def calc_rDsqSS(H,A,vec): 470 'needs doc string' 471 rdsq = calc_rDsq(H[:3]+(H[3]*vec).T,A) 472 return rdsq 473 469 474 def calc_rDsqZ(H,A,Z,tth,lam): 470 475 'needs doc string' -
trunk/GSASIIstrIO.py
r1596 r1597 562 562 print >>pFile,' Process histograms in reverse order: ',Controls['Reverse Seq'] 563 563 564 def GetPawleyConstr(SGLaue,PawleyRef, pawleyVary):564 def GetPawleyConstr(SGLaue,PawleyRef,im,pawleyVary): 565 565 'needs a doc string' 566 566 # if SGLaue in ['-1','2/m','mmm']: … … 571 571 refI = int(varyI.split(':')[-1]) 572 572 ih,ik,il = PawleyRef[refI][:3] 573 dspI = PawleyRef[refI][4 ]573 dspI = PawleyRef[refI][4+im] 574 574 for varyJ in pawleyVary[i+1:]: 575 575 refJ = int(varyJ.split(':')[-1]) 576 576 jh,jk,jl = PawleyRef[refJ][:3] 577 dspJ = PawleyRef[refJ][4 ]577 dspJ = PawleyRef[refJ][4+im] 578 578 if SGLaue in ['4/m','4/mmm']: 579 579 isum = ih**2+ik**2 … … 631 631 def modVary(pfx,SSGData): 632 632 vary = [] 633 for i,item in SSGData['modSymb']:633 for i,item in enumerate(SSGData['modSymb']): 634 634 if item in ['a','b','g']: 635 635 vary.append(pfx+'mV%d'%(i)) … … 1148 1148 if refl[5+im]: 1149 1149 pawleyVary.append(pfx+'PWLref:'+str(i)) 1150 GetPawleyConstr(SGData['SGLaue'],PawleyRef, pawleyVary) #does G2mv.StoreEquivalence1150 GetPawleyConstr(SGData['SGLaue'],PawleyRef,im,pawleyVary) #does G2mv.StoreEquivalence 1151 1151 phaseVary += pawleyVary 1152 1152 … … 1607 1607 for var in ['mV0','mV1','mV2']: 1608 1608 namstr += '%12s'%(pfx+var) 1609 ptstr += '%12. 4f'%(parmDict[pfx+var])1609 ptstr += '%12.6f'%(parmDict[pfx+var]) 1610 1610 if pfx+var in sigDict: 1611 sigstr += '%12. 4f'%(sigDict[pfx+var])1611 sigstr += '%12.6f'%(sigDict[pfx+var]) 1612 1612 else: 1613 1613 sigstr += 12*' ' -
trunk/GSASIIstrMath.py
r1596 r1597 1370 1370 return sigDict,gamDict 1371 1371 1372 def GetReflPos(refl,im,wave,A, hfx,calcControls,parmDict):1372 def GetReflPos(refl,im,wave,A,pfx,hfx,calcControls,parmDict): 1373 1373 'Needs a doc string' 1374 h,k,l = refl[:3] 1375 d = 1./np.sqrt(G2lat.calc_rDsq(np.array([h,k,l]),A)) 1376 1374 if im: 1375 h,k,l,m = refl[:4] 1376 vec = np.array([parmDict[pfx+'mV0'],parmDict[pfx+'mV1'],parmDict[pfx+'mV2']]) 1377 d = 1./np.sqrt(G2lat.calc_rDsqSS(np.array([h,k,l,m]),A,vec)) 1378 else: 1379 h,k,l = refl[:3] 1380 d = 1./np.sqrt(G2lat.calc_rDsq(np.array([h,k,l]),A)) 1377 1381 refl[4+im] = d 1378 1382 if 'C' in calcControls[hfx+'histType']: … … 1389 1393 return pos 1390 1394 1391 def GetReflPosDerv(refl,im,wave,A, hfx,calcControls,parmDict):1395 def GetReflPosDerv(refl,im,wave,A,pfx,hfx,calcControls,parmDict): 1392 1396 'Needs a doc string' 1393 1397 dpr = 180./np.pi 1394 h,k,l = refl[:3] 1395 dstsq = G2lat.calc_rDsq(np.array([h,k,l]),A) 1398 if im: 1399 h,k,l,m = refl[:4] 1400 vec = np.array([parmDict[pfx+'mV0'],parmDict[pfx+'mV1'],parmDict[pfx+'mV2']]) 1401 dstsq = G2lat.calc_rDsqSS(np.array([h,k,l,m]),A,vec) 1402 else: 1403 m = 0 1404 h,k,l = refl[:3] 1405 dstsq = G2lat.calc_rDsq(np.array([h,k,l]),A) 1396 1406 dst = np.sqrt(dstsq) 1397 1407 dsp = 1./dst … … 1402 1412 dpdA = np.array([h**2,k**2,l**2,h*k,h*l,k*l])*const*wave/(2.0*dst) 1403 1413 dpdZ = 1.0 1404 const = 9.e-2/(np.pi*parmDict[hfx+'Gonio. radius']) #shifts in microns 1414 dpdV = np.array([2.*h*A[0]+k*A[3]+l*A[4],2*k*A[1]+h*A[3]+l*A[5], 1415 2*l*A[2]+h*A[4]+k*A[5]])*m*const*wave/(2.0*dst) 1416 shft = 9.e-2/(np.pi*parmDict[hfx+'Gonio. radius']) #shifts in microns 1405 1417 if 'Bragg' in calcControls[hfx+'instType']: 1406 dpdSh = -4.* const*cosd(pos/2.0)1407 dpdTr = - const*sind(pos)*100.01408 return dpdA,dpdw,dpdZ,dpdSh,dpdTr,0.,0. 1418 dpdSh = -4.*shft*cosd(pos/2.0) 1419 dpdTr = -shft*sind(pos)*100.0 1420 return dpdA,dpdw,dpdZ,dpdSh,dpdTr,0.,0.,dpdV 1409 1421 else: #Debye-Scherrer - simple but maybe not right 1410 dpdXd = - const*cosd(pos)1411 dpdYd = - const*sind(pos)1412 return dpdA,dpdw,dpdZ,0.,0.,dpdXd,dpdYd 1422 dpdXd = -shft*cosd(pos) 1423 dpdYd = -shft*sind(pos) 1424 return dpdA,dpdw,dpdZ,0.,0.,dpdXd,dpdYd,dpdV 1413 1425 elif 'T' in calcControls[hfx+'histType']: 1414 1426 dpdA = -np.array([h**2,k**2,l**2,h*k,h*l,k*l])*parmDict[hfx+'difC']*dsp**3/2. … … 1417 1429 dpdDA = dsp**2 1418 1430 dpdDB = 1./dsp 1419 return dpdA,dpdZ,dpdDC,dpdDA,dpdDB 1431 dpdV = np.array([2.*h*A[0]+k*A[3]+l*A[4],2*k*A[1]+h*A[3]+l*A[5], 1432 2*l*A[2]+h*A[4]+k*A[5]])*m**parmDict[hfx+'difC']*dsp**3/2. 1433 return dpdA,dpdZ,dpdDC,dpdDA,dpdDB,dpdV 1420 1434 1421 1435 def GetHStrainShift(refl,im,SGData,phfx,hfx,calcControls,parmDict): … … 1653 1667 h,k,l = refl[:3] 1654 1668 Uniq = np.inner(refl[:3],SGMT) 1655 refl[5+im] = GetReflPos(refl,im,wave,A, hfx,calcControls,parmDict) #corrected reflection position1669 refl[5+im] = GetReflPos(refl,im,wave,A,pfx,hfx,calcControls,parmDict) #corrected reflection position 1656 1670 Lorenz = 1./(2.*sind(refl[5+im]/2.)**2*cosd(refl[5+im]/2.)) #Lorentz correction 1657 1671 # refl[5+im] += GetHStrainShift(refl,im,SGData,phfx,hfx,calcControls,parmDict) #apply hydrostatic strain shift … … 1696 1710 h,k,l = refl[:3] 1697 1711 Uniq = np.inner(refl[:3],SGMT) 1698 refl[5+im] = GetReflPos(refl,im,0.0,A, hfx,calcControls,parmDict) #corrected reflection position1712 refl[5+im] = GetReflPos(refl,im,0.0,A,pfx,hfx,calcControls,parmDict) #corrected reflection position 1699 1713 Lorenz = sind(parmDict[hfx+'2-theta']/2)*refl[4+im]**4 #TOF Lorentz correction 1700 1714 # refl[5+im] += GetHStrainShift(refl,im,SGData,phfx,hfx,calcControls,parmDict) #apply hydrostatic strain shift … … 1821 1835 time0 = time.time() 1822 1836 for iref,refl in enumerate(refDict['RefList']): 1823 h,k,l = refl[:3] 1837 if im: 1838 h,k,l,m = refl[:4] 1839 else: 1840 h,k,l = refl[:3] 1824 1841 Uniq = np.inner(refl[:3],SGMT) 1825 1842 if 'T' in calcControls[hfx+'histType']: … … 1882 1899 pass 1883 1900 if 'C' in calcControls[hfx+'histType']: 1884 dpdA,dpdw,dpdZ,dpdSh,dpdTr,dpdX,dpdY = GetReflPosDerv(refl,im,wave,A,hfx,calcControls,parmDict)1901 dpdA,dpdw,dpdZ,dpdSh,dpdTr,dpdX,dpdY,dpdV = GetReflPosDerv(refl,im,wave,A,pfx,hfx,calcControls,parmDict) 1885 1902 names = {hfx+'Scale':[dIdsh,'int'],hfx+'Polariz.':[dIdpola,'int'],phfx+'Scale':[dIdsp,'int'], 1886 1903 hfx+'U':[tanth**2,'sig'],hfx+'V':[tanth,'sig'],hfx+'W':[1.0,'sig'], … … 1895 1912 names.update({hfx+'Absorption':[dFdAb,'int'],}) 1896 1913 else: #'T'OF 1897 dpdA,dpdZ,dpdDC,dpdDA,dpdDB = GetReflPosDerv(refl,im,0.0,A,hfx,calcControls,parmDict)1914 dpdA,dpdZ,dpdDC,dpdDA,dpdDB,dpdV = GetReflPosDerv(refl,im,0.0,A,pfx,hfx,calcControls,parmDict) 1898 1915 names = {hfx+'Scale':[dIdsh,'int'],phfx+'Scale':[dIdsp,'int'], 1899 1916 hfx+'difC':[dpdDC,'pos'],hfx+'difA':[dpdDA,'pos'],hfx+'difB':[dpdDB,'pos'], … … 1961 1978 if Ka2: 1962 1979 depDerivDict[name][iBeg2:iFin2] += dDijDict[name]*dervDict2['pos'] 1980 for i,name in enumerate([pfx+'mV0',pfx+'mV1',pfx+'mV2']): 1981 if name in varylist: 1982 dMdv[varylist.index(name)][iBeg:iFin] += dpdV[i]*dervDict['pos'] 1983 if Ka2: 1984 dMdv[varylist.index(name)][iBeg2:iFin2] += dpdV[i]*dervDict2['pos'] 1985 elif name in dependentVars: 1986 depDerivDict[name][iBeg:iFin] += dpdV[i]*dervDict['pos'] 1987 if Ka2: 1988 depDerivDict[name][iBeg2:iFin2] += dpdV[i]*dervDict2['pos'] 1963 1989 if 'C' in calcControls[hfx+'histType']: 1964 1990 sigDict,gamDict = GetSampleSigGamDerv(refl,im,wave,G,GB,SGData,hfx,phfx,calcControls,parmDict)
Note: See TracChangeset
for help on using the changeset viewer.