warp-lang 1.9.1__py3-none-win_amd64.whl → 1.10.0__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 +882 -305
- warp/_src/__init__.py +14 -0
- warp/_src/autograd.py +1077 -0
- warp/_src/build.py +620 -0
- warp/_src/build_dll.py +642 -0
- warp/{builtins.py → _src/builtins.py} +1435 -379
- warp/_src/codegen.py +4361 -0
- warp/{config.py → _src/config.py} +178 -169
- warp/_src/constants.py +59 -0
- warp/_src/context.py +8352 -0
- warp/_src/dlpack.py +464 -0
- warp/_src/fabric.py +362 -0
- warp/_src/fem/__init__.py +14 -0
- warp/_src/fem/adaptivity.py +510 -0
- warp/_src/fem/cache.py +689 -0
- warp/_src/fem/dirichlet.py +190 -0
- warp/{fem → _src/fem}/domain.py +42 -30
- warp/_src/fem/field/__init__.py +131 -0
- warp/_src/fem/field/field.py +703 -0
- warp/{fem → _src/fem}/field/nodal_field.py +32 -15
- warp/{fem → _src/fem}/field/restriction.py +3 -1
- warp/{fem → _src/fem}/field/virtual.py +55 -27
- warp/_src/fem/geometry/__init__.py +32 -0
- warp/{fem → _src/fem}/geometry/adaptive_nanogrid.py +79 -163
- warp/_src/fem/geometry/closest_point.py +99 -0
- warp/{fem → _src/fem}/geometry/deformed_geometry.py +16 -22
- warp/{fem → _src/fem}/geometry/element.py +34 -10
- warp/{fem → _src/fem}/geometry/geometry.py +50 -20
- warp/{fem → _src/fem}/geometry/grid_2d.py +14 -23
- warp/{fem → _src/fem}/geometry/grid_3d.py +14 -23
- warp/{fem → _src/fem}/geometry/hexmesh.py +42 -63
- warp/{fem → _src/fem}/geometry/nanogrid.py +256 -247
- warp/{fem → _src/fem}/geometry/partition.py +123 -63
- warp/{fem → _src/fem}/geometry/quadmesh.py +28 -45
- warp/{fem → _src/fem}/geometry/tetmesh.py +42 -63
- warp/{fem → _src/fem}/geometry/trimesh.py +28 -45
- warp/{fem → _src/fem}/integrate.py +166 -158
- warp/_src/fem/linalg.py +385 -0
- warp/_src/fem/operator.py +398 -0
- warp/_src/fem/polynomial.py +231 -0
- warp/{fem → _src/fem}/quadrature/pic_quadrature.py +17 -20
- warp/{fem → _src/fem}/quadrature/quadrature.py +97 -47
- warp/_src/fem/space/__init__.py +248 -0
- warp/{fem → _src/fem}/space/basis_function_space.py +22 -11
- warp/_src/fem/space/basis_space.py +681 -0
- warp/{fem → _src/fem}/space/dof_mapper.py +5 -3
- warp/{fem → _src/fem}/space/function_space.py +16 -13
- warp/{fem → _src/fem}/space/grid_2d_function_space.py +6 -7
- warp/{fem → _src/fem}/space/grid_3d_function_space.py +6 -4
- warp/{fem → _src/fem}/space/hexmesh_function_space.py +6 -10
- warp/{fem → _src/fem}/space/nanogrid_function_space.py +5 -9
- warp/{fem → _src/fem}/space/partition.py +119 -60
- warp/{fem → _src/fem}/space/quadmesh_function_space.py +6 -10
- warp/{fem → _src/fem}/space/restriction.py +68 -33
- warp/_src/fem/space/shape/__init__.py +152 -0
- warp/{fem → _src/fem}/space/shape/cube_shape_function.py +11 -9
- warp/{fem → _src/fem}/space/shape/shape_function.py +10 -9
- warp/{fem → _src/fem}/space/shape/square_shape_function.py +8 -6
- warp/{fem → _src/fem}/space/shape/tet_shape_function.py +5 -3
- warp/{fem → _src/fem}/space/shape/triangle_shape_function.py +5 -3
- warp/{fem → _src/fem}/space/tetmesh_function_space.py +5 -9
- warp/_src/fem/space/topology.py +461 -0
- warp/{fem → _src/fem}/space/trimesh_function_space.py +5 -9
- warp/_src/fem/types.py +114 -0
- warp/_src/fem/utils.py +488 -0
- warp/_src/jax.py +188 -0
- warp/_src/jax_experimental/__init__.py +14 -0
- warp/_src/jax_experimental/custom_call.py +389 -0
- warp/_src/jax_experimental/ffi.py +1286 -0
- warp/_src/jax_experimental/xla_ffi.py +658 -0
- warp/_src/marching_cubes.py +710 -0
- warp/_src/math.py +416 -0
- warp/_src/optim/__init__.py +14 -0
- warp/_src/optim/adam.py +165 -0
- warp/_src/optim/linear.py +1608 -0
- warp/_src/optim/sgd.py +114 -0
- warp/_src/paddle.py +408 -0
- warp/_src/render/__init__.py +14 -0
- warp/_src/render/imgui_manager.py +291 -0
- warp/_src/render/render_opengl.py +3638 -0
- warp/_src/render/render_usd.py +939 -0
- warp/_src/render/utils.py +162 -0
- warp/_src/sparse.py +2718 -0
- warp/_src/tape.py +1208 -0
- warp/{thirdparty → _src/thirdparty}/unittest_parallel.py +9 -2
- warp/_src/torch.py +393 -0
- warp/_src/types.py +5888 -0
- warp/_src/utils.py +1695 -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 +3 -3
- 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 +521 -250
- 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 +18 -17
- 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 +578 -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.0.dist-info}/METADATA +46 -99
- warp_lang-1.10.0.dist-info/RECORD +468 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/Gaia-LICENSE.txt +6 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/appdirs-LICENSE.txt +22 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/asset_pixel_jpg-LICENSE.txt +3 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/cuda-LICENSE.txt +1582 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/dlpack-LICENSE.txt +201 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/fp16-LICENSE.txt +28 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/libmathdx-LICENSE.txt +220 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/llvm-LICENSE.txt +279 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/moller-LICENSE.txt +16 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/nanovdb-LICENSE.txt +2 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/nvrtc-LICENSE.txt +1592 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/svd-LICENSE.txt +23 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/unittest_parallel-LICENSE.txt +21 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/usd-LICENSE.txt +213 -0
- warp_lang-1.10.0.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.0.dist-info}/WHEEL +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0.dist-info}/licenses/LICENSE.md +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0.dist-info}/top_level.txt +0 -0
|
@@ -16,17 +16,18 @@
|
|
|
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
|
|
|
29
|
+
_wp_module_name_ = "warp.fem.geometry.hexmesh"
|
|
30
|
+
|
|
30
31
|
|
|
31
32
|
@wp.struct
|
|
32
33
|
class HexmeshCellArg:
|
|
@@ -199,11 +200,11 @@ class Hexmesh(Geometry):
|
|
|
199
200
|
def boundary_side_count(self):
|
|
200
201
|
return self._boundary_face_indices.shape[0]
|
|
201
202
|
|
|
202
|
-
def reference_cell(self) ->
|
|
203
|
-
return
|
|
203
|
+
def reference_cell(self) -> Element:
|
|
204
|
+
return Element.CUBE
|
|
204
205
|
|
|
205
|
-
def reference_side(self) ->
|
|
206
|
-
return
|
|
206
|
+
def reference_side(self) -> Element:
|
|
207
|
+
return Element.SQUARE
|
|
207
208
|
|
|
208
209
|
@property
|
|
209
210
|
def hex_edge_indices(self) -> wp.array:
|
|
@@ -228,11 +229,6 @@ class Hexmesh(Geometry):
|
|
|
228
229
|
|
|
229
230
|
# Geometry device interface
|
|
230
231
|
|
|
231
|
-
def cell_arg_value(self, device) -> CellArg:
|
|
232
|
-
args = self.CellArg()
|
|
233
|
-
self.fill_cell_arg(args, device)
|
|
234
|
-
return args
|
|
235
|
-
|
|
236
232
|
def fill_cell_arg(self, args: CellArg, device):
|
|
237
233
|
args.hex_vertex_indices = self.hex_vertex_indices.to(device)
|
|
238
234
|
args.positions = self.positions.to(device)
|
|
@@ -305,12 +301,6 @@ class Hexmesh(Geometry):
|
|
|
305
301
|
p3 = cell_arg.positions[hex_idx[4]]
|
|
306
302
|
return wp.matrix_from_cols(p1 - p0, p2 - p0, p3 - p0)
|
|
307
303
|
|
|
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
304
|
def fill_side_index_arg(self, args: SideIndexArg, device):
|
|
315
305
|
args.boundary_face_indices = self._boundary_face_indices.to(device)
|
|
316
306
|
|
|
@@ -320,11 +310,6 @@ class Hexmesh(Geometry):
|
|
|
320
310
|
|
|
321
311
|
return args.boundary_face_indices[boundary_side_index]
|
|
322
312
|
|
|
323
|
-
def side_arg_value(self, device) -> CellArg:
|
|
324
|
-
args = self.SideArg()
|
|
325
|
-
self.fill_side_arg(args, device)
|
|
326
|
-
return args
|
|
327
|
-
|
|
328
313
|
def fill_side_arg(self, args: SideArg, device):
|
|
329
314
|
self.fill_cell_arg(args.cell_arg, device)
|
|
330
315
|
args.face_vertex_indices = self._face_vertex_indices.to(device)
|
|
@@ -454,8 +439,8 @@ class Hexmesh(Geometry):
|
|
|
454
439
|
return side_arg.cell_arg
|
|
455
440
|
|
|
456
441
|
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
|
|
442
|
+
from warp._src.fem.utils import compress_node_indices, host_read_at_index, masked_indices
|
|
443
|
+
from warp._src.utils import array_scan
|
|
459
444
|
|
|
460
445
|
device = self.hex_vertex_indices.device
|
|
461
446
|
|
|
@@ -466,7 +451,7 @@ class Hexmesh(Geometry):
|
|
|
466
451
|
self._vertex_hex_indices = vertex_hex_indices.detach()
|
|
467
452
|
|
|
468
453
|
vertex_start_face_count = borrow_temporary(temporary_store, dtype=int, device=device, shape=self.vertex_count())
|
|
469
|
-
vertex_start_face_count.
|
|
454
|
+
vertex_start_face_count.zero_()
|
|
470
455
|
vertex_start_face_offsets = borrow_temporary_like(vertex_start_face_count, temporary_store=temporary_store)
|
|
471
456
|
|
|
472
457
|
vertex_face_other_vs = borrow_temporary(
|
|
@@ -481,10 +466,10 @@ class Hexmesh(Geometry):
|
|
|
481
466
|
kernel=Hexmesh._count_starting_faces_kernel,
|
|
482
467
|
device=device,
|
|
483
468
|
dim=self.cell_count(),
|
|
484
|
-
inputs=[self.hex_vertex_indices, vertex_start_face_count
|
|
469
|
+
inputs=[self.hex_vertex_indices, vertex_start_face_count],
|
|
485
470
|
)
|
|
486
471
|
|
|
487
|
-
array_scan(in_array=vertex_start_face_count
|
|
472
|
+
array_scan(in_array=vertex_start_face_count, out_array=vertex_start_face_offsets, inclusive=False)
|
|
488
473
|
|
|
489
474
|
# Count number of unique edges (deduplicate across faces)
|
|
490
475
|
vertex_unique_face_count = vertex_start_face_count
|
|
@@ -496,21 +481,19 @@ class Hexmesh(Geometry):
|
|
|
496
481
|
self._vertex_hex_offsets,
|
|
497
482
|
self._vertex_hex_indices,
|
|
498
483
|
self.hex_vertex_indices,
|
|
499
|
-
vertex_start_face_offsets
|
|
500
|
-
vertex_unique_face_count
|
|
501
|
-
vertex_face_other_vs
|
|
502
|
-
vertex_face_hexes
|
|
484
|
+
vertex_start_face_offsets,
|
|
485
|
+
vertex_unique_face_count,
|
|
486
|
+
vertex_face_other_vs,
|
|
487
|
+
vertex_face_hexes,
|
|
503
488
|
],
|
|
504
489
|
)
|
|
505
490
|
|
|
506
491
|
vertex_unique_face_offsets = borrow_temporary_like(vertex_start_face_offsets, temporary_store=temporary_store)
|
|
507
|
-
array_scan(in_array=vertex_start_face_count
|
|
492
|
+
array_scan(in_array=vertex_start_face_count, out_array=vertex_unique_face_offsets, inclusive=False)
|
|
508
493
|
|
|
509
494
|
# Get back edge count to host
|
|
510
495
|
face_count = int(
|
|
511
|
-
host_read_at_index(
|
|
512
|
-
vertex_unique_face_offsets.array, self.vertex_count() - 1, temporary_store=temporary_store
|
|
513
|
-
)
|
|
496
|
+
host_read_at_index(vertex_unique_face_offsets, self.vertex_count() - 1, temporary_store=temporary_store)
|
|
514
497
|
)
|
|
515
498
|
|
|
516
499
|
self._face_vertex_indices = wp.empty(shape=(face_count,), dtype=wp.vec4i, device=device)
|
|
@@ -525,14 +508,14 @@ class Hexmesh(Geometry):
|
|
|
525
508
|
device=device,
|
|
526
509
|
dim=self.vertex_count(),
|
|
527
510
|
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
|
|
511
|
+
vertex_start_face_offsets,
|
|
512
|
+
vertex_unique_face_offsets,
|
|
513
|
+
vertex_unique_face_count,
|
|
514
|
+
vertex_face_other_vs,
|
|
515
|
+
vertex_face_hexes,
|
|
533
516
|
self._face_vertex_indices,
|
|
534
517
|
self._face_hex_indices,
|
|
535
|
-
boundary_mask
|
|
518
|
+
boundary_mask,
|
|
536
519
|
],
|
|
537
520
|
)
|
|
538
521
|
|
|
@@ -563,17 +546,17 @@ class Hexmesh(Geometry):
|
|
|
563
546
|
],
|
|
564
547
|
)
|
|
565
548
|
|
|
566
|
-
boundary_face_indices, _ = masked_indices(boundary_mask
|
|
549
|
+
boundary_face_indices, _ = masked_indices(boundary_mask)
|
|
567
550
|
self._boundary_face_indices = boundary_face_indices.detach()
|
|
568
551
|
|
|
569
552
|
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
|
|
553
|
+
from warp._src.fem.utils import host_read_at_index
|
|
554
|
+
from warp._src.utils import array_scan
|
|
572
555
|
|
|
573
556
|
device = self.hex_vertex_indices.device
|
|
574
557
|
|
|
575
558
|
vertex_start_edge_count = borrow_temporary(temporary_store, dtype=int, device=device, shape=self.vertex_count())
|
|
576
|
-
vertex_start_edge_count.
|
|
559
|
+
vertex_start_edge_count.zero_()
|
|
577
560
|
vertex_start_edge_offsets = borrow_temporary_like(vertex_start_edge_count, temporary_store=temporary_store)
|
|
578
561
|
|
|
579
562
|
vertex_edge_ends = borrow_temporary(temporary_store, dtype=int, device=device, shape=(12 * self.cell_count()))
|
|
@@ -583,10 +566,10 @@ class Hexmesh(Geometry):
|
|
|
583
566
|
kernel=Hexmesh._count_starting_edges_kernel,
|
|
584
567
|
device=device,
|
|
585
568
|
dim=self.cell_count(),
|
|
586
|
-
inputs=[self.hex_vertex_indices, vertex_start_edge_count
|
|
569
|
+
inputs=[self.hex_vertex_indices, vertex_start_edge_count],
|
|
587
570
|
)
|
|
588
571
|
|
|
589
|
-
array_scan(in_array=vertex_start_edge_count
|
|
572
|
+
array_scan(in_array=vertex_start_edge_count, out_array=vertex_start_edge_offsets, inclusive=False)
|
|
590
573
|
|
|
591
574
|
# Count number of unique edges (deduplicate across faces)
|
|
592
575
|
vertex_unique_edge_count = vertex_start_edge_count
|
|
@@ -598,22 +581,18 @@ class Hexmesh(Geometry):
|
|
|
598
581
|
self._vertex_hex_offsets,
|
|
599
582
|
self._vertex_hex_indices,
|
|
600
583
|
self.hex_vertex_indices,
|
|
601
|
-
vertex_start_edge_offsets
|
|
602
|
-
vertex_unique_edge_count
|
|
603
|
-
vertex_edge_ends
|
|
584
|
+
vertex_start_edge_offsets,
|
|
585
|
+
vertex_unique_edge_count,
|
|
586
|
+
vertex_edge_ends,
|
|
604
587
|
],
|
|
605
588
|
)
|
|
606
589
|
|
|
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)
|
|
590
|
+
vertex_unique_edge_offsets = borrow_temporary_like(vertex_start_edge_offsets, temporary_store=temporary_store)
|
|
591
|
+
array_scan(in_array=vertex_start_edge_count, out_array=vertex_unique_edge_offsets, inclusive=False)
|
|
611
592
|
|
|
612
593
|
# Get back edge count to host
|
|
613
594
|
self._edge_count = int(
|
|
614
|
-
host_read_at_index(
|
|
615
|
-
vertex_unique_edge_offsets.array, self.vertex_count() - 1, temporary_store=temporary_store
|
|
616
|
-
)
|
|
595
|
+
host_read_at_index(vertex_unique_edge_offsets, self.vertex_count() - 1, temporary_store=temporary_store)
|
|
617
596
|
)
|
|
618
597
|
|
|
619
598
|
self._hex_edge_indices = wp.empty(
|
|
@@ -629,10 +608,10 @@ class Hexmesh(Geometry):
|
|
|
629
608
|
self._vertex_hex_offsets,
|
|
630
609
|
self._vertex_hex_indices,
|
|
631
610
|
self.hex_vertex_indices,
|
|
632
|
-
vertex_start_edge_offsets
|
|
633
|
-
vertex_unique_edge_offsets
|
|
634
|
-
vertex_unique_edge_count
|
|
635
|
-
vertex_edge_ends
|
|
611
|
+
vertex_start_edge_offsets,
|
|
612
|
+
vertex_unique_edge_offsets,
|
|
613
|
+
vertex_unique_edge_count,
|
|
614
|
+
vertex_edge_ends,
|
|
636
615
|
self._hex_edge_indices,
|
|
637
616
|
],
|
|
638
617
|
)
|