# tree_d_3d.kernels.evaluate_quadtree.evaluate_quadtree_pyccel

*module*

The Pyccel version (CPU) of the ``evaluate_quadtree`` kernel of the Barnes-Hut and FMM solvers.

``evaluate_quadtree_cuda.cu`` next to this file is the CUDA version (GPU) and ``evaluate_quadtree_numpy.py`` the
version for machines without Pyccel, all with the same arguments; the folder's
``__init__.py`` declares the kernel (see :mod:`tree_d_3d.kernels`). The flat
quadtree is described in :mod:`tree_d_3d.flat_tree`.

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/evaluate_quadtree/evaluate_quadtree_pyccel.py#L1-L1)

## tree_d_3d.kernels.evaluate_quadtree.evaluate_quadtree_pyccel.evaluate_quadtree

*function*

```python
def evaluate_quadtree(targets: float[:, :], exclude: int64[:], pos: float[:, :], charge: float[:], perm: int64[:], node_center: float[:, :], node_half: float[:], node_start: int64[:], node_end: int64[:], node_child: int64[:], node_q: float[:], node_qabs: float[:], node_p: float[:, :], node_s: float[:, :], theta: float, softening: float, stack: int64[:], phi: float[:], field: float[:, :], status: int64[:]) -> None
```

Potential and field at targets, without ``k_e``.

Source ``exclude[i]`` is skipped for target ``i`` (-1 skips nothing).
Cells containing the target are always opened, and the opening test uses
unsoftened distance. ``status[0]`` becomes 1 + a target that met an unsoftened coincident charge
(the first, on the CPU).

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/evaluate_quadtree/evaluate_quadtree_pyccel.py#L17-L152)
