Changeset 2458


Ignore:
Timestamp:
Sep 3, 2016 9:48:00 AM (5 years ago)
Author:
vondreele
Message:

Mag space group work

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r2451 r2458  
    12671267        if generalData['Type'] == 'magnetic':
    12681268            GenSym,GenFlg = G2spc.GetGenSym(generalData['SGData'])
     1269            generalData['SGData']['GenSym'] = GenSym
    12691270            mainSizer.Add(MagSizer())
    12701271            G2G.HorizontalLine(mainSizer,General)
  • trunk/GSASIIspc.py

    r2406 r2458  
    102102            SGData['SGGen'].append(int(SGInfo[8][i]))
    103103        SGData['SGSpin'].append(1)
     104    if SGData['SGInv']:
     105        if SGData['SGLaue'] in ['-1','2/m','mmm']:
     106            Ibar = 7
     107        elif SGData['SGLaue'] in ['4/m','4/mmm']:
     108            Ibar = 1
     109        elif SGData['SGLaue'] in ['3R','3mR','3','3m1','31m','6/m','6/mmm']:
     110            Ibar = 15 #8+4+2+1
     111        else:
     112            Ibar = 4
     113        Ibarx = Ibar&14
     114    else:
     115        Ibarx = 8
     116        if SGData['SGLaue'] in ['-1','2/m','mmm','m3','m3m']:
     117            Ibarx = 0
     118    moregen = []
     119    for i,gen in enumerate(SGData['SGGen']):
     120        if SGData['SGLaue'] in ['m3','m3m']:
     121            if gen in [1,2,4]:
     122                SGData['SGGen'][i] = 4
     123            elif gen < 7:
     124                SGData['SGGen'][i] = 0
     125        elif SGData['SGLaue'] in ['4/m','4/mmm','3R','3mR','3','3m1','31m','6/m','6/mmm']:
     126            if gen == 2:
     127                SGData['SGGen'][i] = 4
     128            elif gen in [3,5]:
     129                SGData['SGGen'][i] = 3
     130            elif gen == 6:
     131                if SGData['SGLaue'] in ['4/m','4/mmm']:
     132                    SGData['SGGen'][i] = 128
     133                else:
     134                    SGData['SGGen'][i] = 16
     135            elif not SGData['SGInv'] and gen == 12:
     136                SGData['SGGen'][i] = 8
     137            elif (not SGData['SGInv']) and (SGData['SGLaue'] in ['3','3m1','31m','6/m','6/mmm']) and (gen == 1):
     138                SGData['SGGen'][i] = 24
     139        if gen in [99,]:
     140            if SGData['SGLaue'] in ['3m1','31m','6/m','6/mmm']:
     141                SGData['SGGen'][i] = 3
     142            elif SGData['SGLaue'] == 'm3m':
     143                SGData['SGGen'][i] = 12
     144            else:
     145                SGData['SGGen'][i] = 8
     146        elif gen in [98,]:
     147            if SGData['SGLaue'] in ['3m1','31m','6/m','6/mmm']:
     148                SGData['SGGen'][i] = 4
     149            else:
     150                SGData['SGGen'][i] = 8
     151        elif not SGData['SGInv'] and gen in [23,] and SGData['SGLaue'] in ['m3','m3m']:
     152            SGData['SGGen'][i] = 24
     153        elif gen >= 16 and gen != 128:
     154            if not SGData['SGInv']:
     155                SGData['SGGen'][i] = 31
     156            else:
     157                SGData['SGGen'][i] = gen^Ibarx
     158        if SGData['SGInv']:
     159            if gen < 128:
     160                moregen.append(gen^Ibar)
     161            else:
     162                moregen.append(1)
     163    SGData['SGGen'] += moregen
    104164    if SGData['SGLaue'] in '-1':
    105165        SGData['SGSys'] = SysSym[0]
     
    432492   
    433493    '''
    434     if SGData['SGInv']:
    435         if SGData['SGLaue'] in ['-1','2/m','mmm']:
    436             Ibar = 7
    437         elif SGData['SGLaue'] in ['4/m','4/mmm']:
    438             Ibar = 1
    439         elif SGData['SGLaue'] in ['3R','3mR','3','3m1','31m','6/m','6/mmm']:
    440             Ibar = 15 #8+4+2+1
    441         else:
    442             Ibar = 4
    443         Ibarx = Ibar&14
    444     else:
    445         Ibarx = 8
    446         if SGData['SGLaue'] in ['-1','2/m','mmm','m3','m3m']:
    447             Ibarx = 0
    448     moregen = []
    449     for gen in SGData['SGGen']:
    450         if SGData['SGLaue'] in ['m3','m3m']:
    451             if gen in [1,2,4]: gen = 4
    452             elif gen < 7: gen = 0
    453         elif SGData['SGLaue'] in ['4/m','4/mmm','3R','3mR','3','3m1','31m','6/m','6/mmm']:
    454             if gen == 2: gen = 4
    455             elif gen in [3,5]: gen = 3
    456             elif gen == 6:
    457                 if SGData['SGLaue'] in ['4/m','4/mmm']: gen = 128
    458                 else: gen = 16
    459             elif not SGData['SGInv'] and gen == 12: gen = 8
    460             elif not SGData['SGInv'] and SGData['SGLaue'] in ['3','3m1','31m','6/m','6/mmm'] and gen == 1 : gen = 24
    461         if gen == 99:
    462             if SGData['SGLaue'] in ['3m1','31m','6/m','6/mmm']: gen = 3
    463             elif SGData['SGLaue'] == 'm3m': gen = 12
    464             else: gen = 8
    465         elif gen == 98:
    466             if SGData['SGLaue'] in ['3m1','31m','6/m','6/mmm']: gen = 4
    467             else: gen = 8
    468         elif not SGData['SGInv'] and gen == 23 and SGData['SGLaue'] in ['m3','m3m']: gen = 24
    469         elif gen >= 16 and gen != 128:
    470             if not SGData['SGInv']: gen = 31
    471             else: gen = gen^Ibarx
    472         if SGData['SGInv']:
    473             if gen < 128:
    474                 moregen.append(gen^Ibar)
    475             else:
    476                 moregen.append(1)
    477     SGData['SGGen'] += moregen
    478494    OprNames = [GetOprPtrName(str(irtx))[1] for irtx in PackRot(SGData['SGOps'])]
    479495    if SGData['SGInv']:
     
    632648                    UsymOp.append(' Acen ')
    633649                else:
    634                     UsymOp.append(' Rcen ')
     650                    if (icv == 1) and ('c' not in SGData['SpGrp']):
     651                        UsymOp.append(' Rcen ')
    635652    return UsymOp,OprFlg
    636653   
     
    638655    SGLaue = SGData['SGLaue']
    639656    SpnFlp = SGData['SGSpin']
     657    GenSym = SGData['GenSym']
    640658    if not len(SpnFlp):
    641659        return SGData['SpGrp']
    642     print SGData['SpGrp'],': ',SGData['SGGen'],SpnFlp
    643660    magSym = SGData['SpGrp'].split()
    644661    if len(SpnFlp) == 1:
     
    651668                magSym[i+1] += "'"
    652669    elif SGLaue in ['2/m','4/m','6/m']:
     670        sym = magSym[1].replace("'","").split('/')
    653671        for i in [0,1]:
    654             if SpnFlp[i] < 0: 
    655                 magSym[i+1] += "'"
     672            if SpnFlp[i] < 0:                     
     673                sym[i] += "'"
     674        magSym[1] = '/'.join(sym)
     675    elif SGLaue in ['3','3m1','31m']:   #ok
     676#        GSASIIpath.IPyBreak()
     677        print GenSym
     678        print magSym
     679        print SpnFlp
     680        if len(GenSym) == 1:
     681            id = 2
     682            if (len(magSym) == 4) and (magSym[2] == '1'):
     683                id = 3
     684            if '3' in GenSym[0]:
     685                id = 1
     686            magSym[id].strip("'")
     687            if SpnFlp[0] < 0:
     688                magSym[id] += "'"
     689        else:
     690            i,j = [1,2]
     691            if magSym[2] == '1':
     692                i,j = [1,3]
     693            magSym[i].strip("'")
     694            magSym[j].strip("'")
     695            if SpnFlp[:2] == [1,-1]:
     696                magSym[i] += "'"
     697            elif SpnFlp[:2] == [-1,-1]:
     698                magSym[j] += "'"
     699            elif SpnFlp[:2] == [-1,1]:
     700                magSym[i] += "'"
     701                magSym[j] += "'"
     702            if 'c' not in magSym[2]:
     703                magSym[0] = magSym[0][0]
     704                if SpnFlp[1] < 0:
     705                    magSym[0] += '(R)'
     706               
     707                   
    656708       
     709    print SGData['SpGrp'],': ',SGData['SGGen'],SpnFlp,' '.join(magSym),SGData['SGLatt']
    657710    return ' '.join(magSym)
    658711       
Note: See TracChangeset for help on using the changeset viewer.