pyfracval.cca.pairing ===================== .. py:module:: pyfracval.cca.pairing .. autoapi-nested-parse:: Pair generation and Gamma_pc calculation for CCA. Mixed into :class:`pyfracval.cca.aggregator.CCAggregator` - these methods assume ``self`` carries the CCAggregator instance state (coords, radii, i_orden, df, kf, etc.), set up in ``CCAggregator.__init__``. Module Contents --------------- .. py:function:: cluster_surface_reach(r_max, radii) Furthest a cluster's particle *surface* reaches from its centre of mass. The pairing gate must compare Gamma against this, not against ``r_max`` alone. ``r_max`` is the distance to the furthest particle's *centre*; a placement only needs the two clusters' surfaces to touch, which buys another particle radius on each side. The difference is negligible for a 500-particle cluster (~14%) and decisive for a 3-particle one, where the radii are a large fraction of the whole reach. Screening on ``r_max`` therefore discarded pairs that were perfectly placeable: measured at sigma=1.0, Df=1.4, N=8, Gamma=5.50 against r_max sum 4.02 (rejected) but surface reach 6.02 (feasible). Those cells simply never generated. This also makes the screen consistent with the candidate test it gates, which already works in surface terms - paper Eq. 10 is ``D_i1+ + D_j2+ >= Gamma`` with ``D+ = d + r``.