Changeset 953


Ignore:
Timestamp:
Jun 18, 2013 1:59:47 PM (8 years ago)
Author:
vondreele
Message:

fixes to RB refinement & MC/SA

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r952 r953  
    23162316        if dlg:
    23172317            GoOn = dlg.Update(best_state.cost*100,
    2318                 newmsg='%s%8.3f\n%s%8.3f%s'%('Temperature =',schedule.T,'MC/SA Residual =',best_state.cost*100,'%'))[0]
     2318                newmsg='%s%8.5f\n%s%8.4f%s'%('Temperature =',schedule.T,'MC/SA Residual =',best_state.cost*100,'%'))[0]
    23192319            if not GoOn:
    23202320                break
     
    24802480                if parmDict[pfx+'MolCent'][1]:
    24812481                    Cart -= parmDict[pfx+'MolCent'][0]
    2482                 Qori = np.array([parmDict[pfx+'Qa'],parmDict[pfx+'Qi'],parmDict[pfx+'Qj'],parmDict[pfx+'Qk']])
     2482                Qori = normQ(np.array([parmDict[pfx+'Qa'],parmDict[pfx+'Qi'],parmDict[pfx+'Qj'],parmDict[pfx+'Qk']]))
    24832483                Pos = np.array([parmDict[pfx+'Px'],parmDict[pfx+'Py'],parmDict[pfx+'Pz']])
    24842484                for i,x in enumerate(Cart):
     
    26912691    D[2] = QA[0]*QB[2]-QA[1]*QB[3]+QA[2]*QB[0]+QA[3]*QB[1]
    26922692    D[3] = QA[0]*QB[3]+QA[1]*QB[2]-QA[2]*QB[1]+QA[3]*QB[0]
     2693   
     2694#    D[0] = QA[0]*QB[0]-np.dot(QA[1:],QB[1:])
     2695#    D[1:] = QA[0]*QB[1:]+QB[0]*QA[1:]+np.cross(QA[1:],QB[1:])
     2696   
    26932697    return D
    26942698   
  • trunk/GSASIIphsGUI.py

    r952 r953  
    671671                except ValueError:
    672672                    pass
    673                 Obj.SetValue("%.3f"%(MCSA['log slope']))          #reset in case of error               
     673                slope.SetValue("%.3f"%(MCSA['log slope']))          #reset in case of error               
    674674           
    675675            def OnAjump(event):
     
    725725            mcsaSizer.Add((5,5),)
    726726            line2Sizer = wx.BoxSizer(wx.HORIZONTAL)
    727             line2Sizer.Add(wx.StaticText(General,label=' Cycles: '),0,wx.ALIGN_CENTER_VERTICAL)
     727            line2Sizer.Add(wx.StaticText(General,label=' MC/SA runs: '),0,wx.ALIGN_CENTER_VERTICAL)
    728728            Cchoice = ['1','2','3','5','10','15','20','30']
    729729            cycles = wx.ComboBox(General,-1,value=str(MCSA.get('Cycles',1)),choices=Cchoice,
     
    42154215                            Models[nObj]['Pos'][0][ind] = val                           
    42164216                        elif 'Q' in name:
    4217                             A,V = G2mth.Q2AVdeg(Models[nObj]['Ori'][0])
     4217                            Q = Models[nObj]['Ori'][0]
     4218                            A,V = G2mth.Q2AVdeg(Q)
    42184219                            ind = ['Qa','Qi','Qj','Qk'].index(name)
    42194220                            if ind:
     
    42214222                            else:
    42224223                                A = val
    4223                             Models[nObj]['Ori'][0] = G2mth.AVdeg2Q(A,V)                           
     4224                            Q = G2mth.AVdeg2Q(A,V)
     4225                            Models[nObj]['Ori'][0] = Q                           
    42244226                        elif 'P' in name:
    42254227                            ind = ['Px','Py','Pz'].index(name)
    42264228                            Models[nObj]['Pos'][0][ind] = val                           
    42274229                        elif 'T' in name:
    4228                             tnum = int(name.split('Tor'))
     4230                            tnum = int(name.split('Tor')[1])
    42294231                            Models[nObj]['Tor'][0][tnum] = val                                                       
    42304232                        else:       #March Dollase
     
    42424244            for i in range(len(Results)): rowLabels.append(str(i))
    42434245            colLabels = ['Select','Residual','Tmin',]
    4244             for i in range(maxVary): colLabels.append('variable:'+str(i))
     4246            for item in result[4]: colLabels.append(item)
     4247#            for i in range(maxVary): colLabels.append('variable:'+str(i))
    42454248            Types = [wg.GRID_VALUE_BOOL,wg.GRID_VALUE_FLOAT+':10,4',
    42464249                wg.GRID_VALUE_FLOAT+':10,4',]+maxVary*[wg.GRID_VALUE_FLOAT+':10,5',]
     
    43564359            for i in range(mcsaControls['Cycles']):
    43574360                MCSAdata['Results'].append(G2mth.mcsaSearch(data,RBdata,reflType,reflData,covData,pgbar))
     4361                print ' MC/SA runs completed: ',i
    43584362        finally:
    43594363            pgbar.Destroy()
  • trunk/GSASIIplot.py

    r951 r953  
    26172617
    26182618    def FindPeaksBonds(XYZ):
    2619         rFact = drawingData['radiusFactor']
     2619        rFact = data['Drawing']['radiusFactor']
    26202620        Bonds = [[] for x in XYZ]
    26212621        for i,xyz in enumerate(XYZ):
     
    26572657    mcsaModels = MCSA.get('Models',[])
    26582658    if mcsaModels:
    2659             mcsaXYZ,atTypes = G2mth.UpdateMCSAxyz(Bmat,MCSA)
    2660             XYZeq = []
    2661             for xyz in mcsaXYZ:
    2662                 XYZeq += G2spc.GenAtom(xyz,SGData)[0][1:]       #skip self xyz
    2663            
    2664             mcsaBonds = FindPeaksBonds(mcsaXYZ)       
     2659        XYZs,Types = G2mth.UpdateMCSAxyz(Bmat,MCSA)
     2660        mcsaXYZ = []
     2661        mcsaTypes = []
     2662        for xyz,atyp in zip(XYZs,Types):
     2663            for item in G2spc.GenAtom(xyz,SGData):
     2664                mcsaXYZ.append(item[0])
     2665                mcsaTypes.append(atyp)
     2666        mcsaBonds = FindPeaksBonds(mcsaXYZ)       
     2667#            mcsaXYZ,atTypes = G2mth.UpdateMCSAxyz(Bmat,MCSA)
     2668#            XYZeq = []
     2669#            for xyz in mcsaXYZ:
     2670#                XYZeq += G2spc.GenAtom(xyz,SGData)[0][1:]       #skip self xyz
     2671#           
     2672#            mcsaBonds = FindPeaksBonds(mcsaXYZ)       
    26652673    drawAtoms = drawingData.get('Atoms',[])
    26662674    mapData = {}
     
    35003508                color = np.array(testRBObj['AtInfo'][aType][1])
    35013509                RenderSphere(x,y,z,0.2,color/255.)
    3502 #                RenderMapPeak(x,y,z,color,1.0)
    35033510                RenderBonds(x,y,z,rbBonds[ind],0.03,Gr)
    35043511                RenderLabel(x,y,z,name,0.2,Or)
    35053512        if len(mcsaModels) > 1 and pageName == 'MC/SA':             #skip the default MD entry
    35063513            for ind,[x,y,z] in enumerate(mcsaXYZ):
    3507                 aType = atTypes[ind]
     3514                aType = mcsaTypes[ind]
    35083515                name = '  '+aType+str(ind)
    35093516                color = np.array(MCSA['AtInfo'][aType][1])
  • trunk/GSASIIstrIO.py

    r946 r953  
    552552       
    553553################################################################################
    554 ##### Rigid Body Models  and not General.get('doPawley')
     554##### Rigid Body Models and not General.get('doPawley')
    555555################################################################################
    556556       
  • trunk/GSASIIstrMath.py

    r942 r953  
    7979            for i,po in enumerate(['RBVOa:','RBVOi:','RBVOj:','RBVOk:']):
    8080                RBObj['Orient'][0][i] = parmDict[pfx+po+rbsx]
     81            RBObj['Orient'][0] = G2mth.normQ(RBObj['Orient'][0])
    8182            TLS = RBObj['ThermalMotion']
    8283            if 'T' in TLS[0]:
     
    110111            for i,po in enumerate(['RBROa:','RBROi:','RBROj:','RBROk:']):
    111112                RBObj['Orient'][0][i] = parmDict[pfx+po+rbsx]               
     113            RBObj['Orient'][0] = G2mth.normQ(RBObj['Orient'][0])
    112114            TLS = RBObj['ThermalMotion']
    113115            if 'T' in TLS[0]:
     
    180182        for ia,atId in enumerate(RBObj['Ids']):
    181183            atNum = AtLookup[atId]
    182             dx = 0.0001
     184            dx = 0.00001
    183185            for iv in range(len(VModel['VectMag'])):
    184186                for ix in [0,1,2]:
     
    186188            for i,name in enumerate(['RBVPx:','RBVPy:','RBVPz:']):
    187189                dFdvDict[pfx+name+rbsx] += dFdvDict[pfx+atxIds[i]+str(atNum)]
    188             for iv in range(4):
     190            for iv in range(4):         #there is a problem with the Oa,Oi,Oj,Ok derivatives
    189191                Q[iv] -= dx
    190192                XYZ1,Cart1 = G2mth.UpdateRBXYZ(Bmat,RBObj,RBData,'Vector')
Note: See TracChangeset for help on using the changeset viewer.