(mesh, time_step, use_graph_laplacian)
| 26 | return pymesh.form_mesh(vertices, faces); |
| 27 | |
| 28 | def integrate(mesh, time_step, use_graph_laplacian): |
| 29 | assembler = pymesh.Assembler(mesh); |
| 30 | if use_graph_laplacian: |
| 31 | L = -assembler.assemble("graph_laplacian"); |
| 32 | else: |
| 33 | L = assembler.assemble("laplacian"); |
| 34 | M = assembler.assemble("mass"); |
| 35 | |
| 36 | bbox_min, bbox_max = mesh.bbox; |
| 37 | s = np.amax(bbox_max - bbox_min); |
| 38 | |
| 39 | S = M + (time_step * s) * L; |
| 40 | solver = pymesh.SparseSolver.create("SparseLU"); |
| 41 | solver.compute(S); |
| 42 | vertices = solver.solve(M * mesh.vertices); |
| 43 | |
| 44 | return normalize_mesh(vertices, mesh.faces); |
| 45 | |
| 46 | def mean_curvature_flow(mesh, num_itrs=1, time_step=1e-3, |
| 47 | use_graph_laplacian=False): |
no test coverage detected