Changeset 3621


Ignore:
Timestamp:
Sep 26, 2018 1:10:30 PM (3 years ago)
Author:
vondreele
Message:

Modify Transform tool to allow setting spins & displaying operators
Transform operation matches mag space group selection from Bilbao
select nonstandard orthorhombic works (except P 2221 & P 2'2'21) - get same set of mag atom site symmetries

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIlattice.py

    r3617 r3621  
    337337        newPhase['Draw Atoms'] = []
    338338    for atom in newAtoms:
    339         atom[cx:cx+3] = TransformXYZ(atom[cx:cx+3]+Uvec,invTrans,Vvec)%1.
     339        atom[cx:cx+3] = TransformXYZ(atom[cx:cx+3]+Uvec,invTrans.T,Vvec)%1.
    340340        if atom[cia] == 'A':
    341341            atom[cia+2:cia+8] = TransformU6(atom[cia+2:cia+8],Trans)
     
    361361    cba = np.rot90(np.eye(3))
    362362    cba[1,1] *= -1      #makes c-ba
    363     Mats = {'abc':abc,'cab':np.roll(abc,1,1),'bca':np.roll(abc,2,1),
     363    Mats = {'abc':abc,'cab':np.roll(abc,2,1),'bca':np.roll(abc,1,1),
    364364            'acb':np.roll(cba,1,1),'bac':np.roll(cba,2,1),'cba':cba}        #ok
    365365    BNS = {'A':{'abc':'A','cab':'C','bca':'B','acb':'A','bac':'B','cba':'C'},   
     
    382382        lattSym = G2spc.getlattSym(Trans)
    383383        SpGrp = SGData['SpGrp']
    384         NTrans = np.inner(Mats[lattSym],Trans.T)        #ok
    385         spn[1:4] = np.inner(np.abs(Mats[lattSym]),spn[1:4])         #ok
    386         SGsym = G2spc.getlattSym(nl.inv(Mats[lattSym]).T)
     384        NTrans = np.inner(Mats[lattSym].T,Trans.T)        #ok
     385        spn[1:4] = np.inner(np.abs(nl.inv(Mats[lattSym])),spn[1:4])         #ok
     386        SGsym = G2spc.getlattSym(nl.inv(Mats[lattSym]))
    387387       
    388388        if lattSym != 'abc':
  • trunk/GSASIIphsGUI.py

    r3619 r3621  
    364364            if self.ifMag:
    365365                self.BNSlatt = self.SGData['SGLatt']
     366                G2spc.SetMagnetic(self.SGData)
    366367            if self.Phase['General']['Type'] == 'magnetic':
    367368                Nops = len(self.SGData['SGOps'])*len(self.SGData['SGCen'])
     
    371372                del self.oldSGdata['MAXMAGN']
    372373            wx.CallAfter(self.Draw)
     374           
     375        def OnShowOps(event):
     376            text,table = G2spc.SGPrint(self.SGData,AddInv=True)
     377            if self.ifMag:
     378                msg = 'Magnetic space group information'
     379                OprNames,SpnFlp = G2spc.GenMagOps(self.SGData)
     380                text[0] = ' Magnetic Space Group: '+self.SGData['MagSpGrp']
     381                text[3] = ' The magnetic lattice point group is '+self.SGData['MagPtGp']
     382                G2G.SGMagSpinBox(self.panel,msg,text,table,self.SGData['SGCen'],OprNames,
     383                    self.SGData['SpnFlp'],False).Show()
     384            else:
     385                msg = 'Space group information'
     386                G2G.SGMessageBox(self.panel,msg,text,table).Show()
    373387
    374388        def OnTest(event):
     
    382396            self.ifMag = True
    383397            self.BNSlatt = self.SGData['SGLatt']
     398            G2spc.SetMagnetic(self.SGData)
    384399            wx.CallAfter(self.Draw)
    385400           
     
    401416            self.Mtrans = Obj.GetValue()
    402417           
     418        def OnSpinOp(event):
     419            Obj = event.GetEventObject()
     420            isym = Indx[Obj.GetId()]+1
     421            spCode = {'red':-1,'black':1}                   
     422            self.SGData['SGSpin'][isym] = spCode[Obj.GetValue()]
     423            G2spc.CheckSpin(isym,self.SGData)
     424            G2spc.SetMagnetic(self.SGData)
     425            wx.CallAfter(self.Draw)
    403426
    404427        self.panel.Destroy()
     
    477500        SGTxt = wx.Button(self.panel,wx.ID_ANY,self.newSpGrp,size=(100,-1))
    478501        SGTxt.Bind(wx.EVT_BUTTON,OnSpaceGroup)
    479         sgSizer.Add(SGTxt,0,WACV)
     502        sgSizer.Add(SGTxt,0,WACV)       
     503        showOps = wx.Button(self.panel,label=' Show operators?')
     504        showOps.Bind(wx.EVT_BUTTON,OnShowOps)
     505        sgSizer.Add(showOps,0,WACV)
    480506        mainSizer.Add(sgSizer,0,WACV)
    481507        if 'magnetic' not in self.Phase['General']['Type']:
    482508            if self.ifMag:
     509                Indx = {}
    483510                GenSym,GenFlg,BNSsym = G2spc.GetGenSym(self.SGData)
    484511                BNSizer = wx.BoxSizer(wx.HORIZONTAL)
     
    495522                BNS.Bind(wx.EVT_COMBOBOX,OnBNSlatt)
    496523                BNSizer.Add(BNS,0,WACV)
     524               
     525                spinColor = ['black','red']
     526                spCode = {-1:'red',1:'black'}
     527                for isym,sym in enumerate(GenSym[1:]):
     528                    BNSizer.Add(wx.StaticText(self.panel,label=' %s: '%(sym.strip())),0,WACV)               
     529                    spinOp = wx.ComboBox(self.panel,value=spCode[self.SGData['SGSpin'][isym+1]],choices=spinColor,
     530                        style=wx.CB_READONLY|wx.CB_DROPDOWN)               
     531                    Indx[spinOp.GetId()] = isym
     532                    spinOp.Bind(wx.EVT_COMBOBOX,OnSpinOp)
     533                    BNSizer.Add(spinOp,0,WACV)
     534                OprNames,SpnFlp = G2spc.GenMagOps(self.SGData)
     535                self.SGData['SpnFlp'] = SpnFlp
    497536                mainSizer.Add(BNSizer,0,WACV)
     537                mainSizer.Add(wx.StaticText(self.panel,label=' Magnetic Space Group: '+self.SGData['MagSpGrp']),0,WACV)
    498538            if self.ifMag:
    499539                mainSizer.Add(wx.StaticText(self.panel, \
  • trunk/GSASIIpwdGUI.py

    r3619 r3621  
    33693369       
    33703370    def RefreshMagCellsGrid(event):
    3371         data = G2frame.GPXtree.GetItemPyData(UnitCellsId)
    3372         magcells = data[5]
     3371        controls,bravais,cells,dminx,ssopt,magcells = G2frame.GPXtree.GetItemPyData(UnitCellsId)
    33733372        r,c =  event.GetRow(),event.GetCol()
    33743373        if magcells:
     
    33923391                    MagCellsTable.SetValue(r,c,True)
    33933392                magDisplay.ForceRefresh()
    3394             data[5] = magcells
     3393            data = [controls,bravais,cells,dminx,ssopt,magcells]
    33953394            G2frame.GPXtree.SetItemPyData(UnitCellsId,data)
    33963395           
  • trunk/GSASIIspc.py

    r3619 r3621  
    625625#### Magnetic space group stuff
    626626################################################################################
     627       
     628def SetMagnetic(SGData):
     629    GenSym,GenFlg,BNSsym = GetGenSym(SGData)
     630    SGData['GenSym'] = GenSym
     631    SGData['GenFlg'] = GenFlg
     632    OprNames,SpnFlp = GenMagOps(SGData)
     633    SGData['SpnFlp'] = SpnFlp
     634    SGData['MagSpGrp'] = MagSGSym(SGData)
    627635
    628636def GetGenSym(SGData):
Note: See TracChangeset for help on using the changeset viewer.