Changeset 3558


Ignore:
Timestamp:
Aug 7, 2018 3:06:34 PM (3 years ago)
Author:
vondreele
Message:

more revisions to Transform - Bilbao list properly processed
primed operators converted to spin flips on generators

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r3554 r3558  
    408408            import MAXMAGN
    409409            oldkvec = self.kvec
     410            self.Mtrans = True
    410411            SGNo = G2spc.SpaceGroupNumber(self.SGData['SpGrp'])
    411412            if not SGNo+1:
     
    418419                self.kvec = dlg.GetValues()
    419420                if self.kvec != oldkvec or 'MAXMAGN' not in self.oldSGdata:
     421                    wx.BeginBusyCursor()
    420422                    self.oldSGdata['MAXMAGN'] = MAXMAGN.MAXMAGN(SGNo,self.kvec)
     423                    wx.EndBusyCursor()
     424                    self.Bilbao = ''
    421425            wx.CallAfter(self.Draw)
    422426                   
     
    428432            self.Uvec = np.array(numbs[3::4])
    429433            self.Trans = np.array([numbs[:3],numbs[4:7],numbs[8:11]])
    430             SpGrp = G2spc.StandardizeSpcName(result[0])
     434
     435            SpGp = result[0].replace("'",'')
     436            SpGrp = G2spc.StandardizeSpcName(SpGp)
     437            self.newSpGrp = SpGrp
    431438            self.SGData = G2spc.SpcGroup(SpGrp)[1]
    432             text,table = G2spc.SGPrint(self.SGData)
     439            G2spc.GetSGSpin(self.SGData,result[0])
     440            self.BNSlatt = self.SGData['SGLatt']
     441            if result[1]:
     442                self.BNSlatt += '_'+result[1]
     443                BNSsym = G2spc.GetGenSym(self.SGData)[2]
     444                self.SGData['BNSlattsym'] = [self.BNSlatt,BNSsym[self.BNSlatt]]
     445                G2spc.ApplyBNSlatt(self.SGData,self.SGData['BNSlattsym'])
     446
     447            self.SGData['GenSym'],self.SGData['GenFlg'],BNSsym = G2spc.GetGenSym(self.SGData)
     448            self.SGData['MagSpGrp'] = G2spc.MagSGSym(self.SGData)
     449            OprNames,self.SGData['SpnFlp'] = G2spc.GenMagOps(self.SGData)                   
     450                   
     451            msg = 'Space Group Information'
     452            text,table = G2spc.SGPrint(self.SGData,AddInv=True)
     453            text[0] = ' Magnetic Space Group: '+self.SGData['MagSpGrp']
     454            text[3] = ' The magnetic lattice point group is '+self.SGData['MagPtGp']
     455            G2G.SGMagSpinBox(self.panel,msg,text,table,self.SGData['SGCen'],OprNames,
     456                self.SGData['SpnFlp'],False).Show()
     457           
    433458            self.Phase['General']['SGData'] = self.SGData
    434             self.newSpGrp = SpGrp
    435             msg = 'Space Group Information'
    436             G2G.SGMessageBox(self.panel,msg,text,table).Show()
    437             self.BNSlatt = self.SGData['SGLatt']+'_'+result[1]
    438             GenSym,GenFlg,BNSsym = G2spc.GetGenSym(self.SGData)
    439             self.SGData['BNSlattsym'] = [self.BNSlatt,BNSsym[self.BNSlatt]]
    440             self.SGData['SGSpin'] = [1,]*len(self.SGData['SGSpin'])
    441             Nops = len(self.SGData['SGOps'])*len(self.SGData['SGCen'])
    442             if self.SGData['SGInv']:
    443                 Nops *= 2
    444             self.SGData['SpnFlp'] = Nops*[1,]                   
     459
    445460            wx.CallAfter(self.Draw)
    446461
     
    452467                GenSym,GenFlg,BNSsym = G2spc.GetGenSym(self.SGData)
    453468                self.SGData['BNSlattsym'] = [self.BNSlatt,BNSsym[self.BNSlatt]]
    454                 self.SGData['SGSpin'] = [1,]*len(self.SGData['SGSpin'])
    455469        else:
    456470            mag = wx.Button(self.panel,label='Make new phase magnetic?')
     
    497511        MatSizer.Add(transSizer)
    498512        mainSizer.Add(MatSizer)
    499         if self.ifMag:
     513        if self.ifMag and not self.oldSGdata.get('MAXMAGN',[]):
    500514            MagSizer = wx.BoxSizer(wx.HORIZONTAL)
    501515            Mtrans = wx.CheckBox(self.panel,label=' Use matrix transform?')
     
    534548        mainSizer.Add(sgSizer,0,WACV)
    535549        if 'magnetic' not in self.Phase['General']['Type']:
    536             if self.ifMag:
     550            if self.ifMag and not self.oldSGdata.get('MAXMAGN',[]):
    537551                GenSym,GenFlg,BNSsym = G2spc.GetGenSym(self.SGData)
    538552                BNSizer = wx.BoxSizer(wx.HORIZONTAL)
     
    550564                BNSizer.Add(BNS,0,WACV)
    551565                mainSizer.Add(BNSizer,0,WACV)
     566            if self.ifMag:
    552567                mainSizer.Add(wx.StaticText(self.panel, \
    553568                    label=' NB: Nonmagnetic atoms will be deleted from new phase'),0,WACV)
     
    579594        self.Phase['General']['SGData'] = self.SGData
    580595        if self.ifMag:
    581             self.Phase['General']['Name'] += ' mag'
     596            self.Phase['General']['Name'] += ' mag: '+self.Bilbao
    582597        else:
    583598            self.Phase['General']['Name'] += ' %s'%(self.Common)
     
    24512466                            newPhase['Atoms'],atCodes = dlg.GetSelection()
    24522467                            SGData['GenSym'],SGData['GenFlg'],BNSsym = G2spc.GetGenSym(SGData)
     2468                            SGData['OprNames'],SGData['SpnFlp'] = G2spc.GenMagOps(SGData)
    24532469                            SGData['MagSpGrp'] = G2spc.MagSGSym(SGData)
    2454                             SGData['OprNames'],SGData['SpnFlp'] = G2spc.GenMagOps(SGData)
    24552470                            generalData['Lande g'] = len(generalData['AtomTypes'])*[2.,]
    24562471                            break
     
    35853600    def OnDistAnglePrt(event):
    35863601        'save distances and angles to a file'   
    3587         fp = file(os.path.abspath(os.path.splitext(G2frame.GSASprojectfile)[0]+'.disagl'),'w')
     3602        fp = open(os.path.abspath(os.path.splitext(G2frame.GSASprojectfile)[0]+'.disagl'),'w')
    35883603        OnDistAngle(event,fp=fp)
    35893604        fp.close()
  • trunk/GSASIIpwdGUI.py

    r3554 r3558  
    33223322           
    33233323    def OnShowSpins(event):
    3324         SGData['MagSpGrp'] = G2spc.MagSGSym(SGData)
    33253324        msg = 'Magnetic space group information'
    33263325        text,table = G2spc.SGPrint(SGData,AddInv=True)
     
    33493348                ssopt['SGData'] = sgData
    33503349                controls[6:13] = newPhase['General']['Cell'][1:8]
    3351                 if ifMag:
    3352                     ssopt['SGData']['SGSpin'] = [1,]*len(ssopt['SGData']['SGSpin'])
    3353                     GenSym,GenFlg,BNSsym = G2spc.GetGenSym(ssopt['SGData'])
    3354                     ssopt['SGData']['GenSym'] = GenSym
    3355                     ssopt['SGData']['GenFlg'] = GenFlg
    3356                     OprNames,SpnFlp = G2spc.GenMagOps(ssopt['SGData'])
    3357                     ssopt['SGData']['SpnFlp'] = SpnFlp
    3358                     ssopt['SGData']['MagSpGrp'] = G2spc.MagSGSym(ssopt['SGData'])
    3359                     G2spc.ApplyBNSlatt(ssopt['SGData'],ssopt['SGData']['BNSlattsym'])
    3360                 else:
    3361                     del SGData['MagSpGrp']
    33623350            else:
    33633351                return
  • trunk/GSASIIspc.py

    r3521 r3558  
    10861086        spnflp = -1
    10871087    return np.array(M),np.array(T),spnflp
     1088
     1089def GetSGSpin(SGData,MSgSym):
     1090    'get spin generators from magnetic space group symbol'
     1091    SpGrp = SGData['SpGrp']
     1092    mSgSym = MSgSym+' '
     1093    Flds = SpGrp.split()
     1094    iB = 0
     1095    Spn = [1,]          #for identity generator
     1096    if len(Flds) == 2:  #-1,  2/m, 4/m & 6/m; 1 or 2 generators
     1097        fld = Flds[1]
     1098        iF = mSgSym[iB:].index(fld[0])+iB
     1099        jF = mSgSym[iF:].index(fld[-1])+iF
     1100        if '/' in mSgSym[iF:jF]:
     1101            if "'" in mSgSym[iF:jF]:
     1102                Spn.append(-1)
     1103            else:
     1104                Spn.append(1)
     1105        if "'" == mSgSym[jF+1]:
     1106            Spn.append(-1)
     1107        else:
     1108            Spn.append(1)
     1109    elif len(Flds) == 3:    # 3m & m3; one generator
     1110        if "'" in mSgSym:   #could be 1 or 2 '; doesn't matter.
     1111            Spn.append(-1)
     1112        else:
     1113            Spn.append(1)
     1114    else:                   #the rest; 3 generators. NB:  any ' before / in 1st field ignored
     1115        for fld in Flds[1:]:
     1116            iF = mSgSym[iB:].index(fld[0])+iB
     1117            jF = mSgSym[iF:].index(fld[-1])+iF
     1118            if "'" == mSgSym[jF+1]:
     1119                Spn.append(-1)
     1120                iB = jF+2
     1121            else:
     1122                Spn.append(1)
     1123                iB = jF+1
     1124    SGData['SGSpin'] = Spn
    10881125           
    10891126def GenMagOps(SGData):
  • trunk/MAXMAGN.py

    r3551 r3558  
    106106    p = TableParser()
    107107    p.feed(page)
    108     return zip(p.SPGPs,p.BNSs,p.MVs)
     108    result = list(zip(p.SPGPs,p.BNSs,p.MVs))
     109    return result
    109110
    110111def test():
Note: See TracChangeset for help on using the changeset viewer.