Changeset 1759


Ignore:
Timestamp:
Mar 23, 2015 4:21:36 PM (7 years ago)
Author:
vondreele
Message:

add two new background functions - power series in Q2 & 1/Q2 - from old GSASIIpwd.py
fix errors in calculation of weights from incident intensity functions for old TOF data.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwd.py

    r1682 r1759  
    521521def getBackground(pfx,parmDict,bakType,dataType,xdata):
    522522    'needs a doc string'
     523    if 'T' in dataType:
     524        q = 2.*np.pi*parmDict[pfx+'difC']/xdata
     525    elif 'C' in dataType:
     526        wave = parmDict.get(pfx+'Lam',parmDict.get(pfx+'Lam1',1.0))
     527        q = 2.*np.pi*npsind(xdata/2.)/wave
    523528    yb = np.zeros_like(xdata)
    524529    nBak = 0
     
    542547                ybi = parmDict[key]*npcosd(xdata*iBak)
    543548            yb += ybi
    544             sumBk[0] = np.sum(ybi)
     549        sumBk[0] = np.sum(yb)
     550    elif bakType in ['Q^2 power series','Q^-2 powder series']:
     551        QT = 1.
     552        yb += np.ones_like(yb)*parmDict[pfx+'Back;0']
     553        for iBak in range(nBak-1):
     554            key = pfx+'Back;'+str(iBak+1)
     555            if '-2' in bakType:
     556                QT *= (iBak+1)*q**-2
     557            else:
     558                QT *= q**2/(iBak+1)
     559            yb += QT*parmDict[key]
     560        sumBk[0] = np.sum(yb)
    545561    elif bakType in ['lin interpolate','inv interpolate','log interpolate',]:
    546562        if nBak == 1:
     
    574590        except KeyError:
    575591            wave = parmDict[pfx+'Lam1']
    576         q = 4.0*np.pi*npsind(xdata/2.0)/wave
    577592        SQ = (q/(4.*np.pi))**2
    578593        FF = G2elem.GetFormFactorCoeff('Si')[0]
     
    628643def getBackgroundDerv(hfx,parmDict,bakType,dataType,xdata):
    629644    'needs a doc string'
     645    if 'T' in dataType:
     646        q = 2.*np.pi*parmDict[hfx+'difC']/xdata
     647    elif 'C' in dataType:
     648        wave = parmDict.get(hfx+'Lam',parmDict.get(hfx+'Lam1',1.0))
     649        q = 2.*np.pi*npsind(xdata/2.)/wave
    630650    nBak = 0
    631651    while True:
     
    648668            elif bakType == 'cosine':
    649669                dydb[iBak] = npcosd(xdata*iBak)
     670    elif bakType in ['Q^2 power series','Q^-2 powder series']:
     671        QT = 1.
     672        dydb[0] = np.ones_like(xdata)
     673        for iBak in range(nBak-1):
     674            if '-2' in bakType:
     675                QT *= (iBak+1)*q**-2
     676            else:
     677                QT *= q**2/(iBak+1)
     678            dydb[iBak+1] = QT
    650679    elif bakType in ['lin interpolate','inv interpolate','log interpolate',]:
    651680        if nBak == 1:
     
    16081637        x = xdata/1000.                 #expressions are in ms
    16091638        if Itype == 'Exponential':
    1610             for i in range(1,10,2):
     1639            for i in [1,3,5,7,9]:
    16111640                Eterm = np.exp(-Icoef[i+1]*x**((i+1)/2))
    16121641                YI += Icoef[i]*Eterm
    16131642                DYI[i] *= Eterm
    1614                 DYI[i+1] *= -Icoef[i]*x**((i+1)/2)           
     1643                DYI[i+1] *= -Icoef[i]*Eterm*x**((i+1)/2)           
    16151644        elif 'Maxwell'in Itype:
    16161645            Eterm = np.exp(-Icoef[2]/x**2)
     
    16231652                    YI += Icoef[i]*Eterm
    16241653                    DYI[i] *= Eterm
    1625                     DYI[i+1] *= -Icoef[i]*x**((i+1)/2)
     1654                    DYI[i+1] *= -Icoef[i]*Eterm*x**((i+1)/2)
    16261655            else:   #Chebyschev
    16271656                T = (2./x)-1.
  • trunk/GSASIIpwdGUI.py

    r1743 r1759  
    982982    G2frame.Bind(wx.EVT_MENU,OnBackFlagCopy,id=G2gd.wxID_BACKFLAGCOPY)
    983983    BackId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Background')
    984     Choices = ['chebyschev','cosine','lin interpolate','inv interpolate','log interpolate']
     984    Choices = ['chebyschev','cosine','Q^2 power series','Q^-2 powder series','lin interpolate','inv interpolate','log interpolate']
    985985    mainSizer = wx.BoxSizer(wx.VERTICAL)
    986986    mainSizer.Add(BackSizer())
     
    14641464                    fmt = '%10.3f'
    14651465                    if 'beta' in item:
    1466                         fmt = '%12.4g'
    1467                         nDig = (12,4)
     1466                        fmt = '%12.6g'
     1467                        nDig = (12,6)
    14681468                    Fmt = ' %s: ('+fmt+')'
    14691469                    instSizer.Add(
  • trunk/GSASIIstrMath.py

    r1682 r1759  
    13241324def GetPwdrExtDerv(refl,im,pfx,phfx,hfx,calcControls,parmDict):
    13251325    'Needs a doc string'
    1326     delt = 0.001
     1326    delt = 0.01
    13271327    parmDict[phfx+'Extinction'] += delt
    13281328    plus = GetPwdrExt(refl,im,pfx,phfx,hfx,calcControls,parmDict)
Note: See TracChangeset for help on using the changeset viewer.