Changeset 5520 for trunk/GSASIIstrIO.py


Ignore:
Timestamp:
Mar 23, 2023 1:03:34 PM (2 years ago)
Author:
vondreele
Message:

New version of spinning RBs - radius is now a parameter of each shell. all appear to work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/GSASIIstrIO.py

    r5513 r5520  
    10591059        pFile.write('Spinning RB name: %s atom type: %s, no.atoms: %d, No. times used: %d\n'%
    10601060            (RBModel['RBname'],RBModel['atType'],RBModel['Natoms'],RBModel['useCount']))
    1061         for i in WriteSpnRBModel(RBModel):
    1062             pFile.write(i)
    10631061
    10641062    def PrintResRBModel(RBModel):
     
    10831081        for irb,item in enumerate(rbIds['Spin']):
    10841082            if rigidbodyDict['Spin'][item]['useCount']:
    1085                 RBradius = rigidbodyDict['Spin'][item]['radius']
    1086                 pid = '::RBS;0:'+str(irb)
    1087                 rbDict[pid] = RBradius[0]
    1088                 if RBradius[1]:
    1089                     rbVary.append(pid)
    10901083                if Print:
    10911084                    pFile.write('\nSpinning rigid body model:\n')
     
    11321125        pFile.write(sigstr+'\n')
    11331126
    1134     def PrintRBSpnandSig(SpinRB,SpinSig):
    1135         pFile.write('\n Spinning radius for %s:\n'%SpinRB['RBname'])
    1136         namstr = '  names :'
    1137         valstr = '  values:'
    1138         sigstr = '  esds  :'
    1139         for i,[val,sig] in enumerate(zip(SpinRB['radius'],SpinSig)):
    1140             namstr += '%12s'%('Spin '+str(i))
    1141             valstr += '%12.4f'%(val)
    1142             if sig:
    1143                 sigstr += '%12.4f'%(sig)
    1144             else:
    1145                 sigstr += 12*' '
    1146         pFile.write(namstr+'\n')
    1147         pFile.write(valstr+'\n')
    1148         pFile.write(sigstr+'\n')       
    1149        
    11501127    RBIds = rigidbodyDict.get('RBIds',{'Vector':[],'Residue':[],'Spin':[]})  #these are lists of rbIds
    1151     if not RBIds['Vector'] and not RBIds['Spin']:
     1128    if not RBIds['Vector']:
    11521129        return
    11531130    for irb,item in enumerate(RBIds['Vector']):
     
    11601137                    VectSig.append(sigDict[name])
    11611138            PrintRBVectandSig(rigidbodyDict['Vector'][item],VectSig)   
    1162     for irb,item in enumerate(RBIds['Spin']):
    1163         if rigidbodyDict['Spin'][item]['useCount']:
    1164             SpinSig = []
    1165             name = '::RBS;'+str(0)+':'+str(irb)
    1166             if name in sigDict:
    1167                 SpinSig.append(sigDict[name])
    1168                
    1169            
    1170             PrintRBSpnandSig(rigidbodyDict['Spin'][item],SpinSig)   
    11711139       
    11721140################################################################################
     
    13431311                        iFin = min(iBeg+6,nCoeff)
    13441312                        for block in range(nBlock):
    1345                             ptlbls = ' names :'
    1346                             ptstr =  ' values:'
    1347                             ptref =  ' refine:'
     1313                            if not block:
     1314                                ptlbls = ' names :%12s'%'Radius'
     1315                                ptstr =  ' values:%12.4f'%RB['Radius'][ish][0]
     1316                                ptref =  ' refine:%12s'%RB['Radius'][ish][1]                               
     1317                            else:
     1318                                ptlbls = ' names :'
     1319                                ptstr =  ' values:'
     1320                                ptref =  ' refine:'
    13481321                            for item in SHkeys[iBeg:iFin]:
    13491322                                ptlbls += '%12s'%(item)
     
    15921565                continue
    15931566            rbid = str(rbids.index(RB['RBId'][ish]))
     1567            name = '%sRBSSh;%d;Radius:%s:%s'%(pfx,ish,iAt,rbid)
     1568            phaseDict[name] = RB['Radius'][ish][0]
     1569            if RB['Radius'][ish][1]:
     1570                phaseVary += [name,]
    15941571            pfxRB = '%sRBSSh;%d;'%(pfx,ish)
    15951572            for i,shcof in enumerate(Shcof):
     
    25692546                        jrb = SRBIds.index(RBObj['RBId'][ish])  #spin rb no.
    25702547                        rbsx = ':%d:%d'%(iAt,jrb)
    2571                         pFile.write(' Spin rigid body parameters:\n')
    2572                         PrintRBObjPOAndSig('RBS',rbsx)
     2548                        pFile.write(' Spin rigid body parameters for at. no. %d; shell %d:\n'%(iAt,ish))
     2549                        if not ish:
     2550                            PrintRBObjPOAndSig('RBS',rbsx[1:])  #skip leading ':'
    25732551                        PrintRBObjSHCAndSig('RBSSh;%d;'%ish,RBObj['SHC'][ish],rbsx)
    25742552            atomsSig = {}
     
    42024180        if name in sigDict:
    42034181            sigstr += '%12.4f'%(sigDict[name])
     4182        else:
     4183            sigstr += 12*' '
    42044184    out.append(namstr+'\n')
    42054185    out.append(valstr+'\n')
     
    42124192    '''
    42134193    out = []
    4214     namstr = '  names :'
    4215     valstr = '  values:'
     4194    name = pfx+rbfx+'Radius'+rbsx
     4195    namstr = '  names :%12s'%'Radius'
     4196    valstr = '  values:%12.4f'%parmDict[name]
    42164197    sigstr = '  esds  :'
     4198    if name in sigDict:
     4199        sigstr += '%12.4f'%sigDict[name]
     4200        [name]
     4201    else:
     4202        sigstr += 12*' '
    42174203    out.append(' Sp.harm.:\n')
    42184204    for item in SHC:
     
    42224208        if name in sigDict:
    42234209            sigstr += '%12.4f'%(sigDict[name])
     4210        else:
     4211            sigstr += 12*' '
    42244212    out.append(namstr+'\n')
    42254213    out.append(valstr+'\n')
    42264214    out.append(sigstr+'\n')
    4227     return out
    4228 
    4229 def WriteSpnRBModel(RBModel,sigDict={},irb=None):
    4230     '''Write description of a spinning rigid body. Code here to make usable from G2export_CIF
    4231     '''
    4232     out = ' Radius: %10.3f refine? %s\n'%(RBModel['radius'][0],RBModel['radius'][1])   
    42334215    return out
    42344216
Note: See TracChangeset for help on using the changeset viewer.