Changeset 934 for trunk/GSASIImath.py
- Timestamp:
- May 28, 2013 4:29:16 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIImath.py
r915 r934 282 282 XYZ[i] = np.inner(Bmat,X)+RBObj['Orig'][0] 283 283 return XYZ,Cart 284 285 def UpdateMCSAxyz(Bmat,mcsaModels,RBData): 286 xyz = [] 287 atTypes = [] 288 iatm = 0 289 for model in mcsaModels[1:]: #skip the MD model 290 if model['Type'] == 'Atom': 291 xyz.append(model['Pos'][0]) 292 atTypes.append(model['atType']) 293 iatm += 1 294 else: 295 rideList = [] 296 RBRes = RBData[model['Type']][model['RBId']] 297 Pos = np.array(model['Pos'][0]) 298 Qori = np.array(model['Ori'][0]) 299 if model['Type'] == 'Vector': 300 vecs = RBRes['rbVect'] 301 mags = RBRes['VectMag'] 302 Cart = np.zeros_like(vecs[0]) 303 for vec,mag in zip(vecs,mags): 304 Cart += vec*mag 305 elif model['Type'] == 'Residue': 306 Cart = np.array(RBRes['rbXYZ']) 307 for itor,seq in enumerate(RBRes['rbSeq']): 308 QuatA = AVdeg2Q(model['Tor'][0][itor],Cart[seq[0]]-Cart[seq[1]]) 309 for ride in seq[3]: 310 Cart[ride] = prodQVQ(QuatA,Cart[ride]-Cart[seq[1]])+Cart[seq[1]] 311 rideList += seq[3] 312 centList = set(range(len(Cart)))-set(rideList) 313 if model['MolCent']: 314 cent = np.zeros(3) 315 for i in centList: 316 cent += Cart[i] 317 Cart -= cent/len(centList) 318 for i,x in enumerate(Cart): 319 xyz.append(np.inner(Bmat,prodQVQ(Qori,x))+Pos) 320 atType = RBRes['rbTypes'][i] 321 atTypes.append(atType) 322 iatm += 1 323 return np.array(xyz),atTypes 284 324 285 325 def UpdateRBUIJ(Bmat,Cart,RBObj): … … 1360 1400 XY = [pos,0,mag,1,alp,0,bet,0,sig,0,gam,0] 1361 1401 return XY 1402 1403 def mcsaSearch(data,reflType,reflData,covData,pgbar): 1404 generalData = data['General'] 1405 mcsaControls = generalData['MCSA controls'] 1406 reflName = mcsaData['Data source'] 1407 phaseName = generalData['Name'] 1408 MCSAObjs = data['MCSAModels'] 1409 1410 # = {'':'','Annealing':[50.0,0.001,0.90,1000], 1411 # 'dmin':2.0,'Algolrithm':'Normal','Jump coeff':[0.95,0.5]} #'Normal','Random jump','Tremayne jump' 1412 1413 return {} 1414 1362 1415 1363 1416 def getWave(Parms): … … 1440 1493 V /= d 1441 1494 else: 1442 return [0.,0.,0.,1.] #identity1495 V = np.array([0.,0.,1.]) 1443 1496 p = A/2. 1444 1497 Q[0] = np.cos(p) … … 1455 1508 V /= d 1456 1509 else: 1457 return [0.,0.,0.,1.] #identity1510 V = np.array([0.,0.,1.]) 1458 1511 p = A/2. 1459 1512 Q[0] = cosd(p) … … 1467 1520 A = 2.*acosd(Q[0]) 1468 1521 V = np.array(Q[1:]) 1469 if nl.norm(Q[1:]): 1470 V = Q[1:]/nl.norm(Q[1:]) 1522 d = np.sqrt(np.sum(V**2)) 1523 if d: 1524 V /= d 1471 1525 else: 1472 1526 A = 0. 1473 V = np.array([0.,0., 1.])1527 V = np.array([0.,0.,0.]) 1474 1528 return A,V 1475 1529 … … 1480 1534 A = 2.*np.arccos(Q[0]) 1481 1535 V = np.array(Q[1:]) 1482 if nl.norm(Q[1:]): 1483 V = Q[1:]/nl.norm(Q[1:]) 1536 d = np.sqrt(np.sum(V**2)) 1537 if d: 1538 V /= d 1484 1539 else: 1485 1540 A = 0. 1486 V = np.array([0.,0., 1.])1541 V = np.array([0.,0.,0.]) 1487 1542 return A,V 1488 1543
Note: See TracChangeset
for help on using the changeset viewer.