diff --git a/genesis/engine/solvers/rigid/collider_decomp.py b/genesis/engine/solvers/rigid/collider_decomp.py index 6119c849aa..5379f9aaea 100644 --- a/genesis/engine/solvers/rigid/collider_decomp.py +++ b/genesis/engine/solvers/rigid/collider_decomp.py @@ -771,6 +771,7 @@ def func_contact_sphere_sdf( i_b, geoms_state: array_class.GeomsState, geoms_info: array_class.GeomsInfo, + rigid_global_info: array_class.RigidGlobalInfo, collider_static_config: ti.template(), sdf_info: array_class.SDFInfo, ): diff --git a/genesis/engine/solvers/rigid/constraint_noslip.py b/genesis/engine/solvers/rigid/constraint_noslip.py index dc499f10ac..39740c38ea 100644 --- a/genesis/engine/solvers/rigid/constraint_noslip.py +++ b/genesis/engine/solvers/rigid/constraint_noslip.py @@ -270,6 +270,7 @@ def func_cost_change( @ti.kernel(fastcache=gs.use_fastcache) def compute_A_diag( + entities_info: array_class.EntitiesInfo, rigid_global_info: array_class.RigidGlobalInfo, constraint_state: array_class.ConstraintState, static_rigid_sim_config: ti.template(), diff --git a/genesis/engine/solvers/rigid/constraint_solver_decomp_island.py b/genesis/engine/solvers/rigid/constraint_solver_decomp_island.py index 886dcdd687..59ab66bc10 100644 --- a/genesis/engine/solvers/rigid/constraint_solver_decomp_island.py +++ b/genesis/engine/solvers/rigid/constraint_solver_decomp_island.py @@ -995,9 +995,9 @@ def _func_update_gradient(self, island, i_b): self.grad, self.Mgrad, array_class.PLACEHOLDER, - entities_info=entities_info, - rigid_global_info=rigid_global_info, - static_rigid_sim_config=static_rigid_sim_config, + entities_info=self.entities_info, + rigid_global_info=self._solver.data_manager.rigid_global_info, + static_rigid_sim_config=self._solver._static_rigid_sim_config, is_backward=False, ) for i_e in range(self._solver.n_entities): diff --git a/genesis/engine/solvers/sph_solver.py b/genesis/engine/solvers/sph_solver.py index c32d95d438..f4de0d00ce 100644 --- a/genesis/engine/solvers/sph_solver.py +++ b/genesis/engine/solvers/sph_solver.py @@ -399,7 +399,7 @@ def _kernel_compute_DFSPH_factor(self, f: ti.i32): ret = ti.Vector.zero(gs.ti_float, 4) self.sh.for_all_neighbors( - i, self.particles_reordered.pos, self._support_radius, ret, self._task_compute_DFSPH_factor + i_p, self.particles_reordered.pos, self._support_radius, ret, self._task_compute_DFSPH_factor ) sum_grad_p_k = ret[3] diff --git a/genesis/utils/geom.py b/genesis/utils/geom.py index e69ac906e0..7c1c1b7f39 100644 --- a/genesis/utils/geom.py +++ b/genesis/utils/geom.py @@ -1777,13 +1777,13 @@ def compute_reordered_idx(self, n, pos, active, reordered_idx): self.slot_start[i_s, i_b] -= self.slot_size[i_s, i_b] @ti.func - def for_all_neighbors(self, i, pos, task_range, ret: ti.template(), task: ti.template(), i_b): + def for_all_neighbors(self, i_p, pos, task_range, ret: ti.template(), task: ti.template(), i_b): """ Iterates over all neighbors of a given position and performs a task on each neighbor. Elements are considered neighbors if they are within task_range. Parameters: - i (int) : Index of the querying particle. + i_p (int) : Index of the querying particle. pos : Template for the positions of all particles. task : Template for the task to be performed on each neighbor of the querying particle. task_range : Range within which the task should be performed. @@ -1792,14 +1792,14 @@ def for_all_neighbors(self, i, pos, task_range, ret: ti.template(), task: ti.tem Returns: None """ - base = self.pos_to_grid(pos[i, i_b]) + base = self.pos_to_grid(pos[i_p, i_b]) for offset in ti.grouped(ti.ndrange((-1, 2), (-1, 2), (-1, 2))): slot_idx = self.grid_to_slot(base + offset) - for j in range( + for j_p in range( self.slot_start[slot_idx, i_b], self.slot_size[slot_idx, i_b] + self.slot_start[slot_idx, i_b] ): - if i != j and (pos[i, i_b] - pos[j, i_b]).norm() < task_range: - task(i, j, ret, i_b) + if i_p != j_p and (pos[i_p, i_b] - pos[j_p, i_b]).norm() < task_range: + task(i_p, j_p, ret, i_b) @ti.func def pos_to_grid(self, pos):