Changeset 1113 for trunk/GSASIIstrMath.py
- Timestamp:
- Oct 18, 2013 11:18:14 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIstrMath.py
r1111 r1113 605 605 FFtables = calcControls['FFtables'] 606 606 BLtables = calcControls['BLtables'] 607 nRef = len(refDict['RefList']) 607 608 Tdata,Mdata,Fdata,Xdata,dXdata,IAdata,Uisodata,Uijdata = GetAtomFXU(pfx,calcControls,parmDict) 609 mSize = len(Mdata) 608 610 FF = np.zeros(len(Tdata)) 609 611 if 'N' in calcControls[hfx+'histType']: … … 616 618 bij = Mast*Uij.T 617 619 dFdvDict = {} 618 dFdfr = np.zeros(( len(refDict['RefList']),len(Mdata)))619 dFdx = np.zeros(( len(refDict['RefList']),len(Mdata),3))620 dFdui = np.zeros(( len(refDict['RefList']),len(Mdata)))621 dFdua = np.zeros(( len(refDict['RefList']),len(Mdata),6))622 dFdbab = np.zeros(( len(refDict['RefList']),2))620 dFdfr = np.zeros((nRef,mSize)) 621 dFdx = np.zeros((nRef,mSize,3)) 622 dFdui = np.zeros((nRef,mSize)) 623 dFdua = np.zeros((nRef,mSize,6)) 624 dFdbab = np.zeros((nRef,2)) 623 625 for iref,refl in enumerate(refDict['RefList']): 624 626 H = np.array(refl[:3]) … … 661 663 dFdui[iref] = 2.*(fas[0]*dfadui[0]+fas[1]*dfadui[1]) 662 664 dFdua[iref] = 2.*(fas[0]*dfadua[0]+fas[1]*dfadua[1]) 663 dFdbab[iref] = np.array([np.sum(dfadba*dBabdA),np.sum(-dfadba*parmDict[phfx+'BabA']*SQfactor*dBabdA)]).T665 dFdbab[iref] = 2.*fas[0]*np.array([np.sum(dfadba*dBabdA),np.sum(-dfadba*parmDict[phfx+'BabA']*SQfactor*dBabdA)]).T 664 666 if not SGData['SGInv']: 665 667 dfbdfr = np.sum(fb/occ[:,np.newaxis],axis=2) #problem here if occ=0 for some atom … … 672 674 dFdui[iref] += 2.*(fbs[0]*dfbdui[0]-fbs[1]*dfbdui[1]) 673 675 dFdua[iref] += 2.*(fbs[0]*dfbdua[0]+fbs[1]*dfbdua[1]) 674 dFdbab[iref] += np.array([np.sum(dfbdba*dBabdA),np.sum(-dfbdba*parmDict[phfx+'BabA']*SQfactor*dBabdA)]).T676 dFdbab[iref] += 2.*fbs[0]*np.array([np.sum(dfbdba*dBabdA),np.sum(-dfbdba*parmDict[phfx+'BabA']*SQfactor*dBabdA)]).T 675 677 #loop over atoms - each dict entry is list of derivatives for all the reflections 676 678 for i in range(len(Mdata)): … … 686 688 dFdvDict[pfx+'AU13:'+str(i)] = 2.*dFdua.T[4][i] 687 689 dFdvDict[pfx+'AU23:'+str(i)] = 2.*dFdua.T[5][i] 688 689 690 dFdvDict[pfx+'BabA'] = dFdbab.T[0] 691 dFdvDict[pfx+'BabU'] = dFdbab.T[1] 690 692 return dFdvDict 691 693 … … 1566 1568 depDerivDict[name][iBeg2:iFin2] += sigDict[name]*dervDict2['sig'] 1567 1569 for name in ['BabA','BabU']: 1568 if phfx+name in varylist: 1569 dMdv[varylist.index(phfx+name)][iBeg:iFin] += dFdvDict[pfx+name][iref]*dervDict['int']*cw[iBeg:iFin] 1570 if Ka2: 1571 dMdv[varylist.index(phfx+name)][iBeg2:iFin2] += dFdvDict[pfx+name][iref]*dervDict2['int']*cw[iBeg2:iFin2] 1572 elif phfx+name in dependentVars: 1573 depDerivDict[phfx+name][iBeg:iFin] += dFdvDict[pfx+name][iref]*dervDict['int']*cw[iBeg:iFin] 1574 if Ka2: 1575 depDerivDict[phfx+name][iBeg2:iFin2] += dFdvDict[pfx+name][iref]*dervDict2['int']*cw[iBeg2:iFin2] 1570 if refl[9]: 1571 if phfx+name in varylist: 1572 dMdv[varylist.index(phfx+name)][iBeg:iFin] += dFdvDict[pfx+name][iref]*dervDict['int']/refl[9] 1573 if Ka2: 1574 dMdv[varylist.index(phfx+name)][iBeg2:iFin2] += dFdvDict[pfx+name][iref]*dervDict2['int']/refl[9] 1575 elif phfx+name in dependentVars: 1576 depDerivDict[phfx+name][iBeg:iFin] += dFdvDict[pfx+name][iref]*dervDict['int']/refl[9] 1577 if Ka2: 1578 depDerivDict[phfx+name][iBeg2:iFin2] += dFdvDict[pfx+name][iref]*dervDict2['int']/refl[9] 1576 1579 elif 'T' in calcControls[hfx+'histType']: 1577 1580 print 'TOF Undefined at present'
Note: See TracChangeset
for help on using the changeset viewer.