Changeset 4254


Ignore:
Timestamp:
Jan 17, 2020 8:41:23 AM (4 years ago)
Author:
vondreele
Message:

more RMCProfile setup stuff added

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIElem.py

    r3786 r4254  
    157157    El['cmpb'] = Cmp5[6:]
    158158    return El
     159
     160def GetBVS(Pair,atSeq,Valences):
     161    Els = Pair.strip().split('-')
     162    iAt = atSeq.index(Els[0])
     163    jAt = atSeq.index(Els[1])
     164    iVal = Valences[iAt][0]
     165    if Els[1] in ['O','F','Cl']:
     166        iEls = ['O','F','Cl'].index(Els[1])
     167        if iVal in atmdata.BVScoeff:
     168            return atmdata.BVScoeff[iVal][iEls]
     169        else:
     170            return 0.0
     171    elif Els[1] in ['Br','I','S','Se','Te','N','P','As','H','D']:
     172        iEls = ['Br','I','S','Se','Te','N','P','As','H','D'].index(Els[1])
     173        if Els[0] in atmdata.BVSnotOFCl:
     174            return atmdata.BVSnotOFCl[Els[0]][iEls]
     175        else:
     176            return 0.0
     177    else:
     178        return 0.0
    159179   
    160180def CheckElement(El):
  • trunk/GSASIIphsGUI.py

    r4253 r4254  
    6363import numpy as np
    6464import numpy.linalg as nl
     65import atmdata
    6566
    6667try:
     
    10971098            aTypes = dict(zip(Atypes,len(Atypes)*[0.10,]))
    10981099            atSeq = list(aTypes.keys())
     1100            atOxid = [[atmdata.BVSoxid[atm][0],0.001] for atm in atSeq]
    10991101            lenA = len(atSeq)
    11001102            Pairs= []
     
    11021104                Pairs += pair
    11031105            Pairs = {pairs:[0.0,0.0,0.0] for pairs in Pairs}
     1106            BVSpairs = []
     1107            if lenA > 1:
     1108                for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i+1,lenA)] for i in range(lenA)]:
     1109                    BVSpairs += pair
     1110                BVS = {pairs:[0.0,0.0,0.0,0.0] for pairs in BVSpairs}
    11041111            files = {'Neutron real space data; G(r): ':['',0.05,'G(r)','RMC',],
    11051112                      'Neutron reciprocal space data; F(Q): ':['',0.05,'F(Q)','RMC',],
     
    11121119            Phase['RMC']['RMCProfile'] = {'SuperCell':[1,1,1],'UseSampBrd':[True,True],'aTypes':aTypes,
    11131120                 'atSeq':atSeq,'Pairs':Pairs,'histogram':['',1.0],'files':files,'metadata':metadata,
    1114                  'runTimes':runTimes,'ReStart':False}
     1121                 'runTimes':runTimes,'ReStart':False,'BVS':BVS,'Oxid':atOxid,'useBVS':False,
     1122                 'AveCN':[],'FxCN':[]}
    11151123        self.RMCPdict = Phase['RMC']['RMCProfile']
    11161124        self.Phase = Phase
     
    11251133            Obj = event.GetEventObject()
    11261134            itype = Indx[Obj.GetId()]
    1127             tid = Obj.GetSelection()
    1128             if itype < nTypes-1:
     1135            tid = self.RMCPdict['atSeq'].index(Obj.GetStringSelection())
     1136            if itype < nTypes:
    11291137                if itype == tid:
    11301138                    tid += 1
     
    11321140            wx.CallAfter(self.Draw)
    11331141           
     1142        def OnValSel(event):
     1143            Obj = event.GetEventObject()
     1144            itype = Indx[Obj.GetId()]
     1145            self.RMCPdict['Oxid'][itype][0] = Obj.GetStringSelection()           
     1146            wx.CallAfter(self.Draw)
     1147
    11341148        def OnSize(event):
    11351149            self.RMCPdict['UseSampBrd'][0] = samSize.GetValue()
     
    11511165                dlg.Destroy()
    11521166                return
    1153             self.Draw()
     1167            wx.CallAfter(self.Draw)
    11541168           
    11551169        def OnFileFormat(event):
     
    11611175            self.RMCPdict['ReStart'] = True
    11621176            self.OKBtn.SetLabel('Restart')
     1177           
     1178        def OnUseBVS(event):
     1179            self.RMCPdict['useBVS'] = not self.RMCPdict['useBVS']
     1180            wx.CallAfter(self.Draw)
     1181           
     1182        def OnResetBVS(event):
     1183            Obj = event.GetEventObject()
     1184            pair = Indx[Obj.GetId()]
     1185            pId = [key for key in self.RMCPdict['BVS']].index(pair)+1
     1186            nId = len(self.RMCPdict['BVS'])+1
     1187            dist = G2elem.GetBVS(pair,self.RMCPdict['atSeq'],self.RMCPdict['Oxid'])
     1188            if dist:
     1189                self.RMCPdict['BVS'][pair] = [dist,0.37,3.0]
     1190                bvsCh = bvsSizer.GetChildren()
     1191                addr = 2*nId+pId
     1192                bvsCh[addr].Window.SetValue('%6.3f'%dist)
     1193                bvsCh[addr+nId].Window.SetValue('0.37')
     1194                bvsCh[addr+2*nId].Window.SetValue('3.00')
     1195           
     1196        def OnAddFxCN(event):
     1197            self.RMCPdict['FxCN'].append(['','',0.0,2.0,6,1.0,0.001])
     1198            wx.CallAfter(self.Draw)
     1199           
     1200        def OnDelFxCN(event):
     1201            Obj = event.GetEventObject()
     1202            fxCN = Indx[Obj.GetId()]
     1203            del self.RMCPdict['FxCN'][fxCN]
     1204            wx.CallAfter(self.Draw)
     1205           
     1206        def OnFxcnAtSel(event):
     1207            Obj = event.GetEventObject()
     1208            ifxCN,i = Indx[Obj.GetId()]
     1209            self.RMCPdict['FxCN'][ifxCN][i] = Obj.GetStringSelection()
     1210
     1211        def OnAddAveCN(event):
     1212            self.RMCPdict['AveCN'].append(['','',0.0,2.0,6.,0.001])
     1213            wx.CallAfter(self.Draw)
    11631214                   
     1215        def OnDelAvCN(event):
     1216            Obj = event.GetEventObject()
     1217            fxCN = Indx[Obj.GetId()]
     1218            del self.RMCPdict['AveCN'][fxCN]
     1219            wx.CallAfter(self.Draw)
     1220           
     1221        def OnAvcnAtSel(event):
     1222            Obj = event.GetEventObject()
     1223            ifxCN,i = Indx[Obj.GetId()]
     1224            self.RMCPdict['AveCN'][ifxCN][i] = Obj.GetStringSelection()
     1225
    11641226        Indx = {}
     1227#patches
    11651228        if 'runTimes' not in self.RMCPdict:
    11661229            self.RMCPdict['runTimes'] = [10.0,1.0]
    11671230        lenA = len(self.RMCPdict['atSeq'])
     1231        if 'Oxid' not in self.RMCPdict:
     1232            self.RMCPdict['Oxid'] = [[atmdata.BVSoxid[atm][0],0.001] for atm in self.RMCPdict['atSeq']]
    11681233        Pairs= []
    11691234        for pair in [[' %s-%s'%(self.RMCPdict['atSeq'][i],self.RMCPdict['atSeq'][j]) for j in range(i,lenA)] for i in range(lenA)]:
    11701235            Pairs += pair
    11711236        self.RMCPdict['Pairs'] = dict(zip(Pairs,[self.RMCPdict['Pairs'].get(pair,[0.0,0.0,0.0]) for pair in Pairs]))
     1237        BVSpairs = []
     1238        if 'BVS' not in self.RMCPdict:
     1239            self.RMCPdict['useBVS'] = False
     1240            self.RMCPdict['BVS'] = {}
     1241        if lenA > 1:
     1242            for pair in [[' %s-%s'%(self.RMCPdict['atSeq'][i],self.RMCPdict['atSeq'][j]) for j in range(i+1,lenA)] for i in range(lenA)]:
     1243                BVSpairs += pair
     1244            self.RMCPdict['BVS'] = dict(zip(BVSpairs,[self.RMCPdict['BVS'].get(pair,[0.0,0.0,0.0]) for pair in BVSpairs]))
     1245        if 'FxCN' not in self.RMCPdict:
     1246            self.RMCPdict.update({'AveCN':[],'FxCN':[]})           
     1247           
     1248#end patches
    11721249        self.panel.Destroy()
    11731250        self.panel = wxscroll.ScrolledPanel(self,style = wx.DEFAULT_DIALOG_STYLE,size=(700,500))
     
    11801257            metaSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['metadata'],item),0,WACV)
    11811258        mainSizer.Add(metaSizer,0,WACV)
     1259       
     1260        G2G.HorizontalLine(mainSizer,self.panel)
    11821261        timeSizer = wx.BoxSizer(wx.HORIZONTAL)
    11831262        timeSizer.Add(wx.StaticText(self.panel,label=' Total running time (min): '),0,WACV)
     
    11861265        timeSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['runTimes'],1,min=0.1,max=20.),0,WACV)
    11871266        mainSizer.Add(timeSizer,0,WACV)
    1188         mainSizer.Add(wx.StaticText(self.panel,label=' Lattice multipliers; if changed will force restart of RMCProfile:'),0,WACV)
     1267        mainSizer.Add(wx.StaticText(self.panel,label=' Lattice multipliers; if changed will force reset of atom positions:'),0,WACV)
    11891268        superSizer = wx.BoxSizer(wx.HORIZONTAL)
    11901269        axes = ['X','Y','Z']
     
    11931272            superSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['SuperCell'],i,min=1,max=20,size=(50,25),OnLeave=SetRestart),0,WACV)
    11941273        mainSizer.Add(superSizer,0,WACV)
     1274        mainSizer.Add(wx.StaticText(self.panel,label=' NB: be sure to set cations first && anions last in atom ordering'),0,WACV)
    11951275        nTypes = len(self.RMCPdict['aTypes'])
    11961276        atmChoice = wx.FlexGridSizer(nTypes+1,5,5)
     
    12031283            Indx[atmSel.GetId()] = iType
    12041284            atmChoice.Add(atmSel,0,WACV)
     1285        if self.RMCPdict['useBVS']:   
     1286            atmChoice.Add(wx.StaticText(self.panel,label=' Select valence: '),0,WACV)
     1287            for itype in range(nTypes):
     1288                valChoice = atmdata.BVSoxid[self.RMCPdict['atSeq'][itype]]
     1289                valSel = wx.ComboBox(self.panel,choices=valChoice,style=wx.CB_DROPDOWN|wx.TE_READONLY)
     1290                valSel.SetStringSelection(self.RMCPdict['Oxid'][itype][0])
     1291                valSel.Bind(wx.EVT_COMBOBOX,OnValSel)
     1292                Indx[valSel.GetId()] = itype
     1293                atmChoice.Add(valSel,0,WACV)
     1294            atmChoice.Add(wx.StaticText(self.panel,label=' BVS weight: '),0,WACV)
     1295            for itype in range(nTypes):
     1296                atmChoice.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['Oxid'][itype],1,min=0.),0,WACV)
    12051297        atmChoice.Add(wx.StaticText(self.panel,label=' Set max shift: '),0,WACV)
    12061298        for iType in range(nTypes):
     
    12081300            atmChoice.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['aTypes'],atId,min=0.,max=1.),0,WACV)
    12091301        mainSizer.Add(atmChoice,0,WACV)
     1302       
     1303        G2G.HorizontalLine(mainSizer,self.panel)
    12101304        mainSizer.Add(wx.StaticText(self.panel,label=' Enter constraints && restraints:'),0,WACV)
    12111305        mainSizer.Add(wx.StaticText(self.panel,label=' Set minimum && maximum distances for:'),0,WACV)
     
    12141308        for pair in self.RMCPdict['Pairs']:
    12151309            pairSizer.Add(wx.StaticText(self.panel,label=pair),0,WACV)
    1216         pairSizer.Add(wx.StaticText(self.panel,label=' Hard min: '),0,WACV)
     1310        pairSizer.Add(wx.StaticText(self.panel,label='%14s'%' Hard min: '),0,WACV)
    12171311        for pair in self.RMCPdict['Pairs']:
    12181312            pairSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['Pairs'][pair],0,min=0.,max=10.,size=(50,25)),0,WACV)
    1219         pairSizer.Add(wx.StaticText(self.panel,label=' Search from: '),0,WACV)
     1313        pairSizer.Add(wx.StaticText(self.panel,label='%14s'%' Search from: '),0,WACV)
    12201314        for pair in self.RMCPdict['Pairs']:
    12211315            pairSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['Pairs'][pair],1,min=self.RMCPdict['Pairs'][pair][0],max=10.,size=(50,25)),0,WACV)
    1222         pairSizer.Add(wx.StaticText(self.panel,label='       to: '),0,WACV)
     1316        pairSizer.Add(wx.StaticText(self.panel,label='%14s'%'to: '),0,WACV)
    12231317        for pair in self.RMCPdict['Pairs']:
    12241318            pairSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['Pairs'][pair],2,min=0.,max=10.,size=(50,25)),0,WACV)
    12251319        mainSizer.Add(pairSizer,0,WACV)
    12261320       
    1227        
     1321        G2G.HorizontalLine(mainSizer,self.panel)
     1322        useBVS = wx.CheckBox(self.panel,label=' Use bond valence sum restraints for (set to 0 for non-bonded ones):')
     1323        useBVS.SetValue(self.RMCPdict.get('useBVS',False))
     1324        useBVS.Bind(wx.EVT_CHECKBOX,OnUseBVS)
     1325        mainSizer.Add(useBVS,0,WACV)
     1326        if self.RMCPdict.get('useBVS',False):
     1327            bvsSizer = wx.FlexGridSizer(len(self.RMCPdict['BVS'])+1,5,5)
     1328            bvsSizer.Add((5,5),0)
     1329            for pair in self.RMCPdict['BVS']:
     1330                bvsSizer.Add(wx.StaticText(self.panel,label=pair),0,WACV)
     1331            bvsSizer.Add(wx.StaticText(self.panel,label=' Reset:'),0,WACV)
     1332            for pair in self.RMCPdict['BVS']:
     1333                reset = wx.Button(self.panel,label='Yes')
     1334                bvsSizer.Add(reset,0,WACV)
     1335                reset.Bind(wx.EVT_BUTTON,OnResetBVS)
     1336                Indx[reset.GetId()] = pair
     1337            bvsSizer.Add(wx.StaticText(self.panel,label=' Bond length:'),0,WACV)
     1338            for pair in self.RMCPdict['BVS']:
     1339                bvsSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['BVS'][pair],0,min=0.,max=10.,size=(50,25)),0,WACV)
     1340            bvsSizer.Add(wx.StaticText(self.panel,label=' B constant (0.37): '),0,WACV)
     1341            for pair in self.RMCPdict['BVS']:
     1342                bvsSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['BVS'][pair],1,min=0.,max=10.,size=(50,25)),0,WACV)
     1343            bvsSizer.Add(wx.StaticText(self.panel,label=' Cut off: '),0,WACV)
     1344            for pair in self.RMCPdict['BVS']:
     1345                bvsSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['BVS'][pair],2,min=0.,max=10.,size=(50,25)),0,WACV)
     1346            mainSizer.Add(bvsSizer,0,WACV)
     1347           
     1348        G2G.HorizontalLine(mainSizer,self.panel)
     1349        fxcnBox = wx.BoxSizer(wx.HORIZONTAL)
     1350        fxcnAdd = wx.Button(self.panel,label='Add')
     1351        fxcnAdd.Bind(wx.EVT_BUTTON,OnAddFxCN)
     1352        fxcnBox.Add(fxcnAdd,0,WACV)
     1353        fxcnBox.Add(wx.StaticText(self.panel,label=' Fixed coordination number restraint: '),0,WACV)
     1354        mainSizer.Add(fxcnBox,0,WACV)
     1355        if len(self.RMCPdict['FxCN']):
     1356            atChoice = self.RMCPdict['atSeq']
     1357            fxcnSizer = wx.FlexGridSizer(8,5,5)
     1358            fxcnLabels = [' ','Atom-1','Atom-2','min dist','max dist','CN','fraction','weight']
     1359            for lab in fxcnLabels:
     1360                fxcnSizer.Add(wx.StaticText(self.panel,label=lab),0,WACV)
     1361            for ifx,fxCN in enumerate(self.RMCPdict['FxCN']):
     1362                delBtn = wx.Button(self.panel,label='Delete')
     1363                delBtn.Bind(wx.EVT_BUTTON,OnDelFxCN)
     1364                Indx[delBtn.GetId()] = ifx
     1365                fxcnSizer.Add(delBtn,0,WACV)
     1366                for i in [0,1]:
     1367                    atmSel = wx.ComboBox(self.panel,choices=atChoice,style=wx.CB_DROPDOWN|wx.TE_READONLY)
     1368                    atmSel.SetStringSelection(fxCN[i])
     1369                    atmSel.Bind(wx.EVT_COMBOBOX,OnFxcnAtSel)
     1370                    Indx[atmSel.GetId()] = [ifx,i]
     1371                    fxcnSizer.Add(atmSel,0,WACV)
     1372                fxcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,2,min=0.,max=5.,size=(50,25)),0,WACV)
     1373                fxcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,3,min=0.,max=5.,size=(50,25)),0,WACV)
     1374                fxcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,4,min=1,max=12,size=(50,25)),0,WACV)
     1375                fxcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,5,min=0.,max=1.,size=(50,25)),0,WACV)
     1376                fxcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,6,min=0.,size=(50,25)),0,WACV)
     1377            mainSizer.Add(fxcnSizer,0,WACV)
     1378       
     1379        G2G.HorizontalLine(mainSizer,self.panel)
     1380        avcnBox = wx.BoxSizer(wx.HORIZONTAL)
     1381        avcnAdd = wx.Button(self.panel,label='Add')
     1382        avcnAdd.Bind(wx.EVT_BUTTON,OnAddAveCN)
     1383        avcnBox.Add(avcnAdd,0,WACV)
     1384        avcnBox.Add(wx.StaticText(self.panel,label=' Average coordination number restraint: '),0,WACV)
     1385        mainSizer.Add(avcnBox,0,WACV)
     1386        if len(self.RMCPdict['AveCN']):
     1387            atChoice = self.RMCPdict['atSeq']
     1388            avcnSizer = wx.FlexGridSizer(7,5,5)
     1389            fxcnLabels = [' ','Atom-1','Atom-2','min dist','max dist','CN','weight']
     1390            for lab in fxcnLabels:
     1391                avcnSizer.Add(wx.StaticText(self.panel,label=lab),0,WACV)
     1392            for ifx,fxCN in enumerate(self.RMCPdict['FxCN']):
     1393                delBtn = wx.Button(self.panel,label='Delete')
     1394                delBtn.Bind(wx.EVT_BUTTON,OnDelAvCN)
     1395                Indx[delBtn.GetId()] = ifx
     1396                avcnSizer.Add(delBtn,0,WACV)
     1397                for i in [0,1]:
     1398                    atmSel = wx.ComboBox(self.panel,choices=atChoice,style=wx.CB_DROPDOWN|wx.TE_READONLY)
     1399                    atmSel.SetStringSelection(fxCN[i])
     1400                    atmSel.Bind(wx.EVT_COMBOBOX,OnAvcnAtSel)
     1401                    Indx[atmSel.GetId()] = [ifx,i]
     1402                    avcnSizer.Add(atmSel,0,WACV)
     1403                avcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,2,min=0.,max=5.,size=(50,25)),0,WACV)
     1404                avcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,3,min=0.,max=5.,size=(50,25)),0,WACV)
     1405                avcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,4,min=1.,max=12.,size=(50,25)),0,WACV)
     1406                avcnSizer.Add(G2G.ValidatedTxtCtrl(self.panel,fxCN,5,min=0.,size=(50,25)),0,WACV)
     1407            mainSizer.Add(avcnSizer,0,WACV)
     1408
     1409        G2G.HorizontalLine(mainSizer,self.panel)
    12281410        mainSizer.Add(wx.StaticText(self.panel,label=' Select data:'),0,WACV)
    12291411        histograms = self.Phase['Histograms']
     
    12511433        title = ' Select data for processing:'
    12521434        mainSizer.Add(wx.StaticText(self.panel,label=title),0,WACV)
    1253         fileSizer = wx.FlexGridSizer(5,5,5)
     1435        fileSizer = wx.FlexGridSizer(4,5,5)
    12541436        Formats = ['RMC','GUDRUN','STOG']
     1437        Heads = [' ','Format','Weight','Name']
     1438        for head in Heads:
     1439            fileSizer.Add(wx.StaticText(self.panel,label=head),0,WACV)
    12551440        for fil in self.RMCPdict['files']:
    12561441            filSel = wx.Button(self.panel,label='Select')
     
    12591444            fileSizer.Add(filSel,0,WACV)
    12601445            if self.RMCPdict['files'][fil][0]:
    1261                 fileSizer.Add(wx.StaticText(self.panel,label=' Format, Weight: '),0,WACV)
    12621446                nform = 3
    12631447                if 'Xray' in fil: nform = 1
     
    12681452                fileSizer.Add(fileFormat,0,WACV)
    12691453                fileSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['files'][fil],1),0,WACV)
    1270             fileSizer.Add(wx.StaticText(self.panel,label=fil+self.RMCPdict['files'][fil][0]),0,WACV)
    12711454            if not self.RMCPdict['files'][fil][0]:
    12721455                fileSizer.Add((5,5),0)
    12731456                fileSizer.Add((5,5),0)
    1274                 fileSizer.Add((5,5),0)
     1457            fileSizer.Add(wx.StaticText(self.panel,label=fil+self.RMCPdict['files'][fil][0]),0,WACV)
    12751458        mainSizer.Add(fileSizer,0,WACV)
    12761459       
     
    47224905            G2frame.runtext.SetValue(rundata)
    47234906        else:
     4907            G2frame.dataWindow.FRMCDataEdit.Enable(G2G.wxID_RUNRMC,True)
    47244908            dlg = SetUpRMCProfileDialog(G2frame,Name=pName,Phase=data)
    47254909            if dlg.ShowModal() == wx.ID_OK:
     
    47324916                    if backfile is None:
    47334917                        print(' Chebyschev-1 background not used; no .back file written')
     4918                        wx.MessageDialog(G2frame,' Chebyschev-1 background not used; '+ \
     4919                            'no .back file written & RMCProfile will not run','Wrong background function',wx.OK).ShowModal()
     4920                        G2frame.dataWindow.FRMCDataEdit.Enable(G2G.wxID_RUNRMC,False)
     4921                        return
    47344922                    else:
    47354923                        print(backfile+ ' written')
    47364924                    print(G2pwd.MakeBragg(G2frame,pName,data,PWId)+ ' written')
    47374925                    if RMCPdict.get('ReStart',False):
    4738                         print(G2pwd.MakeRMC6f(G2frame,pName,data,RMCPdict['metadata'],RMCPdict['atSeq'],
    4739                             RMCPdict['SuperCell'],PWId)+ ' written')
    4740                     print(G2pwd.MakeRMCPdat(G2frame,pName,data,RMCPdict['metadata'],RMCPdict['runTimes'],RMCPdict['atSeq'],
    4741                         RMCPdict['aTypes'],RMCPdict['Pairs'],RMCPdict['SuperCell'],RMCPdict['files'],PWId,RMCPdict['histogram'][1])+ ' written')
     4926                        print(G2pwd.MakeRMC6f(G2frame,pName,data,RMCPdict,PWId)+ ' written')
     4927                    print(G2pwd.MakeRMCPdat(G2frame,pName,data,RMCPdict,PWId)+ ' written')
    47424928                    print('RMCProfile file build completed')
     4929                    RMCPdict['ReStart'] = False
    47434930                else:
    47444931                    print('RMCProfile file build failed - no histogram selected')
     4932                    G2frame.dataWindow.FRMCDataEdit.Enable(G2G.wxID_RUNRMC,False)
    47454933            else:
    47464934                pass
     
    48395027        else:
    48405028            generalData = data['General']
     5029            RMCPdict = data['RMC']['RMCProfile']
    48415030            pName = generalData['Name'].replace(' ','_')
    48425031            dlg = wx.FileDialog(G2frame, "Choose any RMCProfile csv results file for "+pName+":",
     
    49065095                            labelY=Labels[label][1],newPlot=True,Title=Labels[label][2]+pName,
    49075096                            lines=True,names=Names[1:])
    4908                         print(' %s scale Ycalc/Yobs: %.4f'%(label,np.sum(Ycalc[1])/np.sum(Yobs[1])))
     5097                        RMCPdict[pName+label] = np.sum(Ycalc[1])/np.sum(Yobs[1])
     5098                        print(' %s scale Ycalc/Yobs: %.4f'%(label,RMCPdict[pName+label]))
    49095099#partials plots
    49105100            Labels = {'_PDFpartials.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R) partials for '],
     
    49425132                    labelY=r'$\mathsf{\chi^2}$',newPlot=True,Title='RMCP Chi^2 for '+pName,
    49435133                    lines=True,names=Names[3:])
     5134        UpdateRMC()
    49445135           
    49455136################################################################################
  • trunk/GSASIIpwd.py

    r4253 r4254  
    21672167    return fname
    21682168
    2169 def MakeRMC6f(G2frame,Name,Phase,Meta,Atseq,Supercell,PWId):
     2169def MakeRMC6f(G2frame,Name,Phase,RMCPdict,PWId):
     2170    Meta = RMCPdict['metadata']
     2171    Atseq = RMCPdict['atSeq']
     2172    Supercell =  RMCPdict['SuperCell']
    21702173    PWDdata = G2frame.GetPWDRdatafromTree(PWId)
    21712174    generalData = Phase['General']
     
    22472250    return fname
    22482251
    2249 def MakeRMCPdat(G2frame,Name,Phase,Meta,Times,Atseq,Atypes,atPairs,Supercell,Files,PWId,BraggWt):
     2252def MakeRMCPdat(G2frame,Name,Phase,RMCPdict,PWId):
     2253    Meta = RMCPdict['metadata']
     2254    Times = RMCPdict['runTimes']
     2255    Atseq = RMCPdict['atSeq']
     2256    Atypes = RMCPdict['aTypes']
     2257    atPairs = RMCPdict['Pairs']
     2258    Files = RMCPdict['files']
     2259    BraggWt = RMCPdict['histogram'][1]
    22502260    PWDdata = G2frame.GetPWDRdatafromTree(PWId)
    22512261    inst = PWDdata['Instrument Parameters'][0]
     
    23022312    fl.write('  > MNDIST :: %s\n'%minD)
    23032313    fl.write('  > MXDIST :: %s\n'%maxD)
     2314    if RMCPdict['useBVS']:
     2315        fl.write('BVS ::\n')
     2316        fl.write('  > ATOM :: '+' '.join(Atseq)+'\n')
     2317        fl.write('  > WEIGHTS :: %s\n'%' '.join(['%6.3f'%RMCPdict['BVS'][bvs][2] for bvs in RMCPdict['BVS']]))
     2318        oxid = []
     2319        for val in RMCPdict['Oxid']:
     2320            if len(val) == 3:
     2321                oxid.append(val[0][1:])
     2322            else:
     2323                oxid.append(val[0][2:])
     2324        fl.write('  > OXID :: %s\n'%' '.join(oxid))
     2325        fl.write('  > RIJ :: %s\n'%' '.join(['%6.3f'%RMCPdict['BVS'][bvs][0] for bvs in RMCPdict['BVS']]))
     2326        fl.write('  > BVAL :: %s\n'%' '.join(['%6.3f'%RMCPdict['BVS'][bvs][1] for bvs in RMCPdict['BVS']]))
     2327        fl.write('  > CUTOFF :: %s\n'%' '.join(['%6.3f'%RMCPdict['BVS'][bvs][3] for bvs in RMCPdict['BVS']]))       
     2328        fl.write('  > SAVE :: 100000\n')
     2329        fl.write('  > UPDATE :: 100000\n')
     2330    for ifx,fxcn in enumerate(RMCPdict['FxCN']):
     2331        try:
     2332            at1 = Atseq.index(fxcn[0])
     2333            at2 = Atseq.index(fxcn[1])
     2334        except ValueError:
     2335            break
     2336        fl.write('CSTR%d :: %d %d %.2f %.2f %d %.2d %.6f\n'%(ifx+1,at1,at2,fxcn[2],fxcn[3],fxcn[4],fxcn[5],fxcn[6]))
     2337    for iav,avcn in enumerate(RMCPdict['AveCN']):
     2338        try:
     2339            at1 = Atseq.index(avcn[0])
     2340            at2 = Atseq.index(avcn[1])
     2341        except ValueError:
     2342            break
     2343        fl.write('CAVSTR%d :: %d %d %.2f %.2f %d %.2d %.6f\n'%(iav+1,at1,at2,avcn[2],avcn[3],avcn[4],avcn[5]))
    23042344    for File in Files:
    23052345        if Files[File][0]:
     
    23202360                fl.write('  > NO_FITTED_SCALE\n')
    23212361                if 'Xray' in File:
     2362                    fl.write('  > RECIPROCAL_SPACE_FIT :: 1 3000 1\n')
     2363                    fl.write('  > RECIPROCAL_SPACE_PARAMETERS :: 1 3000 %.4f\n'%Files[File][1])
    23222364                    fl.write('  > REAL_SPACE_FIT :: 1 3000 1\n')
    23232365                    fl.write('  > REAL_SPACE_PARAMETERS :: 1 3000 %.4f\n'%Files[File][1])
  • trunk/atmdata.py

    r4197 r4254  
    354354    'Bk':[2.20,  2.00, 1.70, 0],
    355355    'Cf':[2.20,  2.00, 1.70, 0],
     356        }
     357# Bond valence coefficients for X-O, X-F & X-Cl Taken from Brese and O'Keefe, Acta Cryst B, 47, 192-197 (1991).
     358BVSoxid = {
     359    'Ac':['Ac+3',],
     360    'Ag':['Ag+1',],
     361    'Al':['Al+3',],
     362    'Am':['Am+3',],
     363    'As':['As+5','As+3','As-3',],           
     364    'Au':['Au+3',],         
     365    'B' :['B+3',],           
     366    'Ba':['Ba+2',],   
     367    'Be':['Be+2',], 
     368    'Bi':['Bi+5','Bi+3',],
     369    'Bk':['Bk+3',],   
     370    'Br':['Br-1','Br+7',],
     371    'C' :['C+4',],
     372    'Ca':['Ca+2',],
     373    'Cd':['Cd+2',],
     374    'Ce':['Ce+4','Ce+3',],
     375    'Cf':['Cf+3',],
     376    'Cl':['Cl-1','Cl+7',],
     377    'Cm':['Cm+3',],
     378    'Co':['Co+2','Co+3',],
     379    'Cr':['Cr+2','Cr+3','Cr+6',],
     380    'Cs':['Cs+1',],
     381    'Cu':['Cu+1','Cu+2',],
     382    'Dy':['Dy+3',],
     383    'Er':['Er+3',],
     384    'Eu':['Eu+2','Eu+3',],
     385    'F' :['F-1',],
     386    'Fe':['Fe+2','Fe+3',],
     387    'Ga':['Ga+3',],
     388    'Gd':['Gd+3',],
     389    'Ge':['Ge+4',],
     390    'H' :['H+1','H-1',],
     391    'D' :['D+1','D-1',],
     392    'Hf':['Hf+4',],
     393    'Hg':['Hg+1','Hg+2',],
     394    'Ho':['Ho+3',],
     395    'I' :['I-1','I+5','I+7',],
     396    'In':['In+3',],
     397    'Ir':['Ir+5',],
     398    'K' :['K+1',],
     399    'La':['La+3',],
     400    'Li':['Li+1',],
     401    'Lu':['Lu+3',],
     402    'Mg':['Mg+2',],
     403    'Mn':['Mn+2','Mn+3',',Mn+4','Mn+7',],
     404    'Mo':['Mo+6',],
     405    'N' :['N+5','N+3','N-3',],
     406    'Na':['Na+1',],
     407    'Nb':['Nb+5',],
     408    'Nd':['Nd+3',],
     409    'Ni':['Ni+2',],
     410    'O' :['O-2',],
     411    'Os':['Os+4',],
     412    'P' :['P+5','P-3',],
     413    'Pb':['Pb+2','Pb+4',],
     414    'Pd':['Pd+2',],
     415    'Pr':['Pr+3',],
     416    'Pt':['Pt+2','Pt+4',],
     417    'Pu':['Pu+3',],
     418    'Rb':['Rb+1',],
     419    'Re':['Re+7',],
     420    'Rh':['Rh+3',],
     421    'Ru':['Ru+4',],
     422    'S' :['S+6','S+4','S-2',],
     423    'Sb':['Sb+3','Sb+5',],
     424    'Sc':['Sc+3',],
     425    'Se':['Se+6','Se+4','Se-2',],
     426    'Si':['Si+4',],
     427    'Sm':['Sm+3',],
     428    'Sn':['Sn+2','Sn+4',],
     429    'Sr':['Sr+2',],
     430    'Ta':['Ta+5',],
     431    'Tb':['Tb+3',],
     432    'Te':['Te+6','Te+4','Te-2',],
     433    'Th':['Th+4',],
     434    'Ti':['Ti+4','Ti+3',],
     435    'Tl':['Tl+3','Tl+5',],
     436    'Tm':['Tm+3',],
     437    'U' :['U+4','U+6',],
     438    'V': ['V+5','V+4','V+3',],
     439    'W' :['W+6',],
     440    'Y' :['Y+3',],
     441    'Yb':['Yb+3',],
     442    'Zn':['Zn+2',],
     443    'Zr':['Zr+4'],
     444        }
     445BVScoeff = {
     446    'Ac+3':[ 2.24,  2.13,  2.63],
     447    'Ag+1':[ 1.805, 1.80,  2.09],           
     448    'Al+3':[ 1.651, 1.545, 2.03],         
     449    'Am+3':[ 2.11,  2.00,  2.48],           
     450    'As+3':[ 1.789, 1.70,  2.16],         
     451    'As+5':[ 1.767, 1.62,  2.14],           
     452    'Au+3':[ 1.833, 1.81,  2.17],         
     453    'B+3':[  1.371, 1.31,  1.74],           
     454    'Ba+2':[ 2.29,  2.19,  2.69],           
     455    'Be+2':[ 1.381, 1.28,  1.76],           
     456    'Bi+3':[ 2.09,  1.99,  2.48],           
     457    'Bi+5':[ 2.06,  1.97,  2.44],             
     458    'Bk+3':[ 2.08,  1.96,  2.46],           
     459    'Br+7':[ 1.81,  1.72,  2.19],           
     460    'C+4':[  1.39,  1.32,  1.76],             
     461    'Ca+2':[ 1.967, 1.842, 2.37],         
     462    'Cd+2':[ 1.904, 1.811, 2.23],         
     463    'Ce+3':[ 2.151, 2.036, 2.52],         
     464    'Ce+4':[ 2.028, 1.995, 2.41],         
     465    'Cf+3':[ 2.07,  1.95,  2.45],           
     466    'Cl+7':[ 1.632, 1.55,  2.00],         
     467    'Cm+3':[ 2.23,  2.12,  2.62],     
     468    'Co+2':[ 1.692, 1.64,  2.01],           
     469    'Co+3':[ 1.70,  1.62,  2.05],           
     470    'Cr+2':[ 1.73,  1.67,  2.09],           
     471    'Cr+3':[ 1.724, 1.64,  2.08],         
     472    'Cr+6':[ 1.794, 1.74,  2.12],         
     473    'Cs+1':[ 2.42,  2.33,  2.79],             
     474    'Cu+1':[ 1.593, 1.60,  1.85],           
     475    'Cu+2':[ 1.679, 1.60,  2.00],           
     476    'Dy+3':[ 2.036, 1.922, 2.41],         
     477    'Er+3':[ 2.01,  1.906, 2.39],         
     478    'Eu+2':[ 2.147, 2.04,  2.53],           
     479    'Eu+3':[ 2.076, 1.961, 2.455],       
     480    'Fe+2':[ 1.734, 1.65,  2.06],           
     481    'Fe+3':[ 1.759, 1.67,  2.09],         
     482    'Ga+3':[ 1.73,  1.62,  2.07],           
     483    'Gd+3':[ 2.065, 1.95,  2.445],         
     484    'Ge+4':[ 1.748, 1.66,  2.14],           
     485    'H+1':[  0.95,  0.92,  1.28],             
     486    'Hf+4':[ 1.923, 1.85,  2.30],           
     487    'Hg+1':[ 1.90,  1.81,  2.28],             
     488    'Hg+2':[ 1.93,  1.90,  2.25],           
     489    'Ho+3':[ 2.023, 1.908, 2.401],       
     490    'I+5':[  2.00,  1.90,  2.38],             
     491    'I+7':[  1.93,  1.83,  2.31],           
     492    'In+3':[ 1.902, 1.79,  2.28],         
     493    'Ir+5':[ 1.916, 1.82,  2.30],           
     494    'K+1':[  2.13,  1.99,  2.52],             
     495    'La+3':[ 2.172, 2.057, 2.545],       
     496    'Li+1':[ 1.466, 1.36,  1.91],           
     497    'Lu+3':[ 1.971, 1.876, 2.361],       
     498    'Mg+2':[ 1.693, 1.581, 2.08],         
     499    'Mn+2':[ 1.79,  1.698, 2.13],           
     500    'Mn+3':[ 1.76,  1.66,  2.14],
     501    'Mn+4':[ 1.753, 1.71,  2.13],
     502    'Mn+7':[ 1.79,  1.72,  2.17],     
     503    'Mo+6':[ 1.907, 1.81,  2.28],     
     504    'N+3':[  1.361, 1.37,  1.75],     
     505    'N+5':[  1.432, 1.36,  1.8],       
     506    'Na+1':[ 1.8,   1.677, 2.15],       
     507    'Nb+5':[ 1.911, 1.87,  2.27],       
     508    'Nd+3':[ 2.117, 2.008, 2.492],   
     509    'Ni+2':[ 1.654, 1.599, 2.02],     
     510    'Os+4':[ 1.811, 1.72,  2.19],     
     511    'P+5':[  1.604, 1.521, 1.99],       
     512    'Pb+2':[ 2.112, 2.03,  2.53],     
     513    'Pb+4':[ 2.042, 1.94,  2.43],     
     514    'Pd+2':[ 1.792, 1.74,  2.05],     
     515    'Pr+3':[ 2.135, 2.022, 2.5],     
     516    'Pt+2':[ 1.768, 1.68,  2.05],     
     517    'Pt+4':[ 1.879, 1.759, 2.17],     
     518    'Pu+3':[ 2.11,  2.0,   2.48],         
     519    'Rb+1':[ 2.26,  2.16,  2.65],       
     520    'Re+7':[ 1.97,  1.86,  2.23],     
     521    'Rh+3':[ 1.791, 1.71,  2.17],     
     522    'Ru+4':[ 1.834, 1.74,  2.21],     
     523    'S+4':[  1.644, 1.6,   2.02],       
     524    'S+6':[  1.624, 1.56,  2.03],       
     525    'Sb+3':[ 1.973, 1.9,   2.35],     
     526    'Sb+5':[ 1.942, 1.8,   2.3],         
     527    'Sc+3':[ 1.849, 1.76,  2.23],     
     528    'Se+4':[ 1.811, 1.73,  2.22],     
     529    'Se+6':[ 1.788, 1.69,  2.16],     
     530    'Si+4':[ 1.624, 1.58,  2.03],     
     531    'Sm+3':[ 2.088, 1.977, 2.466],   
     532    'Sn+2':[ 1.984, 1.925, 2.36],     
     533    'Sn+4':[ 1.905, 1.84,  2.28],     
     534    'Sr+2':[ 2.118, 2.019, 2.51],     
     535    'Ta+5':[ 1.92,  1.88,  2.3],         
     536    'Tb+3':[ 2.049, 1.936, 2.427],   
     537    'Te+4':[ 1.977, 1.87,  2.37],     
     538    'Te+6':[ 1.917, 1.82,  2.3],       
     539    'Th+4':[ 2.167, 2.07,  2.55],     
     540    'Ti+3':[ 1.791, 1.723, 2.17],   
     541    'Ti+4':[ 1.815, 1.76,  2.19],     
     542    'Tl+1':[ 2.172, 2.15,  2.56],       
     543    'Tl+3':[ 2.003, 1.88,  2.32],     
     544    'Tm+3':[ 2.0,   1.842, 2.38],       
     545    'U+4':[  2.112, 2.034, 2.48],     
     546    'U+6':[  2.075, 1.966, 2.46],     
     547    'V+3':[  1.743, 1.702, 2.19],     
     548    'V+4':[  1.784, 1.7,   2.16],       
     549    'V+5':[  1.803, 1.71,  2.16],       
     550    'W+6':[  1.921, 1.83,  2.27],       
     551    'Y+3':[  2.014, 1.904, 2.4],     
     552    'Yb+3':[ 1.985, 1.875, 2.371],   
     553    'Zn+2':[ 1.704, 1.62,  2.01],     
     554    'Zr+4':[ 1.937, 1.854, 2.33],
     555    }
     556#for X-Br-1 I-1 S-2 Se-2 Te-2 N-3 P-3 As-3 H-1 D-1
     557BVSnotOFCl = {
     558        'Ag':[ 2.22, 2.38, 2.15, 2.26, 2.51, 1.85, 2.22, 2.30, 1.50, 1.50],
     559        'Al':[ 2.20, 2.41, 2.13, 2.27, 2.48, 1.79, 2.24, 2.32, 1.45, 1.45],
     560        'As':[ 2.32, 2.54, 2.26, 2.39, 2.61, 1.93, 2.34, 2.41, 1.56, 1.56],
     561        'Au':[ 2.12, 2.34, 2.03, 2.18, 2.41, 1.72, 2.14, 2.22, 1.37, 1.37],
     562        'B' :[ 1.88, 2.10, 1.82, 1.95, 2.20, 1.47, 1.88, 1.97, 1.14, 1.14],
     563        'Ba':[ 2.88, 3.13, 2.77, 2.88, 3.08, 2.47, 2.88, 2.96, 2.22, 2.22],
     564        'Be':[ 1.90, 2.10, 1.83, 1.97, 2.21, 1.50, 1.95, 2.00, 1.11, 1.11],
     565        'Bi':[ 2.62, 2.84, 2.55, 2.72, 2.87, 2.24, 2.63, 2.72, 1.97, 1.97],
     566        'C': [ 1.90, 2.12, 1.82, 1.97, 2.21, 1.47, 1.89, 1.99, 1.10, 1.10],
     567        'Ca':[ 2.49, 2.72, 2.45, 2.56, 2.76, 2.14, 2.55, 2.62, 1.83, 1.83],
     568        'Cd':[ 2.35, 2.57, 2.29, 2.40, 2.59, 1.96, 2.34, 2.43, 1.66, 1.66],
     569        'Ce':[ 2.69, 2.92, 2.62, 2.74, 2.92, 2.34, 2.70, 2.78, 2.04, 2.04],
     570        'Co':[ 2.18, 2.37, 2.06, 2.24, 2.46, 1.84, 2.21, 2.28, 1.44, 1.44],
     571        'Cr':[ 2.26, 2.45, 2.18, 2.29, 2.52, 1.85, 2.27, 2.34, 1.52, 1.52],
     572        'Cs':[ 2.95, 3.18, 2.89, 2.98, 3.16, 2.53, 2.93, 3.04, 2.44, 2.44],
     573        'Cu':[ 1.99, 2.16, 1.86, 2.02, 2.27, 1.61, 1.97, 2.08, 1.21, 1.21],
     574        'Dy':[ 2.56, 2.77, 2.47, 2.61, 2.80, 2.18, 2.57, 2.64, 1.89, 1.89],
     575        'Er':[ 2.54, 2.75, 2.46, 2.59, 2.78, 2.16, 2.55, 2.63, 1.86, 1.86],
     576        'Eu':[ 2.61, 2.83, 2.53, 2.66, 2.85, 2.24, 2.62, 2.70, 1.95, 1.95],
     577        'Fe':[ 2.26, 2.47, 2.16, 2.28, 2.53, 1.86, 2.27, 2.35, 1.53, 1.53],
     578        'Ga':[ 2.24, 2.45, 2.17, 2.30, 2.54, 1.84, 2.26, 2.34, 1.51, 1.51],
     579        'Gd':[ 2.60, 2.82, 2.53, 2.65, 2.84, 2.22, 2.61, 2.68, 1.93, 1.93],
     580        'Ge':[ 2.30, 2.50, 2.22, 2.35, 2.56, 1.88, 2.32, 2.43, 1.55, 1.55],
     581        'H': [ 1.42, 1.61, 1.35, 1.48, 1.78, 1.03, 1.48, 1.52, 0.74, 0.74],
     582        'Hf':[ 2.47, 2.68, 2.39, 2.52, 2.72, 2.09, 2.48, 2.56, 1.78, 1.78],
     583        'Hg':[ 2.40, 2.59, 2.32, 2.47, 2.61, 2.02, 2.42, 2.50, 1.71, 1.71],
     584        'Ho':[ 2.55, 2.77, 2.48, 2.61, 2.80, 2.18, 2.56, 2.64, 1.88, 1.88],
     585        'In':[ 2.41, 2.63, 2.36, 2.47, 2.69, 2.03, 2.43, 2.51, 1.72, 1.72],
     586        'Ir':[ 2.45, 2.66, 2.38, 2.51, 2.71, 2.06, 2.46, 2.54, 1.76, 1.76],
     587        'K': [ 2.66, 2.88, 2.59, 2.72, 2.93, 2.26, 2.64, 2.83, 2.10, 2.10],
     588        'La':[ 2.72, 2.93, 2.64, 2.74, 2.94, 2.34, 2.73, 2.80, 2.06, 2.06],
     589        'Li':[ 2.02, 2.22, 1.94, 2.09, 2.30, 1.61, 2.04, 2.11, 1.31, 1.31],
     590        'Lu':[ 2.50, 2.72, 2.43, 2.56, 2.75, 2.11, 2.51, 2.59, 1.82, 1.82],
     591        'Mg':[ 2.28, 2.46, 2.18, 2.32, 2.53, 1.85, 2.29, 2.38, 1.53, 1.53],
     592        'Mn':[ 2.26, 2.49, 2.20, 2.32, 2.55, 1.87, 2.24, 2.36, 1.55, 1.55],
     593        'Mo':[ 2.43, 2.64, 2.35, 2.49, 2.69, 2.04, 2.44, 2.52, 1.73, 1.73],
     594        'Na':[ 2.33, 2.56, 2.28, 2.41, 2.64, 1.93, 2.36, 2.53, 1.68, 1.68],
     595        'Nb':[ 2.45, 2.68, 2.37, 2.51, 2.70, 2.06, 2.46, 2.54, 1.75, 1.75],
     596        'Nd':[ 2.66, 2.87, 2.59, 2.71, 2.89, 2.30, 2.66, 2.74, 2.00, 2.00],
     597        'Ni':[ 2.16, 2.34, 2.04, 2.14, 2.43, 1.75, 2.17, 2.24, 1.40, 1.40],
     598        'P': [ 2.15, 2.40, 2.11, 2.26, 2.44, 1.73, 2.19, 2.25, 1.41, 1.41],
     599        'Pb':[ 2.64, 2.78, 2.55, 2.67, 2.84, 2.22, 2.64, 2.72, 1.97, 1.97],
     600        'Pd':[ 2.19, 2.38, 2.10, 2.22, 2.48, 1.81, 2.22, 2.30, 1.47, 1.47],
     601        'Pr':[ 2.67, 2.89, 2.60, 2.72, 2.90, 2.30, 2.68, 2.75, 2.02, 2.02],
     602        'Pt':[ 2.18, 2.37, 2.08, 2.19, 2.45, 1.77, 2.19, 2.26, 1.40, 1.40],
     603        'Rb':[ 2.78, 3.01, 2.70, 2.81, 3.00, 2.37, 2.76, 2.87, 2.26, 2.26],
     604        'Re':[ 2.45, 2.61, 2.37, 2.50, 2.70, 2.06, 2.46, 2.54, 1.75, 1.75],
     605        'Rh':[ 2.25, 2.48, 2.15, 2.33, 2.55, 1.88, 2.29, 2.37, 1.55, 1.55],
     606        'Ru':[ 2.26, 2.48, 2.16, 2.33, 2.54, 1.88, 2.29, 2.36, 1.61, 1.61],
     607        'S': [ 2.17, 2.36, 2.07, 2.21, 2.45, 1.74, 2.15, 2.25, 1.38, 1.38],
     608        'Sb':[ 2.50, 2.72, 2.45, 2.57, 2.78, 2.12, 2.52, 2.60, 1.77, 1.77],
     609        'Sc':[ 2.38, 2.59, 2.32, 2.44, 2.64, 1.98, 2.40, 2.48, 1.68, 1.68],
     610        'Se':[ 2.33, 2.54, 2.25, 2.36, 2.55, 1.93, 2.34, 2.42, 1.54, 1.54],
     611        'Si':[ 2.20, 2.41, 2.13, 2.26, 2.49, 1.77, 2.23, 2.31, 1.47, 1.47],
     612        'Sm':[ 2.62, 2.84, 2.55, 2.67, 2.86, 2.24, 2.63, 2.70, 1.96, 1.96],
     613        'Sn':[ 2.55, 2.76, 2.45, 2.59, 2.76, 2.14, 2.45, 2.62, 1.85, 1.85],
     614        'Sr':[ 2.68, 2.88, 2.59, 2.72, 2.87, 2.23, 2.67, 2.76, 2.01, 2.01],
     615        'Ta':[ 2.45, 2.66, 2.39, 2.51, 2.70, 2.01, 2.47, 2.55, 1.76, 1.76],
     616        'Tb':[ 2.58, 2.80, 2.51, 2.63, 2.82, 2.20, 2.59, 2.66, 1.91, 1.91],
     617        'Te':[ 2.53, 2.76, 2.45, 2.53, 2.76, 2.12, 2.52, 2.60, 1.83, 1.83],
     618        'Th':[ 2.71, 2.93, 2.64, 2.76, 2.94, 2.34, 2.73, 2.80, 2.07, 2.07],
     619        'Ti':[ 2.32, 2.54, 2.24, 2.38, 2.60, 1.93, 2.36, 2.42, 1.61, 1.61],
     620        'Tl':[ 2.70, 2.91, 2.63, 2.70, 2.93, 2.29, 2.71, 2.79, 2.05, 2.05],
     621        'Tm':[ 2.53, 2.74, 2.45, 2.58, 2.77, 2.14, 2.53, 2.62, 1.85, 1.85],
     622        'U': [ 2.63, 2.84, 2.56, 2.70, 2.86, 2.24, 2.64, 2.72, 1.97, 1.97],
     623        'V': [ 2.30, 2.51, 2.23, 2.33, 2.57, 1.86, 2.31, 2.39, 1.58, 1.58],
     624        'W': [ 2.45, 2.66, 2.39, 2.51, 2.71, 2.06, 2.46, 2.54, 1.76, 1.76],
     625        'Y': [ 2.55, 2.77, 2.48, 2.61, 2.80, 2.17, 2.57, 2.64, 1.86, 1.86],
     626        'Yb':[ 2.51, 2.72, 2.43, 2.56, 2.76, 2.12, 2.53, 2.59, 1.82, 1.82],
     627        'Zn':[ 2.15, 2.36, 2.09, 2.22, 2.45, 1.77, 2.15, 2.24, 1.42, 1.42],
     628        'Zr':[ 2.48, 2.69, 2.41, 2.53, 2.67, 2.11, 2.52, 2.57, 1.79, 1.79],
    356629        }
    357630AtmBlens = {
Note: See TracChangeset for help on using the changeset viewer.