@@ -1368,6 +1368,7 @@ def StructureFactorDerv2(refDict,G,hfx,pfx,SGData,calcControls,parmDict):
13681368 dffdSHI .update (dFFdSI )
13691369 Bab = np .repeat (parmDict [phfx + 'BabA' ]* np .exp (- parmDict [phfx + 'BabU' ]* SQfactor ),nOps )
13701370 dBabdA = np .exp (- parmDict [phfx + 'BabU' ]* SQfactor )
1371+
13711372 fotr = np .reshape (((FFR + FP ).T - Bab ).T ,cosp .shape )* Tcorr
13721373 foti = np .reshape (Flack * (FFI + FPP ),sinp .shape )* Tcorr
13731374 fa = np .array ([fotr * cosp ,- foti * sinp ])
@@ -1378,19 +1379,19 @@ def StructureFactorDerv2(refDict,G,hfx,pfx,SGData,calcControls,parmDict):
13781379 fbx = np .array ([fotr * cosp ,- foti * sinp ])
13791380 #sum below is over Uniq
13801381 dfadfr = np .sum (fa / occ ,axis = - 2 ) #array(2,refBlk,nAtom) Fdata != 0 avoids /0. problem
1382+ dfbdfr = np .sum (fb / occ ,axis = - 2 ) #Fdata != 0 avoids /0. problem
13811383 dfadff = np .array ([cosp * Tcorr * atFlg ,- Flack * sinp * Tcorr * atFlg ]) # no sum on Uniq; array(2,refBlk,nEqv,nAtom)
1384+ dfbdff = np .array ([sinp * Tcorr * atFlg ,Flack * cosp * Tcorr * atFlg ])
13821385 dfadba = np .sum (- cosp * Tcorr ,axis = - 2 ) #array(refBlk,nAtom)
1386+ dfbdba = np .sum (- sinp * Tcorr ,axis = - 2 )
13831387 dfadx = np .sum (twopi * Uniq [nxs ,:,nxs ,:,:]* np .swapaxes (fax ,- 2 ,- 1 )[:,:,:,:,nxs ],axis = - 2 )
1388+ dfbdx = np .sum (twopi * Uniq [nxs ,:,nxs ,:,:]* np .swapaxes (fbx ,- 2 ,- 1 )[:,:,:,:,nxs ],axis = - 2 )
13841389 dfadui = np .sum (- SQfactor [nxs ,:,nxs ,nxs ]* fa ,axis = - 2 ) #array(Ops,refBlk,nAtoms)
1390+ dfbdui = np .sum (- SQfactor [nxs ,:,nxs ,nxs ]* fb ,axis = - 2 )
13851391 dfadua = np .sum (- Hij [nxs ,:,nxs ,:,:]* np .swapaxes (fa ,- 2 ,- 1 )[:,:,:,:,nxs ],axis = - 2 )
1386- dfbdfr = np .sum (fb / occ ,axis = - 2 ) #Fdata != 0 avoids /0. problem
1387- dfbdff = np .array ([sinp * Tcorr * atFlg ,Flack * cosp * Tcorr * atFlg ])
1388- dfbdba = np .sum (- sinp * Tcorr ,axis = - 2 )
1392+ dfbdua = np .sum (- Hij [nxs ,:,nxs ,:,:]* np .swapaxes (fb ,- 2 ,- 1 )[:,:,:,:,nxs ],axis = - 2 )
13891393 dfadfl = np .sum (np .sum (- foti * sinp ,axis = - 1 ),axis = - 1 )
13901394 dfbdfl = np .sum (np .sum (foti * cosp ,axis = - 1 ),axis = - 1 )
1391- dfbdx = np .sum (twopi * Uniq [nxs ,:,nxs ,:,:]* np .swapaxes (fbx ,- 2 ,- 1 )[:,:,:,:,nxs ],axis = - 2 )
1392- dfbdui = np .sum (- SQfactor [nxs ,:,nxs ,nxs ]* fb ,axis = - 2 )
1393- dfbdua = np .sum (- Hij [nxs ,:,nxs ,:,:]* np .swapaxes (fb ,- 2 ,- 1 )[:,:,:,:,nxs ],axis = - 2 )
13941395 #NB: the above have been checked against PA(1:10,1:2) in strfctr.for for Al2O3!
13951396 SA = fas [0 ]+ fas [1 ]
13961397 SB = fbs [0 ]+ fbs [1 ]
@@ -1402,8 +1403,8 @@ def StructureFactorDerv2(refDict,G,hfx,pfx,SGData,calcControls,parmDict):
14021403 dFdua [iBeg :iFin ] = pMul * np .sum (fas [:,:,nxs ,nxs ]* dfadua + fbs [:,:,nxs ,nxs ]* dfbdua ,axis = 0 )
14031404 else :
14041405 dFdfr [iBeg :iFin ] = (2. * SA [:,nxs ]* (dfadfr [0 ]+ dfadfr [1 ])+ 2. * SB [:,nxs ]* (dfbdfr [0 ]+ dfbdfr [1 ]))* Mdata / nOps
1405- dFdff [:,iBeg :iFin ] = [2. * (fas [0 ,:,nxs ,nxs ]* dfadff [0 ]+ fbs [0 ,:,nxs ,nxs ]* dfbdff [0 ]),
1406- 2. * (fas [1 ,:,nxs ,nxs ]* dfadff [1 ]+ fbs [1 ,:,nxs ,nxs ]* dfbdff [1 ])] #not summed on Uniq yet array(Nref,nEqv,nAtom)
1406+ dFdff [:,iBeg :iFin ] = [2. * (fas [0 ,:,nxs ,nxs ]* dfadff [0 ]+ fbs [1 ,:,nxs ,nxs ]* dfbdff [0 ]),
1407+ 2. * (fas [0 ,:,nxs ,nxs ]* dfadff [1 ]+ fbs [1 ,:,nxs ,nxs ]* dfbdff [1 ])] #not summed on Uniq yet array(Nref,nEqv,nAtom)
14071408 dFdx [iBeg :iFin ] = 2. * SA [:,nxs ,nxs ]* (dfadx [0 ]+ dfadx [1 ])+ 2. * SB [:,nxs ,nxs ]* (dfbdx [0 ]+ dfbdx [1 ])
14081409 dFdui [iBeg :iFin ] = 2. * SA [:,nxs ]* (dfadui [0 ]+ dfadui [1 ])+ 2. * SB [:,nxs ]* (dfbdui [0 ]+ dfbdui [1 ])
14091410 dFdua [iBeg :iFin ] = 2. * SA [:,nxs ,nxs ]* (dfadua [0 ]+ dfadua [1 ])+ 2. * SB [:,nxs ,nxs ]* (dfbdua [0 ]+ dfbdua [1 ])
@@ -1422,7 +1423,7 @@ def StructureFactorDerv2(refDict,G,hfx,pfx,SGData,calcControls,parmDict):
14221423 dFdvDict [pfx + 'AU11:' + str (i )] = dFdua .T [0 ][i ]
14231424 dFdvDict [pfx + 'AU22:' + str (i )] = dFdua .T [1 ][i ]
14241425 dFdvDict [pfx + 'AU33:' + str (i )] = dFdua .T [2 ][i ]
1425- dFdvDict [pfx + 'AU12:' + str (i )] = dFdua .T [3 ][i ] #" should" be *2.0 but not true
1426+ dFdvDict [pfx + 'AU12:' + str (i )] = dFdua .T [3 ][i ] #should not be *2.0!
14261427 dFdvDict [pfx + 'AU13:' + str (i )] = dFdua .T [4 ][i ]
14271428 dFdvDict [pfx + 'AU23:' + str (i )] = dFdua .T [5 ][i ]
14281429 for item in dffdSHR :
@@ -1432,7 +1433,7 @@ def StructureFactorDerv2(refDict,G,hfx,pfx,SGData,calcControls,parmDict):
14321433 else :
14331434 if i == int (item .split (':' )[1 ]):
14341435 dFdvDict [pfx + item ] = np .sum (dFdff [0 ,:,:,i ]* np .reshape (dffdSHR [item ],(nRef ,- 1 )),axis = 1 )+ \
1435- np .sum (dFdff [1 ,:,:,i ]* np .reshape (dffdSHI [item ],(nRef ,- 1 )),axis = 1 )
1436+ np .sum (dFdff [1 ,:,:,i ]* np .reshape (dffdSHI [item ],(nRef ,- 1 )),axis = 1 )
14361437 dFdvDict [phfx + 'Flack' ] = 4. * dFdfl .T
14371438 dFdvDict [phfx + 'BabA' ] = dFdbab .T [0 ]
14381439 dFdvDict [phfx + 'BabU' ] = dFdbab .T [1 ]
0 commit comments