warp-lang 1.9.1__py3-none-win_amd64.whl → 1.10.0rc2__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of warp-lang might be problematic. Click here for more details.
- warp/__init__.py +301 -287
- warp/__init__.pyi +794 -305
- warp/_src/__init__.py +14 -0
- warp/_src/autograd.py +1075 -0
- warp/_src/build.py +618 -0
- warp/_src/build_dll.py +640 -0
- warp/{builtins.py → _src/builtins.py} +1382 -377
- warp/_src/codegen.py +4359 -0
- warp/{config.py → _src/config.py} +178 -169
- warp/_src/constants.py +57 -0
- warp/_src/context.py +8294 -0
- warp/_src/dlpack.py +462 -0
- warp/_src/fabric.py +355 -0
- warp/_src/fem/__init__.py +14 -0
- warp/_src/fem/adaptivity.py +508 -0
- warp/_src/fem/cache.py +687 -0
- warp/_src/fem/dirichlet.py +188 -0
- warp/{fem → _src/fem}/domain.py +40 -30
- warp/_src/fem/field/__init__.py +131 -0
- warp/_src/fem/field/field.py +701 -0
- warp/{fem → _src/fem}/field/nodal_field.py +30 -15
- warp/{fem → _src/fem}/field/restriction.py +1 -1
- warp/{fem → _src/fem}/field/virtual.py +53 -27
- warp/_src/fem/geometry/__init__.py +32 -0
- warp/{fem → _src/fem}/geometry/adaptive_nanogrid.py +77 -163
- warp/_src/fem/geometry/closest_point.py +97 -0
- warp/{fem → _src/fem}/geometry/deformed_geometry.py +14 -22
- warp/{fem → _src/fem}/geometry/element.py +32 -10
- warp/{fem → _src/fem}/geometry/geometry.py +48 -20
- warp/{fem → _src/fem}/geometry/grid_2d.py +12 -23
- warp/{fem → _src/fem}/geometry/grid_3d.py +12 -23
- warp/{fem → _src/fem}/geometry/hexmesh.py +40 -63
- warp/{fem → _src/fem}/geometry/nanogrid.py +255 -248
- warp/{fem → _src/fem}/geometry/partition.py +121 -63
- warp/{fem → _src/fem}/geometry/quadmesh.py +26 -45
- warp/{fem → _src/fem}/geometry/tetmesh.py +40 -63
- warp/{fem → _src/fem}/geometry/trimesh.py +26 -45
- warp/{fem → _src/fem}/integrate.py +164 -158
- warp/_src/fem/linalg.py +383 -0
- warp/_src/fem/operator.py +396 -0
- warp/_src/fem/polynomial.py +229 -0
- warp/{fem → _src/fem}/quadrature/pic_quadrature.py +15 -20
- warp/{fem → _src/fem}/quadrature/quadrature.py +95 -47
- warp/_src/fem/space/__init__.py +248 -0
- warp/{fem → _src/fem}/space/basis_function_space.py +20 -11
- warp/_src/fem/space/basis_space.py +679 -0
- warp/{fem → _src/fem}/space/dof_mapper.py +3 -3
- warp/{fem → _src/fem}/space/function_space.py +14 -13
- warp/{fem → _src/fem}/space/grid_2d_function_space.py +4 -7
- warp/{fem → _src/fem}/space/grid_3d_function_space.py +4 -4
- warp/{fem → _src/fem}/space/hexmesh_function_space.py +4 -10
- warp/{fem → _src/fem}/space/nanogrid_function_space.py +3 -9
- warp/{fem → _src/fem}/space/partition.py +117 -60
- warp/{fem → _src/fem}/space/quadmesh_function_space.py +4 -10
- warp/{fem → _src/fem}/space/restriction.py +66 -33
- warp/_src/fem/space/shape/__init__.py +152 -0
- warp/{fem → _src/fem}/space/shape/cube_shape_function.py +9 -9
- warp/{fem → _src/fem}/space/shape/shape_function.py +8 -9
- warp/{fem → _src/fem}/space/shape/square_shape_function.py +6 -6
- warp/{fem → _src/fem}/space/shape/tet_shape_function.py +3 -3
- warp/{fem → _src/fem}/space/shape/triangle_shape_function.py +3 -3
- warp/{fem → _src/fem}/space/tetmesh_function_space.py +3 -9
- warp/_src/fem/space/topology.py +459 -0
- warp/{fem → _src/fem}/space/trimesh_function_space.py +3 -9
- warp/_src/fem/types.py +112 -0
- warp/_src/fem/utils.py +486 -0
- warp/_src/jax.py +186 -0
- warp/_src/jax_experimental/__init__.py +14 -0
- warp/_src/jax_experimental/custom_call.py +387 -0
- warp/_src/jax_experimental/ffi.py +1284 -0
- warp/_src/jax_experimental/xla_ffi.py +656 -0
- warp/_src/marching_cubes.py +708 -0
- warp/_src/math.py +414 -0
- warp/_src/optim/__init__.py +14 -0
- warp/_src/optim/adam.py +163 -0
- warp/_src/optim/linear.py +1606 -0
- warp/_src/optim/sgd.py +112 -0
- warp/_src/paddle.py +406 -0
- warp/_src/render/__init__.py +14 -0
- warp/_src/render/imgui_manager.py +289 -0
- warp/_src/render/render_opengl.py +3636 -0
- warp/_src/render/render_usd.py +937 -0
- warp/_src/render/utils.py +160 -0
- warp/_src/sparse.py +2716 -0
- warp/_src/tape.py +1206 -0
- warp/{thirdparty → _src/thirdparty}/unittest_parallel.py +9 -2
- warp/_src/torch.py +391 -0
- warp/_src/types.py +5870 -0
- warp/_src/utils.py +1693 -0
- warp/autograd.py +12 -1054
- warp/bin/warp-clang.dll +0 -0
- warp/bin/warp.dll +0 -0
- warp/build.py +8 -588
- warp/build_dll.py +6 -721
- warp/codegen.py +6 -4251
- warp/constants.py +6 -39
- warp/context.py +12 -8062
- warp/dlpack.py +6 -444
- warp/examples/distributed/example_jacobi_mpi.py +4 -5
- warp/examples/fem/example_adaptive_grid.py +1 -1
- warp/examples/fem/example_apic_fluid.py +1 -1
- warp/examples/fem/example_burgers.py +8 -8
- warp/examples/fem/example_diffusion.py +1 -1
- warp/examples/fem/example_distortion_energy.py +1 -1
- warp/examples/fem/example_mixed_elasticity.py +2 -2
- warp/examples/fem/example_navier_stokes.py +1 -1
- warp/examples/fem/example_nonconforming_contact.py +7 -7
- warp/examples/fem/example_stokes.py +1 -1
- warp/examples/fem/example_stokes_transfer.py +1 -1
- warp/examples/fem/utils.py +2 -2
- warp/examples/interop/example_jax_callable.py +1 -1
- warp/examples/interop/example_jax_ffi_callback.py +1 -1
- warp/examples/interop/example_jax_kernel.py +1 -1
- warp/examples/tile/example_tile_mcgp.py +191 -0
- warp/fabric.py +6 -337
- warp/fem/__init__.py +159 -97
- warp/fem/adaptivity.py +7 -489
- warp/fem/cache.py +9 -648
- warp/fem/dirichlet.py +6 -184
- warp/fem/field/__init__.py +8 -109
- warp/fem/field/field.py +7 -652
- warp/fem/geometry/__init__.py +7 -18
- warp/fem/geometry/closest_point.py +11 -77
- warp/fem/linalg.py +18 -366
- warp/fem/operator.py +11 -369
- warp/fem/polynomial.py +9 -209
- warp/fem/space/__init__.py +5 -211
- warp/fem/space/basis_space.py +6 -662
- warp/fem/space/shape/__init__.py +41 -118
- warp/fem/space/topology.py +6 -437
- warp/fem/types.py +6 -81
- warp/fem/utils.py +11 -444
- warp/jax.py +8 -165
- warp/jax_experimental/__init__.py +14 -1
- warp/jax_experimental/custom_call.py +8 -365
- warp/jax_experimental/ffi.py +17 -873
- warp/jax_experimental/xla_ffi.py +5 -605
- warp/marching_cubes.py +5 -689
- warp/math.py +16 -393
- warp/native/array.h +385 -37
- warp/native/builtin.h +314 -37
- warp/native/bvh.cpp +43 -9
- warp/native/bvh.cu +62 -27
- warp/native/bvh.h +310 -309
- warp/native/clang/clang.cpp +102 -97
- warp/native/coloring.cpp +0 -1
- warp/native/crt.h +208 -0
- warp/native/exports.h +156 -0
- warp/native/hashgrid.cu +2 -0
- warp/native/intersect.h +24 -1
- warp/native/intersect_tri.h +44 -35
- warp/native/mat.h +1456 -276
- warp/native/mesh.cpp +4 -4
- warp/native/mesh.cu +4 -2
- warp/native/mesh.h +176 -61
- warp/native/quat.h +0 -52
- warp/native/scan.cu +2 -0
- warp/native/sparse.cu +7 -3
- warp/native/spatial.h +12 -0
- warp/native/tile.h +681 -89
- warp/native/tile_radix_sort.h +1 -1
- warp/native/tile_reduce.h +394 -46
- warp/native/tile_scan.h +4 -4
- warp/native/vec.h +469 -0
- warp/native/version.h +23 -0
- warp/native/volume.cpp +1 -1
- warp/native/volume.cu +1 -0
- warp/native/volume.h +1 -1
- warp/native/volume_builder.cu +2 -0
- warp/native/warp.cpp +57 -29
- warp/native/warp.cu +253 -171
- warp/native/warp.h +11 -8
- warp/optim/__init__.py +6 -3
- warp/optim/adam.py +6 -145
- warp/optim/linear.py +14 -1585
- warp/optim/sgd.py +6 -94
- warp/paddle.py +6 -388
- warp/render/__init__.py +8 -4
- warp/render/imgui_manager.py +7 -267
- warp/render/render_opengl.py +6 -3618
- warp/render/render_usd.py +6 -919
- warp/render/utils.py +6 -142
- warp/sparse.py +37 -2563
- warp/tape.py +6 -1188
- warp/tests/__main__.py +1 -1
- warp/tests/cuda/test_async.py +4 -4
- warp/tests/cuda/test_conditional_captures.py +1 -1
- warp/tests/cuda/test_multigpu.py +1 -1
- warp/tests/cuda/test_streams.py +58 -1
- warp/tests/geometry/test_bvh.py +157 -22
- warp/tests/geometry/test_marching_cubes.py +0 -1
- warp/tests/geometry/test_mesh.py +5 -3
- warp/tests/geometry/test_mesh_query_aabb.py +5 -12
- warp/tests/geometry/test_mesh_query_point.py +5 -2
- warp/tests/geometry/test_mesh_query_ray.py +15 -3
- warp/tests/geometry/test_volume_write.py +5 -5
- warp/tests/interop/test_dlpack.py +14 -14
- warp/tests/interop/test_jax.py +772 -49
- warp/tests/interop/test_paddle.py +1 -1
- warp/tests/test_adam.py +0 -1
- warp/tests/test_arithmetic.py +9 -9
- warp/tests/test_array.py +527 -100
- warp/tests/test_array_reduce.py +3 -3
- warp/tests/test_atomic.py +12 -8
- warp/tests/test_atomic_bitwise.py +209 -0
- warp/tests/test_atomic_cas.py +4 -4
- warp/tests/test_bool.py +2 -2
- warp/tests/test_builtins_resolution.py +5 -571
- warp/tests/test_codegen.py +33 -14
- warp/tests/test_conditional.py +1 -1
- warp/tests/test_context.py +6 -6
- warp/tests/test_copy.py +242 -161
- warp/tests/test_ctypes.py +3 -3
- warp/tests/test_devices.py +24 -2
- warp/tests/test_examples.py +16 -84
- warp/tests/test_fabricarray.py +35 -35
- warp/tests/test_fast_math.py +0 -2
- warp/tests/test_fem.py +56 -10
- warp/tests/test_fixedarray.py +3 -3
- warp/tests/test_func.py +8 -5
- warp/tests/test_generics.py +1 -1
- warp/tests/test_indexedarray.py +24 -24
- warp/tests/test_intersect.py +39 -9
- warp/tests/test_large.py +1 -1
- warp/tests/test_lerp.py +3 -1
- warp/tests/test_linear_solvers.py +1 -1
- warp/tests/test_map.py +35 -4
- warp/tests/test_mat.py +52 -62
- warp/tests/test_mat_constructors.py +4 -5
- warp/tests/test_mat_lite.py +1 -1
- warp/tests/test_mat_scalar_ops.py +121 -121
- warp/tests/test_math.py +34 -0
- warp/tests/test_module_aot.py +4 -4
- warp/tests/test_modules_lite.py +28 -2
- warp/tests/test_print.py +11 -11
- warp/tests/test_quat.py +93 -58
- warp/tests/test_runlength_encode.py +1 -1
- warp/tests/test_scalar_ops.py +38 -10
- warp/tests/test_smoothstep.py +1 -1
- warp/tests/test_sparse.py +126 -15
- warp/tests/test_spatial.py +105 -87
- warp/tests/test_special_values.py +6 -6
- warp/tests/test_static.py +7 -7
- warp/tests/test_struct.py +13 -2
- warp/tests/test_triangle_closest_point.py +48 -1
- warp/tests/test_types.py +27 -15
- warp/tests/test_utils.py +52 -52
- warp/tests/test_vec.py +29 -29
- warp/tests/test_vec_constructors.py +5 -5
- warp/tests/test_vec_scalar_ops.py +97 -97
- warp/tests/test_version.py +75 -0
- warp/tests/tile/test_tile.py +178 -0
- warp/tests/tile/test_tile_atomic_bitwise.py +403 -0
- warp/tests/tile/test_tile_cholesky.py +7 -4
- warp/tests/tile/test_tile_load.py +26 -2
- warp/tests/tile/test_tile_mathdx.py +3 -3
- warp/tests/tile/test_tile_matmul.py +1 -1
- warp/tests/tile/test_tile_mlp.py +2 -4
- warp/tests/tile/test_tile_reduce.py +214 -13
- warp/tests/unittest_suites.py +6 -14
- warp/tests/unittest_utils.py +10 -9
- warp/tests/walkthrough_debug.py +3 -1
- warp/torch.py +6 -373
- warp/types.py +29 -5764
- warp/utils.py +10 -1659
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/METADATA +46 -99
- warp_lang-1.10.0rc2.dist-info/RECORD +468 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/Gaia-LICENSE.txt +6 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/appdirs-LICENSE.txt +22 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/asset_pixel_jpg-LICENSE.txt +3 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/cuda-LICENSE.txt +1582 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/dlpack-LICENSE.txt +201 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/fp16-LICENSE.txt +28 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/libmathdx-LICENSE.txt +220 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/llvm-LICENSE.txt +279 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/moller-LICENSE.txt +16 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/nanovdb-LICENSE.txt +2 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/nvrtc-LICENSE.txt +1592 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/svd-LICENSE.txt +23 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/unittest_parallel-LICENSE.txt +21 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/usd-LICENSE.txt +213 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/windingnumber-LICENSE.txt +21 -0
- warp/examples/assets/cartpole.urdf +0 -110
- warp/examples/assets/crazyflie.usd +0 -0
- warp/examples/assets/nv_ant.xml +0 -92
- warp/examples/assets/nv_humanoid.xml +0 -183
- warp/examples/assets/quadruped.urdf +0 -268
- warp/examples/optim/example_bounce.py +0 -266
- warp/examples/optim/example_cloth_throw.py +0 -228
- warp/examples/optim/example_drone.py +0 -870
- warp/examples/optim/example_inverse_kinematics.py +0 -182
- warp/examples/optim/example_inverse_kinematics_torch.py +0 -191
- warp/examples/optim/example_softbody_properties.py +0 -400
- warp/examples/optim/example_spring_cage.py +0 -245
- warp/examples/optim/example_trajectory.py +0 -227
- warp/examples/sim/example_cartpole.py +0 -143
- warp/examples/sim/example_cloth.py +0 -225
- warp/examples/sim/example_cloth_self_contact.py +0 -316
- warp/examples/sim/example_granular.py +0 -130
- warp/examples/sim/example_granular_collision_sdf.py +0 -202
- warp/examples/sim/example_jacobian_ik.py +0 -244
- warp/examples/sim/example_particle_chain.py +0 -124
- warp/examples/sim/example_quadruped.py +0 -203
- warp/examples/sim/example_rigid_chain.py +0 -203
- warp/examples/sim/example_rigid_contact.py +0 -195
- warp/examples/sim/example_rigid_force.py +0 -133
- warp/examples/sim/example_rigid_gyroscopic.py +0 -115
- warp/examples/sim/example_rigid_soft_contact.py +0 -140
- warp/examples/sim/example_soft_body.py +0 -196
- warp/examples/tile/example_tile_walker.py +0 -327
- warp/sim/__init__.py +0 -74
- warp/sim/articulation.py +0 -793
- warp/sim/collide.py +0 -2570
- warp/sim/graph_coloring.py +0 -307
- warp/sim/import_mjcf.py +0 -791
- warp/sim/import_snu.py +0 -227
- warp/sim/import_urdf.py +0 -579
- warp/sim/import_usd.py +0 -898
- warp/sim/inertia.py +0 -357
- warp/sim/integrator.py +0 -245
- warp/sim/integrator_euler.py +0 -2000
- warp/sim/integrator_featherstone.py +0 -2101
- warp/sim/integrator_vbd.py +0 -2487
- warp/sim/integrator_xpbd.py +0 -3295
- warp/sim/model.py +0 -4821
- warp/sim/particles.py +0 -121
- warp/sim/render.py +0 -431
- warp/sim/utils.py +0 -431
- warp/tests/sim/disabled_kinematics.py +0 -244
- warp/tests/sim/test_cloth.py +0 -863
- warp/tests/sim/test_collision.py +0 -743
- warp/tests/sim/test_coloring.py +0 -347
- warp/tests/sim/test_inertia.py +0 -161
- warp/tests/sim/test_model.py +0 -226
- warp/tests/sim/test_sim_grad.py +0 -287
- warp/tests/sim/test_sim_grad_bounce_linear.py +0 -212
- warp/tests/sim/test_sim_kinematics.py +0 -98
- warp/thirdparty/__init__.py +0 -0
- warp_lang-1.9.1.dist-info/RECORD +0 -456
- /warp/{fem → _src/fem}/quadrature/__init__.py +0 -0
- /warp/{tests/sim → _src/thirdparty}/__init__.py +0 -0
- /warp/{thirdparty → _src/thirdparty}/appdirs.py +0 -0
- /warp/{thirdparty → _src/thirdparty}/dlpack.py +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/WHEEL +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/licenses/LICENSE.md +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/top_level.txt +0 -0
|
@@ -16,15 +16,14 @@
|
|
|
16
16
|
from typing import Optional
|
|
17
17
|
|
|
18
18
|
import warp as wp
|
|
19
|
-
from warp.fem.cache import (
|
|
19
|
+
from warp._src.fem.cache import (
|
|
20
20
|
TemporaryStore,
|
|
21
21
|
borrow_temporary,
|
|
22
22
|
borrow_temporary_like,
|
|
23
|
-
cached_arg_value,
|
|
24
23
|
)
|
|
25
|
-
from warp.fem.types import OUTSIDE, Coords, ElementIndex, Sample
|
|
24
|
+
from warp._src.fem.types import OUTSIDE, Coords, ElementIndex, Sample
|
|
26
25
|
|
|
27
|
-
from .element import
|
|
26
|
+
from .element import Element
|
|
28
27
|
from .geometry import Geometry
|
|
29
28
|
|
|
30
29
|
|
|
@@ -199,11 +198,11 @@ class Hexmesh(Geometry):
|
|
|
199
198
|
def boundary_side_count(self):
|
|
200
199
|
return self._boundary_face_indices.shape[0]
|
|
201
200
|
|
|
202
|
-
def reference_cell(self) ->
|
|
203
|
-
return
|
|
201
|
+
def reference_cell(self) -> Element:
|
|
202
|
+
return Element.CUBE
|
|
204
203
|
|
|
205
|
-
def reference_side(self) ->
|
|
206
|
-
return
|
|
204
|
+
def reference_side(self) -> Element:
|
|
205
|
+
return Element.SQUARE
|
|
207
206
|
|
|
208
207
|
@property
|
|
209
208
|
def hex_edge_indices(self) -> wp.array:
|
|
@@ -228,11 +227,6 @@ class Hexmesh(Geometry):
|
|
|
228
227
|
|
|
229
228
|
# Geometry device interface
|
|
230
229
|
|
|
231
|
-
def cell_arg_value(self, device) -> CellArg:
|
|
232
|
-
args = self.CellArg()
|
|
233
|
-
self.fill_cell_arg(args, device)
|
|
234
|
-
return args
|
|
235
|
-
|
|
236
230
|
def fill_cell_arg(self, args: CellArg, device):
|
|
237
231
|
args.hex_vertex_indices = self.hex_vertex_indices.to(device)
|
|
238
232
|
args.positions = self.positions.to(device)
|
|
@@ -305,12 +299,6 @@ class Hexmesh(Geometry):
|
|
|
305
299
|
p3 = cell_arg.positions[hex_idx[4]]
|
|
306
300
|
return wp.matrix_from_cols(p1 - p0, p2 - p0, p3 - p0)
|
|
307
301
|
|
|
308
|
-
@cached_arg_value
|
|
309
|
-
def side_index_arg_value(self, device) -> SideIndexArg:
|
|
310
|
-
args = self.SideIndexArg()
|
|
311
|
-
self.fill_side_index_arg(args, device)
|
|
312
|
-
return args
|
|
313
|
-
|
|
314
302
|
def fill_side_index_arg(self, args: SideIndexArg, device):
|
|
315
303
|
args.boundary_face_indices = self._boundary_face_indices.to(device)
|
|
316
304
|
|
|
@@ -320,11 +308,6 @@ class Hexmesh(Geometry):
|
|
|
320
308
|
|
|
321
309
|
return args.boundary_face_indices[boundary_side_index]
|
|
322
310
|
|
|
323
|
-
def side_arg_value(self, device) -> CellArg:
|
|
324
|
-
args = self.SideArg()
|
|
325
|
-
self.fill_side_arg(args, device)
|
|
326
|
-
return args
|
|
327
|
-
|
|
328
311
|
def fill_side_arg(self, args: SideArg, device):
|
|
329
312
|
self.fill_cell_arg(args.cell_arg, device)
|
|
330
313
|
args.face_vertex_indices = self._face_vertex_indices.to(device)
|
|
@@ -454,8 +437,8 @@ class Hexmesh(Geometry):
|
|
|
454
437
|
return side_arg.cell_arg
|
|
455
438
|
|
|
456
439
|
def _build_topology(self, temporary_store: TemporaryStore):
|
|
457
|
-
from warp.fem.utils import compress_node_indices, host_read_at_index, masked_indices
|
|
458
|
-
from warp.utils import array_scan
|
|
440
|
+
from warp._src.fem.utils import compress_node_indices, host_read_at_index, masked_indices
|
|
441
|
+
from warp._src.utils import array_scan
|
|
459
442
|
|
|
460
443
|
device = self.hex_vertex_indices.device
|
|
461
444
|
|
|
@@ -466,7 +449,7 @@ class Hexmesh(Geometry):
|
|
|
466
449
|
self._vertex_hex_indices = vertex_hex_indices.detach()
|
|
467
450
|
|
|
468
451
|
vertex_start_face_count = borrow_temporary(temporary_store, dtype=int, device=device, shape=self.vertex_count())
|
|
469
|
-
vertex_start_face_count.
|
|
452
|
+
vertex_start_face_count.zero_()
|
|
470
453
|
vertex_start_face_offsets = borrow_temporary_like(vertex_start_face_count, temporary_store=temporary_store)
|
|
471
454
|
|
|
472
455
|
vertex_face_other_vs = borrow_temporary(
|
|
@@ -481,10 +464,10 @@ class Hexmesh(Geometry):
|
|
|
481
464
|
kernel=Hexmesh._count_starting_faces_kernel,
|
|
482
465
|
device=device,
|
|
483
466
|
dim=self.cell_count(),
|
|
484
|
-
inputs=[self.hex_vertex_indices, vertex_start_face_count
|
|
467
|
+
inputs=[self.hex_vertex_indices, vertex_start_face_count],
|
|
485
468
|
)
|
|
486
469
|
|
|
487
|
-
array_scan(in_array=vertex_start_face_count
|
|
470
|
+
array_scan(in_array=vertex_start_face_count, out_array=vertex_start_face_offsets, inclusive=False)
|
|
488
471
|
|
|
489
472
|
# Count number of unique edges (deduplicate across faces)
|
|
490
473
|
vertex_unique_face_count = vertex_start_face_count
|
|
@@ -496,21 +479,19 @@ class Hexmesh(Geometry):
|
|
|
496
479
|
self._vertex_hex_offsets,
|
|
497
480
|
self._vertex_hex_indices,
|
|
498
481
|
self.hex_vertex_indices,
|
|
499
|
-
vertex_start_face_offsets
|
|
500
|
-
vertex_unique_face_count
|
|
501
|
-
vertex_face_other_vs
|
|
502
|
-
vertex_face_hexes
|
|
482
|
+
vertex_start_face_offsets,
|
|
483
|
+
vertex_unique_face_count,
|
|
484
|
+
vertex_face_other_vs,
|
|
485
|
+
vertex_face_hexes,
|
|
503
486
|
],
|
|
504
487
|
)
|
|
505
488
|
|
|
506
489
|
vertex_unique_face_offsets = borrow_temporary_like(vertex_start_face_offsets, temporary_store=temporary_store)
|
|
507
|
-
array_scan(in_array=vertex_start_face_count
|
|
490
|
+
array_scan(in_array=vertex_start_face_count, out_array=vertex_unique_face_offsets, inclusive=False)
|
|
508
491
|
|
|
509
492
|
# Get back edge count to host
|
|
510
493
|
face_count = int(
|
|
511
|
-
host_read_at_index(
|
|
512
|
-
vertex_unique_face_offsets.array, self.vertex_count() - 1, temporary_store=temporary_store
|
|
513
|
-
)
|
|
494
|
+
host_read_at_index(vertex_unique_face_offsets, self.vertex_count() - 1, temporary_store=temporary_store)
|
|
514
495
|
)
|
|
515
496
|
|
|
516
497
|
self._face_vertex_indices = wp.empty(shape=(face_count,), dtype=wp.vec4i, device=device)
|
|
@@ -525,14 +506,14 @@ class Hexmesh(Geometry):
|
|
|
525
506
|
device=device,
|
|
526
507
|
dim=self.vertex_count(),
|
|
527
508
|
inputs=[
|
|
528
|
-
vertex_start_face_offsets
|
|
529
|
-
vertex_unique_face_offsets
|
|
530
|
-
vertex_unique_face_count
|
|
531
|
-
vertex_face_other_vs
|
|
532
|
-
vertex_face_hexes
|
|
509
|
+
vertex_start_face_offsets,
|
|
510
|
+
vertex_unique_face_offsets,
|
|
511
|
+
vertex_unique_face_count,
|
|
512
|
+
vertex_face_other_vs,
|
|
513
|
+
vertex_face_hexes,
|
|
533
514
|
self._face_vertex_indices,
|
|
534
515
|
self._face_hex_indices,
|
|
535
|
-
boundary_mask
|
|
516
|
+
boundary_mask,
|
|
536
517
|
],
|
|
537
518
|
)
|
|
538
519
|
|
|
@@ -563,17 +544,17 @@ class Hexmesh(Geometry):
|
|
|
563
544
|
],
|
|
564
545
|
)
|
|
565
546
|
|
|
566
|
-
boundary_face_indices, _ = masked_indices(boundary_mask
|
|
547
|
+
boundary_face_indices, _ = masked_indices(boundary_mask)
|
|
567
548
|
self._boundary_face_indices = boundary_face_indices.detach()
|
|
568
549
|
|
|
569
550
|
def _compute_hex_edges(self, temporary_store: Optional[TemporaryStore] = None):
|
|
570
|
-
from warp.fem.utils import host_read_at_index
|
|
571
|
-
from warp.utils import array_scan
|
|
551
|
+
from warp._src.fem.utils import host_read_at_index
|
|
552
|
+
from warp._src.utils import array_scan
|
|
572
553
|
|
|
573
554
|
device = self.hex_vertex_indices.device
|
|
574
555
|
|
|
575
556
|
vertex_start_edge_count = borrow_temporary(temporary_store, dtype=int, device=device, shape=self.vertex_count())
|
|
576
|
-
vertex_start_edge_count.
|
|
557
|
+
vertex_start_edge_count.zero_()
|
|
577
558
|
vertex_start_edge_offsets = borrow_temporary_like(vertex_start_edge_count, temporary_store=temporary_store)
|
|
578
559
|
|
|
579
560
|
vertex_edge_ends = borrow_temporary(temporary_store, dtype=int, device=device, shape=(12 * self.cell_count()))
|
|
@@ -583,10 +564,10 @@ class Hexmesh(Geometry):
|
|
|
583
564
|
kernel=Hexmesh._count_starting_edges_kernel,
|
|
584
565
|
device=device,
|
|
585
566
|
dim=self.cell_count(),
|
|
586
|
-
inputs=[self.hex_vertex_indices, vertex_start_edge_count
|
|
567
|
+
inputs=[self.hex_vertex_indices, vertex_start_edge_count],
|
|
587
568
|
)
|
|
588
569
|
|
|
589
|
-
array_scan(in_array=vertex_start_edge_count
|
|
570
|
+
array_scan(in_array=vertex_start_edge_count, out_array=vertex_start_edge_offsets, inclusive=False)
|
|
590
571
|
|
|
591
572
|
# Count number of unique edges (deduplicate across faces)
|
|
592
573
|
vertex_unique_edge_count = vertex_start_edge_count
|
|
@@ -598,22 +579,18 @@ class Hexmesh(Geometry):
|
|
|
598
579
|
self._vertex_hex_offsets,
|
|
599
580
|
self._vertex_hex_indices,
|
|
600
581
|
self.hex_vertex_indices,
|
|
601
|
-
vertex_start_edge_offsets
|
|
602
|
-
vertex_unique_edge_count
|
|
603
|
-
vertex_edge_ends
|
|
582
|
+
vertex_start_edge_offsets,
|
|
583
|
+
vertex_unique_edge_count,
|
|
584
|
+
vertex_edge_ends,
|
|
604
585
|
],
|
|
605
586
|
)
|
|
606
587
|
|
|
607
|
-
vertex_unique_edge_offsets = borrow_temporary_like(
|
|
608
|
-
|
|
609
|
-
)
|
|
610
|
-
array_scan(in_array=vertex_start_edge_count.array, out_array=vertex_unique_edge_offsets.array, inclusive=False)
|
|
588
|
+
vertex_unique_edge_offsets = borrow_temporary_like(vertex_start_edge_offsets, temporary_store=temporary_store)
|
|
589
|
+
array_scan(in_array=vertex_start_edge_count, out_array=vertex_unique_edge_offsets, inclusive=False)
|
|
611
590
|
|
|
612
591
|
# Get back edge count to host
|
|
613
592
|
self._edge_count = int(
|
|
614
|
-
host_read_at_index(
|
|
615
|
-
vertex_unique_edge_offsets.array, self.vertex_count() - 1, temporary_store=temporary_store
|
|
616
|
-
)
|
|
593
|
+
host_read_at_index(vertex_unique_edge_offsets, self.vertex_count() - 1, temporary_store=temporary_store)
|
|
617
594
|
)
|
|
618
595
|
|
|
619
596
|
self._hex_edge_indices = wp.empty(
|
|
@@ -629,10 +606,10 @@ class Hexmesh(Geometry):
|
|
|
629
606
|
self._vertex_hex_offsets,
|
|
630
607
|
self._vertex_hex_indices,
|
|
631
608
|
self.hex_vertex_indices,
|
|
632
|
-
vertex_start_edge_offsets
|
|
633
|
-
vertex_unique_edge_offsets
|
|
634
|
-
vertex_unique_edge_count
|
|
635
|
-
vertex_edge_ends
|
|
609
|
+
vertex_start_edge_offsets,
|
|
610
|
+
vertex_unique_edge_offsets,
|
|
611
|
+
vertex_unique_edge_count,
|
|
612
|
+
vertex_edge_ends,
|
|
636
613
|
self._hex_edge_indices,
|
|
637
614
|
],
|
|
638
615
|
)
|