# import numpy as np
# import warp as wp
# from tqdm.auto import trangeWarp Basics
This example is from NVIDIA’s Accelerated Computing Hub.
# num_particles = 10_000_000
# num_steps = 100
# mass = 0.1
# g = 9.81
# b = 0.05
# dt = 0.01 * (2 * mass / b)
# gravity = wp.vec3([0.0, 0.0, -g])
# @wp.kernel
# def integrate(positions: wp.array(dtype=wp.vec3), velocities: wp.array(dtype=wp.vec3)): # type: ignore
# i = wp.tid()
# acceleration = (-b * velocities[i]) / mass + gravity
# velocities[i] += acceleration * dt
# positions[i] += velocities[i] * dt# # Initial positions: random values between -1.0 and 1.0 for x, y, and z
# rng = np.random.default_rng(12345)
# positions_np = rng.uniform(low=-1.0, high=1.0, size=(num_particles, 3))
# positions = wp.array(positions_np, dtype=wp.vec3)
# # Initial velocities: random values between -0.5 and 0.5 m/s for vx, vy, and vz
# velocities_np = rng.uniform(low=-0.5, high=0.5, size=(num_particles, 3))
# velocities = wp.array(velocities_np, dtype=wp.vec3)
# print(f"Initial positions:\n{positions}")
# for step in trange(num_steps):
# wp.launch(integrate, dim=(num_particles,), inputs=[positions, velocities])
# print(f"Final positions:\n{positions}")