Changeset 1798


Ignore:
Timestamp:
Apr 18, 2015 5:50:54 PM (7 years ago)
Author:
vondreele
Message:

fix a problem witj Ka1/Ka2 data when last reflection Ka2 falls out side upper limit on 2-theta

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstrMath.py

    r1797 r1798  
    18931893                                iBeg2 = max(xB,np.searchsorted(x,pos2-fmin))
    18941894                                iFin2 = min(np.searchsorted(x,pos2+fmax),xF)
    1895                                 yp[iBeg2:iFin2] += refl[11+im]*refl[9+im]*kRatio*G2pwd.getFCJVoigt3(pos2,refl[6+im],refl[7+im],shl,ma.getdata(x[iBeg2:iFin2]))        #and here
    1896                                 sumInt += refl[11+im]*refl[9+im]*kRatio
     1895                                if iFin2 > iBeg2:
     1896                                    yp[iBeg2:iFin2] += refl[11+im]*refl[9+im]*kRatio*G2pwd.getFCJVoigt3(pos2,refl[6+im],refl[7+im],shl,ma.getdata(x[iBeg2:iFin2]))        #and here
     1897                                    sumInt += refl[11+im]*refl[9+im]*kRatio
    18971898                            refl[8+im] = np.sum(np.where(ratio[iBeg:iFin2]>0.,yp[iBeg:iFin2]*ratio[iBeg:iFin2]/(refl[11+im]*(1.+kRatio)),0.0))
    18981899                               
     
    22732274                if name in varylist:
    22742275                    dMdv[varylist.index(name)][iBeg:iFin] += item[0]*dervDict[item[1]]
    2275                     if Ka2:
     2276                    if Ka2 and iFin2-iBeg2:
    22762277                        dMdv[varylist.index(name)][iBeg2:iFin2] += item[0]*dervDict2[item[1]]
    22772278                elif name in dependentVars:
    22782279                    depDerivDict[name][iBeg:iFin] += item[0]*dervDict[item[1]]
    2279                     if Ka2:
     2280                    if Ka2 and iFin2-iBeg2:
    22802281                        depDerivDict[name][iBeg2:iFin2] += item[0]*dervDict2[item[1]]
    22812282            for iPO in dIdPO:
    22822283                if iPO in varylist:
    22832284                    dMdv[varylist.index(iPO)][iBeg:iFin] += dIdPO[iPO]*dervDict['int']
    2284                     if Ka2:
     2285                    if Ka2 and iFin2-iBeg2:
    22852286                        dMdv[varylist.index(iPO)][iBeg2:iFin2] += dIdPO[iPO]*dervDict2['int']
    22862287                elif iPO in dependentVars:
    22872288                    depDerivDict[iPO][iBeg:iFin] += dIdPO[iPO]*dervDict['int']
    2288                     if Ka2:
     2289                    if Ka2 and iFin2-iBeg2:
    22892290                        depDerivDict[iPO][iBeg2:iFin2] += dIdPO[iPO]*dervDict2['int']
    22902291            for i,name in enumerate(['omega','chi','phi']):
     
    22922293                if aname in varylist:
    22932294                    dMdv[varylist.index(aname)][iBeg:iFin] += dFdSA[i]*dervDict['int']
    2294                     if Ka2:
     2295                    if Ka2 and iFin2-iBeg2:
    22952296                        dMdv[varylist.index(aname)][iBeg2:iFin2] += dFdSA[i]*dervDict2['int']
    22962297                elif aname in dependentVars:
    22972298                    depDerivDict[aname][iBeg:iFin] += dFdSA[i]*dervDict['int']
    2298                     if Ka2:
     2299                    if Ka2 and iFin2-iBeg2:
    22992300                        depDerivDict[aname][iBeg2:iFin2] += dFdSA[i]*dervDict2['int']
    23002301            for iSH in dFdODF:
    23012302                if iSH in varylist:
    23022303                    dMdv[varylist.index(iSH)][iBeg:iFin] += dFdODF[iSH]*dervDict['int']
    2303                     if Ka2:
     2304                    if Ka2 and iFin2-iBeg2:
    23042305                        dMdv[varylist.index(iSH)][iBeg2:iFin2] += dFdODF[iSH]*dervDict2['int']
    23052306                elif iSH in dependentVars:
    23062307                    depDerivDict[iSH][iBeg:iFin] += dFdODF[iSH]*dervDict['int']
    2307                     if Ka2:
     2308                    if Ka2 and iFin2-iBeg2:
    23082309                        depDerivDict[iSH][iBeg2:iFin2] += dFdODF[iSH]*dervDict2['int']
    23092310            cellDervNames = cellVaryDerv(pfx,SGData,dpdA)
     
    23112312                if name in varylist:
    23122313                    dMdv[varylist.index(name)][iBeg:iFin] += dpdA*dervDict['pos']
    2313                     if Ka2:
     2314                    if Ka2 and iFin2-iBeg2:
    23142315                        dMdv[varylist.index(name)][iBeg2:iFin2] += dpdA*dervDict2['pos']
    23152316                elif name in dependentVars:
    23162317                    depDerivDict[name][iBeg:iFin] += dpdA*dervDict['pos']
    2317                     if Ka2:
     2318                    if Ka2 and iFin2-iBeg2:
    23182319                        depDerivDict[name][iBeg2:iFin2] += dpdA*dervDict2['pos']
    23192320            dDijDict = GetHStrainShiftDerv(refl,im,SGData,phfx,hfx,calcControls,parmDict)
     
    23212322                if name in varylist:
    23222323                    dMdv[varylist.index(name)][iBeg:iFin] += dDijDict[name]*dervDict['pos']
    2323                     if Ka2:
     2324                    if Ka2 and iFin2-iBeg2:
    23242325                        dMdv[varylist.index(name)][iBeg2:iFin2] += dDijDict[name]*dervDict2['pos']
    23252326                elif name in dependentVars:
    23262327                    depDerivDict[name][iBeg:iFin] += dDijDict[name]*dervDict['pos']
    2327                     if Ka2:
     2328                    if Ka2 and iFin2-iBeg2:
    23282329                        depDerivDict[name][iBeg2:iFin2] += dDijDict[name]*dervDict2['pos']
    23292330            for i,name in enumerate([pfx+'mV0',pfx+'mV1',pfx+'mV2']):
    23302331                if name in varylist:
    23312332                    dMdv[varylist.index(name)][iBeg:iFin] += dpdV[i]*dervDict['pos']
    2332                     if Ka2:
     2333                    if Ka2 and iFin2-iBeg2:
    23332334                        dMdv[varylist.index(name)][iBeg2:iFin2] += dpdV[i]*dervDict2['pos']
    23342335                elif name in dependentVars:
    23352336                    depDerivDict[name][iBeg:iFin] += dpdV[i]*dervDict['pos']
    2336                     if Ka2:
     2337                    if Ka2 and iFin2-iBeg2:
    23372338                        depDerivDict[name][iBeg2:iFin2] += dpdV[i]*dervDict2['pos']
    23382339            if 'C' in calcControls[hfx+'histType']:
     
    23432344                if name in varylist:
    23442345                    dMdv[varylist.index(name)][iBeg:iFin] += gamDict[name]*dervDict['gam']
    2345                     if Ka2:
     2346                    if Ka2 and iFin2-iBeg2:
    23462347                        dMdv[varylist.index(name)][iBeg2:iFin2] += gamDict[name]*dervDict2['gam']
    23472348                elif name in dependentVars:
    23482349                    depDerivDict[name][iBeg:iFin] += gamDict[name]*dervDict['gam']
    2349                     if Ka2:
     2350                    if Ka2 and iFin2-iBeg2:
    23502351                        depDerivDict[name][iBeg2:iFin2] += gamDict[name]*dervDict2['gam']
    23512352            for name in sigDict:
    23522353                if name in varylist:
    23532354                    dMdv[varylist.index(name)][iBeg:iFin] += sigDict[name]*dervDict['sig']
    2354                     if Ka2:
     2355                    if Ka2 and iFin2-iBeg2:
    23552356                        dMdv[varylist.index(name)][iBeg2:iFin2] += sigDict[name]*dervDict2['sig']
    23562357                elif name in dependentVars:
    23572358                    depDerivDict[name][iBeg:iFin] += sigDict[name]*dervDict['sig']
    2358                     if Ka2:
     2359                    if Ka2 and iFin2-iBeg2:
    23592360                        depDerivDict[name][iBeg2:iFin2] += sigDict[name]*dervDict2['sig']
    23602361            for name in ['BabA','BabU']:
     
    23622363                    if phfx+name in varylist:
    23632364                        dMdv[varylist.index(phfx+name)][iBeg:iFin] += dFdvDict[pfx+name][iref]*dervDict['int']/refl[9+im]
    2364                         if Ka2:
     2365                        if Ka2 and iFin2-iBeg2:
    23652366                            dMdv[varylist.index(phfx+name)][iBeg2:iFin2] += dFdvDict[pfx+name][iref]*dervDict2['int']/refl[9+im]
    23662367                    elif phfx+name in dependentVars:                   
    23672368                        depDerivDict[phfx+name][iBeg:iFin] += dFdvDict[pfx+name][iref]*dervDict['int']/refl[9+im]
    2368                         if Ka2:
     2369                        if Ka2 and iFin2-iBeg2:
    23692370                            depDerivDict[phfx+name][iBeg2:iFin2] += dFdvDict[pfx+name][iref]*dervDict2['int']/refl[9+im]                 
    23702371            if not Phase['General'].get('doPawley'):
    23712372                #do atom derivatives -  for RB,F,X & U so far             
    23722373                corr = dervDict['int']/refl[9+im]
    2373                 if Ka2:
     2374                if Ka2 and iFin2-iBeg2:
    23742375                    corr2 = dervDict2['int']/refl[9+im]
    23752376                for name in varylist+dependentVars:
     
    23842385                    if name in varylist:
    23852386                        dMdv[varylist.index(name)][iBeg:iFin] += dFdvDict[name][iref]*corr
    2386                         if Ka2:
     2387                        if Ka2 and iFin2-iBeg2:
    23872388                            dMdv[varylist.index(name)][iBeg2:iFin2] += dFdvDict[name][iref]*corr2
    23882389                    elif name in dependentVars:
    23892390                        depDerivDict[name][iBeg:iFin] += dFdvDict[name][iref]*corr
    2390                         if Ka2:
     2391                        if Ka2 and iFin2-iBeg2:
    23912392                            depDerivDict[name][iBeg2:iFin2] += dFdvDict[name][iref]*corr2
    23922393    #        print 'profile derv time: %.3fs'%(time.time()-time0)
Note: See TracChangeset for help on using the changeset viewer.