Changeset 1604 for trunk/GSASIIstrIO.py


Ignore:
Timestamp:
Dec 11, 2014 3:27:57 PM (7 years ago)
Author:
vondreele
Message:

make modulation wave maps
fix atom index bugs
begin modulated structure imput to least squares

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstrIO.py

    r1597 r1604  
    963963        BLtables.update(BLtable)
    964964        Atoms = PhaseData[name]['Atoms']
    965         AtLookup = G2mth.FillAtomLookUp(Atoms)
     965        if Atoms and not General.get('doPawley'):
     966            cx,ct,cs,cia = General['AtomPtrs']
     967            AtLookup = G2mth.FillAtomLookUp(Atoms,cia+8)
    966968        PawleyRef = PhaseData[name].get('Pawley ref',[])
    967969        SGData = General['SGData']
     
    10011003        if Atoms and not General.get('doPawley'):
    10021004            cx,ct,cs,cia = General['AtomPtrs']
    1003             if General['Type'] in ['nuclear','macromolecular']:
    1004                 Natoms[pfx] = len(Atoms)
    1005                 for i,at in enumerate(Atoms):
    1006                     atomIndx[at[-1]] = [pfx,i]      #lookup table for restraints
    1007                     phaseDict.update({pfx+'Atype:'+str(i):at[ct],pfx+'Afrac:'+str(i):at[cx+3],pfx+'Amul:'+str(i):at[cs+1],
    1008                         pfx+'Ax:'+str(i):at[cx],pfx+'Ay:'+str(i):at[cx+1],pfx+'Az:'+str(i):at[cx+2],
    1009                         pfx+'dAx:'+str(i):0.,pfx+'dAy:'+str(i):0.,pfx+'dAz:'+str(i):0.,         #refined shifts for x,y,z
    1010                         pfx+'AI/A:'+str(i):at[cia],})
     1005            Natoms[pfx] = len(Atoms)
     1006            for i,at in enumerate(Atoms):
     1007                atomIndx[at[cia+8]] = [pfx,i]      #lookup table for restraints
     1008                phaseDict.update({pfx+'Atype:'+str(i):at[ct],pfx+'Afrac:'+str(i):at[cx+3],pfx+'Amul:'+str(i):at[cs+1],
     1009                    pfx+'Ax:'+str(i):at[cx],pfx+'Ay:'+str(i):at[cx+1],pfx+'Az:'+str(i):at[cx+2],
     1010                    pfx+'dAx:'+str(i):0.,pfx+'dAy:'+str(i):0.,pfx+'dAz:'+str(i):0.,         #refined shifts for x,y,z
     1011                    pfx+'AI/A:'+str(i):at[cia],})
     1012                if at[cia] == 'I':
     1013                    phaseDict[pfx+'AUiso:'+str(i)] = at[cia+1]
     1014                else:
     1015                    phaseDict.update({pfx+'AU11:'+str(i):at[cia+2],pfx+'AU22:'+str(i):at[cia+3],pfx+'AU33:'+str(i):at[cia+4],
     1016                        pfx+'AU12:'+str(i):at[cia+5],pfx+'AU13:'+str(i):at[cia+6],pfx+'AU23:'+str(i):at[cia+7]})
     1017                if 'F' in at[ct+1]:
     1018                    phaseVary.append(pfx+'Afrac:'+str(i))
     1019                if 'X' in at[ct+1]:
     1020                    try:    #patch for sytsym name changes
     1021                        xId,xCoef = G2spc.GetCSxinel(at[cs])
     1022                    except KeyError:
     1023                        Sytsym = G2spc.SytSym(at[cx:cx+3],SGData)[0]
     1024                        at[cs] = Sytsym
     1025                        xId,xCoef = G2spc.GetCSxinel(at[cs])
     1026                    xId,xCoef = G2spc.GetCSxinel(at[cs])
     1027                    names = [pfx+'dAx:'+str(i),pfx+'dAy:'+str(i),pfx+'dAz:'+str(i)]
     1028                    equivs = [[],[],[]]
     1029                    for j in range(3):
     1030                        if xId[j] > 0:                               
     1031                            phaseVary.append(names[j])
     1032                            equivs[xId[j]-1].append([names[j],xCoef[j]])
     1033                    for equiv in equivs:
     1034                        if len(equiv) > 1:
     1035                            name = equiv[0][0]
     1036                            coef = equiv[0][1]
     1037                            for eqv in equiv[1:]:
     1038                                eqv[1] /= coef
     1039                                G2mv.StoreEquivalence(name,(eqv,))
     1040                if 'U' in at[ct+1]:
    10111041                    if at[cia] == 'I':
    1012                         phaseDict[pfx+'AUiso:'+str(i)] = at[cia+1]
     1042                        phaseVary.append(pfx+'AUiso:'+str(i))
    10131043                    else:
    1014                         phaseDict.update({pfx+'AU11:'+str(i):at[cia+2],pfx+'AU22:'+str(i):at[cia+3],pfx+'AU33:'+str(i):at[cia+4],
    1015                             pfx+'AU12:'+str(i):at[cia+5],pfx+'AU13:'+str(i):at[cia+6],pfx+'AU23:'+str(i):at[cia+7]})
    1016                     if 'F' in at[ct+1]:
    1017                         phaseVary.append(pfx+'Afrac:'+str(i))
    1018                     if 'X' in at[ct+1]:
    10191044                        try:    #patch for sytsym name changes
    1020                             xId,xCoef = G2spc.GetCSxinel(at[cs])
     1045                            uId,uCoef = G2spc.GetCSuinel(at[cs])[:2]
    10211046                        except KeyError:
    10221047                            Sytsym = G2spc.SytSym(at[cx:cx+3],SGData)[0]
    10231048                            at[cs] = Sytsym
    1024                             xId,xCoef = G2spc.GetCSxinel(at[cs])
    1025                         xId,xCoef = G2spc.GetCSxinel(at[cs])
    1026                         names = [pfx+'dAx:'+str(i),pfx+'dAy:'+str(i),pfx+'dAz:'+str(i)]
    1027                         equivs = [[],[],[]]
    1028                         for j in range(3):
    1029                             if xId[j] > 0:                               
     1049                            uId,uCoef = G2spc.GetCSuinel(at[cs])[:2]
     1050                        uId,uCoef = G2spc.GetCSuinel(at[cs])[:2]
     1051                        names = [pfx+'AU11:'+str(i),pfx+'AU22:'+str(i),pfx+'AU33:'+str(i),
     1052                            pfx+'AU12:'+str(i),pfx+'AU13:'+str(i),pfx+'AU23:'+str(i)]
     1053                        equivs = [[],[],[],[],[],[]]
     1054                        for j in range(6):
     1055                            if uId[j] > 0:                               
    10301056                                phaseVary.append(names[j])
    1031                                 equivs[xId[j]-1].append([names[j],xCoef[j]])
     1057                                equivs[uId[j]-1].append([names[j],uCoef[j]])
    10321058                        for equiv in equivs:
    10331059                            if len(equiv) > 1:
     
    10361062                                for eqv in equiv[1:]:
    10371063                                    eqv[1] /= coef
    1038                                     G2mv.StoreEquivalence(name,(eqv,))
    1039                     if 'U' in at[ct+1]:
    1040                         if at[cia] == 'I':
    1041                             phaseVary.append(pfx+'AUiso:'+str(i))
    1042                         else:
    1043                             try:    #patch for sytsym name changes
    1044                                 uId,uCoef = G2spc.GetCSuinel(at[cs])[:2]
    1045                             except KeyError:
    1046                                 Sytsym = G2spc.SytSym(at[cx:cx+3],SGData)[0]
    1047                                 at[cs] = Sytsym
    1048                                 uId,uCoef = G2spc.GetCSuinel(at[cs])[:2]
    1049                             uId,uCoef = G2spc.GetCSuinel(at[cs])[:2]
    1050                             names = [pfx+'AU11:'+str(i),pfx+'AU22:'+str(i),pfx+'AU33:'+str(i),
    1051                                 pfx+'AU12:'+str(i),pfx+'AU13:'+str(i),pfx+'AU23:'+str(i)]
    1052                             equivs = [[],[],[],[],[],[]]
    1053                             for j in range(6):
    1054                                 if uId[j] > 0:                               
    1055                                     phaseVary.append(names[j])
    1056                                     equivs[uId[j]-1].append([names[j],uCoef[j]])
    1057                             for equiv in equivs:
    1058                                 if len(equiv) > 1:
    1059                                     name = equiv[0][0]
    1060                                     coef = equiv[0][1]
    1061                                     for eqv in equiv[1:]:
    1062                                         eqv[1] /= coef
    1063                                     G2mv.StoreEquivalence(name,equiv[1:])
    1064 #            elif General['Type'] == 'magnetic':
    1065 #            elif General['Type'] == 'macromolecular':
     1064                                G2mv.StoreEquivalence(name,equiv[1:])
     1065                if General['Type'] in ['modulated','magnetic']:
     1066                    AtomSS = at[-1]['SS1']
     1067                    print AtomSS
    10661068            textureData = General['SH Texture']
    10671069            if textureData['Order']:
     
    15551557        SGData = General['SGData']
    15561558        Atoms = Phase['Atoms']
    1557         AtLookup = G2mth.FillAtomLookUp(Atoms)
     1559        if Atoms and not General.get('doPawley'):
     1560            cx,ct,cs,cia = General['AtomPtrs']
     1561            AtLookup = G2mth.FillAtomLookUp(Atoms,cia+8)
    15581562        cell = General['Cell']
    15591563        pId = Phase['pId']
Note: See TracChangeset for help on using the changeset viewer.