Changeset 2468


Ignore:
Timestamp:
Sep 15, 2016 2:03:04 PM (5 years ago)
Author:
vondreele
Message:

add dzero calc from compression 2D images
plot magnetic structures; rework a number of draw atom routines to accomodate magnetic structures
fix EXP phase importer for nonmagnetic atoms in magnetic structure

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIimage.py

    r2467 r2468  
    10691069        dmin = np.min(ring['ImtaCalc'][0])
    10701070        dmax = np.max(ring['ImtaCalc'][0])
    1071         ring['Dcalc'] = dmin+(dmax-dmin)/4.
     1071        if abs(Eij[0]) < abs(Eij[2]):         #tension
     1072            ring['Dcalc'] = dmin+(dmax-dmin)/4.
     1073        else:                       #compression
     1074            ring['Dcalc'] = dmin+3.*(dmax-dmin)/4.
    10721075#        ring['Dcalc'] = np.mean(ring['ImtaCalc'][0])
    10731076
  • trunk/GSASIIphsGUI.py

    r2467 r2468  
    16831683                        ci = i+colM
    16841684                        Atoms.SetCellStyle(row,ci,VERY_LIGHT_GREY,True)
    1685                         if CSI[0] and CSI[1][1][i]:
     1685                        if CSI[0] and CSI[0][1][i]:
    16861686                            Atoms.SetCellStyle(row,ci,WHITE,False)
    16871687                if 'X' in rbExcl:
     
    16961696        generalData = data['General']
    16971697        SpnFlp = generalData['SGData'].get('SpnFlp',[])
    1698         print SpnFlp
    16991698        OprNames = generalData['SGData'].get('OprNames',[])
    1700         print OprNames
    17011699        atomData = data['Atoms']
    17021700        DData = data['Drawing']
     
    39823980        G2frame.dataFrame.SetStatusText('')
    39833981        generalData = data['General']
     3982        SpnFlp = generalData['SGData'].get('SpnFlp',[])
    39843983        SetupDrawingData()
    39853984        drawingData = data['Drawing']
     
    41564155        if indx:
    41574156            colLabels = [drawAtoms.GetColLabelValue(c) for c in range(drawAtoms.GetNumberCols())]
    4158             cx = colLabels.index('x')
    4159             cuia = colLabels.index('I/A')
    4160             cuij = cuia+2
     4157            cx,ct,cs,cui = data['Drawing']['atomPtrs']
     4158            cuij = cui+2
     4159            cmx = 0
     4160            if 'Mx' in colLabels:
     4161                cmx = colLabels.index('Mx')
    41614162            atomData = data['Drawing']['Atoms']
    41624163            generalData = data['General']
    41634164            SGData = generalData['SGData']
     4165            SpnFlp = SGData.get('SpnFlp',[])
    41644166            dlg = G2gd.SymOpDialog(G2frame,SGData,False,True)
    41654167            try:
     
    41804182                            atom = copy.copy(atomData[ind])
    41814183                            atom[cx:cx+3] = XYZ
    4182                             atomOp = atom[cx+3]
    4183                             newOp = str(((Opr+1)+100*Cent)*(1-2*Inv))+'+'+ \
     4184                            atomOp = atom[cs-1]
     4185                            OprNum = ((Opr+1)+100*Cent)*(1-2*Inv)
     4186                            newOp = str(OprNum)+'+'+ \
    41844187                                str(int(Cell[0]))+','+str(int(Cell[1]))+','+str(int(Cell[2]))                           
    4185                             atom[cx+3] = G2spc.StringOpsProd(atomOp,newOp,SGData)
    4186                             if atom[cuia] == 'A':
     4188                            atom[cs-1] = G2spc.StringOpsProd(atomOp,newOp,SGData)
     4189                            if cmx:
     4190                                opNum = G2spc.GetOpNum(OprNum,SGData)
     4191                                atom[cmx:cmx+3] = np.inner(M,np.array(atom[cmx:cmx+3]))
     4192                            if atom[cui] == 'A':
    41874193                                Uij = atom[cuij:cuij+6]
    41884194                                Uij = G2spc.U2Uij(np.inner(np.inner(M,G2spc.Uij2U(Uij)),M))
     
    42024208        cx,ct,cs,ci = data['Drawing']['atomPtrs']
    42034209        cuij = cs+5
     4210        cmx = 0
     4211        colLabels = [drawAtoms.GetColLabelValue(c) for c in range(drawAtoms.GetNumberCols())]
     4212        if 'Mx' in colLabels:
     4213            cmx = colLabels.index('Mx')
    42044214        generalData = data['General']
    42054215        SGData = generalData['SGData']
     4216        SpnFlp = SGData.get('SpnFlp',[])
    42064217        cellArray = G2lat.CellBlock(1)
    42074218        indx = drawAtoms.GetSelectedRows()
     
    42234234                            atom = copy.copy(atomB)
    42244235                            atom[cx:cx+3] = item[0]
    4225                             atom[cx+3] = str(item[2])+'+'
     4236                            atom[cs-1] = str(item[2])+'+'
    42264237                            atom[cuij:cuij+6] = item[1]
    42274238                            for xyz in cellArray+np.array(atom[cx:cx+3]):
     
    42324243                                        newAtom = atom[:]
    42334244                                        newAtom[cx:cx+3] = xyz
    4234                                         newAtom[cx+3] += str(int(round(C[0])))+','+str(int(round(C[1])))+','+str(int(round(C[2])))
     4245                                        newAtom[cs-1] += str(int(round(C[0])))+','+str(int(round(C[1])))+','+str(int(round(C[2])))
    42354246                                        atomData.append(newAtom)
    42364247        finally:
     
    42464257            atomData = data['Drawing']['Atoms']
    42474258            colLabels = [drawAtoms.GetColLabelValue(c) for c in range(drawAtoms.GetNumberCols())]
    4248             cx = colLabels.index('x')
    4249             cuia = colLabels.index('I/A')
    4250             cuij = cuia+2
     4259            cx,ct,cs,ci = data['Drawing']['atomPtrs']
     4260            cuij = ci+2
     4261            cmx = 0
     4262            if 'Mx' in colLabels:
     4263                cmx = colLabels.index('Mx')
    42514264            atomData = data['Drawing']['Atoms']
    42524265            generalData = data['General']
    42534266            SGData = generalData['SGData']
     4267            SpnFlp = SGData.get('SpnFlp',[])
    42544268            dlg = G2gd.SymOpDialog(G2frame,SGData,False,True)
    42554269            try:
     
    42704284                        atom = atomData[ind]
    42714285                        atom[cx:cx+3] = XYZ
    4272                         atomOp = atom[cx+3]
     4286                        OprNum = ((Opr+1)+100*Cent)*(1-2*Inv)
     4287                        if cmx:
     4288                            opNum = G2spc.GetOpNum(OprNum,SGData)
     4289                            atom[cmx:cmx+3] = np.inner(M,np.array(atom[cmx:cmx+3]))
     4290                        atomOp = atom[cs-1]
    42734291                        newOp = str(((Opr+1)+100*Cent)*(1-2*Inv))+'+'+ \
    42744292                            str(int(Cell[0]))+','+str(int(Cell[1]))+','+str(int(Cell[2]))
    4275                         atom[cx+3] = G2spc.StringOpsProd(atomOp,newOp,SGData)
    4276                         if atom[cuia] == 'A':
     4293                        atom[cs-1] = G2spc.StringOpsProd(atomOp,newOp,SGData)
     4294                        if atom[ci] == 'A':
    42774295                            Uij = atom[cuij:cuij+6]
    42784296                            U = G2spc.Uij2U(Uij)
     
    43264344                                    newAtom = atomB[:]
    43274345                                    newAtom[cx:cx+3] = xyz
    4328                                     newAtom[cx+3] = G2spc.StringOpsProd(oprB,newOp,SGData)
     4346                                    newAtom[cs-1] = G2spc.StringOpsProd(oprB,newOp,SGData)
    43294347                                    atomData.append(newAtom[:cij+9])  #not SS stuff
    43304348            finally:
     
    43414359            atomData = data['Drawing']['Atoms']
    43424360            colLabels = [drawAtoms.GetColLabelValue(c) for c in range(drawAtoms.GetNumberCols())]
    4343             cx = colLabels.index('x')
    4344             cs = colLabels.index('Sym Op')
    4345             cuia = colLabels.index('I/A')
    4346             cuij = cuia+2
     4361            cx,ct,cs,cui = data['Drawing']['atomPtrs']
     4362            cmx = 0
     4363            if 'Mx' in colLabels:
     4364                cmx = colLabels.index('Mx')
     4365            cuij = cui+2
    43474366            generalData = data['General']
    43484367            SGData = generalData['SGData']
     4368            SpnFlp = SGData.get('SpnFlp',[])
    43494369            wx.BeginBusyCursor()
    43504370            try:
     
    43524372                    atom = atomData[ind]
    43534373                    XYZ = np.array(atom[cx:cx+3])
    4354                     if atom[cuia] == 'A':
     4374                    if atom[cui] == 'A':
    43554375                        Uij = atom[cuij:cuij+6]
    43564376                        result = G2spc.GenAtom(XYZ,SGData,False,Uij,True)
     
    43584378                            atom = copy.copy(atomData[ind])
    43594379                            atom[cx:cx+3] = item[0]
    4360                             atom[cs] = str(item[2])+'+' \
     4380                            Opr = abs(item[2])%100
     4381                            Cent = abs(item[2]/100)
     4382                            M = SGData['SGOps'][Opr-1][0]
     4383                            if cmx:
     4384                                opNum = G2spc.GetOpNum(item[2],SGData)
     4385                                atom[cmx:cmx+3] = np.inner(SGData['SGOps'],np.array(atom[cmx:cmx+3]))
     4386                            atom[cs-1] = str(item[2])+'+' \
    43614387                                +str(item[3][0])+','+str(item[3][1])+','+str(item[3][2])
    43624388                            atom[cuij:cuij+6] = item[1]
     
    43664392                                    unit = np.array(eval(key))*1.-item[3]
    43674393                                    cell = '%d+%d,%d,%d'%(item[2],unit[0],unit[1],unit[2])
    4368                                     #transform moment here
    43694394                                    atom[cx:cx+3] = Opp[key]
    4370                                     atom[cs] = cell
     4395                                    atom[cs-1] = cell
    43714396                                    atomData.append(atom[:cuij+9])  #not SS stuff
    43724397                    else:
    43734398                        result = G2spc.GenAtom(XYZ,SGData,False,Move=True)
     4399 #                       GSASIIpath.IPyBreak()
    43744400                        for item in result:
    43754401                            atom = copy.copy(atomData[ind])
     4402                            Opr = abs(item[1])%100
     4403                            Cent = abs(item[1]/100)
     4404                            M = SGData['SGOps'][Opr-1][0]
    43764405                            atom[cx:cx+3] = item[0]
    4377                             atom[cs] = str(item[1])+'+' \
     4406                            if cmx:
     4407                                opNum = G2spc.GetOpNum(item[1],SGData)
     4408                                atom[cmx:cmx+3] = np.inner(np.array(atom[cmx:cmx+3]),M)
     4409                            atom[cs-1] = str(item[1])+'+' \
    43784410                                +str(item[2][0])+','+str(item[2][1])+','+str(item[2][2])
    43794411                            Opp = G2spc.Opposite(item[0])
     
    43834415                                    cell = '%d+%d,%d,%d'%(item[1],unit[0],unit[1],unit[2])
    43844416                                    atom[cx:cx+3] = Opp[key]
    4385                                     #transform moment here
    4386                                     atom[cs] = cell
     4417                                    atom[cs-1] = cell
    43874418                                    atomData.append(atom[:cuij+9])  #not SS stuff
    43884419                    data['Drawing']['Atoms'] = atomData
  • trunk/GSASIIplot.py

    r2467 r2468  
    47774777    if generalData['Modulated']:
    47784778        SSGData = generalData['SSGData']
     4779    SpnFlp = SGData.get('SpnFlp',[])
    47794780    Mydir = generalData['Mydir']
    47804781    Super = generalData.get('Super',0)
     
    52135214        glLightfv(GL_LIGHT0,GL_AMBIENT,[1,1,1,.8])
    52145215        glLightfv(GL_LIGHT0,GL_DIFFUSE,[1,1,1,1])
     5216        glLightfv(GL_LIGHT0,GL_SPECULAR,[1,1,1,.5])
    52155217       
    52165218    def GetRoll(newxy,rhoshape):
     
    54745476        Dx = Moment/2.
    54755477        Z = np.sqrt(np.sum(Dx**2))
    5476         glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,color-Bc)
     5478        glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,color)
    54775479        glPushMatrix()
    54785480        glTranslate(x,y,z)
     
    54865488            q = gluNewQuadric()
    54875489            gluQuadricOrientation(q,GLU_INSIDE)
    5488             gluDisk(q,0.,.1,slice,1)
     5490            gluDisk(q,0.,.08,slice,1)
    54895491            gluQuadricOrientation(q,GLU_OUTSIDE)
    54905492            gluCylinder(q,.1,.1,2.*Z,slice,10)
    5491             glTranslate(0,0,2*Z)
     5493            glTranslate(0,0,2*Z+.02)
    54925494            gluQuadricOrientation(q,GLU_INSIDE)
    5493             gluDisk(q,.1,.2,slice,1)
     5495            gluDisk(q,.12,.18,slice,1)
    54945496            gluQuadricOrientation(q,GLU_OUTSIDE)
    54955497            gluCylinder(q,.2,0.,.4,slice,10)
     
    57055707                    pass
    57065708            if generalData['Type'] == 'magnetic':
     5709                SymOp = int(atom[cs-1].split('+')[0])
     5710                OpNum = G2spc.GetOpNum(SymOp,SGData)-1
    57075711                Moment = np.array(atom[cx+3:cx+6])
    5708                 color = Wt
     5712                color = Wt-Bc
     5713                if SpnFlp[OpNum] < 0:
     5714                    color = Rd
    57095715                RenderMoment(x,y,z,Moment,color)                   
    57105716            if 'balls' in atom[cs]:
  • trunk/GSASIIspc.py

    r2467 r2468  
    922922    return OprNames,SpnFlp
    923923   
    924    
    925    
    926    
     924def GetOpNum(Opr,SGData):
     925    Inv = SGData['SGInv']
     926    Nops = len(SGData['SGOps'])
     927    opNum = abs(Opr)%100
     928    if Opr < 0:
     929        opNum += Nops
     930    cent = abs(Opr)/100
     931    opNum += cent*Nops*Inv
     932    return opNum
    927933       
    928934################################################################################
  • trunk/imports/G2phase.py

    r2406 r2468  
    296296                        XYZ = Atom[3:6]
    297297                        Atom[7],Atom[8] = G2spc.SytSym(XYZ,SGData)
     298                        if Ptype == 'magnetic':
     299                            Atom = Atom[:7]+[0.,0.,0.]+Atom[7:]
    298300                        Atom.append(ran.randint(0,sys.maxint))
    299301                        Atoms.append(Atom)
    300302                    elif key[11:] == 'M' and key[6:8] == 'AT':
    301303                        S = EXPphase[key]
    302                         Mag = [float(S[:10]),float(S[10:20]),float(S[20:30])]
    303                         Atoms[-1] = Atoms[-1][:7]+Mag+Atoms[-1][7:]
     304                        Atoms[-1][7:10] = [float(S[:10]),float(S[10:20]),float(S[20:30])]
    304305        elif Ptype == 'macromolecular':
    305306            for key in keyList:
Note: See TracChangeset for help on using the changeset viewer.