Changeset 889


Ignore:
Timestamp:
Apr 19, 2013 3:38:07 PM (9 years ago)
Author:
vondreele
Message:

add torsion angle derivatives in RB
small fixes to other RB stuff

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Exercises/single crystal/IB3.EXP

    r842 r889  
    1010    HSTRY  8 GENLES  Win32  Oct 09 15:28:00 2011 Sdsq= 0.599E+04 S/E= 0.280E-02
    1111    HSTRY  9 EXPEDT  Win32  Jan 30 15:32:30 2013             L   O             
     12    HSTRY 10 GENLES  Win32  Jan 30 15:32:35 2013                               
    1213  DSGL CDAT1  DRAD ARAD NOFO                                                   
    1314  FOUR CDAT1  PTSN X    1 NOPR   0.00      999.99                               
     
    125126INST 1PHIR    -1.                                                               
    126127ZZZZZZZZZZZZ  Last EXP file record                                             
    127     HSTRY 10 GENLES  Win32  Jan 30 15:32:35 2013                               
     128    HSTRY 11 GENLES  Win32  Apr 18 15:20:59 2013                               
  • trunk/GSASIIconstrGUI.py

    r885 r889  
    267267        '''
    268268        allcons = []
    269         for key in 'Hist','HAP','Phase':
     269        for key in ['Hist','HAP','Phase','Global']:
    270270            allcons += data[key]
    271271        allcons += newcons
  • trunk/GSASIImath.py

    r885 r889  
    14481448    if nl.norm(Q[1:]):
    14491449        V = Q[1:]/nl.norm(Q[1:])
     1450    else:
     1451        A = 0.
     1452        V = np.array([0.,0.,1.])
    14501453    return A,V
    14511454   
     
    14581461    if nl.norm(Q[1:]):
    14591462        V = Q[1:]/nl.norm(Q[1:])
     1463    else:
     1464        A = 0.
     1465        V = np.array([0.,0.,1.])
    14601466    return A,V
    14611467   
  • trunk/GSASIIphsGUI.py

    r885 r889  
    31963196            Orig = RBObj['Orig'][0]
    31973197            Orien,OrienV = G2mth.Q2AVdeg(RBObj['Orient'][0])
    3198             OrienV = np.inner(Bmat,OrienV)
    31993198            Orien = [Orien,]
    32003199            Orien.extend(OrienV/nl.norm(OrienV))
     
    38043803    def OnGlobalResRBRef(event):
    38053804        RBObjs = data['RBModels']['Residue']
    3806         names = ['Origin','Orientation',]
     3805        names = ['Origin','Orient. angle','Full Orient.']
    38073806        nTor = 0
    38083807        for rbObj in RBObjs:
     
    38223821                    else:
    38233822                        rbObj['Orig'][1] = False
    3824                     if 'Orientation' in parms:
    3825                         rbObj['Orient'][1] = 'Q'
     3823                    if 'Full Orient.' in parms:
     3824                        rbObj['Orient'][1] = 'AV'
     3825                    elif 'Orient. angle' in parms:
     3826                        rbObj['Orient'][1] = 'A'
    38263827                    else:
    38273828                        rbObj['Orient'][1] = ' '
  • trunk/GSASIIstruct.py

    r888 r889  
    814814        Pos = RBObj['Orig'][0]
    815815        jrb = RRBIds.index(RBObj['RBId'])
     816        torData = RBData['Residue'][RBObj['RBId']]['rbSeq']
    816817        rbsx = str(irb)+':'+str(jrb)
    817818        XYZ,Cart = G2mth.UpdateRBXYZ(Bmat,RBObj,RBData,'Residue')
     819        for itors,tors in enumerate(RBObj['Torsions']):
     820            tname = pfx+'RBRTr;'+str(itors)+':'+rbsx           
     821            orId,pvId = torData[itors][:2]
     822            pivotVec = Cart[pvId]-Cart[orId]
     823            QA = G2mth.AVdeg2Q(0.001,pivotVec)
     824            QB = G2mth.AVdeg2Q(-0.001,pivotVec)
     825            for ir in torData[itors][3]:
     826                atNum = AtLookup[RBObj['Ids'][ir]]
     827                rVec = Cart[ir]-Cart[pvId]
     828                dRdT = np.inner(Bmat,(G2mth.prodQVQ(QA,rVec)-G2mth.prodQVQ(QB,rVec)))/.002
     829                for ix in [0,1,2]:
     830                    dFdvDict[tname] += dRdT[ix]*dFdvDict[pfx+atxIds[ix]+str(atNum)]
    818831        for ia,atId in enumerate(RBObj['Ids']):
    819832            atNum = AtLookup[atId]
     
    12871300                    print >>pFile,'  atoms(symOp)  calc  obs  sig  delt/sig  torsions: '
    12881301                    coeffDict = itemRest['Coeff']
    1289                     for indx,ops,cofName,esd in enumerate(itemRest[rest]):
     1302                    for indx,ops,cofName,esd in itemRest[rest]:
    12901303                        AtNames = G2mth.GetAtomItemsById(Atoms,AtLookup,indx,ct-1)
    12911304                        AtName = ''
     
    12971310                            tor = G2mth.getRestTorsion(XYZ,Amat)
    12981311                            restr,calc = G2mth.calcTorsionEnergy(tor,coeffDict[cofName])
    1299                             print >>pFile,' %8.3f %8.3f %.3f %8.3f %8.3f %s'%(AtName[:-1],calc,obs,esd,(obs-calc)/esd,tor)
     1312                            print >>pFile,' %8.3f %8.3f %.3f %8.3f %8.3f %s'%(calc,obs,esd,(obs-calc)/esd,tor,AtName[:-1])
    13001313                        else:
    13011314                            phi,psi = G2mth.getRestRama(XYZ,Amat)
    13021315                            restr,calc = G2mth.calcRamaEnergy(phi,psi,coeffDict[cofName])                               
    1303                             print >>pFile,' %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %s'%(AtName[:-1],calc,obs,esd,(obs-calc)/esd,phi,psi)
     1316                            print >>pFile,' %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %s'%(calc,obs,esd,(obs-calc)/esd,phi,psi,AtName[:-1])
    13041317                elif name == 'ChemComp':
    13051318                    print >>pFile,'     atoms   mul*frac  factor     prod'
     
    14691482        valstr = '  values:'
    14701483        sigstr = '  esds  :'
     1484        if 'N' not in TLS:
     1485            print >>pFile,' Thermal motion:'
    14711486        if 'T' in TLS:
    14721487            for i,pt in enumerate(['T11:','T22:','T33:','T12:','T13:','T23:']):
     
    15131528        if 'U' in TLS:
    15141529            name = pfx+rbfx+'U:'+rbsx
    1515             namstr = '  names :'+'%12s'%('U')
     1530            namstr = '  names :'+'%12s'%('Uiso')
    15161531            valstr = '  values:'+'%12.5f'%(parmDict[name])
    15171532            if name in sigDict:
     
    15261541        namstr = '  names :'
    15271542        valstr = '  values:'
    1528         sigstr = '  esds  :'       
     1543        sigstr = '  esds  :'
     1544        nTors = len(RBObj['Torsions'])
     1545        if nTors:
     1546            print >>pFile,' Torsions:'
     1547            for it in range(nTors):
     1548                name = pfx+'RBRTr;'+str(it)+':'+rbsx
     1549                namstr += '%12s'%('Tor'+str(it))
     1550                valstr += '%12.4f'%(parmDict[name])
     1551                if name in sigDict:
     1552                    sigstr += '%12.4f'%(sigDict[name])
     1553            print >>pFile,namstr
     1554            print >>pFile,valstr
     1555            print >>pFile,sigstr
    15291556               
    15301557    def PrintSHtextureAndSig(textureData,SHtextureSig):
     
    16261653                jrb = VRBIds.index(RBObj['RBId'])
    16271654                rbsx = str(irb)+':'+str(jrb)
    1628                 print >>pFile,' Vector rigid body '
     1655                print >>pFile,' Vector rigid body parameters:'
    16291656                PrintRBObjPOAndSig('RBV',rbsx)
    16301657                PrintRBObjTLSAndSig('RBV',rbsx,RBObj['ThermalMotion'][0])
     
    16321659                jrb = RRBIds.index(RBObj['RBId'])
    16331660                rbsx = str(irb)+':'+str(jrb)
    1634                 print >>pFile,' Residue rigid body '
     1661                print >>pFile,' Residue rigid body parameters:'
    16351662                PrintRBObjPOAndSig('RBR',rbsx)
    16361663                PrintRBObjTLSAndSig('RBR',rbsx,RBObj['ThermalMotion'][0])
     
    26832710                elif name in ['Torsion','Rama']:
    26842711                    coeffDict = itemRest['Coeff']
    2685                     for i,[indx,ops,cofName,esd] in enumerate(torsionList):
     2712                    for i,[indx,ops,cofName,esd] in enumerate(itemRest[rest]):
    26862713                        pNames.append(str(pId)+':'+name+':'+str(i))
    26872714                        XYZ = np.array(G2mth.GetAtomCoordsByID(pId,parmDict,AtLookup,indx))
     
    39814008                        sig = ref[6]/(2.0*Fo)
    39824009                        if Fo/sig >= calcControls['minF/sig']:
    3983                             w = wtFactor/sig
     4010                            w = wtFactor/np.sqrt(sig)
    39844011                            for j,var in enumerate(varylist):
    39854012                                if var in dFdvDict:
     
    40644091                        if ref[5]/ref[6] >= calcControls['minF/sig']:
    40654092                            w =  wtFactor/ref[6]
     4093                            print ref[:3],ref[5],ref[6],w
    40664094                            wdf[iref] = w*(ref[5]-ref[7])
    40674095                            for j,var in enumerate(varylist):
     
    40774105                            w = wtFactor/sig
    40784106                            wdf[iref] = w*(Fo-Fc)
     4107                            print ref[:3],ref[5],Fo,ref[6],sig,w
    40794108                            if Fo/sig >= calcControls['minF/sig']:
    40804109                                for j,var in enumerate(varylist):
Note: See TracChangeset for help on using the changeset viewer.