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
warp/fem/space/function_space.py
CHANGED
|
@@ -3,7 +3,9 @@ from typing import Any
|
|
|
3
3
|
import warp as wp
|
|
4
4
|
|
|
5
5
|
from warp.fem.types import DofIndex, ElementIndex, Coords
|
|
6
|
-
from warp.fem import
|
|
6
|
+
from warp.fem.geometry import Geometry
|
|
7
|
+
|
|
8
|
+
from .topology import SpaceTopology
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
class FunctionSpace:
|
|
@@ -11,84 +13,133 @@ class FunctionSpace:
|
|
|
11
13
|
Interface class for function spaces, i.e. geometry + interpolation basis
|
|
12
14
|
"""
|
|
13
15
|
|
|
14
|
-
DIMENSION: int
|
|
15
|
-
"""Input dimension of the function space"""
|
|
16
|
-
|
|
17
|
-
NODES_PER_ELEMENT: int
|
|
18
|
-
"""Number of interpolation nodes per element of the geometry"""
|
|
19
|
-
|
|
20
|
-
ORDER: int
|
|
21
|
-
"""Order of the interpolation basis"""
|
|
22
|
-
|
|
23
|
-
VALUE_DOF_COUNT: int
|
|
24
|
-
"""Number of degrees of freedom per node"""
|
|
25
|
-
|
|
26
16
|
dtype: type
|
|
27
17
|
"""Value type of the interpolation functions"""
|
|
28
18
|
|
|
29
19
|
SpaceArg: wp.codegen.Struct
|
|
30
20
|
"""Structure containing arguments to be passed to device function"""
|
|
31
21
|
|
|
22
|
+
VALUE_DOF_COUNT: int
|
|
23
|
+
"""Number of degrees of freedom per node, as a Warp constant"""
|
|
24
|
+
|
|
25
|
+
def __init__(self, topology: SpaceTopology):
|
|
26
|
+
self._topology = topology
|
|
27
|
+
|
|
28
|
+
if self._topology.is_trace:
|
|
29
|
+
self.element_inner_reference_gradient_transform = self.geometry.side_inner_inverse_deformation_gradient
|
|
30
|
+
self.element_outer_reference_gradient_transform = self.geometry.side_outer_inverse_deformation_gradient
|
|
31
|
+
else:
|
|
32
|
+
self.element_inner_reference_gradient_transform = self.geometry.cell_inverse_deformation_gradient
|
|
33
|
+
self.element_outer_reference_gradient_transform = self.geometry.cell_inverse_deformation_gradient
|
|
34
|
+
|
|
32
35
|
def node_count(self) -> int:
|
|
33
36
|
"""Number of nodes in the interpolation basis"""
|
|
34
37
|
raise NotImplementedError
|
|
35
38
|
|
|
36
|
-
def
|
|
37
|
-
"""
|
|
39
|
+
def space_arg_value(self, device) -> wp.codegen.StructInstance:
|
|
40
|
+
"""Value of the arguments to be passed to device functions"""
|
|
38
41
|
raise NotImplementedError
|
|
39
42
|
|
|
40
|
-
|
|
43
|
+
@property
|
|
44
|
+
def topology(self) -> SpaceTopology:
|
|
41
45
|
"""Underlying geometry"""
|
|
42
|
-
|
|
46
|
+
return self._topology
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
@property
|
|
49
|
+
def geometry(self) -> Geometry:
|
|
50
|
+
"""Underlying geometry"""
|
|
51
|
+
return self.topology.geometry
|
|
47
52
|
|
|
48
53
|
@property
|
|
49
|
-
def
|
|
50
|
-
|
|
54
|
+
def dimension(self) -> int:
|
|
55
|
+
"""Function space embedding dimension"""
|
|
56
|
+
return self.topology.dimension
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def degree(self) -> int:
|
|
60
|
+
"""Maximum polynomial degree of the underlying basis"""
|
|
61
|
+
raise NotImplementedError
|
|
51
62
|
|
|
52
63
|
@property
|
|
53
|
-
def
|
|
54
|
-
|
|
64
|
+
def name(self):
|
|
65
|
+
raise NotImplementedError
|
|
55
66
|
|
|
56
67
|
def __str__(self):
|
|
57
68
|
return self.name
|
|
58
69
|
|
|
59
|
-
def trace(self):
|
|
70
|
+
def trace(self) -> "FunctionSpace":
|
|
60
71
|
"""Trace of the function space over lower-dimensional elements of the geometry"""
|
|
61
72
|
raise NotImplementedError
|
|
62
73
|
|
|
63
|
-
def make_field(self, space_partition=None
|
|
64
|
-
"""
|
|
74
|
+
def make_field(self, space_partition=None):
|
|
75
|
+
"""Creates a zero-initialized discrete field over the function space holding values for all degrees of freedom of nodes in a space partition
|
|
76
|
+
|
|
77
|
+
space_arg:
|
|
78
|
+
space_partition: If provided, the subset of nodes to consider
|
|
79
|
+
|
|
80
|
+
See also: :func:`make_space_partition`
|
|
81
|
+
"""
|
|
65
82
|
raise NotImplementedError
|
|
66
83
|
|
|
67
|
-
|
|
84
|
+
@staticmethod
|
|
85
|
+
def unit_dof_value(elt_arg: "SpaceTopology.ElementArg", space_arg: "SpaceArg", dof: DofIndex):
|
|
68
86
|
"""Unit value for a given degree of freedom. Typically a rank-1 tensor"""
|
|
69
87
|
raise NotImplementedError
|
|
70
88
|
|
|
71
|
-
|
|
72
|
-
|
|
89
|
+
@staticmethod
|
|
90
|
+
def node_coords_in_element(
|
|
91
|
+
elt_arg: "SpaceTopology.ElementArg", space_arg: "SpaceArg", element_index: ElementIndex, node_index_in_elt: int
|
|
92
|
+
):
|
|
93
|
+
"""Coordinates inside element of a given node"""
|
|
73
94
|
raise NotImplementedError
|
|
74
95
|
|
|
75
|
-
|
|
76
|
-
|
|
96
|
+
@staticmethod
|
|
97
|
+
def node_quadrature_weight(
|
|
98
|
+
elt_arg: "SpaceTopology.ElementArg", space_arg: "SpaceArg", element_index: ElementIndex, node_index_in_elt: int
|
|
99
|
+
):
|
|
100
|
+
"""Weight of a given node when used as a quadrature point"""
|
|
77
101
|
raise NotImplementedError
|
|
78
102
|
|
|
79
|
-
|
|
103
|
+
@staticmethod
|
|
104
|
+
def element_inner_weight(
|
|
105
|
+
elt_arg: "SpaceTopology.ElementArg",
|
|
106
|
+
space_arg: "SpaceArg",
|
|
107
|
+
element_index: ElementIndex,
|
|
108
|
+
coords: Coords,
|
|
109
|
+
node_index_in_elt: int,
|
|
110
|
+
):
|
|
80
111
|
"""Inner weight for a node at given coordinates"""
|
|
81
112
|
raise NotImplementedError
|
|
82
113
|
|
|
83
|
-
|
|
84
|
-
|
|
114
|
+
@staticmethod
|
|
115
|
+
def element_inner_weight_gradient(
|
|
116
|
+
elt_arg: "SpaceTopology.ElementArg",
|
|
117
|
+
space_arg: "SpaceArg",
|
|
118
|
+
element_index: ElementIndex,
|
|
119
|
+
coords: Coords,
|
|
120
|
+
node_index_in_elt: int,
|
|
121
|
+
):
|
|
122
|
+
"""Inner weight gradient w.r.t. reference space for a node at given coordinates"""
|
|
85
123
|
raise NotImplementedError
|
|
86
124
|
|
|
87
|
-
|
|
125
|
+
@staticmethod
|
|
126
|
+
def element_outer_weight(
|
|
127
|
+
elt_arg: "SpaceTopology.ElementArg",
|
|
128
|
+
space_arg: "SpaceArg",
|
|
129
|
+
element_index: ElementIndex,
|
|
130
|
+
coords: Coords,
|
|
131
|
+
node_index_in_elt: int,
|
|
132
|
+
):
|
|
88
133
|
"""Outer weight for a node at given coordinates"""
|
|
89
134
|
raise NotImplementedError
|
|
90
135
|
|
|
91
|
-
@
|
|
92
|
-
def element_outer_weight_gradient(
|
|
93
|
-
|
|
136
|
+
@staticmethod
|
|
137
|
+
def element_outer_weight_gradient(
|
|
138
|
+
elt_arg: "SpaceTopology.ElementArg",
|
|
139
|
+
space_arg: "SpaceArg",
|
|
140
|
+
element_index: ElementIndex,
|
|
141
|
+
coords: Coords,
|
|
142
|
+
node_index_in_elt: int,
|
|
143
|
+
):
|
|
144
|
+
"""Outer weight gradient w.r.t reference space for a node at given coordinates"""
|
|
94
145
|
raise NotImplementedError
|