Changeset 2318


Ignore:
Timestamp:
Jun 13, 2016 9:11:36 PM (5 years ago)
Author:
vondreele
Message:

Add atom-atom distance to seq results table - needs debugging

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r2317 r2318  
    14681468            help='Add a new bond distance pseudo-variable')
    14691469        self.SequentialPvars.Append(
    1470             id=wxADDSEQANGLE, kind=wx.ITEM_NORMAL,text='Calc Angle',
     1470            id=wxADDSEQANGLE, kind=wx.ITEM_NORMAL,text='Add Angle',
    14711471            help='Add a new bond angle pseudo-variable')
    14721472        self.SequentialPvars.Append(
     
    27772777                Phase = Phases[pName]
    27782778                General = Phase['General']
    2779                 Cell = General['Cell'][1:7]
    2780                 Amat = G2lat.cell2AB(Cell)[0]
     2779                cx,ct = General['AtomPtrs'][:2]
     2780                pId = Phase['pId']
     2781                SGData = General['SGData']
     2782                sB = Tatom.find('(')+1
     2783                symNo = 0
     2784                if sB:
     2785                    sF = Tatom.find(')')
     2786                    symNo = int(Tatom[sB:sF])
     2787                cellNo = [0,0,0]
     2788                cB = Tatom.find('[')
     2789                if cB>0:
     2790                    cF = Tatom.find(']')+1
     2791                    cellNo = eval(Tatom[cB:cF])
     2792                Atoms = Phase['Atoms']
     2793                aNames = [atom[ct-1] for atom in Atoms]
     2794                oId = aNames.index(Oatom)
     2795                tId = aNames.index(Tatom.split(' +')[0])
    27812796                # create an expression object
    27822797                obj = G2obj.ExpressionObj()
    27832798                obj.expression = 'Dist(%s,%s)'%(Oatom,Tatom.split(' d=')[0].replace(' ',''))
    2784                 obj.distance_stuff = {'Amat':Amat,}
    2785                 obj.distance_atoms = [1,2]
     2799                obj.distance_dict = {'pId':pId,'SGData':SGData,'symNo':symNo,'cellNo':cellNo}
     2800                obj.distance_atoms = [oId,tId]
    27862801        else:
    27872802            dlg.Destroy()
  • trunk/GSASIImath.py

    r2314 r2318  
    15051505################################################################################
    15061506
     1507def CalcDist(distance_dict, distance_atoms, parmDict):
     1508    if not len(parmDict):
     1509        return 0.
     1510    pId = distance_dict['pId']
     1511    pfx = '%d::'%(pId)
     1512    A = [parmDict['%s::A%d'%(pId,i)] for i in range(6)]
     1513    Amat = G2lat.cell2AB(G2lat.A2cell(A))[0]
     1514    Oxyz = [parmDict['%s::A%s:%d'%(pId,x,distance_atoms[0])] for x in ['x','y','z']]
     1515    Txyz = [parmDict['%s::A%s:%d'%(pId,x,distance_atoms[1])] for x in ['x','y','z']]
     1516    inv = 1
     1517    symNo = distance_dict['symNo']
     1518    if symNo < 0:
     1519        inv = -1
     1520        symNo *= -1
     1521    cen = symNo/100
     1522    op = symNo%100-1
     1523    M,T = distance_dict['SGData']['SGOps'][op]
     1524    M *= inv
     1525    T *= inv
     1526    D = T+distance_dict['SGData']['SGCen'][cen]
     1527    D += distance_dict['cellNo']
     1528    Txyz = np.inner(M,Txyz)+D
     1529    dist = np.sqrt(np.sum(np.inner(Amat,(Txyz-Oxyz))**2))
     1530#    GSASIIpath.IPyBreak()
     1531    return dist   
     1532   
    15071533def getSyXYZ(XYZ,ops,SGData):
    15081534    '''default doc string
  • trunk/GSASIIobj.py

    r2316 r2318  
    20432043        if self.eObj.expression.startswith('Dist'):
    20442044            dist = 0
    2045             #dist = CalcDist(self.eObj.distance_stuff, self.eObj.distance_atoms, self.parmDict)
     2045#            GSASIIpath.IPyBreak()
     2046            dist = G2mth.CalcDist(self.eObj.distance_dict, self.eObj.distance_atoms, self.parmDict)
    20462047            return dist
    20472048        if self.compiledExpr is None:
Note: See TracChangeset for help on using the changeset viewer.