Changeset 1935
- Timestamp:
- Jul 20, 2015 9:25:46 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIImath.py
r1930 r1935 421 421 Oatom = GetAtomsById(Atoms,AtLookUp,[AddHydId[0],])[0] 422 422 OXYZ = np.array(Oatom[cx:cx+3]) 423 if 'I' in Oatom[cia]: 424 Uiso = Oatom[cia+1] 425 else: 426 Uiso = (Oatom[cia+2]+Oatom[cia+3]+Oatom[cia+4])/3.0 #simple average 427 Uiso = max(Uiso,0.005) #set floor! 423 428 Tatoms = GetAtomsById(Atoms,AtLookUp,AddHydId[1]) 424 429 TXYZ = np.array([tatom[cx:cx+3] for tatom in Tatoms]) #3 x xyz … … 431 436 Len = np.sqrt(np.sum(Vec**2)) 432 437 Hpos = OXYZ-0.98*np.inner(Bmat,Vec).T/Len 433 return [Hpos,] 438 HU = 1.1*Uiso 439 return [Hpos,],[HU,] 434 440 elif AddHydId[-1] == 2: 435 441 Vec = np.inner(Amat,TXYZ-OXYZ).T … … 442 448 Hpos = np.array([[-0.97*cosd(54.75),0.97*sind(54.75),0.], 443 449 [-0.97*cosd(54.75),-0.97*sind(54.75),0.]]) 450 HU = 1.2*Uiso*np.ones(2) 444 451 Hpos = np.inner(Bmat,np.inner(iMat,Hpos).T).T+OXYZ 445 return Hpos 452 return Hpos,HU 446 453 else: 447 454 Ratom = GetAtomsById(Atoms,AtLookUp,[AddHydId[2],])[0] … … 452 459 Hpos = np.array([[a,0.,-b],[a,-b*cosd(30.),0.5*b],[a,b*cosd(30.),0.5*b]]) 453 460 Hpos = np.inner(Bmat,np.inner(iMat,Hpos).T).T+OXYZ 454 return Hpos 461 HU = 1.5*Uiso*np.ones(3) 462 return Hpos,HU 455 463 elif nBonds == 3: 456 464 if AddHydId[-1] == 1: … … 459 467 Vec = -0.93*Vec/Len 460 468 Hpos = OXYZ+Vec 461 return [Hpos,] 469 HU = 1.1*Uiso 470 return [Hpos,],[HU,] 462 471 elif AddHydId[-1] == 2: 463 472 Ratom = GetAtomsById(Atoms,AtLookUp,[AddHydId[2],])[0] … … 468 477 Hpos = [[a,b,0],[a,-b,0]] 469 478 Hpos = np.inner(Bmat,np.inner(iMat,Hpos).T).T+OXYZ 470 return Hpos 479 HU = 1.2*Uiso*np.ones(2) 480 return Hpos,HU 471 481 else: #2 bonds 472 482 if 'C' in Oatom[ct]: … … 475 485 Vec = -0.93*Vec/Len 476 486 Hpos = OXYZ+Vec 477 return [Hpos,] 487 HU = 1.1*Uiso 488 return [Hpos,],[HU,] 478 489 elif 'O' in Oatom[ct]: 479 490 mapData = General['Map'] … … 488 499 Rhos = np.array([getRho(pos,mapData) for pos in Hpos]) 489 500 imax = np.argmax(Rhos) 490 return [Hpos[imax],] 491 return [] 501 HU = 1.5*Uiso 502 return [Hpos[imax],],[HU,] 503 return [],[] 492 504 493 505 def AtomUij2TLS(atomData,atPtrs,Amat,Bmat,rbObj): #unfinished & not used -
trunk/GSASIIphsGUI.py
r1933 r1935 157 157 generalData['4DmapData'] = mapDefault.copy() 158 158 generalData['4DmapData'].update({'MapType':'Fobs'}) 159 if 'HydIds' not in generalData: 160 generalData['HydIds'] = {} 159 161 # end of patches 160 162 cx,ct,cs,cia = generalData['AtomPtrs'] … … 1188 1190 else: #'A' --> 'I' 1189 1191 Uij = atomData[r][ui:ui+6] 1190 Uiso = (Uij[0]+Uij[1]+Uij[2])/3.0 1192 Uiso = (Uij[0]+Uij[1]+Uij[2])/3.0 1191 1193 atomData[r][us] = Uiso 1192 1194 Atoms.SetCellStyle(r,us,WHITE,False) … … 1600 1602 mapError = True 1601 1603 continue 1602 Hxyz = G2mth.AddHydrogens(AtLookUp,generalData,atomData,AddHydIds[ineigh])1604 Hxyz,HU = G2mth.AddHydrogens(AtLookUp,generalData,atomData,AddHydIds[ineigh]) 1603 1605 for iX,X in enumerate(Hxyz): 1604 1606 Nat += 1 1605 1607 AtomAdd(X[0],X[1],X[2],'H','H(%d)'%(Nat)) 1608 data['Atoms'][-1][cia+1] = HU[iX] 1606 1609 Id = data['Atoms'][-1][cia+8] 1607 1610 HydIds[Id] = [iX,AddHydIds[ineigh]] … … 1609 1612 G2frame.ErrorDialog('Add H atom error','Adding O-H atoms requires delt-F map') 1610 1613 SetupGeneral() 1611 data['General']['HydIds'] = HydIds1614 data['General']['HydIds'].update(HydIds) 1612 1615 G2frame.dataFrame.AtomEdit.Enable(G2gd.wxID_UPDATEHATOM,True) 1613 1616 FillAtomsGrid(Atoms) … … 1624 1627 AtLookUp = G2mth.FillAtomLookUp(atomData,cia+8) 1625 1628 HydIds = data['General']['HydIds'] 1629 delList = [] 1626 1630 for HId in HydIds: 1627 1631 hydIds = HydIds[HId] 1628 1632 num = hydIds[0] 1629 Hxyz = G2mth.AddHydrogens(AtLookUp,generalData,atomData,hydIds[1])1633 Hxyz,HU = G2mth.AddHydrogens(AtLookUp,generalData,atomData,hydIds[1]) 1630 1634 try: 1631 1635 data['Atoms'][AtLookUp[HId]][cx:cx+3] = Hxyz[num] 1636 data['Atoms'][-1][cia+1] = HU[num] 1632 1637 except KeyError: 1633 Error += 'Hydrogen atom not in atom list - ignored\n'1638 delList.append(HId) 1634 1639 continue 1640 for HId in delList: #clear out deleted H-atoms 1641 del HydIds[HId] 1635 1642 data['Drawing']['Atoms'] = [] 1636 1643 UpdateDrawAtoms() 1637 1644 FillAtomsGrid(Atoms) 1638 1645 G2plt.PlotStructure(G2frame,data) 1639 if Error:1640 wx.MessageBox(Error,caption=' H atom update Error',style=wx.ICON_EXCLAMATION)1641 1646 1642 1647 def OnAtomMove(event):
Note: See TracChangeset
for help on using the changeset viewer.