Skip to content
Projects

tree_d_3d.kernels.evaluate_quadtree.evaluate_quadtree_numpy

The version of the evaluate_quadtree kernel for machines without Pyccel.

There is no vectorized form (each target walks the tree with its own stack): this is the algorithm of evaluate_quadtree_pyccel.py, run by the Python interpreter.

Functions

NameDescription
evaluate_quadtreePotential and field at targets, without k_e.

evaluate_quadtreefunction#

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).