MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / compute_gradient

Function compute_gradient

scripts/geodesic.py:85–104  ·  view source on GitHub ↗
(mesh, u)

Source from the content-addressed store, hash-verified

83 return M;
84
85def compute_gradient(mesh, u):
86 area = mesh.get_attribute("face_area").ravel();
87 normal = mesh.get_attribute("face_normal").reshape((-1, 3));
88 edges = mesh.get_attribute("edges").reshape((-1, 3, 3));
89 grad = [];
90
91 for fi,f in enumerate(mesh.faces):
92 A = area[fi];
93 N = normal[fi];
94 e0 = edges[fi, 0];
95 e1 = edges[fi, 1];
96 e2 = edges[fi, 2];
97 u0 = u[f[0]];
98 u1 = u[f[1]];
99 u2 = u[f[2]];
100 grad_u = (np.cross(N, e0) * u2 +
101 np.cross(N, e1) * u0 +
102 np.cross(N, e2) * u1) / (2 * A);
103 grad.append(grad_u);
104 return np.array(grad);
105
106def compute_divergence(mesh, X):
107 cotans = mesh.get_attribute("cotan").reshape((-1, 3));

Callers 1

mainFunction · 0.85

Calls 2

enumerateFunction · 0.85
get_attributeMethod · 0.45

Tested by

no test coverage detected