Ignore:
Timestamp:
Apr 17, 2015 11:50:01 AM (7 years ago)
Author:
vondreele
Message:

remove Exceptions from seqRefine; now returns & makes Message dialog
make histograms go in order of tree items not random dict order
make sph. harm. stuff work on arrays of hkl - speed up of texture calculations
implement selected copy for Data parameters (phase fraction, etc.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIlattice.py

    r1773 r1792  
    970970    Laue = SGData['SGLaue']
    971971    Naxis = SGData['SGUniq']
    972     DH = np.inner(H,np.inner(G,H))
     972    if len(H.shape) == 1:
     973        DH = np.inner(H,np.inner(G,H))
     974    else:
     975        DH = np.array([np.inner(h,np.inner(G,h)) for h in H])
    973976    if Laue == '2/m':
    974977        if Naxis == 'a':
     
    984987        DR = np.inner(H4,np.inner(G,H4))
    985988        DHR = np.inner(H,np.inner(G,H4))
    986        
    987989    else:
    988990        DR = np.inner(H3,np.inner(G,H3))
     
    991993    phi = np.where(DHR <= 1.0,acosd(DHR),0.0)
    992994    if Laue == '-1':
    993         BA = H[1]*a/(b-H[0]*cosd(ga))
    994         BB = H[0]*sind(ga)**2
     995        BA = H.T[1]*a/(b-H.T[0]*cosd(ga))
     996        BB = H.T[0]*sind(ga)**2
    995997    elif Laue == '2/m':
    996998        if Naxis == 'a':
    997             BA = H[2]*b/(c-H[1]*cosd(al))
    998             BB = H[1]*sind(al)**2
     999            BA = H.T[2]*b/(c-H.T[1]*cosd(al))
     1000            BB = H.T[1]*sind(al)**2
    9991001        elif Naxis == 'b':
    1000             BA = H[0]*c/(a-H[2]*cosd(be))
    1001             BB = H[2]*sind(be)**2
     1002            BA = H.T[0]*c/(a-H.T[2]*cosd(be))
     1003            BB = H.T[2]*sind(be)**2
    10021004        else:
    1003             BA = H[1]*a/(b-H[0]*cosd(ga))
    1004             BB = H[0]*sind(ga)**2
     1005            BA = H.T[1]*a/(b-H.T[0]*cosd(ga))
     1006            BB = H.T[0]*sind(ga)**2
    10051007    elif Laue in ['mmm','4/m','4/mmm']:
    1006         BA = H[1]*a
    1007         BB = H[0]*b
    1008    
     1008        BA = H.T[1]*a
     1009        BB = H.T[0]*b
    10091010    elif Laue in ['3R','3mR']:
    1010         BA = H[0]+H[1]-2.0*H[2]
    1011         BB = SQ3*(H[0]-H[1])
     1011        BA = H.T[0]+H.T[1]-2.0*H.T[2]
     1012        BB = SQ3*(H.T[0]-H.T[1])
    10121013    elif Laue in ['m3','m3m']:
    1013         BA = H[1]
    1014         BB = H[0]
     1014        BA = H.T[1]
     1015        BB = H.T[0]
    10151016    else:
    1016         BA = H[0]+2.0*H[1]
    1017         BB = SQ3*H[0]
     1017        BA = H.T[0]+2.0*H.T[1]
     1018        BB = SQ3*H.T[0]
    10181019    beta = atan2d(BA,BB)
    10191020    return phi,beta
     
    10621063   
    10631064    BD = 1.0-BC**2
    1064     if BD > 1.e-6:
    1065         C = rpd/math.sqrt(BD)
    1066     else:
    1067         C = 0.
     1065    C = np.where(BD>1.e-6,rpd/np.sqrt(BD),0.)
    10681066    dPSdA = [-C*(-BC1*SSomeg*SCchi-BC2*SSomeg*SSchi-BC3*SComeg),
    10691067        -C*(-BC1*SComeg*SSchi+BC2*SComeg*SCchi),
     
    10841082    dBBdF = BC1*SComeg-BC3*SSomeg*SCchi
    10851083   
    1086     if BD > 1.e-6:
    1087         dGMdA = [(BA*dBBdO-BB*dBAdO)/BD,(BA*dBBdC-BB*dBAdC)/BD,(BA*dBBdF-BB*dBAdF)/BD]
    1088     else:
    1089         dGMdA = [0.0,0.0,0.0]
    1090 
     1084    dGMdA = np.where(BD > 1.e-6,[(BA*dBBdO-BB*dBAdO)/BD,(BA*dBBdC-BB*dBAdC)/BD, \
     1085        (BA*dBBdF-BB*dBAdF)/BD],[np.zeros_like(BD),np.zeros_like(BD),np.zeros_like(BD)])
    10911086       
    10921087    return psi,gam,dPSdA,dGMdA
     
    11341129    import pytexture as ptx
    11351130    if SGLaue in ['m3','m3m']:
    1136         Kcl = 0.0
     1131        if phi.shape:
     1132            Kcl = np.zeros_like(phi)
     1133        else:
     1134            Kcl = 0.
    11371135        for j in range(0,L+1,4):
    11381136            im = j/4+1
    1139             pcrs,dum = ptx.pyplmpsi(L,j,1,phi)
     1137            if phi.shape:
     1138                pcrs = np.array([ptx.pyplmpsi(L,j,1,p)[0] for p in phi]).flatten()
     1139            else:
     1140                pcrs,dum = ptx.pyplmpsi(L,j,1,phi)
    11401141            Kcl += BOH['L='+str(L)][N-1][im-1]*pcrs*cosd(j*beta)       
    11411142    else:
    1142         pcrs,dum = ptx.pyplmpsi(L,N,1,phi)
     1143        if phi.shape:
     1144            pcrs = np.array([ptx.pyplmpsi(L,N,1,p)[0] for p in phi]).flatten()
     1145        else:
     1146            pcrs,dum = ptx.pyplmpsi(L,N,1,phi)
    11431147        pcrs *= RSQ2PI
    11441148        if N:
     
    11591163    'needs doc string'
    11601164    import pytexture as ptx
    1161     psrs,dpdps = ptx.pyplmpsi(L,M,1,psi)
     1165    if psi.shape:
     1166        psrs = np.array([ptx.pyplmpsi(L,M,1,p) for p in psi])
     1167        psrs,dpdps = np.reshape(psrs.flatten(),(-1,2)).T
     1168    else:
     1169        psrs,dpdps = ptx.pyplmpsi(L,M,1,psi)
    11621170    psrs *= RSQ2PI
    11631171    dpdps *= RSQ2PI
Note: See TracChangeset for help on using the changeset viewer.