Changeset 1478 for trunk/GSASIIstrMath.py
- Timestamp:
- Aug 25, 2014 4:47:28 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIstrMath.py
r1475 r1478 1200 1200 cosP,sinP = G2lat.CosSinAngle(H,P,G) 1201 1201 Sgam = 1.e-4*parmDict[hfx+'difC']*(parmDict[phfx+'Size;i']*parmDict[phfx+'Size;a']) 1202 Sgam *= np.sqrt((sinP*parmDict[phfx+'Size;a'])**2+(cosP*parmDict[phfx+'Size;i'])**2)1202 Sgam /= np.sqrt((sinP*parmDict[phfx+'Size;a'])**2+(cosP*parmDict[phfx+'Size;i'])**2) 1203 1203 else: #ellipsoidal crystallites 1204 1204 Sij =[parmDict[phfx+'Size:%d'%(i)] for i in range(6)] … … 1208 1208 #microstrain 1209 1209 if calcControls[phfx+'MustrainType'] == 'isotropic': 1210 Mgam = 1.e-6*parmDict[hfx+'difC']* parmDict[phfx+'Mustrain;i']1210 Mgam = 1.e-6*parmDict[hfx+'difC']*refl[4]*parmDict[phfx+'Mustrain;i'] 1211 1211 elif calcControls[phfx+'MustrainType'] == 'uniaxial': 1212 1212 H = np.array(refl[:3]) … … 1215 1215 Si = parmDict[phfx+'Mustrain;i'] 1216 1216 Sa = parmDict[phfx+'Mustrain;a'] 1217 Mgam = 1.e-6*parmDict[hfx+'difC']* Si*Sa/np.sqrt((Si*cosP)**2+(Sa*sinP)**2)1217 Mgam = 1.e-6*parmDict[hfx+'difC']*refl[4]*Si*Sa/np.sqrt((Si*cosP)**2+(Sa*sinP)**2) 1218 1218 else: #generalized - P.W. Stephens model 1219 1219 pwrs = calcControls[phfx+'MuPwrs'] … … 1305 1305 else: #'T'OF 1306 1306 if calcControls[phfx+'SizeType'] == 'isotropic': 1307 Sgam = 1.e-4*parmDict[hfx+'difC']* parmDict[phfx+'Size;i']1308 gamDict[phfx+'Size;i'] = 1.e-4*parmDict[hfx+'difC']* parmDict[phfx+'Size;mx']1309 sigDict[phfx+'Size;i'] = 1.e-4*parmDict[hfx+'difC']*Sgam*(1.-parmDict[phfx+'Size;mx'])**2/ateln21307 Sgam = 1.e-4*parmDict[hfx+'difC']*refl[4]*parmDict[phfx+'Size;i'] 1308 gamDict[phfx+'Size;i'] = 1.e-4*parmDict[hfx+'difC']*refl[4]*parmDict[phfx+'Size;mx'] 1309 sigDict[phfx+'Size;i'] = 2.e-4*parmDict[hfx+'difC']*refl[4]*Sgam*(1.-parmDict[phfx+'Size;mx'])**2/ateln2 1310 1310 elif calcControls[phfx+'SizeType'] == 'uniaxial': 1311 const = 1.e-4*parmDict[hfx+'difC'] 1311 const = 1.e-4*parmDict[hfx+'difC']*refl[4] 1312 1312 H = np.array(refl[:3]) 1313 1313 P = np.array(calcControls[phfx+'SizeAxis']) … … 1338 1338 #microstrain derivatives 1339 1339 if calcControls[phfx+'MustrainType'] == 'isotropic': 1340 Mgam = 1.e-6*parmDict[hfx+'difC']* parmDict[phfx+'Mustrain;i']1340 Mgam = 1.e-6*parmDict[hfx+'difC']*refl[4]*parmDict[phfx+'Mustrain;i'] 1341 1341 gamDict[phfx+'Mustrain;i'] = 1.e-6*parmDict[hfx+'difC']*parmDict[phfx+'Mustrain;mx'] 1342 1342 sigDict[phfx+'Mustrain;i'] = 2.e-6*parmDict[hfx+'difC']*Mgam*(1.-parmDict[phfx+'Mustrain;mx'])**2/ateln2 … … 1425 1425 return dpdA,dpdZ,dpdDC,dpdDA,dpdDB 1426 1426 1427 def GetHStrainShift(refl,SGData,phfx, parmDict):1427 def GetHStrainShift(refl,SGData,phfx,hfx,calcControls,parmDict): 1428 1428 'Needs a doc string' 1429 1429 laue = SGData['SGLaue'] … … 1452 1452 Dij = parmDict[phfx+'D11']*h**2+parmDict[phfx+'D22']*k**2+parmDict[phfx+'D33']*l**2+ \ 1453 1453 parmDict[phfx+'D12']*h*k+parmDict[phfx+'D13']*h*l+parmDict[phfx+'D23']*k*l 1454 return -Dij*refl[4]**2*tand(refl[5]/2.0) 1454 if 'C' in calcControls[hfx+'histType']: 1455 return -180.*Dij*refl[4]**2*tand(refl[5]/2.0)/np.pi 1456 else: 1457 return -Dij*parmDict[hfx+'difC']*refl[4]**2/2. 1455 1458 1456 def GetHStrainShiftDerv(refl,SGData,phfx ):1459 def GetHStrainShiftDerv(refl,SGData,phfx,hfx,calcControls,parmDict): 1457 1460 'Needs a doc string' 1458 1461 laue = SGData['SGLaue'] … … 1482 1485 dDijDict = {phfx+'D11':h**2,phfx+'D22':k**2,phfx+'D33':l**2, 1483 1486 phfx+'D12':h*k,phfx+'D13':h*l,phfx+'D23':k*l} 1484 for item in dDijDict: 1485 dDijDict[item] *= -refl[4]**2*tand(refl[5]/2.0) 1487 if 'C' in calcControls[hfx+'histType']: 1488 for item in dDijDict: 1489 dDijDict[item] *= -180.0*refl[4]**2*tand(refl[5]/2.0)/np.pi 1490 else: 1491 for item in dDijDict: 1492 dDijDict[item] *= -parmDict[hfx+'difC']*refl[4]**2/2. 1486 1493 return dDijDict 1487 1494 … … 1583 1590 gam = parmDict[hfx+'X']*refl[4]+parmDict[hfx+'Y']*refl[4]**2 1584 1591 Ssig,Sgam = GetSampleSigGam(refl,0.0,G,GB,hfx,phfx,calcControls,parmDict) 1585 sig += Ssig #save peak sigma1592 sig += Ssig 1586 1593 sig = max(0.001,sig) 1587 gam += Sgam #save peak gamma1594 gam += Sgam 1588 1595 gam = max(0.001,gam) 1589 1596 return sig,gam … … 1636 1643 refl[5] = GetReflPos(refl,wave,G,hfx,calcControls,parmDict) #corrected reflection position 1637 1644 Lorenz = 1./(2.*sind(refl[5]/2.)**2*cosd(refl[5]/2.)) #Lorentz correction 1638 refl[5] += GetHStrainShift(refl,SGData,phfx, parmDict) #apply hydrostatic strain shift1645 refl[5] += GetHStrainShift(refl,SGData,phfx,hfx,calcControls,parmDict) #apply hydrostatic strain shift 1639 1646 refl[6:8] = GetReflSigGamCW(refl,wave,G,GB,phfx,calcControls,parmDict) #peak sig & gam 1640 1647 refl[11:15] = GetIntensityCorr(refl,Uniq,G,g,pfx,phfx,hfx,SGData,calcControls,parmDict) … … 1671 1678 refl[5] = GetReflPos(refl,0.0,G,hfx,calcControls,parmDict) #corrected reflection position 1672 1679 Lorenz = sind(parmDict[hfx+'2-theta']/2)*refl[4]**4 #TOF Lorentz correction 1673 refl[5] += GetHStrainShift(refl,SGData,phfx, parmDict) #apply hydrostatic strain shift1680 refl[5] += GetHStrainShift(refl,SGData,phfx,hfx,calcControls,parmDict) #apply hydrostatic strain shift 1674 1681 refl[6:8] = GetReflSigGamTOF(refl,G,GB,phfx,calcControls,parmDict) #peak sig & gam 1675 1682 refl[12:14] = GetReflAlpBet(refl,hfx,parmDict) … … 1904 1911 if Ka2: 1905 1912 depDerivDict[name][iBeg2:iFin2] += dpdA*dervDict2['pos'] 1906 dDijDict = GetHStrainShiftDerv(refl,SGData,phfx )1913 dDijDict = GetHStrainShiftDerv(refl,SGData,phfx,hfx,calcControls,parmDict) 1907 1914 for name in dDijDict: 1908 1915 if name in varylist:
Note: See TracChangeset
for help on using the changeset viewer.