예제 #1
0
def dRdn(p,theta):
    px,py,pz = p
    dRij = num.zeros([3,3,3])
    def perm_loop1(i1,i2,i3,n):
        ret = 0
        for i in range(3):
            for j in range(3):
                ret+=perm(i1,i,i3)*perm(i,i2,j)*n[j]
        return ret
    
    def perm_loop2(i1,i2,i3,n):
        ret = 0
        for i in range(3):
            for j in range(3):
                ret+=perm(i1,i,j)*n[j]*perm(i,i2,i3)
        return ret
    
    for i in range(3):
        for m in range(3):
            for l in range(3):
                dRij[i,m,l]=-perm(i,m,l)*sin(theta) + (perm_loop1(i,m,l,p) + perm_loop2(i,m,l,p))*(1-cos(theta))
    return dRij
예제 #2
0
 def perm_loop2(i1,i2,i3,n):
     ret = 0
     for i in range(3):
         for j in range(3):
             ret+=perm(i1,i,j)*n[j]*perm(i,i2,i3)
     return ret