Changeset 2718 for trunk/GSASIIstrIO.py


Ignore:
Timestamp:
Feb 21, 2017 3:51:44 PM (5 years ago)
Author:
vondreele
Message:

implement LaBail? - not finished.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstrIO.py

    r2715 r2718  
    22332233                elif 'T' in inst['Type'][0]:
    22342234                    dmin = limits[0]/inst['difC'][1]
     2235                pfx = str(pId)+':'+str(hId)+':'
    22352236                if Phases[phase]['General']['doPawley']:
     2237                    hapDict[pfx+'LeBail'] = False           #Pawley supercedes LeBail
    22362238                    Tmin = G2lat.Dsp2pos(inst,dmin)
    22372239                    if 'C' in inst['Type'][1]:
     
    22392241                    else:
    22402242                        limits[0] = max(limits[0],Tmin)
     2243                else:
     2244                    hapDict[pfx+'LeBail'] = hapData.get('LeBail',False)
    22412245                if Phases[phase]['General']['Type'] == 'magnetic':
    22422246                    dmin = max(dmin,Phases[phase]['General']['MagDmin'])
    2243                 pfx = str(pId)+':'+str(hId)+':'
    22442247                for item in ['Scale','Extinction']:
    22452248                    hapDict[pfx+item] = hapData[item][0]
    2246                     if hapData[item][1]:
     2249                    if hapData[item][1] and not hapDict[pfx+'LeBail']:
    22472250                        hapVary.append(pfx+item)
    22482251                names = G2spc.HStrainNames(SGData)
     
    22532256                    if hapData['HStrain'][1][i]:
    22542257                        hapVary.append(pfx+name)
    2255                 controlDict[pfx+'poType'] = hapData['Pref.Ori.'][0]
    2256                 if hapData['Pref.Ori.'][0] == 'MD':
    2257                     hapDict[pfx+'MD'] = hapData['Pref.Ori.'][1]
    2258                     controlDict[pfx+'MDAxis'] = hapData['Pref.Ori.'][3]
    2259                     if hapData['Pref.Ori.'][2]:
    2260                         hapVary.append(pfx+'MD')
    2261                 else:                           #'SH' spherical harmonics
    2262                     controlDict[pfx+'SHord'] = hapData['Pref.Ori.'][4]
    2263                     controlDict[pfx+'SHncof'] = len(hapData['Pref.Ori.'][5])
    2264                     controlDict[pfx+'SHnames'] = G2lat.GenSHCoeff(SGData['SGLaue'],'0',controlDict[pfx+'SHord'],False)
    2265                     controlDict[pfx+'SHhkl'] = []
    2266                     try: #patch for old Pref.Ori. items
    2267                         controlDict[pfx+'SHtoler'] = 0.1
    2268                         if hapData['Pref.Ori.'][6][0] != '':
    2269                             controlDict[pfx+'SHhkl'] = [eval(a.replace(' ',',')) for a in hapData['Pref.Ori.'][6]]
    2270                         controlDict[pfx+'SHtoler'] = hapData['Pref.Ori.'][7]
    2271                     except IndexError:
    2272                         pass
    2273                     for item in hapData['Pref.Ori.'][5]:
    2274                         hapDict[pfx+item] = hapData['Pref.Ori.'][5][item]
    2275                         if hapData['Pref.Ori.'][2]:
    2276                             hapVary.append(pfx+item)
     2258                    controlDict[pfx+'poType'] = hapData['Pref.Ori.'][0]
     2259                    if hapData['Pref.Ori.'][0] == 'MD':
     2260                        hapDict[pfx+'MD'] = hapData['Pref.Ori.'][1]
     2261                        controlDict[pfx+'MDAxis'] = hapData['Pref.Ori.'][3]
     2262                        if hapData['Pref.Ori.'][2] and not hapDict[pfx+'LeBail']:
     2263                            hapVary.append(pfx+'MD')
     2264                    else:                           #'SH' spherical harmonics
     2265                        controlDict[pfx+'SHord'] = hapData['Pref.Ori.'][4]
     2266                        controlDict[pfx+'SHncof'] = len(hapData['Pref.Ori.'][5])
     2267                        controlDict[pfx+'SHnames'] = G2lat.GenSHCoeff(SGData['SGLaue'],'0',controlDict[pfx+'SHord'],False)
     2268                        controlDict[pfx+'SHhkl'] = []
     2269                        try: #patch for old Pref.Ori. items
     2270                            controlDict[pfx+'SHtoler'] = 0.1
     2271                            if hapData['Pref.Ori.'][6][0] != '':
     2272                                controlDict[pfx+'SHhkl'] = [eval(a.replace(' ',',')) for a in hapData['Pref.Ori.'][6]]
     2273                            controlDict[pfx+'SHtoler'] = hapData['Pref.Ori.'][7]
     2274                        except IndexError:
     2275                            pass
     2276                        for item in hapData['Pref.Ori.'][5]:
     2277                            hapDict[pfx+item] = hapData['Pref.Ori.'][5][item]
     2278                            if hapData['Pref.Ori.'][2] and not hapDict[pfx+'LeBail']:
     2279                                hapVary.append(pfx+item)
    22772280                for item in ['Mustrain','Size']:
    22782281                    controlDict[pfx+item+'Type'] = hapData[item][0]
     
    23062309                    for bab in ['BabA','BabU']:
    23072310                        hapDict[pfx+bab] = hapData['Babinet'][bab][0]
    2308                         if hapData['Babinet'][bab][1]:
     2311                        if hapData['Babinet'][bab][1] and not hapDict[pfx+'LeBail']:
    23092312                            hapVary.append(pfx+bab)
    23102313                               
     
    23122315                    print >>pFile,'\n Phase: ',phase,' in histogram: ',histogram
    23132316                    print >>pFile,135*'='
    2314                     print >>pFile,' Phase fraction  : %10.4f'%(hapData['Scale'][0]),' Refine?',hapData['Scale'][1]
    2315                     print >>pFile,' Extinction coeff: %10.4f'%(hapData['Extinction'][0]),' Refine?',hapData['Extinction'][1]
    2316                     if hapData['Pref.Ori.'][0] == 'MD':
    2317                         Ax = hapData['Pref.Ori.'][3]
    2318                         print >>pFile,' March-Dollase PO: %10.4f'%(hapData['Pref.Ori.'][1]),' Refine?',hapData['Pref.Ori.'][2], \
    2319                             ' Axis: %d %d %d'%(Ax[0],Ax[1],Ax[2])
    2320                     else: #'SH' for spherical harmonics
    2321                         PrintSHPO(hapData['Pref.Ori.'])
    2322                         print >>pFile,' Penalty hkl list: '+str(controlDict[pfx+'SHhkl'])+' tolerance: %.2f'%(controlDict[pfx+'SHtoler'])
     2317                    if hapDict[pfx+'LeBail']:
     2318                        print >>pFile,' Perform Lebail extraction'                       
     2319                    else:
     2320                        print >>pFile,' Phase fraction  : %10.4f'%(hapData['Scale'][0]),' Refine?',hapData['Scale'][1]
     2321                        print >>pFile,' Extinction coeff: %10.4f'%(hapData['Extinction'][0]),' Refine?',hapData['Extinction'][1]
     2322                        if hapData['Pref.Ori.'][0] == 'MD':
     2323                            Ax = hapData['Pref.Ori.'][3]
     2324                            print >>pFile,' March-Dollase PO: %10.4f'%(hapData['Pref.Ori.'][1]),' Refine?',hapData['Pref.Ori.'][2], \
     2325                                ' Axis: %d %d %d'%(Ax[0],Ax[1],Ax[2])
     2326                        else: #'SH' for spherical harmonics
     2327                            PrintSHPO(hapData['Pref.Ori.'])
     2328                            print >>pFile,' Penalty hkl list: '+str(controlDict[pfx+'SHhkl'])+' tolerance: %.2f'%(controlDict[pfx+'SHtoler'])
    23232329                    PrintSize(hapData['Size'])
    23242330                    PrintMuStrain(hapData['Mustrain'],SGData)
    23252331                    PrintHStrain(hapData['HStrain'],SGData)
    2326                     if Phases[phase]['General']['Type'] != 'magnetic':
     2332                    if Phases[phase]['General']['Type'] != 'magnetic' and not hapDict[pfx+'LeBail']:
    23272333                        if hapData['Babinet']['BabA'][0]:
    23282334                            PrintBabinet(hapData['Babinet'])                       
    2329                 if resetRefList:
     2335                if resetRefList and not hapDict[pfx+'LeBail']:
    23302336                    refList = []
    23312337                    Uniq = []
     
    23432349                                    pos = G2lat.Dsp2pos(inst,d)
    23442350                                    if limits[0] < pos < limits[1]:
    2345                                         refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,0.0, 0.0,0.0,1.0,1.0,1.0])
     2351                                        refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,100., 0.0,0.0,1.0,1.0,1.0])
    23462352                                        #... sig,gam,fotsq,fctsq, phase,icorr,prfo,abs,ext
    23472353                                        Uniq.append(uniq)
     
    23512357                                    if limits[0] < pos < limits[1]:
    23522358                                        wave = inst['difC'][1]*d/(252.816*inst['fltPath'][0])
    2353                                         refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
     2359                                        refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,100., 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
    23542360                                        # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet,wave, prfo,abs,ext
    23552361                                        Uniq.append(uniq)
     
    23672373                                pos = G2lat.Dsp2pos(inst,d)
    23682374                                if limits[0] < pos < limits[1]:
    2369                                     refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,0.0, 0.0,0.0,1.0,1.0,1.0])
     2375                                    refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,100., 0.0,0.0,1.0,1.0,1.0])
    23702376                                    #... sig,gam,fotsq,fctsq, phase,icorr,prfo,abs,ext
    23712377                                    Uniq.append(uniq)
     
    23752381                                if limits[0] < pos < limits[1]:
    23762382                                    wave = inst['difC'][1]*d/(252.816*inst['fltPath'][0])
    2377                                     refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
     2383                                    refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,100., 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
    23782384                                    # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet,wave, prfo,abs,ext
    23792385                                    Uniq.append(uniq)
     
    26682674                wtFrSum[hId] = 0.
    26692675            if 'PWDR' in histogram:
    2670                 for item in ['Scale','Extinction']:
    2671                     hapData[item][0] = parmDict[pfx+item]
    2672                     if pfx+item in sigDict:
    2673                         PhFrExtPOSig.update({pfx+item:sigDict[pfx+item],})
    2674                 wtFrSum[hId] += hapData['Scale'][0]*General['Mass']
    2675                 if hapData['Pref.Ori.'][0] == 'MD':
    2676                     hapData['Pref.Ori.'][1] = parmDict[pfx+'MD']
    2677                     if pfx+'MD' in sigDict:
    2678                         PhFrExtPOSig.update({pfx+'MD':sigDict[pfx+'MD'],})
    2679                 else:                           #'SH' spherical harmonics
    2680                     for item in hapData['Pref.Ori.'][5]:
    2681                         hapData['Pref.Ori.'][5][item] = parmDict[pfx+item]
     2676                if not parmDict[pfx+'LeBail']:
     2677                    for item in ['Scale','Extinction']:
     2678                        hapData[item][0] = parmDict[pfx+item]
    26822679                        if pfx+item in sigDict:
    26832680                            PhFrExtPOSig.update({pfx+item:sigDict[pfx+item],})
     2681                    wtFrSum[hId] += hapData['Scale'][0]*General['Mass']
     2682                    if hapData['Pref.Ori.'][0] == 'MD':
     2683                        hapData['Pref.Ori.'][1] = parmDict[pfx+'MD']
     2684                        if pfx+'MD' in sigDict:
     2685                            PhFrExtPOSig.update({pfx+'MD':sigDict[pfx+'MD'],})
     2686                    else:                           #'SH' spherical harmonics
     2687                        for item in hapData['Pref.Ori.'][5]:
     2688                            hapData['Pref.Ori.'][5][item] = parmDict[pfx+item]
     2689                            if pfx+item in sigDict:
     2690                                PhFrExtPOSig.update({pfx+item:sigDict[pfx+item],})
    26842691                SizeMuStrSig.update({pfx+'Mustrain':[[0,0,0],[0 for i in range(len(hapData['Mustrain'][4]))]],
    26852692                    pfx+'Size':[[0,0,0],[0 for i in range(len(hapData['Size'][4]))]],
     
    27142721                    if pfx+name in sigDict:
    27152722                        SizeMuStrSig[pfx+'HStrain'][name] = sigDict[pfx+name]
    2716                 if Phases[phase]['General']['Type'] != 'magnetic':
     2723                if Phases[phase]['General']['Type'] != 'magnetic' and not parmDict[pfx+'LeBail']:
    27172724                    for name in ['BabA','BabU']:
    27182725                        hapData['Babinet'][name][0] = parmDict[pfx+name]
     
    27762783                    print >>pFile,' Durbin-Watson statistic = %.3f'%(Histogram['Residuals']['Durbin-Watson'])
    27772784                    print >>pFile,' Bragg intensity sum = %.3g'%(Histogram['Residuals'][pfx+'sumInt'])
    2778                
    2779                     if pfx+'Scale' in PhFrExtPOSig:
    2780                         wtFr = hapData['Scale'][0]*General['Mass']/wtFrSum[hId]
    2781                         sigwtFr = PhFrExtPOSig[pfx+'Scale']*wtFr/hapData['Scale'][0]
    2782                         print >>pFile,' Phase fraction  : %10.5f, sig %10.5f Weight fraction  : %8.5f, sig %10.5f' \
    2783                             %(hapData['Scale'][0],PhFrExtPOSig[pfx+'Scale'],wtFr,sigwtFr)
    2784                     if pfx+'Extinction' in PhFrExtPOSig:
    2785                         print >>pFile,' Extinction coeff: %10.4f, sig %10.4f'%(hapData['Extinction'][0],PhFrExtPOSig[pfx+'Extinction'])
    2786                     if hapData['Pref.Ori.'][0] == 'MD':
    2787                         if pfx+'MD' in PhFrExtPOSig:
    2788                             print >>pFile,' March-Dollase PO: %10.4f, sig %10.4f'%(hapData['Pref.Ori.'][1],PhFrExtPOSig[pfx+'MD'])
     2785                   
     2786                    if parmDict[pfx+'LeBail']:
     2787                        print >>pFile,' Performed LeBail extraction for phase '+phase+' in histogram '+histogram
    27892788                    else:
    2790                         PrintSHPOAndSig(pfx,hapData['Pref.Ori.'],PhFrExtPOSig)
     2789                        if pfx+'Scale' in PhFrExtPOSig:
     2790                            wtFr = hapData['Scale'][0]*General['Mass']/wtFrSum[hId]
     2791                            sigwtFr = PhFrExtPOSig[pfx+'Scale']*wtFr/hapData['Scale'][0]
     2792                            print >>pFile,' Phase fraction  : %10.5f, sig %10.5f Weight fraction  : %8.5f, sig %10.5f' \
     2793                                %(hapData['Scale'][0],PhFrExtPOSig[pfx+'Scale'],wtFr,sigwtFr)
     2794                        if pfx+'Extinction' in PhFrExtPOSig:
     2795                            print >>pFile,' Extinction coeff: %10.4f, sig %10.4f'%(hapData['Extinction'][0],PhFrExtPOSig[pfx+'Extinction'])
     2796                        if hapData['Pref.Ori.'][0] == 'MD':
     2797                            if pfx+'MD' in PhFrExtPOSig:
     2798                                print >>pFile,' March-Dollase PO: %10.4f, sig %10.4f'%(hapData['Pref.Ori.'][1],PhFrExtPOSig[pfx+'MD'])
     2799                        else:
     2800                            PrintSHPOAndSig(pfx,hapData['Pref.Ori.'],PhFrExtPOSig)
    27912801                    PrintSizeAndSig(hapData['Size'],SizeMuStrSig[pfx+'Size'])
    27922802                    PrintMuStrainAndSig(hapData['Mustrain'],SizeMuStrSig[pfx+'Mustrain'],SGData)
    27932803                    PrintHStrainAndSig(hapData['HStrain'],SizeMuStrSig[pfx+'HStrain'],SGData)
    2794                     if Phases[phase]['General']['Type'] != 'magnetic':
     2804                    if Phases[phase]['General']['Type'] != 'magnetic' and not parmDict[pfx+'LeBail']:
    27952805                        if len(BabSig):
    27962806                            PrintBabinetAndSig(pfx,hapData['Babinet'],BabSig)
Note: See TracChangeset for help on using the changeset viewer.