Changeset 4427


Ignore:
Timestamp:
May 20, 2020 7:33:57 PM (3 years ago)
Author:
vondreele
Message:

fullrmc fixes

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r4425 r4427  
    43664366                atSeq = RMCPdict['atSeq']
    43674367                lenA = len(atSeq)
    4368                 for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA)] for i in range(lenA)]:
     4368                for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA) if 'Va' not in atSeq[j]] for i in range(lenA) if 'Va' not in atSeq[i]]:
    43694369                    Pairs += pair
    43704370                RMCPdict['Pairs'] = {pairs:[0.0,0.0,0.0] for pairs in Pairs}
     
    44074407                for itype in range(nTypes):
    44084408                    atmChoice.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['Oxid'][itype],1,min=0.),0,WACV)
    4409             atmChoice.Add(wx.StaticText(G2frame.FRMC,label=' Set max shift: '),0,WACV)
    4410             for iType in range(nTypes):
    4411                 atId = RMCPdict['atSeq'][iType]
    4412                 atmChoice.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['aTypes'],atId,min=0.,max=1.),0,WACV)
     4409            if G2frame.RMCchoice == 'RMCProfile':
     4410                atmChoice.Add(wx.StaticText(G2frame.FRMC,label=' Set max shift: '),0,WACV)
     4411                for iType in range(nTypes):
     4412                    atId = RMCPdict['atSeq'][iType]
     4413                    atmChoice.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['aTypes'],atId,min=0.,max=1.),0,WACV)
    44134414            return atmChoice
    44144415       
     
    45774578                        corrChk.Bind(wx.EVT_CHECKBOX,OnCorrChk)
    45784579                        fileSizer.Add(corrChk,0,WACV)
    4579                         delBtn = wx.Button(G2frame.FRMC,label='Delete')
    4580                         delBtn.Bind(wx.EVT_BUTTON,OnDelBtn)
    4581                         Indx[delBtn.GetId()] = fil
    4582                         fileSizer.Add(delBtn,0,WACV)
     4580                    delBtn = wx.Button(G2frame.FRMC,label='Delete')
     4581                    delBtn.Bind(wx.EVT_BUTTON,OnDelBtn)
     4582                    Indx[delBtn.GetId()] = fil
     4583                    fileSizer.Add(delBtn,0,WACV)
    45834584                else:
    45844585                    RMCPdict['files'][fil][0] = 'Select'
     
    46304631                lenA = len(atSeq)
    46314632                Pairs= []
    4632                 for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA)] for i in range(lenA)]:
     4633                for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA) if 'Va' not in atSeq[j]] for i in range(lenA) if 'Va' not in atSeq[i]]:
    46334634                    Pairs += pair
    46344635                Pairs = {pairs:[0.0,0.0,0.0] for pairs in Pairs}
     
    47154716                finally:
    47164717                    dlg.Destroy()
     4718                wx.CallAfter(UpdateRMC)
    47174719               
    47184720            def OnAddAngle(event):
     
    47414743               
    47424744                Indx = {}
    4743                 atChoice = RMCPdict['atSeq']
     4745                atChoice = [atm for atm in RMCPdict['atSeq'] if 'Va' not in atm]
    47444746                angleSizer = wx.FlexGridSizer(6,5,5)
    47454747                fxcnLabels = [' ','Atom-A','Atom-B','Atom-C',' min angle',' max angle']
     
    47784780               
    47794781                Indx = {}
     4782                atChoice = [atm for atm in RMCPdict['atSeq'] if 'Va' not in atm]
    47804783                torsionSizer = wx.FlexGridSizer(11,5,5)
    47814784                fxcnLabels = [' ','Atom-A','Atom-B','Atom-C','Atom-D',' min angle1',' max angle1',' min angle2',' max angle2',' min angle3',' max angle3']
     
    47884791                    torsionSizer.Add(delBtn,0,WACV)
    47894792                    for i in [0,1,2,3]:
    4790                         atmSel = wx.ComboBox(G2frame.FRMC,choices=atNames,style=wx.CB_DROPDOWN|wx.TE_READONLY)
     4793                        atmSel = wx.ComboBox(G2frame.FRMC,choices=atChoice,style=wx.CB_DROPDOWN|wx.TE_READONLY)
    47914794                        atmSel.SetStringSelection(torsion[i])
    47924795                        atmSel.Bind(wx.EVT_COMBOBOX,OnTorsionAtSel)
     
    49354938                lenA = len(atSeq)
    49364939                Pairs= []
    4937                 for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA)] for i in range(lenA)]:
     4940                for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA) if 'Va' not in atSeq[j]] for i in range(lenA) if 'Va' not in atSeq[i]]:
    49384941                    Pairs += pair
    49394942                Pairs = {pairs:[0.0,0.0,0.0] for pairs in Pairs}
    49404943                BVSpairs = []
    49414944                if lenA > 1:
    4942                     for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i+1,lenA)] for i in range(lenA)]:
     4945                    for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i+1,lenA)] for i in range(lenA)] and 'Va' not in pair:
    49434946                        BVSpairs += pair
    49444947                BVS = {pairs:[0.0,0.0,0.0,0.0] for pairs in BVSpairs}
     
    50775080               
    50785081                fxcnSizer = wx.FlexGridSizer(8,5,5)
    5079                 atChoice = RMCPdict['atSeq']
     5082                atChoice = [atm for atm in RMCPdict['atSeq'] if 'Va' not in atm]
    50805083                fxcnLabels = [' ','Atom-1','Atom-2','min dist','max dist','CN','fraction','weight']
    50815084                for lab in fxcnLabels:
     
    51135116                               
    51145117                avcnSizer = wx.FlexGridSizer(7,5,5)
    5115                 atChoice = RMCPdict['atSeq']
     5118                atChoice = [atm for atm in RMCPdict['atSeq'] if 'Va' not in atm]
    51165119                fxcnLabels = [' ','Atom-1','Atom-2','min dist','max dist','CN','weight']
    51175120                for lab in fxcnLabels:
     
    51505153                    RMCPdict['ReStart'][1] = True
    51515154               
    5152                 atChoice = RMCPdict['atSeq']
     5155                atChoice = [atm for atm in RMCPdict['atSeq'] if 'Va' not in atm]
    51535156                angleSizer = wx.FlexGridSizer(8,5,5)
    51545157                fxcnLabels = [' ','Atom-A','Atom-B','Atom-C',' ABC angle','AB dist','BC dist','potential']
     
    51885191                    RMCPdict['ReStart'][1] = True
    51895192               
    5190                 atChoice = RMCPdict['atSeq']
     5193                atChoice = [atm for atm in RMCPdict['atSeq'] if 'Va' not in atm]
    51915194                bondSizer = wx.FlexGridSizer(5,5,5)
    51925195                fxcnLabels = [' ','Atom-A','Atom-B',' AB dist','potential']
  • trunk/GSASIIpwd.py

    r4425 r4427  
    25092509        nbrs = G2mth.FindAllNeighbors(Phase,FrstName,list(AtDict.keys()),notName=notNames,Short=True)[0]
    25102510        Atyp1 = AtDict[FrstName]
     2511        if 'Va' in Atyp1:
     2512            continue
    25112513        for nbr in nbrs:
    25122514            Atyp2 = AtDict[nbr[0]]
     2515            if 'Va' in Atyp2:
     2516                continue
    25132517            try:
    25142518                bndData = Pairs[' %s-%s'%(Atyp1,Atyp2)][1:]
     
    26142618# fullrmc imports (all that are potentially useful)
    26152619import numpy as np
     2620import time
    26162621from fullrmc.sincConvolution import sincConvolution
    26172622from fullrmc.Globals import LOGGER
     
    26352640from fullrmc.debugStuff import *
    26362641InvokeDebugOpts()
     2642time0 = time.time()
    26372643SwapGen = {}
    26382644# engine setup\n'''
     
    27432749        rundata += '        ENGINE.run(restartPdb="%s",numberOfSteps=10000*(1.-sProb), saveFrequency=1000)\n'%restart
    27442750    rundata += 'ENGINE.close()\n'
     2751    rundata += 'print("ENGINE run time %.2f s"%(time.time()-time0))\n'
    27452752    rfile = open(rname,'w')
    27462753    rfile.writelines(rundata)
     
    27552762    Dups,Fracs = findDup(Phase['Atoms'])
    27562763    Sfracs = [np.cumsum(fracs) for fracs in Fracs]
     2764    ifSfracs = np.any(np.array(Sfracs)-1.)
    27572765    Supercell = RMCPdict['SuperCell']
    27582766    Cell = generalData['Cell'][1:7]
     
    27642772    Atoms = newPhase['Atoms']
    27652773
    2766     Natm = np.core.defchararray.count(np.array(Atcodes),'+')    #no. atoms in original unit cell
    2767     Natm = np.count_nonzero(Natm-1)
    2768     Atoms = newPhase['Atoms']
    2769     Satoms = G2mth.sortArray(G2mth.sortArray(G2mth.sortArray(Atoms,5),4),3)
    2770     Datoms = [[atom for atom in Satoms if atom[0] in dup] for dup in Dups]
    2771     Natoms = []
    2772     for idup,dup in enumerate(Dups):
    2773         ldup = len(dup)
    2774         datoms = Datoms[idup]
    2775         natm = len(datoms)
    2776         i = 0
    2777         while i < natm:
    2778             atoms = datoms[i:i+ldup]
    2779             try:
    2780                 atom = atoms[np.searchsorted(Sfracs[idup],rand.random())]
    2781                 Natoms.append(atom)
    2782             except IndexError:      #what about vacancies?
    2783                 if 'Va' not in Atseq:
    2784                     Atseq.append('Va')
    2785                     RMCPdict['aTypes']['Va'] = 0.0
    2786                 atom = atoms[0]
    2787                 atom[1] = 'Va'
    2788                 Natoms.append(atom)
    2789             i += ldup
    2790 
    2791 
    2792 
    2793 
     2774    if ifSfracs:
     2775        Natm = np.core.defchararray.count(np.array(Atcodes),'+')    #no. atoms in original unit cell
     2776        Natm = np.count_nonzero(Natm-1)
     2777        Satoms = []
     2778        for i in range(len(Atoms)//Natm):
     2779            ind = i*Natm
     2780            Satoms.append(G2mth.sortArray(G2mth.sortArray(G2mth.sortArray(Atoms[ind:ind+Natm],5),4),3))
     2781        Natoms = []
     2782        for satoms in Satoms:
     2783            for idup,dup in enumerate(Dups):
     2784                ldup = len(dup)
     2785                natm = len(satoms)
     2786                i = 0
     2787                while i < natm:
     2788                    if satoms[i][0] in dup:
     2789                        atoms = satoms[i:i+ldup]
     2790                        try:
     2791                            atom = atoms[np.searchsorted(Sfracs[idup],rand.random())]
     2792                            Natoms.append(atom)
     2793                        except IndexError:      #what about vacancies?
     2794                            if 'Va' not in Atseq:
     2795                                Atseq.append('Va')
     2796                                RMCPdict['aTypes']['Va'] = 0.0
     2797                            atom = atoms[0]
     2798                            atom[1] = 'Va'
     2799                            Natoms.append(atom)
     2800                        i += ldup
     2801                    else:
     2802                       i += 1
     2803    else:
     2804        Natoms = Atoms
    27942805
    27952806    XYZ = np.array([atom[3:6] for atom in Natoms]).T
Note: See TracChangeset for help on using the changeset viewer.