warp-lang 1.0.0b2__py3-none-win_amd64.whl → 1.0.0b6__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.
- docs/conf.py +17 -5
- examples/env/env_ant.py +1 -1
- examples/env/env_cartpole.py +1 -1
- examples/env/env_humanoid.py +1 -1
- examples/env/env_usd.py +4 -1
- examples/env/environment.py +8 -9
- examples/example_dem.py +34 -33
- examples/example_diffray.py +364 -337
- examples/example_fluid.py +32 -23
- examples/example_jacobian_ik.py +97 -93
- examples/example_marching_cubes.py +6 -16
- examples/example_mesh.py +6 -16
- examples/example_mesh_intersect.py +16 -14
- examples/example_nvdb.py +14 -16
- examples/example_raycast.py +14 -13
- examples/example_raymarch.py +16 -23
- examples/example_render_opengl.py +19 -10
- examples/example_sim_cartpole.py +82 -78
- examples/example_sim_cloth.py +45 -48
- examples/example_sim_fk_grad.py +51 -44
- examples/example_sim_fk_grad_torch.py +47 -40
- examples/example_sim_grad_bounce.py +108 -133
- examples/example_sim_grad_cloth.py +99 -113
- examples/example_sim_granular.py +5 -6
- examples/{example_sim_sdf_shape.py → example_sim_granular_collision_sdf.py} +37 -26
- examples/example_sim_neo_hookean.py +51 -55
- examples/example_sim_particle_chain.py +4 -4
- examples/example_sim_quadruped.py +126 -81
- examples/example_sim_rigid_chain.py +54 -61
- examples/example_sim_rigid_contact.py +66 -70
- examples/example_sim_rigid_fem.py +3 -3
- examples/example_sim_rigid_force.py +1 -1
- examples/example_sim_rigid_gyroscopic.py +3 -4
- examples/example_sim_rigid_kinematics.py +28 -39
- examples/example_sim_trajopt.py +112 -110
- examples/example_sph.py +9 -8
- examples/example_wave.py +7 -7
- examples/fem/bsr_utils.py +30 -17
- examples/fem/example_apic_fluid.py +85 -69
- examples/fem/example_convection_diffusion.py +97 -93
- examples/fem/example_convection_diffusion_dg.py +142 -149
- examples/fem/example_convection_diffusion_dg0.py +141 -136
- examples/fem/example_deformed_geometry.py +146 -0
- examples/fem/example_diffusion.py +115 -84
- examples/fem/example_diffusion_3d.py +116 -86
- examples/fem/example_diffusion_mgpu.py +102 -79
- examples/fem/example_mixed_elasticity.py +139 -100
- examples/fem/example_navier_stokes.py +175 -162
- examples/fem/example_stokes.py +143 -111
- examples/fem/example_stokes_transfer.py +186 -157
- examples/fem/mesh_utils.py +59 -97
- examples/fem/plot_utils.py +138 -17
- tools/ci/publishing/build_nodes_info.py +54 -0
- warp/__init__.py +4 -3
- warp/__init__.pyi +1 -0
- warp/bin/warp-clang.dll +0 -0
- warp/bin/warp.dll +0 -0
- warp/build.py +5 -3
- warp/build_dll.py +29 -9
- warp/builtins.py +836 -492
- warp/codegen.py +864 -553
- warp/config.py +3 -1
- warp/context.py +389 -172
- warp/fem/__init__.py +24 -6
- warp/fem/cache.py +318 -25
- warp/fem/dirichlet.py +7 -3
- warp/fem/domain.py +14 -0
- warp/fem/field/__init__.py +30 -38
- warp/fem/field/field.py +149 -0
- warp/fem/field/nodal_field.py +244 -138
- warp/fem/field/restriction.py +8 -6
- warp/fem/field/test.py +127 -59
- warp/fem/field/trial.py +117 -60
- warp/fem/geometry/__init__.py +5 -1
- warp/fem/geometry/deformed_geometry.py +271 -0
- warp/fem/geometry/element.py +24 -1
- warp/fem/geometry/geometry.py +86 -14
- warp/fem/geometry/grid_2d.py +112 -54
- warp/fem/geometry/grid_3d.py +134 -65
- warp/fem/geometry/hexmesh.py +953 -0
- warp/fem/geometry/partition.py +85 -33
- warp/fem/geometry/quadmesh_2d.py +532 -0
- warp/fem/geometry/tetmesh.py +451 -115
- warp/fem/geometry/trimesh_2d.py +197 -92
- warp/fem/integrate.py +534 -268
- warp/fem/operator.py +58 -31
- warp/fem/polynomial.py +11 -0
- warp/fem/quadrature/__init__.py +1 -1
- warp/fem/quadrature/pic_quadrature.py +150 -58
- warp/fem/quadrature/quadrature.py +209 -57
- warp/fem/space/__init__.py +230 -53
- warp/fem/space/basis_space.py +489 -0
- warp/fem/space/collocated_function_space.py +105 -0
- warp/fem/space/dof_mapper.py +49 -2
- warp/fem/space/function_space.py +90 -39
- warp/fem/space/grid_2d_function_space.py +149 -496
- warp/fem/space/grid_3d_function_space.py +173 -538
- warp/fem/space/hexmesh_function_space.py +352 -0
- warp/fem/space/partition.py +129 -76
- warp/fem/space/quadmesh_2d_function_space.py +369 -0
- warp/fem/space/restriction.py +46 -34
- warp/fem/space/shape/__init__.py +15 -0
- warp/fem/space/shape/cube_shape_function.py +738 -0
- warp/fem/space/shape/shape_function.py +103 -0
- warp/fem/space/shape/square_shape_function.py +611 -0
- warp/fem/space/shape/tet_shape_function.py +567 -0
- warp/fem/space/shape/triangle_shape_function.py +429 -0
- warp/fem/space/tetmesh_function_space.py +132 -1039
- warp/fem/space/topology.py +295 -0
- warp/fem/space/trimesh_2d_function_space.py +104 -742
- warp/fem/types.py +13 -11
- warp/fem/utils.py +335 -60
- warp/native/array.h +120 -34
- warp/native/builtin.h +101 -72
- warp/native/bvh.cpp +73 -325
- warp/native/bvh.cu +406 -23
- warp/native/bvh.h +22 -40
- warp/native/clang/clang.cpp +1 -0
- warp/native/crt.h +2 -0
- warp/native/cuda_util.cpp +8 -3
- warp/native/cuda_util.h +1 -0
- warp/native/exports.h +1522 -1243
- warp/native/intersect.h +19 -4
- warp/native/intersect_adj.h +8 -8
- warp/native/mat.h +76 -17
- warp/native/mesh.cpp +33 -108
- warp/native/mesh.cu +114 -18
- warp/native/mesh.h +395 -40
- warp/native/noise.h +272 -329
- warp/native/quat.h +51 -8
- warp/native/rand.h +44 -34
- warp/native/reduce.cpp +1 -1
- warp/native/sparse.cpp +4 -4
- warp/native/sparse.cu +163 -155
- warp/native/spatial.h +2 -2
- warp/native/temp_buffer.h +18 -14
- warp/native/vec.h +103 -21
- warp/native/warp.cpp +2 -1
- warp/native/warp.cu +28 -3
- warp/native/warp.h +4 -3
- warp/render/render_opengl.py +261 -109
- warp/sim/__init__.py +1 -2
- warp/sim/articulation.py +385 -185
- warp/sim/import_mjcf.py +59 -48
- warp/sim/import_urdf.py +15 -15
- warp/sim/import_usd.py +174 -102
- warp/sim/inertia.py +17 -18
- warp/sim/integrator_xpbd.py +4 -3
- warp/sim/model.py +330 -250
- warp/sim/render.py +1 -1
- warp/sparse.py +625 -152
- warp/stubs.py +341 -309
- warp/tape.py +9 -6
- warp/tests/__main__.py +3 -6
- warp/tests/assets/curlnoise_golden.npy +0 -0
- warp/tests/assets/pnoise_golden.npy +0 -0
- warp/tests/{test_class_kernel.py → aux_test_class_kernel.py} +9 -1
- warp/tests/aux_test_conditional_unequal_types_kernels.py +21 -0
- warp/tests/{test_dependent.py → aux_test_dependent.py} +2 -2
- warp/tests/{test_reference.py → aux_test_reference.py} +1 -1
- warp/tests/aux_test_unresolved_func.py +14 -0
- warp/tests/aux_test_unresolved_symbol.py +14 -0
- warp/tests/disabled_kinematics.py +239 -0
- warp/tests/run_coverage_serial.py +31 -0
- warp/tests/test_adam.py +103 -106
- warp/tests/test_arithmetic.py +94 -74
- warp/tests/test_array.py +82 -101
- warp/tests/test_array_reduce.py +57 -23
- warp/tests/test_atomic.py +64 -28
- warp/tests/test_bool.py +22 -12
- warp/tests/test_builtins_resolution.py +1292 -0
- warp/tests/test_bvh.py +18 -18
- warp/tests/test_closest_point_edge_edge.py +54 -57
- warp/tests/test_codegen.py +165 -134
- warp/tests/test_compile_consts.py +28 -20
- warp/tests/test_conditional.py +108 -24
- warp/tests/test_copy.py +10 -12
- warp/tests/test_ctypes.py +112 -88
- warp/tests/test_dense.py +21 -14
- warp/tests/test_devices.py +98 -0
- warp/tests/test_dlpack.py +75 -75
- warp/tests/test_examples.py +237 -0
- warp/tests/test_fabricarray.py +22 -24
- warp/tests/test_fast_math.py +15 -11
- warp/tests/test_fem.py +1034 -124
- warp/tests/test_fp16.py +23 -16
- warp/tests/test_func.py +187 -86
- warp/tests/test_generics.py +194 -49
- warp/tests/test_grad.py +123 -181
- warp/tests/test_grad_customs.py +176 -0
- warp/tests/test_hash_grid.py +35 -34
- warp/tests/test_import.py +10 -23
- warp/tests/test_indexedarray.py +24 -25
- warp/tests/test_intersect.py +18 -9
- warp/tests/test_large.py +141 -0
- warp/tests/test_launch.py +14 -41
- warp/tests/test_lerp.py +64 -65
- warp/tests/test_lvalue.py +493 -0
- warp/tests/test_marching_cubes.py +12 -13
- warp/tests/test_mat.py +517 -2898
- warp/tests/test_mat_lite.py +115 -0
- warp/tests/test_mat_scalar_ops.py +2889 -0
- warp/tests/test_math.py +103 -9
- warp/tests/test_matmul.py +304 -69
- warp/tests/test_matmul_lite.py +410 -0
- warp/tests/test_mesh.py +60 -22
- warp/tests/test_mesh_query_aabb.py +21 -25
- warp/tests/test_mesh_query_point.py +111 -22
- warp/tests/test_mesh_query_ray.py +12 -24
- warp/tests/test_mlp.py +30 -22
- warp/tests/test_model.py +92 -89
- warp/tests/test_modules_lite.py +39 -0
- warp/tests/test_multigpu.py +88 -114
- warp/tests/test_noise.py +12 -11
- warp/tests/test_operators.py +16 -20
- warp/tests/test_options.py +11 -11
- warp/tests/test_pinned.py +17 -18
- warp/tests/test_print.py +32 -11
- warp/tests/test_quat.py +275 -129
- warp/tests/test_rand.py +18 -16
- warp/tests/test_reload.py +38 -34
- warp/tests/test_rounding.py +50 -43
- warp/tests/test_runlength_encode.py +168 -20
- warp/tests/test_smoothstep.py +9 -11
- warp/tests/test_snippet.py +143 -0
- warp/tests/test_sparse.py +261 -63
- warp/tests/test_spatial.py +276 -243
- warp/tests/test_streams.py +110 -85
- warp/tests/test_struct.py +268 -63
- warp/tests/test_tape.py +39 -21
- warp/tests/test_torch.py +90 -86
- warp/tests/test_transient_module.py +10 -12
- warp/tests/test_types.py +363 -0
- warp/tests/test_utils.py +451 -0
- warp/tests/test_vec.py +354 -2050
- warp/tests/test_vec_lite.py +73 -0
- warp/tests/test_vec_scalar_ops.py +2099 -0
- warp/tests/test_volume.py +418 -376
- warp/tests/test_volume_write.py +124 -134
- warp/tests/unittest_serial.py +35 -0
- warp/tests/unittest_suites.py +291 -0
- warp/tests/unittest_utils.py +342 -0
- warp/tests/{test_misc.py → unused_test_misc.py} +13 -5
- warp/tests/{test_debug.py → walkthough_debug.py} +3 -17
- warp/thirdparty/appdirs.py +36 -45
- warp/thirdparty/unittest_parallel.py +589 -0
- warp/types.py +622 -211
- warp/utils.py +54 -393
- warp_lang-1.0.0b6.dist-info/METADATA +238 -0
- warp_lang-1.0.0b6.dist-info/RECORD +409 -0
- {warp_lang-1.0.0b2.dist-info → warp_lang-1.0.0b6.dist-info}/WHEEL +1 -1
- examples/example_cache_management.py +0 -40
- examples/example_multigpu.py +0 -54
- examples/example_struct.py +0 -65
- examples/fem/example_stokes_transfer_3d.py +0 -210
- warp/bin/warp-clang.so +0 -0
- warp/bin/warp.so +0 -0
- warp/fem/field/discrete_field.py +0 -80
- warp/fem/space/nodal_function_space.py +0 -233
- warp/tests/test_all.py +0 -223
- warp/tests/test_array_scan.py +0 -60
- warp/tests/test_base.py +0 -208
- warp/tests/test_unresolved_func.py +0 -7
- warp/tests/test_unresolved_symbol.py +0 -7
- warp_lang-1.0.0b2.dist-info/METADATA +0 -26
- warp_lang-1.0.0b2.dist-info/RECORD +0 -380
- /warp/tests/{test_compile_consts_dummy.py → aux_test_compile_consts_dummy.py} +0 -0
- /warp/tests/{test_reference_reference.py → aux_test_reference_reference.py} +0 -0
- /warp/tests/{test_square.py → aux_test_square.py} +0 -0
- {warp_lang-1.0.0b2.dist-info → warp_lang-1.0.0b6.dist-info}/LICENSE.md +0 -0
- {warp_lang-1.0.0b2.dist-info → warp_lang-1.0.0b6.dist-info}/top_level.txt +0 -0
docs/conf.py
CHANGED
|
@@ -12,16 +12,19 @@
|
|
|
12
12
|
#
|
|
13
13
|
import os
|
|
14
14
|
import sys
|
|
15
|
+
from datetime import date
|
|
15
16
|
|
|
16
|
-
sys.path.insert(0, os.path.
|
|
17
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
|
18
|
+
import warp as wp # noqa: E402
|
|
17
19
|
|
|
18
20
|
# -- Project information -----------------------------------------------------
|
|
19
21
|
|
|
20
22
|
project = "Warp"
|
|
21
|
-
copyright = "
|
|
23
|
+
copyright = f"2022-{date.today().year}, NVIDIA"
|
|
22
24
|
author = "NVIDIA"
|
|
23
25
|
|
|
24
|
-
version =
|
|
26
|
+
version = wp.__version__
|
|
27
|
+
release = version
|
|
25
28
|
|
|
26
29
|
# -- General configuration ---------------------------------------------------
|
|
27
30
|
|
|
@@ -34,9 +37,10 @@ extensions = [
|
|
|
34
37
|
"sphinx.ext.intersphinx",
|
|
35
38
|
"sphinx.ext.autosummary",
|
|
36
39
|
"sphinx.ext.todo",
|
|
40
|
+
"sphinx.ext.extlinks", # Markup to shorten external links
|
|
37
41
|
# Third-party extensions:
|
|
42
|
+
"sphinx_copybutton"
|
|
38
43
|
# 'sphinx_tabs.tabs',
|
|
39
|
-
# 'sphinx_copybutton'
|
|
40
44
|
# 'autodocsumm'
|
|
41
45
|
]
|
|
42
46
|
|
|
@@ -55,7 +59,11 @@ todo_emit_warnings = True
|
|
|
55
59
|
|
|
56
60
|
intersphinx_mapping = {
|
|
57
61
|
"python": ("https://docs.python.org/3", None),
|
|
58
|
-
"numpy": ("
|
|
62
|
+
"numpy": ("https://numpy.org/doc/stable", None),
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
extlinks = {
|
|
66
|
+
"github": ("https://github.com/NVIDIA/warp/blob/main/%s", "%s"),
|
|
59
67
|
}
|
|
60
68
|
|
|
61
69
|
# List of patterns, relative to source directory, that match files and
|
|
@@ -63,6 +71,10 @@ intersphinx_mapping = {
|
|
|
63
71
|
# This pattern also affects html_static_path and html_extra_path.
|
|
64
72
|
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
|
65
73
|
|
|
74
|
+
# sphinx_copybutton settings
|
|
75
|
+
copybutton_prompt_text = r">>> |\.\.\. |\$ "
|
|
76
|
+
copybutton_prompt_is_regexp = True
|
|
77
|
+
|
|
66
78
|
# -- Options for HTML output -------------------------------------------------
|
|
67
79
|
|
|
68
80
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
examples/env/env_ant.py
CHANGED
|
@@ -54,7 +54,7 @@ class AntEnvironment(Environment):
|
|
|
54
54
|
up_axis="y",
|
|
55
55
|
)
|
|
56
56
|
builder.joint_q[7:] = [0.0, 1.0, 0.0, -1.0, 0.0, -1.0, 0.0, 1.0]
|
|
57
|
-
builder.joint_q[:7] = [0.0, 0.7, 0.0, *wp.quat_from_axis_angle((1.0, 0.0, 0.0), -math.pi * 0.5)]
|
|
57
|
+
builder.joint_q[:7] = [0.0, 0.7, 0.0, *wp.quat_from_axis_angle(wp.vec3(1.0, 0.0, 0.0), -math.pi * 0.5)]
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
if __name__ == "__main__":
|
examples/env/env_cartpole.py
CHANGED
|
@@ -39,7 +39,7 @@ class CartpoleEnvironment(Environment):
|
|
|
39
39
|
wp.sim.parse_urdf(
|
|
40
40
|
os.path.join(os.path.dirname(__file__), "../assets/cartpole.urdf"),
|
|
41
41
|
builder,
|
|
42
|
-
xform=wp.transform((0.0, 0.0, 0.0), wp.quat_from_axis_angle((1.0, 0.0, 0.0), -math.pi * 0.5)),
|
|
42
|
+
xform=wp.transform((0.0, 0.0, 0.0), wp.quat_from_axis_angle(wp.vec3(1.0, 0.0, 0.0), -math.pi * 0.5)),
|
|
43
43
|
floating=False,
|
|
44
44
|
armature=0.1,
|
|
45
45
|
stiffness=0.0,
|
examples/env/env_humanoid.py
CHANGED
|
@@ -58,7 +58,7 @@ class HumanoidEnvironment(Environment):
|
|
|
58
58
|
up_axis="y",
|
|
59
59
|
)
|
|
60
60
|
|
|
61
|
-
builder.joint_q[:7] = [0.0, 1.7, 0.0, *wp.quat_from_axis_angle((1.0, 0.0, 0.0), -math.pi * 0.5)]
|
|
61
|
+
builder.joint_q[:7] = [0.0, 1.7, 0.0, *wp.quat_from_axis_angle(wp.vec3(1.0, 0.0, 0.0), -math.pi * 0.5)]
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
if __name__ == "__main__":
|
examples/env/env_usd.py
CHANGED
|
@@ -44,8 +44,11 @@ class UsdEnvironment(Environment):
|
|
|
44
44
|
plot_body_coords = False
|
|
45
45
|
|
|
46
46
|
def create_articulation(self, builder):
|
|
47
|
-
|
|
47
|
+
usd_filename = wp.sim.resolve_usd_from_url(
|
|
48
48
|
"http://omniverse-content-staging.s3-us-west-2.amazonaws.com/Assets/Isaac/2022.2.1/Isaac/Robots/Franka/franka_instanceable.usd",
|
|
49
|
+
target_folder_name=".panda_usd_files")
|
|
50
|
+
settings = wp.sim.parse_usd(
|
|
51
|
+
usd_filename,
|
|
49
52
|
builder,
|
|
50
53
|
default_thickness=0.01,
|
|
51
54
|
# ignore collision meshes from Franka robot
|
examples/env/environment.py
CHANGED
|
@@ -5,16 +5,17 @@
|
|
|
5
5
|
# distribution of this software and related documentation without an express
|
|
6
6
|
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
7
7
|
|
|
8
|
-
import warp as wp
|
|
9
|
-
import warp.sim
|
|
10
|
-
import warp.sim.render
|
|
11
|
-
|
|
12
8
|
import argparse
|
|
13
9
|
import os
|
|
14
|
-
import numpy as np
|
|
15
10
|
from enum import Enum
|
|
16
11
|
from typing import Tuple
|
|
17
12
|
|
|
13
|
+
import numpy as np
|
|
14
|
+
|
|
15
|
+
import warp as wp
|
|
16
|
+
import warp.sim
|
|
17
|
+
import warp.sim.render
|
|
18
|
+
|
|
18
19
|
wp.init()
|
|
19
20
|
|
|
20
21
|
|
|
@@ -225,7 +226,8 @@ class Environment:
|
|
|
225
226
|
show_rigid_contact_points=self.show_rigid_contact_points,
|
|
226
227
|
contact_points_radius=self.contact_points_radius,
|
|
227
228
|
show_joints=self.show_joints,
|
|
228
|
-
**self.opengl_render_settings
|
|
229
|
+
**self.opengl_render_settings,
|
|
230
|
+
)
|
|
229
231
|
if self.use_tiled_rendering and self.num_envs > 1:
|
|
230
232
|
floor_id = self.model.shape_count - 1
|
|
231
233
|
# all shapes except the floor
|
|
@@ -315,10 +317,7 @@ class Environment:
|
|
|
315
317
|
if self.use_graph_capture:
|
|
316
318
|
# create update graph
|
|
317
319
|
wp.capture_begin()
|
|
318
|
-
|
|
319
|
-
# simulate
|
|
320
320
|
self.update()
|
|
321
|
-
|
|
322
321
|
graph = wp.capture_end()
|
|
323
322
|
|
|
324
323
|
if self.plot_body_coords:
|
examples/example_dem.py
CHANGED
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
#
|
|
15
15
|
###########################################################################
|
|
16
16
|
|
|
17
|
+
import os
|
|
18
|
+
|
|
17
19
|
import numpy as np
|
|
18
20
|
|
|
19
21
|
import warp as wp
|
|
20
22
|
import warp.render
|
|
21
23
|
|
|
22
|
-
import os
|
|
23
|
-
|
|
24
24
|
wp.init()
|
|
25
25
|
|
|
26
26
|
|
|
@@ -118,6 +118,8 @@ def integrate(
|
|
|
118
118
|
|
|
119
119
|
class Example:
|
|
120
120
|
def __init__(self, stage):
|
|
121
|
+
self.device = wp.get_device()
|
|
122
|
+
|
|
121
123
|
self.frame_dt = 1.0 / 60
|
|
122
124
|
self.frame_count = 400
|
|
123
125
|
|
|
@@ -150,32 +152,32 @@ class Example:
|
|
|
150
152
|
self.use_graph = wp.get_device().is_cuda
|
|
151
153
|
|
|
152
154
|
if self.use_graph:
|
|
153
|
-
wp.capture_begin()
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
155
|
+
wp.capture_begin(self.device)
|
|
156
|
+
try:
|
|
157
|
+
for _ in range(self.sim_substeps):
|
|
158
|
+
with wp.ScopedTimer("forces", active=False):
|
|
159
|
+
wp.launch(
|
|
160
|
+
kernel=apply_forces,
|
|
161
|
+
dim=len(self.x),
|
|
162
|
+
inputs=[
|
|
163
|
+
self.grid.id,
|
|
164
|
+
self.x,
|
|
165
|
+
self.v,
|
|
166
|
+
self.f,
|
|
167
|
+
self.point_radius,
|
|
168
|
+
self.k_contact,
|
|
169
|
+
self.k_damp,
|
|
170
|
+
self.k_friction,
|
|
171
|
+
self.k_mu,
|
|
172
|
+
],
|
|
173
|
+
)
|
|
174
|
+
wp.launch(
|
|
175
|
+
kernel=integrate,
|
|
176
|
+
dim=len(self.x),
|
|
177
|
+
inputs=[self.x, self.v, self.f, (0.0, -9.8, 0.0), self.sim_dt, self.inv_mass],
|
|
178
|
+
)
|
|
179
|
+
finally:
|
|
180
|
+
self.graph = wp.capture_end(self.device)
|
|
179
181
|
|
|
180
182
|
def update(self):
|
|
181
183
|
with wp.ScopedTimer("simulate", active=True):
|
|
@@ -186,12 +188,14 @@ class Example:
|
|
|
186
188
|
with wp.ScopedTimer("solve", active=False):
|
|
187
189
|
wp.capture_launch(self.graph)
|
|
188
190
|
|
|
191
|
+
self.sim_time += self.frame_dt
|
|
192
|
+
|
|
189
193
|
else:
|
|
190
194
|
with wp.ScopedTimer("grid build", active=False):
|
|
191
195
|
self.grid.build(self.x, self.point_radius)
|
|
192
196
|
|
|
193
197
|
with wp.ScopedTimer("solve", active=False):
|
|
194
|
-
for
|
|
198
|
+
for _ in range(self.sim_substeps):
|
|
195
199
|
wp.launch(
|
|
196
200
|
kernel=apply_forces,
|
|
197
201
|
dim=len(self.x),
|
|
@@ -212,8 +216,7 @@ class Example:
|
|
|
212
216
|
dim=len(self.x),
|
|
213
217
|
inputs=[self.x, self.v, self.f, (0.0, -9.8, 0.0), self.sim_dt, self.inv_mass],
|
|
214
218
|
)
|
|
215
|
-
|
|
216
|
-
wp.synchronize()
|
|
219
|
+
self.sim_time += self.sim_dt
|
|
217
220
|
|
|
218
221
|
def render(self, is_live=False):
|
|
219
222
|
with wp.ScopedTimer("render", active=True):
|
|
@@ -223,8 +226,6 @@ class Example:
|
|
|
223
226
|
self.renderer.render_points(points=self.x.numpy(), radius=self.point_radius, name="points")
|
|
224
227
|
self.renderer.end_frame()
|
|
225
228
|
|
|
226
|
-
self.sim_time += self.frame_dt
|
|
227
|
-
|
|
228
229
|
# creates a grid of particles
|
|
229
230
|
def particle_grid(self, dim_x, dim_y, dim_z, lower, radius, jitter):
|
|
230
231
|
points = np.meshgrid(np.linspace(0, dim_x, dim_x), np.linspace(0, dim_y, dim_y), np.linspace(0, dim_z, dim_z))
|