Changeset 2039


Ignore:
Timestamp:
Nov 2, 2015 3:36:00 PM (6 years ago)
Author:
vondreele
Message:

remove "crenelType" from SS atom data - won't be needed
implement Fourier modulations from cif files for position & Uijs (not Frac yet)

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r2036 r2039  
    11771177################################################################################
    11781178
    1179     SSdefault = {'SS1':{'waveType':'Fourier','crenelType':None,'Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}
     1179    SSdefault = {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}
    11801180    def FillAtomsGrid(Atoms):
    11811181        '''Display the contents of the Atoms tab
  • trunk/imports/G2phase.py

    r2038 r2039  
    465465            S1T = list(S1[60:63])
    466466            waveType = waveTypes[int(S1T[1])]
    467             crenelType = ''
    468467            Spos = []
    469468            Sadp = []
     
    492491                    if int(S1T[0]):  #"", "Legendre" or "Xharm" in 18:27 for "crenel"!
    493492                        waveType = 'Crenel/Fourier' #all waves 'Fourier' no other choice
    494                         crenelType = FS[18:27]
    495493                Sfrac.append(file2.readline()[:18]) #if not crenel = Osin & Ocos
    496494                # else Osin & Ocos except last one is X40 = 'Center'
     
    516514                print Sfrac[i]
    517515            for i,it in enumerate(Spos):
    518                 if waveType in ['ZigZag','Sawtooth'] and not i:
     516                if waveType in ['Sawtooth',] and not i:
    519517                    vals = [float(it[:9]),float(it[9:18]),float(it[18:27]),float(it[27:36])]
    520518                else:
     
    533531            Atom.append([])
    534532            Atom.append([])
    535             Atom.append({'SS1':{'waveType':waveType,'crenelType':crenelType,'Sfrac':Sfrac,'Spos':Spos,'Sadp':Sadp,'Smag':Smag}})    #SS2 is for (3+2), etc.
     533            Atom.append({'SS1':{'waveType':waveType,'Sfrac':Sfrac,'Spos':Spos,'Sadp':Sadp,'Smag':Smag}})    #SS2 is for (3+2), etc.
    536534            Atoms.append(Atom)
    537535        file2.close()
  • trunk/imports/G2phase_CIF.py

    r2038 r2039  
    183183                    anisokeys = []
    184184                    anisolabels = []
     185                if Super:
     186                    occFloop = None
     187                    occCloop = None
     188                    occFdict = {}
     189                    cooCdict = {}
     190                    displSloop = None
     191                    displFloop = None
     192                    dispSdict = {}
     193                    dispFdict = {}
     194                    UijFloop = None
     195                    UijFdict = {}
     196                    if blk.get('_atom_site_occ_Fourier_atom_site_label'):
     197                        occFloop = blk.GetLoop('_atom_site_occ_Fourier_atom_site_label')
     198                        occFdict = dict(occFloop.items())
     199                    if blk.get('_atom_site_occ_special_func_atom_site_label'):  #Crenel (i.e. Block Wave) occ
     200                        occCloop = blk.GetLoop('_atom_site_occ_special_func_atom_site_label')
     201                        occCdict = dict(occCloop.items())
     202                    if blk.get('_atom_site_displace_Fourier_atom_site_label'):
     203                        displFloop = blk.GetLoop('_atom_site_displace_Fourier_atom_site_label')
     204                        displFdict = dict(displFloop.items())                           
     205                    if blk.get('_atom_site_displace_special_func_atom_site_label'): #sawtooth
     206                        displSloop = blk.GetLoop('_atom_site_displace_special_func_atom_site_label')
     207                        displSdict = dict(displSloop.items())
     208                    if blk.get('_atom_site_U_Fourier_atom_site_label'):
     209                        UijFloop = blk.GetLoop('_atom_site_U_Fourier_atom_site_label')
     210                        UijFdict = dict(UijFloop.items())
    185211                self.Phase['Atoms'] = []
    186212                G2AtomDict = {  '_atom_site_type_symbol' : 1,
     
    196222                                '_atom_site_aniso_u_13' : 15,
    197223                                '_atom_site_aniso_u_23' : 16, }
    198                 G2SSAtomDict = {'_atom_site_occ_Fourier_wave_vector_seq_id' : 1,
    199                                 '_atom_site_occ_Fourier_param_cos' : 2,
    200                                 '_atom_site_occ_Fourier_param_sin' : 3,
    201                                 '_atom_site_displace_Fourier_axis' : 2,
    202                                 '_atom_site_displace_Fourier_wave_vector_seq_id' : 3,
    203                                 '_atom_site_displace_Fourier_param_cos' : 5,
    204                                 '_atom_site_displace_Fourier_param_sin' : 4,
    205                                 '_atom_site_U_Fourier_tens_elem' : 7,
    206                                 '_atom_site_U_Fourier_wave_vector_seq_id' : 8,
    207                                 '_atom_site_U_Fourier_param_cos' : 9,
    208                                 '_atom_site_U_Fourier_param_sin' : 10,  }
    209 
    210                                    
    211224
    212225                ranIdlookup = {}
     
    253266                    else:
    254267                        atomlbllist.append(atomlist[0])
     268                    if Super:
     269                        Sfrac = []
     270                        Sadp = []                     
     271                        Spos = np.zeros((4,6))
     272                        nim = -1
     273                        for i,item in enumerate(displFdict['_atom_site_displace_Fourier_atom_site_label']):
     274                            if item == atomlist[0]:
     275                                waveType = 'Fourier'                               
     276                                ix = ['x','y','z'].index(displFdict['_atom_site_displace_Fourier_axis'][i])
     277                                im = int(displFdict['_atom_site_displace_Fourier_wave_vector_seq_id'][i])
     278                                if im != nim:
     279                                    nim = im
     280                                val = displFdict['_atom_site_displace_Fourier_param_sin'][i]
     281                                Spos[im-1][ix] = cif.get_number_with_esd(val)[0]
     282                                val = displFdict['_atom_site_displace_Fourier_param_cos'][i]
     283                                Spos[im-1][ix+3] = cif.get_number_with_esd(val)[0]
     284                        if nim >= 0:
     285                            Spos = [[spos,False] for spos in Spos[:nim]]
     286                        else:
     287                            Spos = []
     288                        if UijFdict:
     289                            nim = -1
     290                            Sadp = np.zeros((4,12))
     291                            for i,item in enumerate(UijFdict['_atom_site_U_Fourier_atom_site_label']):
     292                                if item == atomlist[0]:
     293                                    ix = ['U11','U22','U33','U12','U13','U23'].index(UijFdict['_atom_site_U_Fourier_tens_elem'][i])
     294                                    im = int(UijFdict['_atom_site_U_Fourier_wave_vector_seq_id'][i])
     295                                    if im != nim:
     296                                        nim = im
     297                                    val = UijFdict['_atom_site_U_Fourier_param_sin'][i]
     298                                    Sadp[im-1][ix] = cif.get_number_with_esd(val)[0]
     299                                    val = UijFdict['_atom_site_U_Fourier_param_cos'][i]
     300                                    Sadp[im-1][ix+6] = cif.get_number_with_esd(val)[0]
     301                            if nim >= 0:
     302                                Sadp = [[sadp,False] for sadp in Sadp[:nim]]
     303                            else:
     304                                Sadp = []
     305                       
     306                        SSdict = {'SS1':{'waveType':waveType,'Sfrac':Sfrac,'Spos':Spos,'Sadp':Sadp,'Smag':[]}}
     307                        atomlist.append(SSdict)
    255308                if len(atomlbllist) != len(self.Phase['Atoms']):
    256309                    self.isodistort_warnings += '\nRepeated atom labels prevents ISODISTORT decode'
Note: See TracChangeset for help on using the changeset viewer.