Changeset 1595 for trunk/GSASIIstrIO.py


Ignore:
Timestamp:
Dec 4, 2014 4:07:45 PM (7 years ago)
Author:
vondreele
Message:

change ValEsd? to round at 3.16228 =sqrt(10); same as old GSAS
add mod. Vector names to list
begin Pawley refinement for super structures - use an offset to allow shift in refl values due to extra index.
allow cell refinement from index peaks & entered cell parameters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstrIO.py

    r1594 r1595  
    973973        if cell[0]:
    974974            phaseVary += cellVary(pfx,SGData)
     975        SSGtext = []    #no superstructure
     976        im = 0
    975977        if General['Type'] in ['modulated','magnetic']:
     978            im = 1      #refl offset
    976979            Vec,vRef,maxH = General['SuperVec']
    977980            phaseDict.update({pfx+'mV0':Vec[0],pfx+'mV1':Vec[1],pfx+'mV2':Vec[2]})
     
    10801083                PrintBLtable(BLtable)
    10811084                print >>pFile,''
    1082                 for line in SGtext: print >>pFile,line
    1083                 if len(SGtable):
    1084                     for item in SGtable:
    1085                         line = ' %s '%(item)
    1086                         print >>pFile,line   
     1085                if len(SSGtext):    #if superstructure
     1086                    for line in SSGtext: print >>pFile,line
     1087                    if len(SSGtable):
     1088                        for item in SSGtable:
     1089                            line = ' %s '%(item)
     1090                            print >>pFile,line   
     1091                    else:
     1092                        print >>pFile,' ( 1)    %s'%(SSGtable[0])
    10871093                else:
    1088                     print >>pFile,' ( 1)    %s'%(SGtable[0])
     1094                    for line in SGtext: print >>pFile,line
     1095                    if len(SGtable):
     1096                        for item in SGtable:
     1097                            line = ' %s '%(item)
     1098                            print >>pFile,line   
     1099                    else:
     1100                        print >>pFile,' ( 1)    %s'%(SGtable[0])
    10891101                PrintRBObjects(resRBData,vecRBData)
    10901102                PrintAtoms(General,Atoms)
    1091                 print >>pFile,'\n Unit cell: a =','%.5f'%(cell[1]),' b =','%.5f'%(cell[2]),' c =','%.5f'%(cell[3]), \
    1092                     ' alpha =','%.3f'%(cell[4]),' beta =','%.3f'%(cell[5]),' gamma =', \
    1093                     '%.3f'%(cell[6]),' volume =','%.3f'%(cell[7]),' Refine?',cell[0]
     1103                print >>pFile,'\n Unit cell: a = %.5f'%(cell[1]),' b = %.5f'%(cell[2]),' c = %.5f'%(cell[3]), \
     1104                    ' alpha = %.3f'%(cell[4]),' beta = %.3f'%(cell[5]),' gamma = %.3f'%(cell[6]), \
     1105                    ' volume = %.3f'%(cell[7]),' Refine?',cell[0]
     1106                if len(SSGtext):    #if superstructure
     1107                    print >>pFile,'\n Modulation vector: mV0 = %.4f'%(Vec[0]),' mV1 = %.4f'%(Vec[1]),   \
     1108                        ' mV2 = %.4f'%(Vec[2]),' max mod. index = %d'%(maxH),' Refine?',vRef
    10941109                PrintTexture(textureData)
    10951110                if name in RestraintDict:
     
    10981113                   
    10991114        elif PawleyRef:
     1115            if Print:
     1116                print >>pFile,'\n Phase name: ',General['Name']
     1117                print >>pFile,135*'-'
     1118                print >>pFile,''
     1119                if len(SSGtext):    #if superstructure
     1120                    for line in SSGtext: print >>pFile,line
     1121                    if len(SSGtable):
     1122                        for item in SSGtable:
     1123                            line = ' %s '%(item)
     1124                            print >>pFile,line   
     1125                    else:
     1126                        print >>pFile,' ( 1)    %s'%(SSGtable[0])
     1127                else:
     1128                    for line in SGtext: print >>pFile,line
     1129                    if len(SGtable):
     1130                        for item in SGtable:
     1131                            line = ' %s '%(item)
     1132                            print >>pFile,line   
     1133                    else:
     1134                        print >>pFile,' ( 1)    %s'%(SGtable[0])
     1135                print >>pFile,'\n Unit cell: a = %.5f'%(cell[1]),' b = %.5f'%(cell[2]),' c = %.5f'%(cell[3]), \
     1136                    ' alpha = %.3f'%(cell[4]),' beta = %.3f'%(cell[5]),' gamma = %.3f'%(cell[6]), \
     1137                    ' volume = %.3f'%(cell[7]),' Refine?',cell[0]
     1138                if len(SSGtext):    #if superstructure
     1139                    print >>pFile,'\n Modulation vector: mV0 = %.4f'%(Vec[0]),' mV1 = %.4f'%(Vec[1]),   \
     1140                        ' mV2 = %.4f'%(Vec[2]),' max mod. index = %d'%(maxH),' Refine?',vRef
    11001141            pawleyVary = []
    11011142            for i,refl in enumerate(PawleyRef):
    1102                 phaseDict[pfx+'PWLref:'+str(i)] = refl[6]
    1103                 pawleyLookup[pfx+'%d,%d,%d'%(refl[0],refl[1],refl[2])] = i
    1104                 if refl[5]:
     1143                phaseDict[pfx+'PWLref:'+str(i)] = refl[6+im]
     1144                if im:
     1145                    pawleyLookup[pfx+'%d,%d,%d,%d'%(refl[0],refl[1],refl[2],refl[3])] = i
     1146                else:
     1147                    pawleyLookup[pfx+'%d,%d,%d'%(refl[0],refl[1],refl[2])] = i
     1148                if refl[5+im]:
    11051149                    pawleyVary.append(pfx+'PWLref:'+str(i))
    11061150            GetPawleyConstr(SGData['SGLaue'],PawleyRef,pawleyVary)      #does G2mv.StoreEquivalence
     
    15521596            print >>pFile,ptstr
    15531597            print >>pFile,sigstr
     1598        ik = 6  #for Pawley stuff below
     1599        if General['Type'] in ['modulated','magnetic']:
     1600            ik = 7
     1601            Vec,vRef,maxH = General['SuperVec']
     1602            if vRef:
     1603                print >>pFile,' New modulation vector:'
     1604                namstr = '  names :'
     1605                ptstr =  '  values:'
     1606                sigstr = '  esds  :'
     1607                for var in ['mV0','mV1','mV2']:
     1608                    namstr += '%12s'%(pfx+var)
     1609                    ptstr += '%12.4f'%(parmDict[pfx+var])
     1610                    if pfx+var in sigDict:
     1611                        sigstr += '%12.4f'%(sigDict[pfx+var])
     1612                    else:
     1613                        sigstr += 12*' '
     1614                print >>pFile,namstr
     1615                print >>pFile,ptstr
     1616                print >>pFile,sigstr
    15541617           
    15551618        General['Mass'] = 0.
     
    15581621            for i,refl in enumerate(pawleyRef):
    15591622                key = pfx+'PWLref:'+str(i)
    1560                 refl[6] = parmDict[key]
     1623                refl[ik] = parmDict[key]
    15611624                if key in sigDict:
    1562                     refl[7] = sigDict[key]
     1625                    refl[ik+1] = sigDict[key]
    15631626                else:
    1564                     refl[7] = 0
     1627                    refl[ik+1] = 0
    15651628        else:
    15661629            VRBIds = RBIds['Vector']
     
    17431806        cell = Phases[phase]['General']['Cell'][1:7]
    17441807        A = G2lat.cell2A(cell)
     1808        if Phases[phase]['General']['Type'] in ['modulated','magnetic']:
     1809            SSGData = Phases[phase]['General']['SSGData']
     1810            Vec,x,maxH = Phases[phase]['General']['SuperVec']
    17451811        pId = Phases[phase]['pId']
    17461812        histoList = HistoPhase.keys()
     
    18401906                    PrintHStrain(hapData['HStrain'],SGData)
    18411907                    if hapData['Babinet']['BabA'][0]:
    1842                         PrintBabinet(hapData['Babinet'])
    1843                 HKLd = np.array(G2lat.GenHLaue(dmin,SGData,A))  #+DIJS
     1908                        PrintBabinet(hapData['Babinet'])                       
     1909                if Phases[phase]['General']['Type'] in ['modulated','magnetic']:
     1910                    HKLd = G2lat.GenSSHLaue(dmin,SGData,SSGData,Vec,maxH,A)
     1911                else:
     1912                    HKLd = np.array(G2lat.GenHLaue(dmin,SGData,A))
    18441913                if resetRefList:
    18451914                    refList = []
    18461915                    Uniq = []
    18471916                    Phi = []
    1848                     for h,k,l,d in HKLd:
    1849                         ext,mul,uniq,phi = G2spc.GenHKLf([h,k,l],SGData)
    1850                         mul *= 2      # for powder overlap of Friedel pairs
    1851                         if ext:
    1852                             continue
    1853                         if 'C' in inst['Type'][0]:
    1854                             pos = 2.0*asind(wave/(2.0*d))+Zero
    1855                             if limits[0] < pos < limits[1]:
    1856                                 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])
    1857                                 #... sig,gam,fotsq,fctsq, phase,icorr,prfo,abs,ext
    1858                                 Uniq.append(uniq)
    1859                                 Phi.append(phi)
    1860                         elif 'T' in inst['Type'][0]:
    1861                             pos = inst['difC'][1]*d+inst['difA'][1]*d**2+inst['difB'][1]/d+Zero
    1862                             if limits[0] < pos < limits[1]:
    1863                                 wave = inst['difC'][1]*d/(252.816*inst['fltPath'][0])
    1864                                 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])
    1865                                 # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet,wave, prfo,abs,ext
    1866                                 Uniq.append(uniq)
    1867                                 Phi.append(phi)
     1917                    if Phases[phase]['General']['Type'] in ['modulated','magnetic']:
     1918                        for h,k,l,m,d in HKLd:
     1919                            ext,mul,uniq,phi = G2spc.GenHKLf([h,k,l],SGData)    #is this right for SS refl.??
     1920                            mul *= 2      # for powder overlap of Friedel pairs
     1921                            if m or not ext:
     1922                                if 'C' in inst['Type'][0]:
     1923                                    pos = G2lat.Dsp2pos(inst,d)
     1924                                    if limits[0] < pos < limits[1]:
     1925                                        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])
     1926                                        #... sig,gam,fotsq,fctsq, phase,icorr,prfo,abs,ext
     1927                                        Uniq.append(uniq)
     1928                                        Phi.append(phi)
     1929                                elif 'T' in inst['Type'][0]:
     1930                                    pos = G2lat.Dsp2pos(inst,d)
     1931                                    if limits[0] < pos < limits[1]:
     1932                                        wave = inst['difC'][1]*d/(252.816*inst['fltPath'][0])
     1933                                        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])
     1934                                        # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet,wave, prfo,abs,ext
     1935                                        Uniq.append(uniq)
     1936                                        Phi.append(phi)
     1937                    else:
     1938                        for h,k,l,d in HKLd:
     1939                            ext,mul,uniq,phi = G2spc.GenHKLf([h,k,l],SGData)
     1940                            mul *= 2      # for powder overlap of Friedel pairs
     1941                            if ext:
     1942                                continue
     1943                            if 'C' in inst['Type'][0]:
     1944                                pos = G2lat.Dsp2pos(inst,d)
     1945                                if limits[0] < pos < limits[1]:
     1946                                    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])
     1947                                    #... sig,gam,fotsq,fctsq, phase,icorr,prfo,abs,ext
     1948                                    Uniq.append(uniq)
     1949                                    Phi.append(phi)
     1950                            elif 'T' in inst['Type'][0]:
     1951                                pos = G2lat.Dsp2pos(inst,d)
     1952                                if limits[0] < pos < limits[1]:
     1953                                    wave = inst['difC'][1]*d/(252.816*inst['fltPath'][0])
     1954                                    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])
     1955                                    # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet,wave, prfo,abs,ext
     1956                                    Uniq.append(uniq)
     1957                                    Phi.append(phi)
    18681958                    Histogram['Reflection Lists'][phase] = {'RefList':np.array(refList),'FF':{},'Type':inst['Type'][0]}
    18691959            elif 'HKLF' in histogram:
Note: See TracChangeset for help on using the changeset viewer.