warp-lang 1.9.0__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 +2220 -313
- 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} +1497 -226
- 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 -471
- warp/codegen.py +6 -4246
- warp/constants.py +6 -39
- warp/context.py +12 -7851
- 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 +3 -2
- 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 -342
- warp/jax_experimental/ffi.py +17 -853
- warp/jax_experimental/xla_ffi.py +5 -596
- warp/marching_cubes.py +5 -689
- warp/math.py +16 -393
- warp/native/array.h +385 -37
- warp/native/builtin.h +316 -39
- 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/sort.cu +22 -13
- warp/native/sort.h +2 -0
- warp/native/sparse.cu +7 -3
- warp/native/spatial.h +12 -0
- warp/native/tile.h +837 -70
- 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 -53
- 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 +60 -32
- warp/native/warp.cu +313 -201
- warp/native/warp.h +14 -11
- 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 -3616
- warp/render/render_usd.py +6 -918
- 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_hash_grid.py +38 -0
- 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 +1382 -79
- 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 +529 -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 +34 -15
- 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 +60 -14
- 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 +49 -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_tuple.py +96 -0
- warp/tests/test_types.py +82 -9
- 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 +239 -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 -5750
- warp/utils.py +10 -1659
- {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/METADATA +47 -103
- 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.0.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.0.dist-info → warp_lang-1.10.0rc2.dist-info}/WHEEL +0 -0
- {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/licenses/LICENSE.md +0 -0
- {warp_lang-1.9.0.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
|
)
|