mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-27 22:38:37 +08:00
61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
from numpy import *
|
|
from utils import diff
|
|
|
|
#function[t1x,t1y,t1z,t2x,t2y,t2z,t3x,t3y,t3z,normt1,normt2,normt3] = getEdgeTangent(X,Y,Z)
|
|
#%[t1x,t1y,t1z,t2x,t2y,t2z,t3x,t3y,t3z,normt1,normt2,normt3] = getEdgeTangent(X,Y,Z)
|
|
#%
|
|
#% node(i,j,k+1) ------ edgt2(i,j,k+1) ----- node(i,j+1,k+1)
|
|
#% / /
|
|
#% / / |
|
|
#% edgt3(i,j,k) fact1(i,j,k) edgt3(i,j+1,k)
|
|
#% / / |
|
|
#% / / |
|
|
#% node(i,j,k) ------ edgt2(i,j,k) ----- node(i,j+1,k)
|
|
#% | | |
|
|
#% | | node(i+1,j+1,k+1)
|
|
#% | | /
|
|
#% edgt1(i,j,k) fact3(i,j,k) edgt1(i,j+1.k)
|
|
#% | | /
|
|
#% | | /
|
|
#% | |/
|
|
#% node(i+1,j,k) ------ edgt2(i+1,j,k) ----- node(i+1,j+1,k)
|
|
|
|
|
|
def getEdgeTangent(X, Y, Z):
|
|
|
|
t1x = diff(X, 1)
|
|
t1y = diff(Y, 1)
|
|
t1z = diff(Z, 1)
|
|
|
|
normt1 = sqrt(t1x**2+t1y**2+t1z**2)
|
|
t1x = t1x/normt1
|
|
t1y = t1y/normt1
|
|
t1z = t1z/normt1
|
|
|
|
t2x = diff(X, 2)
|
|
t2y = diff(Y, 2)
|
|
t2z = diff(Z, 2)
|
|
normt2 = sqrt(t2x**2 + t2y**2 + t2z**2)
|
|
t2x = t2x/normt2
|
|
t2y = t2y/normt2
|
|
t2z = t2z/normt2
|
|
|
|
t3x = diff(X, 3)
|
|
t3y = diff(Y, 3)
|
|
t3z = diff(Z, 3)
|
|
normt3 = sqrt(t3x**2+t3y**2+t3z**2)
|
|
t3x = t3x/normt3
|
|
t3y = t3y/normt3
|
|
t3z = t3z/normt3
|
|
|
|
# print t3x
|
|
|
|
return (t1x, t1y, t1z, t2x, t2y, t2z, t3x, t3y, t3z, normt1, normt2, normt3)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
X, Y, Z = mgrid[0:4, 0:5, 0:6]
|
|
|
|
t = getEdgeTangent(X, Y, Z)
|