Changeset 3215


Ignore:
Timestamp:
Jan 7, 2018 5:02:06 PM (4 years ago)
Author:
vondreele
Message:

mag incommensurate stuff

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r3208 r3215  
    198198                lam /= 10.
    199199                break
    200             if lam > 10.e3:
     200            if lam > 10.:
    201201                print ('ouch #3 chisq1 %g.4 stuck > chisq0 %g.4'%(chisq1,chisq0))
    202202                break
     
    16171617    cx,ct,cs,cia = generalData['AtomPtrs']
    16181618    drawingData = data['Drawing']
     1619    modul = generalData['SuperVec'][0]
    16191620    dcx,dct,dcs,dci = drawingData['atomPtrs']
    16201621    atoms = data['Atoms']
     
    16341635        for ind in indx:
    16351636            drawatom = drawAtoms[ind]
     1637            dratxyz = np.array(drawatom[dcx:dcx+3])
    16361638            opr = drawatom[dcs-1]
    16371639            sop,ssop,icent = G2spc.OpsfromStringOps(opr,SGData,SSGData)
    1638             sdet,ssdet,dtau,dT,tauT = G2spc.getTauT(tau,sop,ssop,atxyz)
     1640            sdet,ssdet,dtau,dT,tauT = G2spc.getTauT(tau,sop,ssop,dratxyz,modul)
    16391641            tauT *= icent       #invert wave on -1
    16401642            wave = np.zeros(3)
  • trunk/GSASIIphsGUI.py

    r3212 r3215  
    9595                mainSizer.Add(wx.StaticText(self.panel,label='      for (%s)+'%(cent)),0,WACV)
    9696            tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0)
    97             for j,item in enumerate(self.table):
     97            j = 0
     98            Red = False
     99            for item in self.table:
     100                if 'for' in item:
     101                    mainSizer.Add(tableSizer,0,WACV)
     102                    mainSizer.Add(wx.StaticText(self.panel,label=item),0,WACV)
     103                    tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0)
     104                    Red = True
     105                    j = 0
     106                    continue
    98107                flds = item.split(')')[1]
    99                 tableSizer.Add(wx.StaticText(self.panel,label='  (%2d)  '%(j+1)),0,WACV|wx.ALIGN_LEFT)           
     108                tableSizer.Add(wx.StaticText(self.panel,label='  (%2d)  '%(j+1)),0,WACV)           
    100109                flds = flds.replace(' ','').split(',')
    101110                for i,fld in enumerate(flds):
    102111                    if i < ncol-1:
    103112                        text = wx.StaticText(self.panel,label='%s, '%(fld))
    104                         tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     113                        tableSizer.Add(text,0,WACV)
    105114                    else:
    106115                        text = wx.StaticText(self.panel,label='%s '%(fld))
    107                         tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     116                        tableSizer.Add(text,0,WACV)
    108117                text = wx.StaticText(self.panel,label=' (%s) '%(self.names[j]))
    109                 if self.spins[j+ic*len(self.table)] < 0:
     118                if self.spins[j+ic*len(self.table)] < 0 or Red:
    110119                    text.SetForegroundColour('Red')
    111                 tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     120                tableSizer.Add(text,0,WACV)
    112121                if not j%2:
    113122                    tableSizer.Add((20,0))
    114             mainSizer.Add(tableSizer,0,wx.ALIGN_CENTER)
     123                j += 1
     124            mainSizer.Add(tableSizer,0,WACV)
    115125           
    116126        btnsizer = wx.StdDialogButtonSizer()
     
    120130        btnsizer.Realize()
    121131        mainSizer.Add((0,10))
    122         mainSizer.Add(btnsizer,0,wx.ALIGN_CENTER)
     132        mainSizer.Add(btnsizer,0)
    123133        self.panel.SetSizer(mainSizer)
    124134        size = np.array(self.GetSize())
     
    17431753            def OnShowSpins(event):
    17441754                showSpins.SetValue(False)
    1745                 msg = 'Magnetic spin operators for '+SGData['MagSpGrp']
     1755                msg = 'Magnetic space group information'
    17461756                text,table = G2spc.SGPrint(SGData,AddInv=not SGData['SGFixed'])
    17471757                text[0] = ' Magnetic Space Group: '+SGData['MagSpGrp']
    17481758                text[3] = ' The magnetic lattice point group is '+SGData['MagPtGp']
     1759                if SGData['SGGray']:
     1760                    text[0] += " 1'"
     1761                    text[3] += "1'"
    17491762                SGMagSpinBox(General,msg,text,table,SGData['SGCen'],OprNames,SpnFlp).Show()
    17501763                               
    17511764            SGData = generalData['SGData']           
    17521765            Indx = {}
    1753             MagSym = generalData['SGData']['MagSpGrp']
     1766            MagSym = SGData['MagSpGrp']
     1767            if SGData['SGGray']:
     1768                MagSym += " 1'"
    17541769            magSizer = wx.BoxSizer(wx.VERTICAL)
    17551770            magSizer.Add(wx.StaticText(General,label=' Magnetic spin operator selection:'),0,WACV)
     
    17721787                        spinOp.Bind(wx.EVT_COMBOBOX,OnSpinOp)
    17731788                        spinSizer.Add(spinOp,0,WACV)
    1774                     MagSym = G2spc.MagSGSym(SGData)
    1775                     SGData['MagSpGrp'] = MagSym
    17761789                    OprNames,SpnFlp = G2spc.GenMagOps(SGData)
    17771790                    SGData['SpnFlp'] = SpnFlp
     
    29782991            if oldatom:
    29792992                opr = oldatom[8]
    2980                 mom = np.inner(np.array(atom[7:10]),Bmat)
    2981                 Mom = np.inner(G2spc.ApplyStringOpsMom(opr,SGData,mom),Amat)
     2993                mom = np.array(atom[7:10])
     2994                Mom = G2spc.ApplyStringOpsMom(opr,SGData,mom)
    29822995                atomInfo = oldatom[:5]+list(Mom)+oldatom[8:]   
    29832996            else:
     
    32003213        if not indx: return
    32013214        generalData = data['General']
    3202         Amat,Bmat = G2lat.cell2AB(generalData['Cell'][1:7])
    32033215        SpnFlp = generalData['SGData'].get('SpnFlp',[])
    32043216        colLabels = [Atoms.GetColLabelValue(c) for c in range(Atoms.GetNumberCols())]
     
    32443256                    if cmx:
    32453257                        opNum = G2spc.GetOpNum(OprNum,SGData)
    3246                         mom = np.inner(np.array(atom[cmx:cmx+3]),Bmat)
    3247                         atom[cmx:cmx+3] = np.inner(np.inner(mom,M),Amat)*nl.det(M)*SpnFlp[opNum-1]
     3258                        mom = np.array(atom[cmx:cmx+3])
     3259                        atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)*SpnFlp[opNum-1]
    32483260                    if New:
    32493261                        atomData.append(atom)
     
    43584370                G2plt.PlotXY(G2frame,[XY,],XY2=[],labelX=r'$\mathsf{2\theta}$',
    43594371                    labelY='difference',newPlot=True,Title='DIFFaX vs GSASII',lines=True)
    4360 #            GSASIIpath.IPyBreak()
    43614372            G2plt.PlotPatterns(G2frame,plotType='PWDR',newPlot=True)
    43624373        else:   #selected area
     
    52105221            atomData = data['Drawing']['Atoms']
    52115222            generalData = data['General']
    5212             Amat,Bmat = G2lat.cell2AB(generalData['Cell'][1:7])
    52135223            SGData = generalData['SGData']
    52145224            SpnFlp = SGData.get('SpnFlp',[])
     
    52385248                            if cmx:         #magnetic moment
    52395249                                opNum = G2spc.GetOpNum(OprNum,SGData)
    5240                                 mom = np.inner(np.array(atom[cmx:cmx+3]),Bmat)
    5241 #                                print (OprNum,newOp,opNum,nl.det(M),SpnFlp)
    5242                                 atom[cmx:cmx+3] = np.inner(np.inner(mom,M),Amat)*nl.det(M)*SpnFlp[opNum-1]
     5250                                mom = np.array(atom[cmx:cmx+3])
     5251                                if SGData['SGGray']:
     5252                                    atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)
     5253                                else:   
     5254                                    atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)*SpnFlp[opNum-1]
    52435255                            if atom[cui] == 'A':
    52445256                                Uij = atom[cuij:cuij+6]
     
    52895301                            if cmx:
    52905302                                opNum = G2spc.GetOpNum(item[2],SGData)
    5291                                 mom = np.inner(np.array(atom[cmx:cmx+3]),Bmat)
    5292                                 atom[cmx:cmx+3] = np.inner(np.inner(mom,M),Amat)*nl.det(M)*SpnFlp[opNum-1]
     5303                                mom = np.array(atom[cmx:cmx+3])
     5304                                if SGData['SGGray']:
     5305                                    atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)
     5306                                else:   
     5307                                    atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)*SpnFlp[opNum-1]
    52935308                            atom[cs-1] = str(item[2])+'+'
    52945309                            atom[cuij:cuij+6] = item[1]
     
    53215336            atomData = data['Drawing']['Atoms']
    53225337            generalData = data['General']
    5323             Amat,Bmat = G2lat.cell2AB(generalData['Cell'][1:7])
    53245338            SGData = generalData['SGData']
    53255339            SpnFlp = SGData.get('SpnFlp',[])
     
    53455359                        if cmx:
    53465360                            opNum = G2spc.GetOpNum(OprNum,SGData)
    5347                             mom = np.inner(np.array(atom[cmx:cmx+3]),Bmat)
    5348                             atom[cmx:cmx+3] = np.inner(np.inner(mom,M),Amat)*nl.det(M)*SpnFlp[opNum-1]
     5361                            mom = np.array(atom[cmx:cmx+3])
     5362                            atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)*SpnFlp[opNum-1]
    53495363                        atomOp = atom[cs-1]
    53505364                        newOp = str(((Opr+1)+100*Cent)*(1-2*Inv))+'+'+ \
     
    54235437            cuij = cs+5
    54245438            generalData = data['General']
    5425             Amat,Bmat = G2lat.cell2AB(generalData['Cell'][1:7])           
    54265439            SGData = generalData['SGData']
    54275440            SpnFlp = SGData.get('SpnFlp',[])
     
    54405453                            M = SGData['SGOps'][Opr-1][0]
    54415454                            opNum = G2spc.GetOpNum(item[2],SGData)
    5442                             mom = np.inner(np.array(atom[cmx:cmx+3]),Bmat)
     5455                            mom = np.array(atom[cmx:cmx+3])
    54435456                            if SGData['SGGray']:
    5444                                 atom[cmx:cmx+3] = np.inner(np.inner(mom,M),Amat)*nl.det(M)
     5457                                atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)
    54455458                            else:   
    5446                                 atom[cmx:cmx+3] = np.inner(np.inner(mom,M),Amat)*nl.det(M)*SpnFlp[opNum-1]
     5459                                atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)*SpnFlp[opNum-1]
    54475460                        atom[cs-1] = str(item[2])+'+' \
    54485461                            +str(item[3][0])+','+str(item[3][1])+','+str(item[3][2])
  • trunk/GSASIIplot.py

    r3211 r3215  
    57185718    generalData = data['General']
    57195719    cell = generalData['Cell'][1:7]
     5720    ABC = np.array(cell[1:4])
    57205721    Vol = generalData['Cell'][7:8][0]
    57215722    Amat,Bmat = G2lat.cell2AB(cell)         #Amat - crystal to cartesian, Bmat - inverse
     
    64836484       
    64846485    def RenderMoment(x,y,z,Moment,color,slice=20):
    6485         Dx = 0.5*Moment
     6486        Dx = np.inner(Amat,Moment/ABC)/2.
    64866487        Z = np.sqrt(np.sum(Dx**2))
    64876488        if Z:
  • trunk/GSASIIspc.py

    r3212 r3215  
    413413            IOpr = [-Opr[0],-Opr[1]]
    414414            SGTable.append('(%2d) %s'%(i+1,MT2text(IOpr)))       
     415    if SGData.get('SGGray',False):
     416        SGTable.append("     for 1'")
     417        for i,Opr in enumerate(SGData['SGOps']):
     418            SGTable.append('(%2d) %s'%(i+1,MT2text(Opr)))
     419        if AddInv and SGData['SGInv']:
     420            for i,Opr in enumerate(SGData['SGOps']):
     421                IOpr = [-Opr[0],-Opr[1]]
     422                SGTable.append('(%2d) %s'%(i+1,MT2text(IOpr)))       
    415423    return SGText,SGTable
    416424
     
    11351143                for k,OpD in enumerate(SSGOps):
    11361144                    OpDtxt = SSMT2text(OpD)
     1145                    OpDtxt2 = ''
     1146                    if SGData['SGGray']:                       
     1147                        OpDtxt2 = SSMT2text([OpD[0],OpD[1]+np.array([0.,0.,0.,.5])])
    11371148#                    print '    ('+OpCtxt.replace(' ','')+' = ? '+OpDtxt.replace(' ','')+')'
    11381149                    if OpCtxt == OpDtxt:
     1150                        continue
     1151                    elif OpCtxt == OpDtxt2:
    11391152                        continue
    11401153                    elif OpCtxt.split(',')[:3] == OpDtxt.split(',')[:3]:
     
    21532166    return CSI
    21542167   
    2155 def getTauT(tau,sop,ssop,XYZ):
     2168def getTauT(tau,sop,ssop,XYZ,wave=np.zeros(3)):
     2169    phase = 2.*np.pi*np.sum(XYZ*wave)
    21562170    ssopinv = nl.inv(ssop[0])
    21572171    mst = ssopinv[3][:3]
     
    21642178        dT = np.tan(np.pi*np.sum(dtau%.5))
    21652179    tauT = np.inner(mst,XYZ-sop[1])+epsinv*(tau-ssop[1][3])
    2166     return sdet,ssdet,dtau,dT,tauT
     2180    return sdet,ssdet,dtau,dT,tauT+phase
    21672181   
    21682182def OpsfromStringOps(A,SGData,SSGData):
     
    28642878    nA = Ax[0]%100-1
    28652879    M,T = SGOps[nA]
    2866     if len(Ax)>1:
    2867         cellA = Ax[1].split(',')
    2868         cellA = np.array([int(a) for a in cellA])
    2869     else:
    2870         cellA = np.zeros(3)
    28712880    if SGData['SGGray']:
    28722881        newMom = -(np.inner(Mom,M).T)*nl.det(M)
  • trunk/imports/G2phase_CIF.py

    r3211 r3215  
    206206                            self.errors = msg
    207207                            self.warnings += '\n'+msg
    208                             return False                   
    209                     SpGrp = MSpGrp.replace("'",'')
     208                            return False
     209                    SpGrp = blk.get('_parent_space_group.name_H-M_alt')
     210                    if not SpGrp:
     211                        SpGrp = blk.get('_parent_space_group.name_H-M')
     212#                    SpGrp = MSpGrp.replace("'",'')
    210213                    SpGrp = SpGrp[:2]+SpGrp[2:].replace('_','')   #get rid of screw '_'
    211214                    if '_' in SpGrp[1]: SpGrp = SpGrp.split('_')[0]+SpGrp[3:]
Note: See TracChangeset for help on using the changeset viewer.