Changeset 3434
- Timestamp:
- Jun 13, 2018 5:48:33 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIImath.py
r3423 r3434 191 191 nfev += 1 192 192 chisq1 = np.sum(M2**2) 193 if chisq1 > chisq0*(1.+chitol): #TODO put Alan Coehlo's criteria for lambda here 193 if chisq1 > chisq0*(1.+chitol): #TODO put Alan Coehlo's criteria for lambda here? 194 194 lam *= 10. 195 195 if Print: … … 223 223 try: 224 224 Bmat,Nzero = pinv(Amatlam,xtol) #Moore-Penrose inversion (via SVD) & count of zeros 225 # if Print:226 225 if Print: print ('Found %d SVD zeros'%(Nzero)) 227 # Bmat = nl.inv(Amatlam); Nzeros = 0228 226 Bmat = Bmat/Anorm 229 227 return [x0,Bmat,{'num cyc':icycle,'fvec':M,'nfev':nfev,'lamMax':lamMax,'psing':[],'SVD0':Nzero,'Converged': ifConverged, 'DelChi2':deltaChi2}] -
trunk/GSASIIspc.py
r3433 r3434 1910 1910 phi = f[:Nuniq] 1911 1911 return iabsnt,mulp,Uniq,phi 1912 1913 #def MagHKLchk(HKL,SGData):1914 # SpnFlp = SGData['SpnFlp']1915 # print(HKL)1916 # Uniq = GenHKL(HKL,SGData)1917 1912 1918 1913 def checkSSLaue(HKL,SGData,SSGData): … … 1964 1959 1965 1960 def checkHKLextc(HKL,SGData): 1961 ''' 1962 Checks if reflection extinct 1963 1964 :param HKL: [h,k,l] 1965 :param SGData: space group data obtained from SpcGroup 1966 :returns: False if extinct; True if allowed 1967 1968 ''' 1966 1969 Ops = SGData['SGOps'] 1967 1970 OpM = np.array([op[0] for op in Ops]) … … 1979 1982 1980 1983 def checkMagextc(HKL,SGData): 1984 ''' 1985 Checks if reflection magnetically extinct; 1986 uses algorthm from Gallego, et al., J. Appl. Cryst. 45, 1236-1247 (2012) 1987 1988 :param HKL: [h,k,l] 1989 :param SGData: space group data obtained from SpcGroup; must have magnetic symmetry SpnFlp data 1990 :returns: False if magnetically extinct; True if allowed 1991 1992 ''' 1981 1993 Ops = SGData['SGOps'] 1994 Ncen = len(SGData['SGCen']) 1982 1995 OpM = np.array([op[0] for op in Ops]) 1983 1996 OpT = np.array([op[1] for op in Ops]) … … 1985 1998 OpM = np.vstack((OpM,-OpM)) 1986 1999 OpT = np.vstack((OpT,-OpT))%1. 2000 OpM = np.reshape(np.array(list(OpM)*Ncen),(-1,3,3)) 2001 OpT = np.reshape(np.array([OpT+cen for cen in SGData['SGCen']]),(-1,3)) 1987 2002 Spn = SGData['SpnFlp'][:len(OpM)] 1988 2003 Mag = np.array([nl.det(opm) for opm in OpM])*Spn 1989 2004 DHKL = np.reshape(np.inner(HKL,OpM),(-1,3)) 1990 PHKL = np.reshape(np.cos(twopi*np.inner(HKL,OpT))*Mag,(-1,))[:,nxs,nxs]*OpM 1991 Ftest = np.random.rand(3) 2005 PHKL = np.reshape(np.cos(twopi*np.inner(HKL,OpT))*Mag,(-1,))[:,nxs,nxs]*OpM #compute T(R,theta) eq(7) 2006 Ftest = np.random.rand(3) #random magnetic moment 1992 2007 Psum = np.zeros(3) 2008 nsum = 0. 2009 nA = 0 1993 2010 for dhkl,phkl in zip(DHKL,PHKL): 1994 if not np.allclose(dhkl,HKL): 2011 if not np.allclose(dhkl,HKL): #test for eq(5) 1995 2012 continue 1996 2013 else: 1997 Psum += np.inner(Ftest,phkl) 2014 nA += 1 2015 nsum += np.trace(phkl) #eq(8) 2016 pterm = np.inner(Ftest,phkl) #eq(9) 2017 Psum += pterm 2018 if nsum/nA > 1.: #only need to look at nA=1 frok eq(8) 2019 return True 1998 2020 if np.allclose(Psum,np.zeros(3)): 1999 2021 return False
Note: See TracChangeset
for help on using the changeset viewer.