Changeset 3558
- Timestamp:
- Aug 7, 2018 3:06:34 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIphsGUI.py
r3554 r3558 408 408 import MAXMAGN 409 409 oldkvec = self.kvec 410 self.Mtrans = True 410 411 SGNo = G2spc.SpaceGroupNumber(self.SGData['SpGrp']) 411 412 if not SGNo+1: … … 418 419 self.kvec = dlg.GetValues() 419 420 if self.kvec != oldkvec or 'MAXMAGN' not in self.oldSGdata: 421 wx.BeginBusyCursor() 420 422 self.oldSGdata['MAXMAGN'] = MAXMAGN.MAXMAGN(SGNo,self.kvec) 423 wx.EndBusyCursor() 424 self.Bilbao = '' 421 425 wx.CallAfter(self.Draw) 422 426 … … 428 432 self.Uvec = np.array(numbs[3::4]) 429 433 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 431 438 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 433 458 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 445 460 wx.CallAfter(self.Draw) 446 461 … … 452 467 GenSym,GenFlg,BNSsym = G2spc.GetGenSym(self.SGData) 453 468 self.SGData['BNSlattsym'] = [self.BNSlatt,BNSsym[self.BNSlatt]] 454 self.SGData['SGSpin'] = [1,]*len(self.SGData['SGSpin'])455 469 else: 456 470 mag = wx.Button(self.panel,label='Make new phase magnetic?') … … 497 511 MatSizer.Add(transSizer) 498 512 mainSizer.Add(MatSizer) 499 if self.ifMag :513 if self.ifMag and not self.oldSGdata.get('MAXMAGN',[]): 500 514 MagSizer = wx.BoxSizer(wx.HORIZONTAL) 501 515 Mtrans = wx.CheckBox(self.panel,label=' Use matrix transform?') … … 534 548 mainSizer.Add(sgSizer,0,WACV) 535 549 if 'magnetic' not in self.Phase['General']['Type']: 536 if self.ifMag :550 if self.ifMag and not self.oldSGdata.get('MAXMAGN',[]): 537 551 GenSym,GenFlg,BNSsym = G2spc.GetGenSym(self.SGData) 538 552 BNSizer = wx.BoxSizer(wx.HORIZONTAL) … … 550 564 BNSizer.Add(BNS,0,WACV) 551 565 mainSizer.Add(BNSizer,0,WACV) 566 if self.ifMag: 552 567 mainSizer.Add(wx.StaticText(self.panel, \ 553 568 label=' NB: Nonmagnetic atoms will be deleted from new phase'),0,WACV) … … 579 594 self.Phase['General']['SGData'] = self.SGData 580 595 if self.ifMag: 581 self.Phase['General']['Name'] += ' mag '596 self.Phase['General']['Name'] += ' mag: '+self.Bilbao 582 597 else: 583 598 self.Phase['General']['Name'] += ' %s'%(self.Common) … … 2451 2466 newPhase['Atoms'],atCodes = dlg.GetSelection() 2452 2467 SGData['GenSym'],SGData['GenFlg'],BNSsym = G2spc.GetGenSym(SGData) 2468 SGData['OprNames'],SGData['SpnFlp'] = G2spc.GenMagOps(SGData) 2453 2469 SGData['MagSpGrp'] = G2spc.MagSGSym(SGData) 2454 SGData['OprNames'],SGData['SpnFlp'] = G2spc.GenMagOps(SGData)2455 2470 generalData['Lande g'] = len(generalData['AtomTypes'])*[2.,] 2456 2471 break … … 3585 3600 def OnDistAnglePrt(event): 3586 3601 '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') 3588 3603 OnDistAngle(event,fp=fp) 3589 3604 fp.close() -
trunk/GSASIIpwdGUI.py
r3554 r3558 3322 3322 3323 3323 def OnShowSpins(event): 3324 SGData['MagSpGrp'] = G2spc.MagSGSym(SGData)3325 3324 msg = 'Magnetic space group information' 3326 3325 text,table = G2spc.SGPrint(SGData,AddInv=True) … … 3349 3348 ssopt['SGData'] = sgData 3350 3349 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'] = GenSym3355 ssopt['SGData']['GenFlg'] = GenFlg3356 OprNames,SpnFlp = G2spc.GenMagOps(ssopt['SGData'])3357 ssopt['SGData']['SpnFlp'] = SpnFlp3358 ssopt['SGData']['MagSpGrp'] = G2spc.MagSGSym(ssopt['SGData'])3359 G2spc.ApplyBNSlatt(ssopt['SGData'],ssopt['SGData']['BNSlattsym'])3360 else:3361 del SGData['MagSpGrp']3362 3350 else: 3363 3351 return -
trunk/GSASIIspc.py
r3521 r3558 1086 1086 spnflp = -1 1087 1087 return np.array(M),np.array(T),spnflp 1088 1089 def 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 1088 1125 1089 1126 def GenMagOps(SGData): -
trunk/MAXMAGN.py
r3551 r3558 106 106 p = TableParser() 107 107 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 109 110 110 111 def test():
Note: See TracChangeset
for help on using the changeset viewer.