Changeset 4954 for trunk


Ignore:
Timestamp:
Jun 13, 2021 5:35:30 PM (3 months ago)
Author:
toby
Message:

minor fullrmc improvements from Bachir, etc.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r4951 r4954  
    48354835            mainSizer.Add(wx.StaticText(G2frame.FRMC,label='Select data for processing: '),0)
    48364836            if G2frame.RMCchoice == 'fullrmc':
    4837                 Heads = ['Name','File','Weight','type','Plot','Delete']
    4838                 fileSizer = wx.FlexGridSizer(6,5,5)
     4837                #Heads = ['Name','File','Weight','type','Plot','Delete']
     4838                Heads = ['Name','File','type','Plot','Delete']
     4839                fileSizer = wx.FlexGridSizer(5,5,5)
    48394840                Formats = ['RMC','GUDRUN','STOG']
    48404841                for head in Heads:
     
    48484849                    fileSizer.Add(filSel,0,WACV)
    48494850                    if Rfile and os.path.exists(Rfile): # in case .gpx file is moved away from G(R), F(Q), etc. files
    4850                         fileSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['files'][fil],1,size=(50,25)),0,WACV)
     4851                        #fileSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['files'][fil],1,size=(50,25)),0,WACV)
    48514852                        #patch
    48524853                        if len(RMCPdict['files'][fil]) < 4:
     
    48814882                            corrChk.Bind(wx.EVT_CHECKBOX,OnCorrChk)
    48824883                            fileSizer.Add(corrChk,0,WACV)
    4883                             fileSizer.Add((-1,-1),0)
     4884                            #fileSizer.Add((-1,-1),0)
    48844885                            fileSizer.Add((-1,-1),0)
    48854886                            fileSizer.Add((-1,-1),0)
     
    48874888                    else:
    48884889                        RMCPdict['files'][fil][0] = 'Select file' # set filSel?
    4889                         fileSizer.Add((-1,-1),0)
     4890                        #fileSizer.Add((-1,-1),0)
    48904891                        fileSizer.Add((-1,-1),0)
    48914892                        fileSizer.Add((-1,-1),0)
  • trunk/GSASIIpwd.py

    r4953 r4954  
    29422942        el = ''.join([i for i in atom[ct] if i.isalpha()])
    29432943        atomsList.append([el] + atom[cx:cx+4])
    2944     projDir,projName = os.path.split(pName)
     2944    projDir,projName = os.path.split(os.path.abspath(pName))
    29452945    scrname = pName+'-fullrmc.py'
    29462946    restart = '%s_restart.pdb'%pName
     
    29652965from fullrmc.Constraints.DihedralAngleConstraints import DihedralAngleConstraint
    29662966from fullrmc.Generators.Swaps import SwapPositionsGenerator
     2967# utility routines
    29672968def writeHeader(ENGINE,statFP):
     2969    'header for stats file'
    29682970    statFP.write('generated-steps, total-error, ')
    29692971    for c in ENGINE.constraints:
     
    29742976   
    29752977def writeCurrentStatus(ENGINE,statFP,plotF):
     2978    'line in stats file & current constraint plots'
    29762979    statFP.write(str(ENGINE.generated))
    29772980    statFP.write(', ')
     
    29922995        pickle.dump(np.array(image),fp)
    29932996    fp.close()
     2997
     2998def calcRmax(ENGINE):
     2999    'from Bachir, works for non-othorhombic'
     3000    a,b,c = ENGINE.basisVectors
     3001    lens = []
     3002    ts    = np.linalg.norm(np.cross(a,b))/2
     3003    lens.extend( [ts/np.linalg.norm(a), ts/np.linalg.norm(b)] )
     3004    ts = np.linalg.norm(np.cross(b,c))/2
     3005    lens.extend( [ts/np.linalg.norm(b), ts/np.linalg.norm(c)] )
     3006    ts = np.linalg.norm(np.cross(a,c))/2
     3007    lens.extend( [ts/np.linalg.norm(a), ts/np.linalg.norm(c)] )
     3008    return min(lens)
    29943009'''
    29953010    rundata += '''
     
    30243039                                 unitcellBC = cell,
    30253040                                 supercell  = supercell)
    3026     Ebc = ENGINE.boundaryConditions
    3027     rmax = min( [Ebc.get_a(), Ebc.get_b(), Ebc.get_c()] ) /2.
    30283041'''   
    30293042    import atmdata
     
    30593072                raise ValueError('Invalid G(r) type: '+str(filDat[3]))
    30603073            rundata += '    ENGINE.add_constraints([GofR])\n'
    3061             rundata += '    GofR.set_limits((None, rmax))\n'
     3074            rundata += '    GofR.set_limits((None, calcRmax(ENGINE)))\n'
    30623075        elif '(Q)' in File:
    30633076            rundata += '    SOQ = np.loadtxt(os.path.join(dirName,"%s")).T\n'%filDat[0]
     
    30663079                #rundata += '    SOQ[1] *= 1 / sumCiBi2\n'
    30673080                if filDat[4]:
    3068                     rundata += '    SOQ[1] = Collection.sinc_convolution(q=SOQ[0],sq=SOQ[1],rmax=rmax)\n'
     3081                    rundata += '    SOQ[1] = Collection.sinc_convolution(q=SOQ[0],sq=SOQ[1],rmax=calcRmax(ENGINE))\n'
    30693082                rundata += '    SofQ = fullrmc.Constraints.StructureFactorConstraints.NormalizedStructureFactorConstraint(experimentalData=SOQ.T, weighting="%s")\n'%sfwt
    30703083            elif filDat[3] == 1:
     
    30723085                rundata += '    SOQ[1] -= 1\n'
    30733086                if filDat[4]:
    3074                     rundata += '    SOQ[1] = Collection.sinc_convolution(q=SOQ[0],sq=SOQ[1],rmax=rmax)\n'
     3087                    rundata += '    SOQ[1] = Collection.sinc_convolution(q=SOQ[0],sq=SOQ[1],rmax=calcRmax(ENGINE))\n'
    30753088                rundata += '    SofQ = ReducedStructureFactorConstraint(experimentalData=SOQ.T, weighting="%s")\n'%sfwt
    30763089            else:
     
    31043117else:
    31053118    ENGINE = ENGINE.load(path=engineFileName)
    3106     Ebc = ENGINE.boundaryConditions
    3107     rmax = min( [Ebc.get_a(), Ebc.get_b(), Ebc.get_c()] ) /2.
    31083119
    31093120ENGINE.set_log_file(os.path.join(dirName,prefix))
     
    31273138        rundata += '            sProb = SwapGen[swaps][2]\n'
    31283139    rundata += '\n# set weights -- do this now so values can be changed without a restart\n'
    3129     rundata += 'wtDict = {}\n'
    3130     for File in Files:
    3131         filDat = RMCPdict['files'][File]
    3132         if not os.path.exists(filDat[0]): continue
    3133         if 'Xray' in File:
    3134             sfwt = 'atomicNumber'
    3135         else:
    3136             sfwt = 'neutronCohb'
    3137         if 'G(r)' in File:
    3138             typ = 'Pair'
    3139         elif '(Q)' in File:
    3140             typ = 'Struct'
    3141         rundata += 'wtDict["{}-{}"] = {}\n'.format(typ,sfwt,filDat[1])
     3140    # rundata += 'wtDict = {}\n'
     3141    # for File in Files:
     3142    #     filDat = RMCPdict['files'][File]
     3143    #     if not os.path.exists(filDat[0]): continue
     3144    #     if 'Xray' in File:
     3145    #         sfwt = 'atomicNumber'
     3146    #     else:
     3147    #         sfwt = 'neutronCohb'
     3148    #     if 'G(r)' in File:
     3149    #         typ = 'Pair'
     3150    #     elif '(Q)' in File:
     3151    #         typ = 'Struct'
     3152    #     rundata += 'wtDict["{}-{}"] = {}\n'.format(typ,sfwt,filDat[1])
    31423153    rundata += 'for c in ENGINE.constraints:  # loop over predefined constraints\n'
    31433154    rundata += '    if type(c) is fPDF.PairDistributionConstraint:\n'
    31443155    # rundata += '        c.set_variance_squared(1./wtDict["Pair-"+c.weighting])\n'
    3145     rundata += '        c.set_limits((None,rmax))\n'
     3156    rundata += '        c.set_limits((None,calcRmax(ENGINE)))\n'
    31463157    if RMCPdict['FitScale']:
    31473158        rundata += '        c.set_adjust_scale_factor((10, 0.01, 100.))\n'
Note: See TracChangeset for help on using the changeset viewer.