Changeset 4427 for trunk/GSASIIpwd.py


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

fullrmc fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.