Changeset 1917


Ignore:
Timestamp:
Jul 1, 2015 3:36:09 PM (8 years ago)
Author:
vondreele
Message:

better handling of nonmerohedral twins

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r1915 r1917  
    833833                UseList[histoName] = SetDefaultDData(reflData['Type'],histoName)
    834834                G,g = G2lat.cell2Gmat(generalData['Cell'][1:7])
    835                 UseList[histoName]['Twins'] = [[np.array([[1,0,0],[0,1,0],[0,0,1]]),[1.0,False]],]
    836                 for iT in range(reflData.get('TwMax',0)):
    837                     UseList[histoName]['Twins'].append([False,0.0])
     835                if 'TwMax' in reflData:     #nonmerohedral twins present
     836                    UseList[histoName]['Twins'] = []
     837                    for iT in range(reflData['TwMax'][0]+1):
     838                        if iT in reflData['TwMax'][1]:
     839                            UseList[histoName]['Twins'].append([False,0.0])
     840                        else:
     841                            UseList[histoName]['Twins'].append([np.array([[1,0,0],[0,1,0],[0,0,1]]),[1.0,False]])
     842                else:   #no nonmerohedral twins
     843                    UseList[histoName]['Twins'] = [[np.array([[1,0,0],[0,1,0],[0,0,1]]),[1.0,False]],]
    838844                for iref,ref in enumerate(reflData['RefList']):
    839845                    hkl = ref[:3]
  • trunk/GSASIIgrid.py

    r1915 r1917  
    15771577                usrrej.Bind(wx.EVT_KILL_FOCUS,OnUsrRej)
    15781578                LSSizer.Add(usrrej,0,WACV)
    1579         Hfix = wx.CheckBox(G2frame.dataDisplay,-1,label='Regularize H atoms? ')
    1580         Hfix.SetValue(data['HatomFix'])
    1581         Hfix.Bind(wx.EVT_CHECKBOX,OnHatomFix)
     1579#        Hfix = wx.CheckBox(G2frame.dataDisplay,-1,label='Regularize H atoms? ')
     1580#        Hfix.SetValue(data['HatomFix'])
     1581#        Hfix.Bind(wx.EVT_CHECKBOX,OnHatomFix)
    15821582#        LSSizer.Add(Hfix,0,WACV)   #for now
    15831583        return LSSizer
  • trunk/GSASIIphsGUI.py

    r1915 r1917  
    39133913                {'Tbar':0.1,'Cos2TM':0.955,'Eg':[1.e-7,False],'Es':[1.e-7,False],'Ep':[1.e-7,False]},],
    39143914                'Flack':[0.0,False],'Twins':[[np.array([[1,0,0],[0,1,0],[0,0,1]]),[1.0,False]],]}                       
    3915             for iT in range(reflData.get('TwMax',0)):
    3916                 UseList[histoName]['Twins'].append([False,0.0])
     3915            if 'TwMax' in reflData:     #nonmerohedral twins present
     3916                UseList[histoName]['Twins'] = []
     3917                for iT in range(reflData['TwMax'][0]):
     3918                    if iT in reflData['TwMax'][1]:
     3919                        UseList[histoName]['Twins'].append([False,0.0])
     3920                    else:
     3921                        UseList[histoName]['Twins'].append([np.array([[1,0,0],[0,1,0],[0,0,1]]),[1.0,False]])
     3922            else:   #no nonmerohedral twins
     3923                UseList[histoName]['Twins'] = [[np.array([[1,0,0],[0,1,0],[0,0,1]]),[1.0,False]],]
    39173924            UpdateHKLFdata(histoName)
    39183925            data['Histograms'] = UseList
  • trunk/GSASIIspc.py

    r1873 r1917  
    6969    SysSym = ('triclinic','monoclinic','orthorhombic','tetragonal','rhombohedral','trigonal','hexagonal','cubic')
    7070    SGData = {}
     71    SGSymbol = SGSymbol.replace(':',' ')    #get rid of ':' in R space group symbols from some cif files
    7172    SGInfo = pyspg.sgforpy(SGSymbol)
    7273    SGData['SpGrp'] = SGSymbol.strip().lower().capitalize()
  • trunk/GSASIIstrIO.py

    r1915 r1917  
    22642264                        hapVary.append(pfx+'Flack')
    22652265                sumTwFr = 0.
    2266                 controlDict[pfx+'TwinLaw'] = []               
     2266                controlDict[pfx+'TwinLaw'] = []
     2267                controlDict[pfx+'TwinInv'] = []               
    22672268                for it,twin in enumerate(Twins):
    22682269                    if 'bool' in str(type(twin[0])):
     2270                        controlDict[pfx+'TwinInv'].append(twin[0])
    22692271                        controlDict[pfx+'TwinLaw'].append(np.zeros((3,3)))
    22702272                    else:
     2273                        controlDict[pfx+'TwinInv'].append(False)
    22712274                        controlDict[pfx+'TwinLaw'].append(twin[0])
    22722275                    if it:
     
    22982301                        for it,twin in enumerate(Twins):
    22992302                            if 'bool' in str(type(twin[0])):
    2300                                 print >>pFile,' Nonmerohedral twin fr.: %5.3f Refine? '%(hapDict[pfx+'TwinFr:'+str(it)]),Twins[0][1][1]
     2303                                print >>pFile,' Nonmerohedral twin fr.: %5.3f Inv? %s Refine? '%(hapDict[pfx+'TwinFr:'+str(it)],str(controlDict[pfx+'TwinInv'][it])),Twins[0][1][1]
    23012304                            else:
    23022305                                print >>pFile,' Twin law: %s'%(str(twin[0]).replace('\n',',')),' Twin fr.: %5.3f Refine? '%(hapDict[pfx+'TwinFr:'+str(it)]),Twins[0][1][1]
  • trunk/GSASIIstrMath.py

    r1915 r1917  
    823823        TwinLaw = calcControls[phfx+'TwinLaw']
    824824        TwinFr = np.array([parmDict[phfx+'TwinFr:'+str(i)] for i in range(len(TwinLaw))])
     825        TwinInv = list(np.where(calcControls[phfx+'TwinInv'],-1,1))
    825826    Tdata,Mdata,Fdata,Xdata,dXdata,IAdata,Uisodata,Uijdata = GetAtomFXU(pfx,calcControls,parmDict)
    826827    FF = np.zeros(len(Tdata))
     
    860861                if iref in TwDict:
    861862                    for i in TwDict[iref]:
    862                         H[ir][i] = TwDict[iref][i]
     863                        H[ir][i] = np.array(TwDict[iref][i])*TwinInv[i]
    863864            TwMask = np.any(H,axis=-1)
    864865        SQ = 1./(2.*refl.T[4])**2               #array(blkSize)
     
    924925        TwinLaw = calcControls[phfx+'TwinLaw']
    925926        TwinFr = np.array([parmDict[phfx+'TwinFr:'+str(i)] for i in range(len(TwinLaw))])
     927        TwinInv = list(np.where(calcControls[phfx+'TwinInv'],-1,1))
    926928    nTwin = len(TwinLaw)       
    927929    nRef = len(refDict['RefList'])
     
    956958            if iref in TwDict:
    957959                for i in TwDict[iref]:
    958                     H[i] = TwDict[iref][i]
     960                    H[i] = np.array(TwDict[iref][i])*TwinInv[i]
    959961            TwMask = np.any(H,axis=-1)
    960962        SQ = 1./(2.*refl[4])**2             # or (sin(theta)/lambda)**2
  • trunk/imports/G2sfact.py

    r1915 r1917  
    136136    def __init__(self):
    137137        if 'linux' in sys.platform:  # wx 3.0.0.0 on gtk does not like Unicode in menus
    138             formatName = 'SHELX HKLF 5 F2 Tw/Incom'
    139             longFormatName = 'SHELX HKLF 5 [hklm, Fo2, sig(Fo2), Tind] Twin/incommensurate structure factor text file'
     138            formatName = 'Shelx HKLF 5 F2 Tw/Incom'
     139            longFormatName = 'Shelx HKLF 5 [hklm, Fo2, sig(Fo2), Tind] Twin/incommensurate structure factor text file'
    140140        else:
    141             formatName = u'SHELX HKLF 5 F\u00b2 Tw/Incom'
    142             longFormatName = u'SHELX HKLF 5 [hklm, Fo\u00b2, sig(Fo\u00b2), Tind] Twin/incommensurate structure factor text file'       
     141            formatName = u'Shelx HKLF 5 F\u00b2 Tw/Incom'
     142            longFormatName = u'Shelx HKLF 5 [hklm, Fo\u00b2, sig(Fo\u00b2), Tind] Twin/incommensurate structure factor text file'       
    143143        super(self.__class__,self).__init__( # fancy way to self-reference
    144144            extensionlist=('.hkl','.HKL'),
     
    168168        TwDict = {}
    169169        TwSet = {}
    170         TwMax = 0
     170        TwMax = [-1,[]]
     171        first = True
    171172        try:
    172173            for line,S in enumerate(filepointer):
     
    184185                    break
    185186                if '-' in Tw:
     187                    if Tw == '-1':  #fix reversed twin ids
     188                        Tw = '-2'
     189                        if first:
     190                            self.warnings += '\nPrimary twin id changed to 1'
     191                            first = False
    186192                    TwId = -int(Tw)-1
    187                     TwMax = max(TwMax,TwId)
    188                     TwSet[TwId] = [h,k,l]
     193                    TwSet[TwId] = np.array([h,k,l])
     194                    if TwId not in TwMax[1]:
     195                        TwMax[1].append(TwId)
    189196                else:
     197                    if Tw != '1':  #fix reversed twin ids
     198                        Tw = '1'
     199                    TwId = int(Tw)-1
    190200                    if TwSet:
    191201                        TwDict[len(self.RefDict['RefList'])] = TwSet
     
    198208                    elif self.Super == 1:
    199209                        self.RefDict['RefList'].append([h,k,l,m1,int(Tw),0,Fo,sigFo,0,Fo,0,0,0])
     210                TwMax[0] = max(TwMax[0],TwId)
    200211            self.errors = 'Error after reading reflections (unexpected!)'
    201212            self.RefDict['RefList'] = np.array(self.RefDict['RefList'])
Note: See TracChangeset for help on using the changeset viewer.