Changeset 838


Ignore:
Timestamp:
Jan 23, 2013 10:15:09 AM (9 years ago)
Author:
vondreele
Message:

fixed single crystal refinement - implement wtFactor
Hessian & Jacobian F & F2 refinements all work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstruct.py

    r826 r838  
    32883288                    if calcControls['F**2']:
    32893289                        if ref[5]/ref[6] >= calcControls['minF/sig']:
     3290                            w = wtFactor/ref[6]
    32903291                            for j,var in enumerate(varylist):
    32913292                                if var in dFdvDict:
    3292                                     dMdvh[j][iref] = dFdvDict[var][iref]/ref[6]
     3293                                    dMdvh[j][iref] = w*dFdvDict[var][iref]
    32933294                            if phfx+'Scale' in varylist:
    3294                                 dMdvh[varylist.index(phfx+'Scale')][iref] = ref[9]/ref[6]
     3295                                dMdvh[varylist.index(phfx+'Scale')][iref] = w*ref[9]
    32953296                    else:
    32963297                        Fo = np.sqrt(ref[5])
     
    32983299                        sig = ref[6]/(2.0*Fo)
    32993300                        if Fo/sig >= calcControls['minF/sig']:
     3301                            w = wtFactor/sig
    33003302                            for j,var in enumerate(varylist):
    33013303                                if var in dFdvDict:
    3302                                     dMdvh[j][iref] = dFdvDict[var][iref]/ref[6]
     3304                                    dMdvh[j][iref] = w*dFdvDict[var][iref]
    33033305                            if phfx+'Scale' in varylist:
    3304                                 dMdvh[varylist.index(phfx+'Scale')][iref] = ref[9]/ref[6]                           
     3306                                dMdvh[varylist.index(phfx+'Scale')][iref] = w*ref[9]                           
    33053307        else:
    33063308            continue        #skip non-histogram entries
     
    33733375                    if calcControls['F**2']:
    33743376                        if ref[5]/ref[6] >= calcControls['minF/sig']:
    3375                             wdf[iref] = (ref[5]-ref[7])/ref[6]
     3377                            w =  wtFactor/ref[6]
     3378                            wdf[iref] = w*(ref[5]-ref[7])
    33763379                            for j,var in enumerate(varylist):
    33773380                                if var in dFdvDict:
    3378                                     dMdvh[j][iref] = dFdvDict[var][iref]/ref[6]
     3381                                    dMdvh[j][iref] = w*dFdvDict[var][iref]
    33793382                            if phfx+'Scale' in varylist:
    3380                                 dMdvh[varylist.index(phfx+'Scale')][iref] = ref[9]/ref[6]
     3383                                dMdvh[varylist.index(phfx+'Scale')][iref] = w*ref[9]
    33813384                    else:
    3382                         Fo = np.sqrt(ref[5])
    3383                         Fc = np.sqrt(ref[7])
    3384                         sig = ref[6]/(2.0*Fo)
    3385                         wdf[iref] = (Fo-Fc)/sig
    3386                         if Fo/sig >= calcControls['minF/sig']:
    3387                             for j,var in enumerate(varylist):
    3388                                 if var in dFdvDict:
    3389                                     dMdvh[j][iref] = dFdvDict[var][iref]/ref[6]
    3390                             if phfx+'Scale' in varylist:
    3391                                 dMdvh[varylist.index(phfx+'Scale')][iref] = ref[9]/ref[6]                           
     3385                        if ref[5] > 0.:
     3386                            Fo = np.sqrt(ref[5])
     3387                            Fc = np.sqrt(ref[7])
     3388                            sig = ref[6]/(2.0*Fo)
     3389                            w = wtFactor/sig
     3390                            wdf[iref] = w*(Fo-Fc)
     3391                            if Fo/sig >= calcControls['minF/sig']:
     3392                                for j,var in enumerate(varylist):
     3393                                    if var in dFdvDict:
     3394                                        dMdvh[j][iref] = w*dFdvDict[var][iref]
     3395                                if phfx+'Scale' in varylist:
     3396                                    dMdvh[varylist.index(phfx+'Scale')][iref] = w*ref[9]                           
    33923397            if dlg:
    33933398                dlg.Update(Histogram['wR'],newmsg='Hessian for histogram %d Rw=%8.3f%s'%(hId,Histogram['wR'],'%'))[0]
     
    34803485                            sumdF2 += abs(ref[5]-ref[7])
    34813486                            nobs += 1
    3482                             df[i] = -(ref[5]-ref[7])/ref[6]
    3483                             sumwYo += (ref[5]/ref[6])**2
     3487                            df[i] = -np.sqrt(wtFactor)*(ref[5]-ref[7])/ref[6]
     3488                            sumwYo += wtFactor*(ref[5]/ref[6])**2
    34843489                    else:
    34853490                        Fo = np.sqrt(ref[5])
     
    34923497                            sumdF2 += abs(ref[5]-ref[7])
    34933498                            nobs += 1
    3494                             df[i] = -(Fo-Fc)/sig
    3495                             sumwYo += (Fo/sig)**2
     3499                            df[i] = -np.sqrt(wtFactor)*(Fo-Fc)/sig
     3500                            sumwYo += wtFactor*(Fo/sig)**2
    34963501            Histogram['Nobs'] = nobs
    34973502            Histogram['sumwYo'] = sumwYo
Note: See TracChangeset for help on using the changeset viewer.