Changeset 5152 for trunk/GSASIIpwd.py


Ignore:
Timestamp:
Jan 21, 2022 2:55:16 PM (7 months ago)
Author:
vondreele
Message:

fix RMC GUI options for PDFfit
fix background Bragg peak fits for EDX data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwd.py

    r5144 r5152  
    900900    if 'T' in dataType:
    901901        q = 2.*np.pi*parmDict[pfx+'difC']/xdata
     902    elif 'E' in dataType:
     903        const = 4.*np.pi*npsind(parmDict[pfx+'2-theta']/2.0)
     904        q = const*xdata
    902905    else:
    903906        wave = parmDict.get(pfx+'Lam',parmDict.get(pfx+'Lam1',1.0))
     
    991994            pkP = parmDict[pfx+'BkPkpos;'+str(iD)]
    992995            pkI = max(parmDict[pfx+'BkPkint;'+str(iD)],0.1)
    993             pkS = max(parmDict[pfx+'BkPksig;'+str(iD)],1.)
     996            pkS = max(parmDict[pfx+'BkPksig;'+str(iD)],0.01)
    994997            pkG = max(parmDict[pfx+'BkPkgam;'+str(iD)],0.1)
    995998            if 'C' in dataType:
    996999                Wd,fmin,fmax = getWidthsCW(pkP,pkS,pkG,.002)
     1000            elif 'E' in dataType:
     1001                Wd,fmin,fmax = getWidthsED(pkP,pkS)
    9971002            else: #'T'OF
    9981003                Wd,fmin,fmax = getWidthsTOF(pkP,1.,1.,pkS,pkG)
     
    10151020                ybi = pkI*getEpsVoigt(pkP,1.,1.,pkS/100.,pkG/1.e4,xdata[iBeg:iFin])[0]
    10161021                yb[iBeg:iFin] += ybi
     1022            elif 'E' in dataType:
     1023                ybi = pkI*getPsVoigt(pkP,pkS*10.**4,pkG*100.,xdata[iBeg:iFin])[0]
     1024                yb[iBeg:iFin] += ybi
    10171025            sumBk[2] += np.sum(ybi)
    10181026            iD += 1       
     
    10311039    if 'T' in dataType:
    10321040        q = 2.*np.pi*parmDict[hfx+'difC']/xdata
     1041    elif 'E' in dataType:
     1042        const = 4.*np.pi*npsind(parmDict[hfx+'2-theta']/2.0)
     1043        q = const*xdata
    10331044    else:
    10341045        wave = parmDict.get(hfx+'Lam',parmDict.get(hfx+'Lam1',1.0))
     
    11231134            pkP = parmDict[hfx+'BkPkpos;'+str(iD)]
    11241135            pkI = max(parmDict[hfx+'BkPkint;'+str(iD)],0.1)
    1125             pkS = max(parmDict[hfx+'BkPksig;'+str(iD)],1.0)
     1136            pkS = max(parmDict[hfx+'BkPksig;'+str(iD)],0.01)
    11261137            pkG = max(parmDict[hfx+'BkPkgam;'+str(iD)],0.1)
    11271138            if 'C' in dataType:
    11281139                Wd,fmin,fmax = getWidthsCW(pkP,pkS,pkG,.002)
     1140            elif 'E' in dataType:
     1141                Wd,fmin,fmax = getWidthsED(pkP,pkS)
    11291142            else: #'T' or 'B'
    11301143                Wd,fmin,fmax = getWidthsTOF(pkP,1.,1.,pkS,pkG)
     
    11401153            if 'C' in dataType:
    11411154                Df,dFdp,dFds,dFdg,x = getdFCJVoigt3(pkP,pkS,pkG,.002,xdata[iBeg:iFin])
     1155            elif 'E' in dataType:
     1156                Df,dFdp,dFds,dFdg = getdPsVoigt(pkP,pkS*10.**4,pkG*100.,xdata[iBeg:iFin])
    11421157            else:   #'T'OF
    11431158                Df,dFdp,x,x,dFds,dFdg = getdEpsVoigt(pkP,1.,1.,pkS,pkG,xdata[iBeg:iFin])
     
    30773092        for it,item in enumerate(atom):
    30783093            if it > 1 and item:
    3079                 itnum = item.split('@')[1]
    3080                 varname = '@%s'%itnum
    3081                 varnames.append(varname)
    3082                 if it < 6:
    3083                     if varname not in AtomVar:
    3084                         AtomVar[varname] = 0.0      #put ISODISTORT mode displ here?
    3085                 else:
    3086                     for i in range(3):
     3094                itms = item.split('@')
     3095                for itm in itms[1:]:
     3096                    itnum = itm[:2]
     3097                    varname = '@%s'%itnum
     3098                    varnames.append(varname)
     3099                    if it < 6:
    30873100                        if varname not in AtomVar:
    3088                             AtomVar[varname] = Atoms[iat][cia+i+2]
     3101                            AtomVar[varname] = 0.0      #put ISODISTORT mode displ here?
     3102                    else:
     3103                        for i in range(3):
     3104                            if varname not in AtomVar:
     3105                                AtomVar[varname] = Atoms[iat][cia+i+2]
    30893106    varnames = set(varnames)
    30903107    for name in list(AtomVar.keys()):       #clear out unused parameters
     
    32223239            names = ['pf.x(%d)'%(iat+1),'pf.y(%d)'%(iat+1),'pf.z(%d)'%(iat+1),'pf.occ(%d)'%(iat+1)]
    32233240            if it > 1 and item:
    3224                 itnum = item.split('@')[1]
    3225                 if it < 6:
    3226                     rundata += 'pf.constrain(%s,"%s")\n'%(names[it-2],item)
    3227                     if itnum not in used:
    3228                         parms[itnum] = [AtomVar['@%s'%itnum],names[it-2].split('.')[1]]
    3229                         used.append(itnum)
    3230                 else:
    3231                     uijs = ['pf.u11(%d)'%(iat+1),'pf.u22(%d)'%(iat+1),'pf.u33(%d)'%(iat+1)]     
    3232                     for i in range(3):
    3233                         rundata += 'pf.constrain(%s,"%s")\n'%(uijs[i],item)
     3241                itms = item.split('@')
     3242                for itm in itms[1:]:
     3243                    itnum = itm[:2]
     3244                    if it < 6:
     3245                        rundata += 'pf.constrain(%s,"%s")\n'%(names[it-2],item)
    32343246                        if itnum not in used:
    3235                             parms[itnum] = [AtomVar['@%s'%itnum],uijs[i].split('.')[1]]
     3247                            parms[itnum] = [AtomVar['@%s'%itnum],names[it-2].split('.')[1]]
    32363248                            used.append(itnum)
     3249                    else:
     3250                        uijs = ['pf.u11(%d)'%(iat+1),'pf.u22(%d)'%(iat+1),'pf.u33(%d)'%(iat+1)]     
     3251                        for i in range(3):
     3252                            rundata += 'pf.constrain(%s,"%s")\n'%(uijs[i],item)
     3253                            if itnum not in used:
     3254                                parms[itnum] = [AtomVar['@%s'%itnum],uijs[i].split('.')[1]]
     3255                                used.append(itnum)
    32373256                           
    32383257    if 'sequential' in RMCPdict['refinement']:
     
    33323351    for iline,line in enumerate(lines):
    33333352        if 'Rw - ' in line:
    3334             Rwp = float(line.split(':')[1])
     3353            if 'nan' in line:
     3354                Rwp = 100.0
     3355            else:
     3356                Rwp = float(line.split(':')[1])
    33353357    results = resline.replace('(','').split(')')[:-1]
    33363358    results = ['@'+result.lstrip() for result in results]
Note: See TracChangeset for help on using the changeset viewer.