% ============================================================================== % chapters/ch06_algorithmic_architecture/sec03_dyadic_scheduler/content.tex % Section 6.3: Macro-Time Loop, Dynamical Timescales, and Skeel--Gear Dyadic Scheduler (Phase 2) % ============================================================================== \subsection{Macro-Time Loop, Dynamical Timescales, and Skeel--Gear Dyadic Scheduler} \label{sec:dyadic_scheduler} Variable time-stepping in geometric integration requires strict boundary synchronization to avoid destroying the symplectic 2-form. This section details Phase~2: the operational implementation of the dyadic multirate scheduler according to the principles of Skeel \& Gear (1992). Variable time-stepping in Hamiltonian numerical integration is governed by the Ge--Marsden theorem~\cite{ge1988lie}, which establishes that an unconstrained, non-autonomous step-size adaptation $\Delta t(t)$ destroys the existence of an exact modified shadow Hamiltonian $\widetilde{H}$, inevitably triggering secular energy dissipation or spurious orbital expansion. To capture the vast dynamic range of unsoftened gravitational interactions without sacrificing geometric invariants, Phase~2 operationalizes the \emph{dyadic multirate scheduler} based on the macro-boundary synchronization paradigm of Skeel \& Gear (1992)~\cite{skeel1992does}. By restricting temporal refinement to integer powers of two on a discrete dyadic lattice, holding the topological Jacobi tree chart and refinement exponent strictly frozen within each macro-block, and applying the Leaf/Apex Decoupling Theorem, the scheduler achieves optimal multirate acceleration while preserving exact microscopic symplecticity and palindromic time-reversibility. % ------------------------------------------------------------------------------ \subsubsection{Macro-Time Execution Loop and Skeel--Gear Boundary Synchronization (Phase 2.1)} \label{sub:macro_time_loop} The global integration horizon $[0, t_{\mathrm{end}}]$ is partitioned into a contiguous sequence of macroscopic blocks $I_n = [t_n, t_{n+1}]$, where the macro-step $\Delta t_n \coloneqq t_{n+1} - t_n$ is bounded by a user-specified ceiling $\Delta t_{\mathrm{macro}} > 0$: \begin{equation} \Delta t_n = \min\left( \Delta t_{\mathrm{macro}}, \; t_{\mathrm{end}} - t_n \right), \qquad t_0 = 0. \label{eq:macroblock_interval_definition} \end{equation} Within each macro-block $I_n$, variable time resolution is introduced not by continuous modulation, but by selecting an integer dyadic refinement exponent $k_n \in \{0, 1, \dots, k_{\max}\}$ (illustrated on an eccentric Keplerian encounter $GM = 1$, $a = 1.65$, $e = 0.68$, $h = 0.72$, $k = 0 \to 1 \to 2 \to 1 \to 0$ in Figure~\ref{fig:ch06_dyadic_curve_subdivision}). The block is subsequently integrated via exactly $2^{k_n}$ uniform sub-steps of size: \begin{equation} h_{k_n} \coloneqq \frac{\Delta t_n}{2^{k_n}}. \label{eq:dyadic_substep_size} \end{equation} \begin{figure}[!htbp] \centering \resizebox{0.98\textwidth}{!}{% \begin{tikzpicture}[>=stealth, font=\small] % ========================================================================== % PANEL (a): Physical Configuration Space (q_x, q_y) — Exact Keplerian Orbit % GM = 1.0, a = 1.65, e = 0.68, focus at (0,0), pericenter at (0, -0.871) % ========================================================================== \begin{scope}[shift={(-3.75, 0)}] \node[font=\footnotesize\bfseries] at (0, 2.75) {(a) Configuration space $(q_x, q_y)$}; % Faint coordinate axes through attractive focus (0,0) \draw[->, line width=0.45pt, black!35] (-2.45, 0) -- (2.45, 0) node[right=1pt, font=\scriptsize, black!70] {$q_x$}; \draw[->, line width=0.45pt, black!35] (0, -1.25) -- (0, 2.15) node[above right=1pt, font=\scriptsize, black!70] {$q_y$}; % Concentric dynamical timescale threshold circles around focus (0,0) % Outer shell R_1 = 1.920 (crossing at t_1, t_4); Inner shell R_2 = 1.089 (crossing at t_2, t_3) \draw[dashed, line width=0.55pt, black!45] (155:1.920) arc (155:385:1.920); \draw[dashed, line width=0.55pt, black!45] (0, 0) circle (1.089); % Gravitating focus q_attr at (0, 0) \filldraw[black] (0, 0) circle (2.6pt) node[above right=2pt, font=\scriptsize] {$\mathbf{q}_{\mathrm{attr}}$}; % Exact Keplerian trajectory wrapping around the focus (0, 0) \draw[line width=0.72pt, black] plot[smooth] coordinates { (-1.996,1.892) (-1.996,1.789) (-1.992,1.683) (-1.986,1.575) (-1.976,1.464) (-1.962,1.350) (-1.944,1.233) (-1.921,1.113) (-1.894,0.990) (-1.860,0.865) (-1.821,0.736) (-1.775,0.605) (-1.721,0.471) (-1.658,0.335) (-1.585,0.196) (-1.501,0.057) (-1.404,-0.083) (-1.293,-0.223) (-1.166,-0.359) (-1.019,-0.489) (-0.853,-0.610) (-0.666,-0.715) (-0.458,-0.799) (-0.234,-0.852) (0.000,-0.871) (0.234,-0.852) (0.458,-0.799) (0.666,-0.715) (0.853,-0.610) (1.019,-0.489) (1.166,-0.359) (1.293,-0.223) (1.404,-0.083) (1.501,0.057) (1.585,0.196) (1.658,0.335) (1.721,0.471) (1.775,0.605) (1.821,0.736) (1.860,0.865) (1.894,0.990) (1.921,1.113) (1.944,1.233) (1.962,1.350) (1.976,1.464) (1.986,1.575) (1.992,1.683) (1.996,1.789) (1.996,1.892) }; % Direction arrows along the orbit (inbound on left, outbound on right) \draw[->, line width=0.72pt, black] (-1.944,1.233) -- (-1.894,0.990); \draw[->, line width=0.72pt, black] (1.894,0.990) -- (1.944,1.233); % Dyadic sub-step gray beads along the physical orbit % k=2 quarter-steps (t = -0.18, 0.00, +0.18) -> medium-dark gray (black!55) \foreach \pt in {(-0.512, -0.781), (0.000, -0.871), (0.512, -0.781)} { \filldraw[fill=black!55, draw=black, line width=0.55pt] \pt circle (1.85pt); } % k=1 midpoints (t = -0.72, +0.72) -> light gray (black!25) \foreach \pt in {(-1.501, 0.057), (1.501, 0.057)} { \filldraw[fill=black!25, draw=black, line width=0.6pt] \pt circle (2.0pt); } % Macro-boundary nodes (white beads k=0) t_0 .. t_5 \filldraw[fill=white, draw=black, line width=0.7pt] (-1.994, 1.737) circle (2.25pt) node[left=3pt, font=\scriptsize] {$t_0$}; \filldraw[fill=white, draw=black, line width=0.7pt] (-1.799, 0.671) circle (2.25pt) node[left=3pt, font=\scriptsize] {$t_1$}; \filldraw[fill=white, draw=black, line width=0.7pt] (-0.939, -0.551) circle (2.25pt) node[below left=2pt, font=\scriptsize] {$t_2$}; \filldraw[fill=white, draw=black, line width=0.7pt] (0.939, -0.551) circle (2.25pt) node[below right=2pt, font=\scriptsize] {$t_3$}; \filldraw[fill=white, draw=black, line width=0.7pt] (1.799, 0.671) circle (2.25pt) node[right=3pt, font=\scriptsize] {$t_4$}; \filldraw[fill=white, draw=black, line width=0.7pt] (1.994, 1.737) circle (2.25pt) node[right=3pt, font=\scriptsize] {$t_5$}; % Step-size labels along the physical arcs \node[right=2pt, font=\scriptsize] at (-1.92, 1.22) {$h$}; \node[left=4pt, font=\scriptsize] at (-1.62, 0.22) {$h/2$}; \node[below=6pt, font=\scriptsize] at (0.0, -0.94) {$h/4$}; \node[right=4pt, font=\scriptsize] at (1.62, 0.22) {$h/2$}; \node[left=2pt, font=\scriptsize] at (1.92, 1.22) {$h$}; \end{scope} % ========================================================================== % PANEL (b): Radial Cotangent Phase Space (r, p_r) — Exact Phase Curve % ========================================================================== \begin{scope}[shift={(3.75, 0)}] \node[font=\footnotesize\bfseries] at (0, 2.75) {(b) Radial phase space $(r, p_r)$}; % Phase space axes: horizontal r, vertical p_r (with p_r = 0 line at y = 0.45) \draw[->, line width=0.55pt, black!55] (-2.15, 0.450) -- (2.15, 0.450) node[right=2pt, font=\scriptsize, black] {$r$}; \draw[->, line width=0.55pt, black!55] (-1.95, -1.25) -- (-1.95, 2.15) node[above right=1pt, font=\scriptsize, black] {$p_r$}; \node[left=2pt, font=\scriptsize, black!75] at (-1.95, 0.450) {$0$}; % Vertical dashed threshold lines in phase space corresponding to R_2 and R_1 \draw[dashed, line width=0.55pt, black!45] (-1.155, -1.15) -- (-1.155, 1.95); \draw[dashed, line width=0.55pt, black!45] (0.230, -1.15) -- (0.230, 1.95); \node[below=1pt, font=\scriptsize, black!70] at (-1.518, -1.15) {$r_{\mathrm{peri}}$}; % Pericenter vertical guide tick on r-axis \draw[dotted, line width=0.55pt, black!50] (-1.518, 0.450) -- (-1.518, -1.15); % Exact phase-space curve (r(t), p_r(t)) \draw[line width=0.72pt, black] plot[smooth] coordinates { (1.614,-0.546) (1.497,-0.571) (1.377,-0.598) (1.254,-0.625) (1.128,-0.652) (0.999,-0.680) (0.867,-0.708) (0.731,-0.737) (0.592,-0.766) (0.449,-0.794) (0.304,-0.822) (0.155,-0.848) (0.003,-0.873) (-0.151,-0.895) (-0.308,-0.911) (-0.466,-0.921) (-0.625,-0.919) (-0.783,-0.902) (-0.937,-0.861) (-1.085,-0.787) (-1.222,-0.666) (-1.341,-0.485) (-1.436,-0.233) (-1.497,0.087) (-1.518,0.450) (-1.497,0.813) (-1.436,1.133) (-1.341,1.385) (-1.222,1.566) (-1.085,1.687) (-0.937,1.761) (-0.783,1.802) (-0.625,1.819) (-0.466,1.821) (-0.308,1.811) (-0.151,1.795) (0.003,1.773) (0.155,1.748) (0.304,1.722) (0.449,1.694) (0.592,1.666) (0.731,1.637) (0.867,1.608) (0.999,1.580) (1.128,1.552) (1.254,1.525) (1.377,1.498) (1.497,1.471) (1.614,1.446) }; % Direction arrows on phase-space curve (lower branch inbound p_r < 0, upper branch outbound p_r > 0) \draw[->, line width=0.72pt, black] (0.999,-0.680) -- (0.731,-0.737); \draw[->, line width=0.72pt, black] (0.731,1.637) -- (0.999,1.580); % Dyadic sub-step gray beads in phase space % k=2 quarter-steps (t = -0.18, 0.00, +0.18) -> medium-dark gray (black!55) \foreach \pt in {(-1.415, -0.302), (-1.518, 0.450), (-1.415, 1.202)} { \filldraw[fill=black!55, draw=black, line width=0.55pt] \pt circle (1.85pt); } % k=1 midpoints (t = -0.72, +0.72) -> light gray (black!25) \foreach \pt in {(-0.466, -0.921), (-0.466, 1.821)} { \filldraw[fill=black!25, draw=black, line width=0.6pt] \pt circle (2.0pt); } % Macro-boundary nodes (white beads k=0) t_0 .. t_5 in phase space \filldraw[fill=white, draw=black, line width=0.7pt] (1.438, -0.585) circle (2.25pt) node[below=3pt, font=\scriptsize] {$t_0$}; \filldraw[fill=white, draw=black, line width=0.7pt] (0.230, -0.835) circle (2.25pt) node[below right=1pt, font=\scriptsize] {$t_1$}; \filldraw[fill=white, draw=black, line width=0.7pt] (-1.155, -0.733) circle (2.25pt) node[below left=1pt, font=\scriptsize] {$t_2$}; \filldraw[fill=white, draw=black, line width=0.7pt] (-1.155, 1.633) circle (2.25pt) node[above left=1pt, font=\scriptsize] {$t_3$}; \filldraw[fill=white, draw=black, line width=0.7pt] (0.230, 1.735) circle (2.25pt) node[above right=1pt, font=\scriptsize] {$t_4$}; \filldraw[fill=white, draw=black, line width=0.7pt] (1.438, 1.485) circle (2.25pt) node[above=3pt, font=\scriptsize] {$t_5$}; % Step-size labels along the phase-space branches \node[above=2pt, font=\scriptsize] at (0.88, -0.70) {$h$}; \node[below=3pt, font=\scriptsize] at (-0.47, -0.96) {$h/2$}; \node[left=4pt, font=\scriptsize] at (-1.55, 0.05) {$h/4$}; \node[above=3pt, font=\scriptsize] at (-0.47, 1.86) {$h/2$}; \node[below=2pt, font=\scriptsize] at (0.88, 1.60) {$h$}; \end{scope} % ========================================================================== % BOTTOM: 1D Palindromic Dyadic Time Lattice t_0 .. t_5 % ========================================================================== \begin{scope}[shift={(0, -2.35)}] \draw[->, line width=0.72pt, black] (-5.6, 0) -- (5.75, 0) node[right=2pt, font=\footnotesize] {$t$}; % Dyadic sub-step gray beads on the 1D time axis: % k=2 quarter-steps at -0.5, 0.0, 0.5 (black!55) \foreach \x in {-0.5, 0.0, 0.5} { \filldraw[fill=black!55, draw=black, line width=0.55pt] (\x, 0) circle (1.85pt); } % k=1 midpoints at -2.0, 2.0 (black!25) \foreach \x in {-2.0, 2.0} { \filldraw[fill=black!25, draw=black, line width=0.6pt] (\x, 0) circle (2.0pt); } % Macro-boundary white beads on the 1D time axis \foreach \x/\lbl in {-5.0/$t_0$, -3.0/$t_1$, -1.0/$t_2$, 1.0/$t_3$, 3.0/$t_4$, 5.0/$t_5$} { \filldraw[fill=white, draw=black, line width=0.7pt] (\x, 0) circle (2.25pt); \node[below=4pt, font=\scriptsize] at (\x, 0) {\lbl}; } % Dyadic level and step-size labels on the 1D time lattice \node[above=3pt, font=\scriptsize] at (-4.0, 0) {$h$}; \node[above=3pt, font=\scriptsize] at (-2.0, 0.06) {$h/2$}; \node[above=3pt, font=\scriptsize] at (0.0, 0.06) {$h/4$}; \node[above=3pt, font=\scriptsize] at (2.0, 0.06) {$h/2$}; \node[above=3pt, font=\scriptsize] at (4.0, 0) {$h$}; \node[below=15pt, font=\scriptsize] at (-4.0, 0) {$k_0 = 0$}; \node[below=15pt, font=\scriptsize] at (-2.0, 0) {$k_1 = 1$}; \node[below=15pt, font=\scriptsize] at (0.0, 0) {$k_2 = 2$}; \node[below=15pt, font=\scriptsize] at (2.0, 0) {$k_3 = 1$}; \node[below=15pt, font=\scriptsize] at (4.0, 0) {$k_4 = 0$}; \end{scope} \end{tikzpicture}% } \caption{\textbf{Palindromic dyadic trajectory subdivision across an eccentric Keplerian close encounter ($GM = 1$, $a = 1.65$, $e = 0.68$, $h = 0.72$, $h_k = h / 2^k$).} \textbf{(a)} Physical configuration plane $(q_x, q_y)$ around $\mathbf{q}_{\mathrm{attr}}$ with symmetric refinement $k = 0 \to 1 \to 2 \to 1 \to 0$ across the inner timescale shells (dashed circles). \textbf{(b)} Radial phase plane $(r, p_r)$ across the pericenter turning loop $p_r = 0$ at $r = r_{\mathrm{peri}}$.} \label{fig:ch06_dyadic_curve_subdivision} \end{figure} \begin{propbox}[Skeel--Gear Macroblock Symplecticity and Time-Reversibility]{prop:macroblock_palindromic_symplecticity} As established theoretically in Proposition~\ref{prop:skeel_gear_boundary_sync}, let $\mathcal{S}_{h} : \mathcal{P}_{\mathrm{ext}} \to \mathcal{P}_{\mathrm{ext}}$ be a symmetric palindromic symplectic sub-step propagator of order $2p$ ($\mathcal{S}_{-h} = \mathcal{S}_h^{-1}$) associated with the chart $T_n \in \mathcal{A}$. If both the topological chart $T_n$ and the dyadic exponent $k_n$ are held strictly constant throughout the $2^{k_n}$ sub-steps of macroblock $I_n$, the composite macro-propagator: \begin{equation} \Psi_{\Delta t_n}^{(n)} \coloneqq \left( \mathcal{S}_{h_{k_n}} \right)^{2^{k_n}} \label{eq:composite_macroblock_propagator} \end{equation} satisfies: \begin{enumerate} \item \textbf{Strict Symplecticity}: $\left( \Psi_{\Delta t_n}^{(n)} \right)^* \Omega_{\mathrm{ext}} = \Omega_{\mathrm{ext}}$, preserving the canonical symplectic 2-form on $\overline{\mathcal{P}}_{\mathrm{ext}}$ identically in exact arithmetic. \item \textbf{Exact Microscopic Time-Reversibility}: \begin{equation} \left( \Psi_{\Delta t_n}^{(n)} \right)^{-1} = \Psi_{-\Delta t_n}^{(n)}. \label{eq:macroblock_time_reversibility} \end{equation} \item \textbf{Elimination of Mid-Block Commutator Jumps}: Any intermediate topological transition $T_A \to T_B$ or dyadic level jump $k \to k'$ executed at a sub-step $m \in \{1, \dots, 2^{k_n}-1\}$ would inject an uncompensated Lie bracket defect: \begin{equation} \Delta H_{\mathrm{jump}} \sim h_{k_n} \left\{ W_{\mathrm{apex}}^{\mathrm{screen},(T_A)}, W_{\mathrm{apex}}^{\mathrm{screen},(T_B)} \right\} \neq 0, \label{eq:midblock_lie_bracket_defect} \end{equation} permanently destroying shadow Hamiltonian alignment. \end{enumerate} \end{propbox} \begin{proofbox}[Proof of Proposition~\ref{prop:macroblock_palindromic_symplecticity}] Item~(1) is a direct consequence of the group structure of symplectomorphisms: because each sub-step map $\mathcal{S}_{h_{k_n}}$ satisfies $\mathcal{S}^* \Omega_{\mathrm{ext}} = \Omega_{\mathrm{ext}}$, the $2^{k_n}$-fold composition inherits symplecticity unconditionally. For Item~(2), palindromic symmetry of the underlying scheme gives $\mathcal{S}_{-h} = \mathcal{S}_h^{-1}$, so that: \begin{equation} \left( \Psi_{\Delta t_n}^{(n)} \right)^{-1} = \left( (\mathcal{S}_{h_{k_n}})^{2^{k_n}} \right)^{-1} = \left( \mathcal{S}_{h_{k_n}}^{-1} \right)^{2^{k_n}} = \left( \mathcal{S}_{-h_{k_n}} \right)^{2^{k_n}} = \Psi_{-\Delta t_n}^{(n)}. \end{equation} For Item~(3), suppose an atlas transition occurs at sub-step $m$. The operator splitting sequence decomposes as $\mathcal{S}_B^{2^{k_n}-m} \circ \mathcal{S}_A^m$. By the Campbell--Baker--Hausdorff theorem, the effective Hamiltonian contains the non-vanishing cross-commutator $\frac{1}{2} h_{k_n}^2 [X_{V_A}, X_{V_B}]$, which fails to cancel because the boundary symplectic gauge connection \[ \mathcal{J}_{A \to B} = \bigl(\mathcal{C}_{2p}^{(B)}\bigr)^{-1} \circ \mathbf{M}_{\mathrm{coord}} \circ \mathcal{C}_{2p}^{(A)} \] can only be evaluated synchronously with the physical state at macro-boundaries. Freezing $T_n$ and $k_n$ inside each macroblock is therefore both necessary and sufficient for long-term shadow Hamiltonian conservation (Figure~\ref{fig:ch06_dyadic_curve_subdivision}). \end{proofbox} % ------------------------------------------------------------------------------ \subsubsection{Vectorized Dynamical Timescale Scanning (Phase 2.2)} \label{sub:vectorized_timescales} To select an optimal, physically grounded dyadic level $k_n$ at the macro-boundary $t_n$, the scheduler evaluates three scale-invariant, Galilean-invariant dynamical timescales across all distinct particle pairs $1 \le i < j \le N$. Let $\mathbf{r}_{ij} = \mathbf{q}_i - \mathbf{q}_j$, $r_{ij} = \|\mathbf{r}_{ij}\|$, $\mathbf{v}_{\mathrm{rel}} = \mathbf{v}_i - \mathbf{v}_j$, and radial velocity $v_{\mathrm{rad}} = (\mathbf{r}_{ij} \cdot \mathbf{v}_{\mathrm{rel}}) / r_{ij}$. \begin{defbox}[Dynamical Interaction Timescale Triad]{def:conormal_timescale_triad} For every pair $(i, j)$, measuring characteristic dynamical rates along the transverse normal directions to the collision divisors $E_I \subset \mathbf{Q}[N]$ and their conjugate momentum fibers in $T^*\mathbf{Q}[N]$, the interaction dynamics is characterized by: \begin{enumerate} \item \textbf{Kinematic Fly-By Timescale} $\tau_{\mathrm{kin}}$: \begin{equation} \tau_{\mathrm{kin}}(i, j) \coloneqq \frac{r_{ij}}{\max(\|\mathbf{v}_{\mathrm{rel}}\|, \, \varepsilon_v)}, \label{eq:tau_kin_formula} \end{equation} where $\varepsilon_v = 10^{-14}$ prevents division by zero for co-moving pairs. \item \textbf{Dynamical Free-Fall Timescale} $\tau_{\mathrm{dyn}}$: \begin{equation} \tau_{\mathrm{dyn}}(i, j) \coloneqq \sqrt{\frac{r_{ij}^3}{G (m_i + m_j)}}, \label{eq:tau_dyn_formula} \end{equation} measuring the instantaneous orbital frequency and gravitational collapse time. \item \textbf{Predictive Bilateral Pericenter Encounter Timescale} $\tau_{\mathrm{peri}}$: From the osculating two-body specific energy $E_{2b} = \frac{1}{2}\|\mathbf{v}_{\mathrm{rel}}\|^2 - GM_{ij}/r_{ij}$ ($GM_{ij} \coloneqq G(m_i + m_j)$) and angular momentum $\mathbf{L} = \mathbf{r}_{ij} \times \mathbf{v}_{\mathrm{rel}}$: \begin{equation} E_{2b} = \frac{1}{2} \|\mathbf{v}_{\mathrm{rel}}\|^2 - \frac{G(m_i + m_j)}{r_{ij}}, \qquad \mathbf{L} = \mathbf{r}_{ij} \times \mathbf{v}_{\mathrm{rel}}, \label{eq:two_body_invariants} \end{equation} let $e = \sqrt{1 + 2 E_{2b}\|\mathbf{L}\|^2 / GM_{ij}^2}$ and $r_{\mathrm{peri}} = \|\mathbf{L}\|^2 / (GM_{ij}(1 + e))$. When $0 < r_{\mathrm{peri}} < r_{ij}$, the universal Keplerian time-to-pericenter $t_{\mathrm{Kepler}} \ge 0$ is evaluated from the radial virial magnitude $|\mathbf{r}_{ij} \cdot \mathbf{v}_{\mathrm{rel}}|$ across the Barker near-parabolic ($2|E_{2b}|r_{ij}/GM_{ij} < 10^{-4}$), elliptic ($E_{2b} < 0$, $t_{\mathrm{Kepler}} = M_{\mathrm{anom}}/n_{\mathrm{mean}}$), and hyperbolic ($E_{2b} > 0$, $t_{\mathrm{Kepler}} = M_{\mathrm{hyp}}/n_{\mathrm{hyp}}$) branches. Whenever the encounter falls within the bilateral macro-step horizon $t_{\mathrm{Kepler}} \le 2 |\Delta t_n|$, define the effective approach radius and velocity: \begin{equation} \begin{aligned} r_{\mathrm{eff}} &\coloneqq \min\!\left(r_{ij},\; \Bigl(r_{\mathrm{peri}}^{3/2} + \tfrac{3}{2}\sqrt{2 GM_{ij}}\,\max(0,\, t_{\mathrm{Kepler}} - |\Delta t_n|)\Bigr)^{2/3}\right), \\ v_{\mathrm{eff}} &\coloneqq \sqrt{\max\!\Bigl(\varepsilon_v^2,\; \|\mathbf{v}_{\mathrm{rel}}\|^2 + 2 GM_{ij}(r_{\mathrm{eff}}^{-1} - r_{ij}^{-1})\Bigr)} \qquad (t_{\mathrm{Kepler}} \le 2 |\Delta t_n|), \end{aligned} \label{eq:approach_horizon_condition} \end{equation} giving the predictive encounter timescale: \begin{equation} \tau_{\mathrm{peri}}(i, j) \coloneqq \min\left( \frac{r_{\mathrm{eff}}}{v_{\mathrm{eff}}}, \; \sqrt{\frac{r_{\mathrm{eff}}^3}{G(m_i + m_j)}} \right). \label{eq:tau_peri_formula} \end{equation} Because $t_{\mathrm{Kepler}}$ depends on $\mathbf{v}_{\mathrm{rel}}$ solely through $\|\mathbf{v}_{\mathrm{rel}}\|^2$, $\|\mathbf{L}\|^2$, and $|\mathbf{r}_{ij} \cdot \mathbf{v}_{\mathrm{rel}}|$, condition~\eqref{eq:approach_horizon_condition} is strictly even under phase-space time reversal $\mathcal{R}(\mathbf{q}, \mathbf{p}) = (\mathbf{q}, -\mathbf{p})$, yielding identical refinement levels on approach and departure ($k(\mathbf{q}, -\mathbf{p}) = k(\mathbf{q}, \mathbf{p})$). \end{enumerate} \end{defbox} As established in Proposition~\ref{prop:dyadic_scale_invariance}, under gravitational homotheties $\mathbf{q} \mapsto \lambda \mathbf{q}$, $t \mapsto \lambda^{3/2} t$, $\mathbf{v} \mapsto \lambda^{-1/2} \mathbf{v}$, all three timescales scale homogeneously as $\tau \mapsto \lambda^{3/2} \tau$, ensuring that the dimensionless resolution ratio $\Delta t_n / \tau$ remains strictly scale-invariant and Galilean-invariant across all astronomical regimes. % ------------------------------------------------------------------------------ \subsubsection{Operational Realization of the Leaf/Apex Decoupling Theorem (Phase 2.3)} \label{sub:operational_leaf_apex_decoupling} A direct, unconstrained minimization of $\tau_{\mathrm{peri}}(i, j)$ and $\tau_{\mathrm{kin}}(i, j)$ over all pairs in $N$-body phase space introduces an acute algorithmic obstruction. In the presence of a hardened, highly eccentric binary (e.g., $e \ge 0.999$, $r_{\mathrm{peri}} / a \le 10^{-3}$), the instantaneous and pericenter timescales plunge toward zero: $\tau_{\mathrm{peri}} \sim r_{\mathrm{peri}}^{3/2} \to 0$. A naive scheduler would be forced to maximize the dyadic exponent to its hardware limit $k \to 17$ ($2^{17} = 131\,072$ sub-steps per macro-step), inducing total computational paralysis. This pathology is rigorously resolved by the \emph{Leaf/Apex Decoupling Theorem} (Theorem~\ref{thm:leaf_apex_decoupling}): \begin{thmbox}[Leaf/Apex Decoupling Operational Guarantee]{thm:operational_leaf_apex_decoupling} Let $T \in \mathcal{A}$ be the active binary Jacobi tree, and let $\operatorname{LeafPairs}(T) \subset \binom{\{1, \dots, N\}}{2}$ denote the set of pairs occupying terminal binary leaves in $T$. \begin{enumerate} \item \textbf{Analytical Desingularization and Invariant Semi-Major Axis Timescale}: For every bound leaf pair $C = (i, j) \in \operatorname{LeafPairs}(T)$ ($E_{2b} < 0$), the relative motion is governed by the uncoupled two-body Keplerian Hamiltonian: \begin{equation} H_{\mathrm{leaf}}(\mathbf{r}_v, \mathbf{w}_v) = \frac{\|\mathbf{w}_v\|^2}{2 \mu_v} - \frac{G m_i m_j}{\|\mathbf{r}_v\|}, \label{eq:leaf_pair_hamiltonian_ch6} \end{equation} which is integrated analytically to machine accuracy via the universal Sundman--Stumpff diffeomorphism with cubic Halley iteration (Section~\ref{sec:symplectic_subcycle}). The local flow generates zero operator splitting error across pericenter passages, and its orbital timescale is governed by its invariant semi-major axis $a_C = -G(m_i + m_j)/(2 E_{2b})$: \begin{equation} \tau_{\mathrm{dyn}}(C) = \sqrt{\frac{a_C^3}{G(m_i + m_j)}} = \frac{P_{\mathrm{orb}}(C)}{2\pi}. \end{equation} \item \textbf{Hill Isolation Guard and Two-Regime Quadrupolar Tidal Modulator}: Let $M_C = m_i + m_j$ and $\mathbf{R}_{\mathrm{cm},C} = (m_i \mathbf{q}_i + m_j \mathbf{q}_j)/M_C$. For $N = 2$, $W_{\mathrm{apex}}^{\mathrm{screen}} \equiv 0$ and $\tau_{\mathrm{pair}}(i, j) \coloneqq \tau_{\mathrm{dyn}}(C)$. For $N \ge 3$, under the instantaneous Hill sphere isolation guard $r_{ij} \le \frac{1}{3} R_{\mathrm{Hill}}(C, k)$ and $R_{\mathrm{ext},k} \ge 3 r_{ij}$ for all external bodies $k \notin \{i, j\}$, where $R_{\mathrm{Hill}}(C, k) = R_{\mathrm{ext},k} \bigl( \frac{M_C}{3(M_C + m_k)} \bigr)^{1/3}$, define the Hill-clamped effective semi-major axis, characteristic size, effective orbital timescale, local scale at effective separation $r_{\mathrm{loc}}(i, j) \coloneqq \min(r_{ij}, r_{\mathrm{eff}})$, and quadrupolar tidal parameter: \[ \begin{aligned} a_{\mathrm{eff}}(C) &\coloneqq \min\!\Bigl(a_C,\; \min_{k \notin \{i, j\}} \tfrac{1}{3} R_{\mathrm{Hill}}(C, k)\Bigr), & \ell_C &\coloneqq \max\bigl(r_{ij},\, a_{\mathrm{eff}}(C)\bigr), \\ \tau_{\mathrm{dyn,eff}}(C) &\coloneqq \sqrt{\frac{a_{\mathrm{eff}}(C)^3}{G M_C}}, & \tau_{\mathrm{loc}}(i, j) &\coloneqq \min\{\tau_{\mathrm{kin}}, \tau_{\mathrm{dyn}}, \tau_{\mathrm{peri}}\}(i, j), \\ \varepsilon_{\mathrm{tidal}}(C) &\coloneqq \max_{k \notin \{i, j\}} \frac{m_k}{M_C}\left(\frac{\ell_C}{R_{\mathrm{ext},k}}\right)^3. \end{aligned} \] Then periastron step-size collapse is prevented by the two-regime tidal decoupling filter: \begin{equation} \tau_{\mathrm{pair}}(i, j) \coloneqq \left\{\begin{aligned} &\tau_{\mathrm{dyn}}(C), & &\begin{aligned}[t] &\text{if } C \in \operatorname{LeafPairs}(T),\; E_{2b} < 0, \\[-2pt] &\text{and } (N = 2 \text{ or } \varepsilon_{\mathrm{tidal}} \le 10^{-30}), \end{aligned} \\[4pt] &\min\bigl(\tau_{\mathrm{dyn}}(C), \max(\tau_{\mathrm{reg},1}, \tau_{\mathrm{reg},2})\bigr), & &\begin{aligned}[t] &\text{if } C \in \operatorname{LeafPairs}(T),\; E_{2b} < 0, \\[-2pt] &N \ge 3, \text{ and Hill-isolated}, \end{aligned} \\[4pt] &\tau_{\mathrm{loc}}(i, j), & &\text{otherwise}, \end{aligned}\right. \label{eq:leaf_apex_decoupling_filter} \end{equation} where, with safety factor $\nu = \eta_{\mathrm{safety}} = 0.05$, the two quadrupolar tidal regularization timescales are: \[ \begin{aligned} \tau_{\mathrm{reg},1} \equiv \tau_{\mathrm{reg},1}(i, j) &\coloneqq \tau_{\mathrm{loc}}(i, j)\,\Bigl(\varepsilon_{\mathrm{tidal}}(C)\,\bigl(\min(r_{\mathrm{loc}}, \ell_C)/\ell_C\bigr)^2\Bigr)^{-1/4}, \\ \tau_{\mathrm{reg},2} \equiv \tau_{\mathrm{reg},2}(C) &\coloneqq 0.1 \, \nu^3 \, \varepsilon_{\mathrm{tidal}}(C)^{-3/4} \, \tau_{\mathrm{dyn,eff}}(C). \end{aligned} \] \item \textbf{Algorithmic Boundedness}: Because the second regime $\tau_{\mathrm{reg},2}(C)$ is strictly independent of $r_{ij}$ and $r_{\mathrm{peri}}$, under filter~\eqref{eq:leaf_apex_decoupling_filter} isolated desingularized leaf pairs maintain a bounded, moderate orbital resolution across periastron ($k \equiv 0$ for $N=2$ whenever $\Delta t_{\mathrm{macro}} \le \nu\,\tau_{\mathrm{dyn}}(a_C)$, and a constant $e$-invariant ceiling such as $k \le 3$ for weakly perturbed $N \ge 3$ star-grazing binaries, strictly independent of $1 - e \to 0$). Deep dyadic refinement ($8 \le k \le k_{\max} = 17$) is deployed exclusively when non-leaf pairs undergo close encounters within $W_{\mathrm{apex}}^{\mathrm{screen}}$ or when an external perturber breaches the Hill sphere of a leaf pair. \end{enumerate} \end{thmbox} \begin{proofbox}[Proof of Theorem~\ref{thm:operational_leaf_apex_decoupling}] Because $H_{\mathrm{leaf}}$ is an exact decoupled summand in the Fulton--MacPherson splitting on $\mathbf{Q}[N]$, its analytical flow commutes with the center-of-mass drift and generates no cross-terms with other disjoint leaf nodes. Cross-interactions with external bodies enter exclusively through the screened apex potential $W_{\mathrm{apex}}^{\mathrm{screen}} \in \mathcal{C}^{1,1}$, whose quadrupolar tidal gradient scales as $\mathcal{O}(\varepsilon_{\mathrm{tidal}} r_{ij} / \ell_C)$ whenever the Hill isolation guard $r_{ij} \le \frac{1}{3} R_{\mathrm{Hill}}(C, k)$ and $R_{\mathrm{ext},k} \ge 3 r_{ij}$ holds. Away from periastron, $\tau_{\mathrm{reg},1}$ tracks the local quadrupolar tidal scale, while as $r_{\mathrm{loc}} \to 0$ near periastron ($\tau_{\mathrm{reg},1} \to 0$), $\max(\tau_{\mathrm{reg},1}, \tau_{\mathrm{reg},2})$ saturates at the periastron-invariant tidal floor $\tau_{\mathrm{reg},2}(C) > 0$. Conversely, if an external perturber breaches the Hill sphere, or for non-leaf pairs mediated by $W_{\mathrm{apex}}^{\mathrm{screen}}$, strong three-body tidal coupling requires full local and predictive pericenter refinement $\tau_{\mathrm{loc}}(i, j)$ in~\eqref{eq:leaf_apex_decoupling_filter}. \end{proofbox} % ------------------------------------------------------------------------------ \subsubsection{Bit-Exact Integer Timestamps, Dyadic Clamping, and Palindromic Lattice Structure (Phase 2.4)} \label{sub:bit_exact_timestamps} Once the global minimal timescale $\tau_{\min} = \min_{i=stealth, font=\small, box/.style={draw=BorderGray, line width=0.9pt, fill=BadgeGray, text=DarkSlate, rounded corners=3pt, inner sep=5pt, align=center}, leafbox/.style={draw=PythonGreen, line width=1.05pt, fill=DefBg, text=DarkSlate, rounded corners=3pt, inner sep=5pt, align=center}, apexbox/.style={draw=NavyBlue, line width=1.05pt, fill=ThmBg, text=DarkSlate, rounded corners=3pt, inner sep=5pt, align=center}, syncbox/.style={draw=AcademicPurple, line width=1.1pt, fill=PropBg, text=DarkSlate, rounded corners=3pt, inner sep=5.5pt, align=center}, arrow/.style={->, line width=0.95pt, color=DarkSlate} ] % --- Top Tier: Leaf/Apex Decoupling Filter --- \node[box, minimum width=3.0cm, minimum height=1.35cm] (scan) at (-7.1, 2.75) { \textbf{Pairwise Scan} $(i < j)$\\[-1pt] \scriptsize Triad $(\tau_{\mathrm{kin}},\, \tau_{\mathrm{dyn}},\, \tau_{\mathrm{peri}})$\\[-2pt] \scriptsize Horizon $t_{\mathrm{Kepler}} \le 2|\Delta t_n|$ }; \node[leafbox, minimum width=5.0cm, minimum height=1.50cm] (leaf) at (0.0, 3.80) { \textbf{\color{PythonGreen}Bound Hill-Isolated Leaf $C$}\\[-1pt] \scriptsize Analytical Sundman--Stumpff flow ($\Delta H_{\mathrm{leaf}} \equiv 0$)\\[-2pt] \scriptsize $\tau_{\mathrm{pair}} = \min\bigl(\tau_{\mathrm{dyn}}(C),\, \max(\tau_{\mathrm{reg},1}, \tau_{\mathrm{reg},2})\bigr)$\\[-2pt] \scriptsize \textbf{\color{PythonGreen}Periastron Guard:} $r_{\mathrm{loc}}\to 0 \implies \tau_{\mathrm{reg},2}(C) > 0$ }; \node[apexbox, minimum width=5.0cm, minimum height=1.50cm] (nonleaf) at (0.0, 1.70) { \textbf{\color{NavyBlue}Non-Leaf or Hill-Breached Pair}\\[-1pt] \scriptsize Coupled via Screened Apex $W_{\mathrm{apex}}^{\mathrm{screen}} \in \mathcal{C}^{1,1}(\mathbf{Q}[N])$\\[-2pt] \scriptsize $\tau_{\mathrm{pair}} = \tau_{\mathrm{loc}}(i,j) = \min\{\tau_{\mathrm{kin}}, \tau_{\mathrm{dyn}}, \tau_{\mathrm{peri}}\}$\\[-2pt] \scriptsize Full Dyadic Resolution ($0 \le k \le k_{\max}$) }; \node[box, minimum width=3.1cm, minimum height=1.35cm] (kdyn) at (7.1, 2.75) { \textbf{Endpoint Level} $k_{\mathrm{dyn}}(\mathbf{s})$\\[-1pt] \scriptsize $\tau_{\min} = \min_{i 0$. \textbf{Middle:} Two-endpoint symmetric selector $k_n$ (Eq.~\eqref{eq:clamped_dyadic_level}) enforcing palindromic time-reversibility. \textbf{Bottom:} Bit-exact scaled-integer sub-step lattice $t_n^{(m)} = t_n + m(\Delta t_n / 2^{k_n})$ at frozen $(T_n, k_n)$ (Remark~\ref{rem:ieee754_bit_exact_timestamps}).} \label{fig:ch06_dyadic_macro_step_pipeline} \end{figure} \begin{rembox}[Engineering Realization IEEE 754: Bit-Exact Timestamp Generation vs Cumulative Addition Noise]\label{rem:ieee754_bit_exact_timestamps} In conventional adaptive integrators, sub-step timestamps are advanced recursively by floating-point addition: \begin{equation} t^{(m)} \longleftarrow t^{(m-1)} + h_{k_n} \qquad (m = 1, \dots, 2^{k_n}). \label{eq:naive_recursive_addition} \end{equation} Under IEEE~754 double-precision arithmetic, floating-point addition is non-associative. When integrating through deep dyadic levels (e.g., $k = 7 \implies 128$ sub-steps, or $k = 10 \implies 1024$ sub-steps), the accumulation of roundoff errors results in a terminal discrepancy: \begin{equation} \left| t^{(2^{k_n})} - (t_n + \Delta t_n) \right| \sim 2^{k_n} \, \epsilon_{\mathrm{mach}} \, \Delta t_n, \label{eq:accumulation_noise_estimate} \end{equation} which violates the exact boundary synchronization condition of Skeel \& Gear and introduces artificial phase shifts during high-order symplectic corrector evaluation. In our software implementation (\texttt{system/dyadic\_scheduler.py}), this error is strictly eliminated by computing intermediate timestamps via \emph{scaled integer index multiplication}: \begin{equation} t_n^{(m)} \coloneqq t_n + m \cdot \left( \frac{\Delta t_n}{2^{k_n}} \right), \qquad m \in \{0, 1, \dots, 2^{k_n}\}. \label{eq:bit_exact_timestamp_formula} \end{equation} Because $2^{k_n}$ is an exact power of two, the division by $2^{k_n}$ in IEEE~754 binary arithmetic corresponds to an exact subtraction of $k_n$ from the floating-point exponent, incurring strictly \textbf{zero mantissa roundoff error}. Setting $m = 2^{k_n}$ evaluates to $t_n + 2^{k_n} (\Delta t_n / 2^{k_n}) \equiv t_n + \Delta t_n = t_{n+1}$ bit-exactly, guaranteeing: \begin{equation} \sum_{m=1}^{2^{k_n}} h_{k_n} \equiv \Delta t_n \label{eq:bit_exact_completeness} \end{equation} to the last bit of double-precision representation (see Figure~\ref{fig:ch06_dyadic_macro_step_pipeline}). \end{rembox} \pythonrefright{py_system}{system/dyadic_scheduler.py, interfaces/03_DyadicScheduler_Interface.py}{Float64 / Float128}