Changeset 2326 for trunk/GSASIImath.py


Ignore:
Timestamp:
Jun 15, 2016 9:21:13 PM (7 years ago)
Author:
vondreele
Message:

add more to angle calc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r2321 r2326  
    15891589    return Dist,sig
    15901590
    1591 def CalcAngle(distance_dict, distance_atoms, parmDict):
     1591def CalcAngle(angle_dict, angle_atoms, parmDict):
    15921592    if not len(parmDict):
    15931593        return 0.
    1594 
    1595     return 0.   #angle
     1594    pId = angle_dict['pId']
     1595    pfx = '%d::'%(pId)
     1596    A = [parmDict['%s::A%d'%(pId,i)] for i in range(6)]
     1597    Amat = G2lat.cell2AB(G2lat.A2cell(A))[0]
     1598    Oxyz = [parmDict['%s::A%s:%d'%(pId,x,angle_atoms[0])] for x in ['x','y','z']]
     1599    Axyz = [parmDict['%s::A%s:%d'%(pId,x,angle_atoms[1][0])] for x in ['x','y','z']]
     1600    Bxyz = [parmDict['%s::A%s:%d'%(pId,x,angle_atoms[1][1])] for x in ['x','y','z']]
     1601    ABxyz = [Axyz,Bxyz]
     1602    symNo = angle_dict['symNo']
     1603    for i in range(2):
     1604        inv = 1
     1605        if symNo[i] < 0:
     1606            inv = -1
     1607            symNo[i] *= -1
     1608        cen = symNo[i]/100
     1609        op = symNo[i]%100-1
     1610        M,T = angle_dict['SGData']['SGOps'][op]
     1611        D = T*inv+angle_dict['SGData']['SGCen'][cen]
     1612        D += angle_dict['cellNo'][i]
     1613        ABxyz[i] = np.inner(M*inv,ABxyz[i])+D
     1614        ABxyz[i] = np.inner(Amat,(ABxyz[i]-Oxyz))
     1615        dist = np.sqrt(np.sum(ABxyz[i]**2))
     1616        if not dist:
     1617            return 0.
     1618        ABxyz[i] /= dist
     1619    angle = acosd(np.sum(ABxyz[0]*ABxyz[1]))
     1620    return angle
    15961621
    15971622def getSyXYZ(XYZ,ops,SGData):
Note: See TracChangeset for help on using the changeset viewer.