Changeset 5005


Ignore:
Timestamp:
Jul 30, 2021 11:59:01 AM (6 months ago)
Author:
vondreele
Message:

fix bug for image plate transmission in PDF calcs. (default=0.3 now - better value)
change range for Ruland width
Add control slider/value for G(R) scale factor; idea is to match low R background to density line
fix bad background Bragg peak derivatives

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIobj.py

    r4960 r5005  
    33073307        'Container Bkg.':{'Name':'','Mult':-1.0},'ElList':ElList,
    33083308        'Geometry':'Cylinder','Diam':1.0,'Pack':0.50,'Form Vol':10.0*numAtm,'Flat Bkg':FltBkg,
    3309         'DetType':'Area detector','ObliqCoeff':0.2,'Ruland':0.025,'QScaleLim':Qlimits,
     3309        'DetType':'Area detector','ObliqCoeff':0.3,'Ruland':0.025,'QScaleLim':Qlimits,
    33103310        'Lorch':False,'BackRatio':0.0,'Rmax':100.,'noRing':False,'IofQmin':1.0,'Rmin':1.0,
    33113311        'I(Q)':[],'S(Q)':[],'F(Q)':[],'G(R)':[]}
  • trunk/GSASIIpwd.py

    r5004 r5005  
    241241    'currently assumes detector is normal to beam'
    242242    if ObCoeff:
    243         return (1.-ObCoeff)/(1.0-np.exp(np.log(ObCoeff)/npcosd(Tth)))
     243        K = (1.-ObCoeff)/(1.0-np.exp(np.log(ObCoeff)/npcosd(Tth)))
     244        return K
    244245    else:
    245246        return 1.0
     
    329330        IofQ[1][1] /= Absorb(data['Geometry'],MuR,Tth)
    330331        IofQ[1][1] /= Polarization(inst['Polariz.'][1],Tth,Azm=inst['Azimuth'][1])[0]
    331         if data['DetType'] == 'Image plate':
     332        if data['DetType'] == 'Area detector':
    332333            IofQ[1][1] *= Oblique(data['ObliqCoeff'],Tth)
    333334    elif 'T' in inst['Type'][0]:    #neutron TOF normalized data - needs wavelength dependent absorption
     
    416417    xydata['GofR'][1][0] = R
    417418    xydata['gofr'][1][0] = R
    418     GR = -dq*np.imag(fft.fft(xydata['FofQ'][1][1],mul*nR)[:nR])
     419    GR = -dq*np.imag(fft.fft(xydata['FofQ'][1][1],mul*nR)[:nR])*data.get('GR Scale',1.0)
    419420    xydata['GofR'][1][1] = GR
    420421    gr = GR/(np.pi*R)
     
    561562                data['Flat Bkg'],data['BackRatio'],data['Ruland'],rms))
    562563    if data['Sample Bkg.'].get('Refine',False):
    563         res = opt.minimize(Min,xstart,bounds=([0.01,1],[1.2*bakMul,0.8*bakMul]),
     564        res = opt.minimize(Min,xstart,bounds=([0.01,1.],[1.2*bakMul,0.8*bakMul]),
    564565                    method='L-BFGS-B',options={'maxiter':maxCycles},tol=0.001)
    565566    else:
    566         res = opt.minimize(Min,xstart,bounds=([0,None],[0,1],[0.01,1]),
     567        res = opt.minimize(Min,xstart,bounds=([0,None],[0,1],[0.01,1.]),
    567568                    method='L-BFGS-B',options={'maxiter':maxCycles},tol=0.001)
    568569    Done(res['x'])
     
    596597            Data['Flat Bkg'] = F*BkgMax
    597598            Data['BackRatio'] = B
    598         Data['Ruland'] = R/10.
     599        Data['Ruland'] = R
    599600        CalcPDF(Data,inst,limits,xydata)
    600601        # test low r computation
     
    608609        '''
    609610        if data['Sample Bkg.'].get('Refine',False):
    610                 return [max(10*data['Ruland'],.05),data['Sample']['Mult']]
     611                return [max(data['Ruland'],.05),data['Sample']['Mult']]
    611612        try:
    612613            F = data['Flat Bkg']/BkgMax
    613614        except:
    614615            F = 0
    615         return [F,data['BackRatio'],max(10*data['Ruland'],.05)]
     616        return [F,data['BackRatio'],max(data['Ruland'],.05)]
    616617    def SetFinalVals(arg):
    617618        '''Set the 'Flat Bkg', 'BackRatio' & 'Ruland' values from the
     
    625626            data['Flat Bkg'] = F*BkgMax
    626627            data['BackRatio'] = B
    627         data['Ruland'] = R/10.
     628        data['Ruland'] = R
    628629        CalcPDF(data,inst,limits,xydata)
    629630    EvalLowPDF(GetCurrentVals())
     
    11221123            if 'C' in dataType:
    11231124                Df,dFdp,dFds,dFdg,x = getdFCJVoigt3(pkP,pkS,pkG,.002,xdata[iBeg:iFin])
    1124                 dydpk[4*iD][iBeg:iFin] += 100.*cw[iBeg:iFin]*pkI*dFdp
    1125                 dydpk[4*iD+1][iBeg:iFin] += 100.*cw[iBeg:iFin]*Df
    1126                 dydpk[4*iD+2][iBeg:iFin] += 100.*cw[iBeg:iFin]*pkI*dFds
    1127                 dydpk[4*iD+3][iBeg:iFin] += 100.*cw[iBeg:iFin]*pkI*dFdg
     1125                # dydpk[4*iD][iBeg:iFin] += 100.*cw[iBeg:iFin]*pkI*dFdp
     1126                # dydpk[4*iD+1][iBeg:iFin] += 100.*cw[iBeg:iFin]*Df
     1127                # dydpk[4*iD+2][iBeg:iFin] += 100.*cw[iBeg:iFin]*pkI*dFds
     1128                # dydpk[4*iD+3][iBeg:iFin] += 100.*cw[iBeg:iFin]*pkI*dFdg
     1129                dydpk[4*iD][iBeg:iFin] += 1000.*pkI*dFdp
     1130                dydpk[4*iD+1][iBeg:iFin] += 1000.*Df
     1131                dydpk[4*iD+2][iBeg:iFin] += 1000.*pkI*dFds
     1132                dydpk[4*iD+3][iBeg:iFin] += 1000.*pkI*dFdg
    11281133            else:   #'T'OF
    11291134                Df,dFdp,x,x,dFds,dFdg = getdEpsVoigt(pkP,1.,1.,pkS,pkG,xdata[iBeg:iFin])
  • trunk/GSASIIpwdGUI.py

    r4999 r5005  
    71917191            wx.BeginBusyCursor()
    71927192            try:
     7193                data['Ruland'] = 0.01       #always set small to start
    71937194                OptimizePDF(G2frame,data)
    71947195            finally:
     
    71997200        def AfterChangeNoRefresh(invalid,value,tc):
    72007201            if invalid: return
     7202            if tc.GetId() in Indx:
     7203                Indx[tc.GetId()][0].SetValue(int(value*Indx[tc.GetId()][1]))
    72017204            wx.CallAfter(OnComputePDF,None)
    72027205       
     
    72197222       
    72207223        def OnRulSlider(event):
    7221             value = int(rulandSldr.GetValue())/1000.
     7224            value = int(rulandSldr.GetValue())/100.
    72227225            data['Ruland'] = max(0.001,value)
    72237226            rulandWdt.SetValue(data['Ruland'])
     7227            wx.CallAfter(OnComputePDF,None)
     7228           
     7229        def OnGRscaleSlider(event):
     7230            value = int(gscaleSldr.GetValue())/50.
     7231            data['GR Scale'] = max(0.1,min(2.,value))
     7232            gscale.SetValue(data['GR Scale'])
    72247233            wx.CallAfter(OnComputePDF,None)
    72257234       
     
    72447253            data['noRing'] = not data['noRing']
    72457254            wx.CallAfter(OnComputePDF,None)
    7246 
     7255         
     7256        Indx = {}
    72477257        sfgSizer = wx.BoxSizer(wx.VERTICAL)         
    72487258        sqBox = wx.BoxSizer(wx.HORIZONTAL)
     
    72917301        backVal = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'BackRatio',nDig=(10,3),xmin=0.0,xmax=1.0,
    72927302            typeHint=float,OnLeave=AfterChangeNoRefresh)
     7303        Indx[backVal.GetId()] = [backSldr,100]
    72937304        bkBox.Add(backVal,0,WACV)   
    72947305        sfgSizer.Add(bkBox,0,wx.EXPAND)
     
    72987309            sqBox.Add(wx.StaticText(G2frame.dataWindow,label=' Ruland width: '),0,WACV)   
    72997310            rulandSldr = wx.Slider(parent=G2frame.dataWindow,style=wx.SL_HORIZONTAL,
    7300                 value=int(1000*data['Ruland']))
     7311                value=int(100*data['Ruland']))
    73017312            sqBox.Add(rulandSldr,1,wx.EXPAND)
    73027313            rulandSldr.Bind(wx.EVT_SLIDER, OnRulSlider)
    73037314            rulandWdt = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'Ruland',nDig=(10,3),xmin=0.001,xmax=1.0,
    73047315                typeHint=float,OnLeave=AfterChangeNoRefresh)
     7316            Indx[rulandWdt.GetId()] = [rulandSldr,100]
    73057317            sqBox.Add(rulandWdt,0,WACV)   
    73067318            sfgSizer.Add(sqBox,0,wx.EXPAND)
    7307        
     7319           
     7320        gscaleBox = wx.BoxSizer(wx.HORIZONTAL)
     7321        gscaleBox.Add(wx.StaticText(G2frame.dataWindow,label=' G(R) scale: '),0,WACV)   
     7322        gscaleSldr = wx.Slider(parent=G2frame.dataWindow,style=wx.SL_HORIZONTAL,
     7323            value=int(50*data['GR Scale']))
     7324        gscaleBox.Add(gscaleSldr,1,wx.EXPAND)
     7325        gscaleSldr.Bind(wx.EVT_SLIDER, OnGRscaleSlider)
     7326        gscale = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data,'GR Scale',nDig=(10,3),xmin=0.1,xmax=2.,
     7327            typeHint=float,OnLeave=AfterChangeNoRefresh)
     7328        Indx[gscale.GetId()] = [gscaleSldr,50]
     7329        gscaleBox.Add(gscale,0,WACV)   
     7330        sfgSizer.Add(gscaleBox,0,wx.EXPAND)
     7331       
    73087332        sqBox = wx.BoxSizer(wx.HORIZONTAL)
    73097333        sqBox.Add(wx.StaticText(G2frame.dataWindow,label=' Scaling Q-range: '),0,WACV)
     
    75047528            G2plt.PlotISFG(G2frame,data,newPlot=True,plotType='S(Q)')
    75057529            G2plt.PlotISFG(G2frame,data,newPlot=True,plotType='F(Q)')
     7530            G2plt.PlotISFG(G2frame,data,newPlot=True,plotType='g(r)')
    75067531            G2plt.PlotISFG(G2frame,data,newPlot=True,plotType='G(R)')
    7507             G2plt.PlotISFG(G2frame,data,newPlot=True,plotType='g(r)')
    75087532        else:
    75097533            G2plt.PlotISFG(G2frame,data,newPlot=False)
     
    76237647        if 'diffMult' not in data:
    76247648            data['diffMult'] = 1.0
     7649        if 'GR Scale' not in data:
     7650            data['GR Scale'] = 1.0
    76257651    G2gd.SetDataMenuBar(G2frame,G2frame.dataWindow.PDFMenu)
    76267652    if powId:
Note: See TracChangeset for help on using the changeset viewer.