Changeset 3850
- Timestamp:
- Mar 11, 2019 3:36:11 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIImath.py
r3848 r3850 1364 1364 if nWaves: 1365 1365 modind = np.arange(nWaves)+1. 1366 MmodA = np.sum(Bm[:,nxs,:,:]*np.cos(twopi*XYZ[:,:,nxs,:]*modind[nxs,nxs,:,nxs]*modQ[nxs,nxs,nxs,:]),axis=2) #natm,Nops,Mxyz 1367 MmodB = np.sum(Am[:,nxs,:,:]*np.sin(twopi*XYZ[:,:,nxs,:]*modind[nxs,nxs,:,nxs]*modQ[nxs,nxs,nxs,:]),axis=2) 1366 phase = twopi*XYZ[:,:,nxs,:]*modind[nxs,nxs,:,nxs]*modQ[nxs,nxs,nxs,:] 1367 MmodA = np.sum(Bm[:,nxs,:,:]*np.cos(phase),axis=2) #natm,Nops,Mxyz 1368 MmodB = np.sum(Am[:,nxs,:,:]*np.sin(phase),axis=2) 1368 1369 return np.swapaxes(MmodA,0,1),np.swapaxes(MmodB,0,1) #Nops,Natm,Mxyz 1369 1370 -
trunk/GSASIIphsGUI.py
r3848 r3850 3165 3165 if data['General']['Type'] == 'magnetic': 3166 3166 Elem = 'Fe' 3167 AtomAdd(0 ,0,0,El=Elem)3167 AtomAdd(0.,0.,0.,El=Elem) 3168 3168 FillAtomsGrid(Atoms) 3169 3169 event.StopPropagation() … … 3180 3180 AtomAdd(x,y,z,El=Elem) 3181 3181 except: 3182 AtomAdd(0 ,0,0,El=Elem)3182 AtomAdd(0.,0.,0.,El=Elem) 3183 3183 FillAtomsGrid(Atoms) 3184 3184 event.StopPropagation() … … 3220 3220 indx = GetSelectedAtoms() 3221 3221 for a in reversed(sorted(indx)): 3222 AtomInsert(a,0 ,0,0)3222 AtomInsert(a,0.,0.,0.) 3223 3223 event.StopPropagation() 3224 3224 FillAtomsGrid(Atoms) … … 3444 3444 atId = ran.randint(0,sys.maxsize) 3445 3445 if generalData['Type'] == 'macromolecular': 3446 atomData.insert(indx,[0,Name,'',Name,El,'',x,y,z,1 ,Sytsym,Mult,'I',0.10,0,0,0,0,0,0,atId])3446 atomData.insert(indx,[0,Name,'',Name,El,'',x,y,z,1.,Sytsym,Mult,'I',0.10,0,0,0,0,0,0,atId]) 3447 3447 elif generalData['Type'] in ['nuclear','faulted',]: 3448 3448 if generalData['Modulated']: 3449 atomData.insert(indx,[Name,El,'',x,y,z,1,Sytsym,Mult,0 ,'I',0.01,0,0,0,0,0,0,atId,[],[],3449 atomData.insert(indx,[Name,El,'',x,y,z,1,Sytsym,Mult,0.,'I',0.01,0,0,0,0,0,0,atId,[],[], 3450 3450 {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}]) 3451 3451 else: 3452 atomData.insert(indx,[Name,El,'',x,y,z,1 ,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId])3452 atomData.insert(indx,[Name,El,'',x,y,z,1.,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId]) 3453 3453 SetupGeneral() 3454 3454 elif generalData['Type'] == 'magnetic': 3455 3455 if generalData['Modulated']: 3456 atomData.insert(indx,[Name,El,'',x,y,z,1 ,0.,0.,0.,Sytsym,Mult,0,'I',0.01,0,0,0,0,0,0,atId,[],[],3456 atomData.insert(indx,[Name,El,'',x,y,z,1.,0.,0.,0.,Sytsym,Mult,0,'I',0.01,0,0,0,0,0,0,atId,[],[], 3457 3457 {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}]) 3458 3458 else: 3459 atomData.insert(indx,[Name,El,'',x,y,z,1 ,0.,0.,0.,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId])3459 atomData.insert(indx,[Name,El,'',x,y,z,1.,0.,0.,0.,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId]) 3460 3460 data['Drawing']['Atoms'] = [] 3461 3461 UpdateDrawAtoms() -
trunk/GSASIIstrMath.py
r3848 r3850 1515 1515 GSdata = SGData['MagMom'][nxs,:,nxs]*GSdata #flip vectors according to spin flip * det(opM) 1516 1516 GSdata = np.swapaxes(GSdata,0,1) #Nop,Natm,Mxyz 1517 GSdata = np.inner(GSdata,uAmat.T) 1517 GSdata = np.inner(GSdata,uAmat.T) #--> cartesian 1518 1518 1519 1519 mXYZ = np.array([[xyz[0] for xyz in list(G2spc.GenAtom(xyz,SGData,All=True,Move=True))] for xyz in (Xdata+dXdata).T])%1. #Natn,Nop,xyz 1520 MmodA,MmodB = G2mth.MagMod(mXYZ,modQ,MSSdata) #Re cos/Im sin,Nops,Natm,Mxyz 1521 MmodA = np.inner(MmodA,uAmat.T) #make cartesian 1522 MmodB = np.inner(MmodB,uAmat.T) 1520 # MmodA,MmodB = G2mth.MagMod(mXYZ,modQ,MSSdata) #Re cos/Im sin,Nops,Natm,Mxyz 1521 # MmodA = np.inner(MmodA,uAmat.T)*SGData['SpnFlp'] #make cartesian 1522 # MmodB = np.inner(MmodB,uAmat.T)*SGData['SpnFlp'] 1523 MmodA = np.array(MSSdata[3:]).T #cos Natm,Nwave,Mxyz 1524 MmodB = np.array(MSSdata[:3]).T #sin 1523 1525 1524 1526 … … 1553 1555 while iBeg < nRef: 1554 1556 iFin = min(iBeg+blkSize,nRef) 1557 mRef = iFin-iBeg 1555 1558 refl = refDict['RefList'][iBeg:iFin] #array(blkSize,nItems) 1556 1559 H = refl.T[:4] #array(blkSize,4) … … 1595 1598 TMcorr = 0.539*(np.reshape(Tiso,Tuij.shape)*Tuij)[:,0,:]*Fdata*Mdata*MF/(2*Nops) #Nref,Natm 1596 1599 1597 HM = np.inner(Bmat,HP.T) #put into cartesian space 1598 HM = HM/np.sqrt(np.sum(HM**2,axis=0)) #Gdata = MAGS & HM = UVEC in magstrfc.for both OK 1600 HM = np.inner(Bmat,HP.T) #put into cartesian space 1601 HM = HM/np.sqrt(np.sum(HM**2,axis=0)) #& normalize 1602 #for fixed moments --> m=0 reflections 1603 fam0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*cosm[:,:,:,nxs] #Nref,Nops,Natm,Mxyz 1604 fbm0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*sinm[:,:,:,nxs] 1599 1605 1600 fam0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*cosm[:,:,:,nxs] #Nref,Nops,Natm,Mxyz 1601 fbm0 = TMcorr[:,nxs,:,nxs]*GSdata[nxs,:,:,:]*sinm[:,:,:,nxs] 1602 1603 fam = TMcorr[:,nxs,:,nxs]*SGData['SpnFlp'][nxs,:,nxs,nxs]*(MmodA[nxs,:,:,:]*cosm[:,:,:,nxs]-np.sign(H[3])[:,nxs,nxs,nxs]*MmodB[nxs,:,:,:]*sinm[:,:,:,nxs])/2. 1604 fbm = TMcorr[:,nxs,:,nxs]*SGData['SpnFlp'][nxs,:,nxs,nxs]*(MmodA[nxs,:,:,:]*sinm[:,:,:,nxs]+np.sign(H[3])[:,nxs,nxs,nxs]*MmodB[nxs,:,:,:]*cosm[:,:,:,nxs])/2. 1606 famq0 = np.sum(np.sum(fam0,axis=-2),axis=-2) #Nref,Mxyz; sum ops & atoms 1607 fbmq0 = np.sum(np.sum(fbm0,axis=-2),axis=-2) 1608 1609 fas0 = np.sum(famq0,axis=-1)**2-np.sum(HM.T*famq0,axis=-1)**2 #mag intensity calc F^2-(e.F)^2 1610 fbs0 = np.sum(fbmq0,axis=-1)**2-np.sum(HM.T*fbmq0,axis=-1)**2 1611 #for modulated moments --> m != 0 reflections 1612 M = np.array(np.abs(H[3]),dtype=np.int)-1 1613 fam = TMcorr[:,nxs,:,nxs]*np.array([np.where(M[i]>=0,(MmodA[nxs,:,M[i],:]*cosm[i,:,:,nxs]-np.sign(H[3])[i,nxs,nxs,nxs]*MmodB[nxs,:,M[i],:]*sinm[i,:,:,nxs]),0.) for i in range(mRef)]) 1614 fbm = TMcorr[:,nxs,:,nxs]*np.array([np.where(M[i]>=0,(MmodA[nxs,:,M[i],:]*sinm[i,:,:,nxs]+np.sign(H[3])[i,nxs,nxs,nxs]*MmodB[nxs,:,M[i],:]*cosm[i,:,:,nxs]),0.) for i in range(mRef)]) 1605 1615 1606 1616 famq = np.sum(np.sum(fam,axis=-2),axis=-2) #Nref,Mxyz; sum ops & atoms 1607 1617 fbmq = np.sum(np.sum(fbm,axis=-2),axis=-2) 1608 1618 1609 famq0 = np.sum(np.sum(fam0,axis=-2),axis=-2)1610 fbmq0 = np.sum(np.sum(fbm0,axis=-2),axis=-2)1611 1612 1619 fas = np.sum(famq,axis=-1)**2-np.sum(HM.T*famq,axis=-1)**2 #mag intensity calc F^2-(e.F)^2 1613 1620 fbs = np.sum(fbmq,axis=-1)**2-np.sum(HM.T*fbmq,axis=-1)**2 1614 1621 1615 fas0 = np.sum(famq0,axis=-1)**2-np.sum(HM.T*famq0,axis=-1)**21616 fbs0 = np.sum(fbmq0,axis=-1)**2-np.sum(HM.T*fbmq0,axis=-1)**21617 1618 1622 refl.T[10] = np.where(H[3],fas+fbs,fas0+fbs0) 1619 1623 refl.T[11] = np.where(H[3],atan2d(fas,fbs),atan2d(fas0,fbs0))
Note: See TracChangeset
for help on using the changeset viewer.