% ---------------------------------------------------------------------------
% Author guideline and sample document for EG publication using LaTeX2e input
% D.Fellner, v1.21, Jan 08, 2024

\documentclass{egpubl}
\usepackage{eurovis2025}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Only used in the template examples. You can remove these lines.
\usepackage{tabu}                      % only used for the table example
\usepackage{booktabs}                  % only used for the table example
\usepackage{lipsum}                    % used to generate placeholder text
\usepackage{mwe}                       % used to generate placeholder figures
%% We encourage the use of mathptmx for consistent usage of times font
%% throughout the proceedings. However, if you encounter conflicts
%% with other math-related packages, you may want to disable it.
\usepackage{mathptmx}                  % use matching math font
\usepackage{amsmath}
\usepackage{amssymb}
% \usepackage{amsthm}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{algorithm2e}
\usepackage{float}
\usepackage{enumitem}
\usepackage{thmtools,thm-restate}
\usepackage{wrapfig}
\usepackage{makecell}
\usepackage{xcolor}
% \usepackage[inline]{trackchanges}
\usepackage[finalnew]{trackchanges}


\newtheorem{definition}{Definition}
\newtheorem{lem}{Lemma}
\newtheorem{assumption}{Assumption}
\newtheorem{col}{Corollary}
\newtheorem{pro}{Proclaim}

\SetKwComment{Comment}{/* }{ */}
\RestyleAlgo{ruled}
\newcommand{\tabincell}[2][c]{\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}

\newcommand{\HG}[1]{\textcolor{red}{HG: [[#1]]}}
\newcommand{\RH}[1]{\textcolor{purple}{RH: [[#1]]}}
\newcommand{\CR}[1]{\textcolor{blue}{CR: #1}}
\newcommand{\removed}[1]{\textcolor{red}{\sout{#1}}}
\newcommand{\review}[1]{\textcolor{green}{[#1]}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% --- for  Annual CONFERENCE
% \ConferenceSubmission   % uncomment for Conference submission
% \ConferencePaper        % uncomment for (final) Conference Paper
% \STAR                   % uncomment for STAR contribution
% \Tutorial               % uncomment for Tutorial contribution
% \ShortPresentation      % uncomment for (final) Short Conference Presentation
% \Areas                  % uncomment for Areas contribution
% \Education              % uncomment for Education contribution
% \Poster                 % uncomment for Poster contribution
% \DC                     % uncomment for Doctoral Consortium
%
% --- for  CGF Journal
% \JournalSubmission    % uncomment for submission to Computer Graphics Forum
% \JournalPaper         % uncomment for final version of Journal Paper
%
% --- for  CGF Journal: special issue
% \SpecialIssueSubmission    % uncomment for submission to , special issue
\SpecialIssuePaper         % uncomment for final version of Computer Graphics Forum, special issue
%                          % EuroVis, SGP, Rendering, PG
% --- for  EG Workshop Proceedings
% \WsSubmission      % uncomment for submission to EG Workshop
% \WsPaper           % uncomment for final version of EG Workshop contribution
% \WsSubmissionJoint % for joint events, for example ICAT-EGVE
% \WsPaperJoint      % for joint events, for example ICAT-EGVE
% \Expressive        % for SBIM, CAe, NPAR
% \DigitalHeritagePaper
% \PaperL2P          % for events EG only asks for License to Publish

% --- for EuroVis 
% for full papers use \SpecialIssuePaper
% \STAREurovis   % for EuroVis additional material 
% \EuroVisPoster % for EuroVis additional material 
% \EuroVisShort  % for EuroVis additional material
% \MedicalPrize  % uncomment for Medical Prize (Dirk Bartz) contribution, since 2021 part of EuroVis
% \EuroVisEducation              % uncomment for Education contribution

% Licences: for CGF Journal (EG conf. full papers and STARs, EuroVis conf. full papers and STARs, SR, SGP, PG)
% please choose the correct license
%\CGFStandardLicense
% \CGFccby
\CGFccbync
%\CGFccbyncnd


% !! *please* don't change anything above
% !! unless you REALLY know what you are doing
% ------------------------------------------------------------------------
\usepackage[T1]{fontenc}
\usepackage{dfadobe}  

\usepackage{cite}  % comment out for biblatex with backend=biber
% ---------------------------
%\biberVersion
\BibtexOrBiblatex
%\usepackage[backend=biber,bibstyle=EG,citestyle=alphabetic,backref=true]{biblatex} 
%\addbibresource{egbibsample.bib}
% ---------------------------  
\electronicVersion
\PrintedOrElectronic
% for including postscript figures
% mind: package option 'draft' will replace PS figure by a filename within a frame
% \ifpdf \usepackage[pdftex]{graphicx} \pdfcompresslevel=9
% \else \usepackage[dvips]{graphicx} \fi

\usepackage{egweblnk}
\usepackage{cleveref}
% ---------------------------------------------------------------------
% EG author guidelines plus sample file for EG publication using LaTeX2e input
% D.Fellner, v2.04, Dec 14, 2023


\title{Suppplementary Materials for Fast and Invertible Simplicial Approximation of Magnetic-Following Interpolation for Visualizing Fusion Plasma Simulation Data}

% for anonymous conference submission please enter your SUBMISSION ID
% instead of the author's name (and leave the affiliation blank) !!
% for final version: please provide your *own* ORCID in the brackets following \orcid; see https://orcid.org/ for more details.

% \author[1118]{1118}

\author[C. Ren et al.]
{\parbox{\textwidth}{\centering
        Congrong Ren$^{1}$\orcid{0009-0006-6285-7271},
        Robert Hager$^{2}$\orcid{0000-0002-4624-3150},
        Randy Michael Churchill$^{2}$\orcid{0000-0001-5711-746X},
        Albert Moll\'en$^{2}$\orcid{0000-0002-9257-7864},
        Seung-Hoe Ku$^{2}$\orcid{0000-0002-9964-1208},
        Choong-Seock Chang$^{2}$\orcid{0000-0002-3346-5731},
        and
        Hanqi Guo$^{1}$\orcid{0000-0001-7776-1834}
        % Congrong Ren\thanks{ren.452@osu.edu}$^{1}$\orcid{0009-0006-6285-7271},
        % Hanqi Guo$^{1}$\thanks{guo.2154@osu.edu}\orcid{0000-0001-7776-1834}
        }
        \\
% For Computer Graphics Forum: Please use the abbreviation of your first name.
{\parbox{\textwidth}{\centering $^1$Department of Computer Science and Engineering, The Ohio State University, USA\\
         $^2$Princeton Plasma Physics Laboratory, USA
       }
}
}

% ------------------------------------------------------------------------
% if the Editors-in-Chief have given you the data, you may uncomment
% the following five lines and insert it here
%
% \volume{36}   % the volume in which the issue will be published;
% \issue{1}     % the issue number of the publication
% \pStartPage{1}      % set starting page

%-------------------------------------------------------------------------


\begin{document}
\maketitle

\section{Proof of Lemma}
\maketitle
\begin{restatable}{lem}{mylemma}\label{mylemma}
Partition $PQ$ is independent if the boundary $\partial P$ is a closed cutting path.
% Partition $PQ$ can be subdivided into two nonoverlapping 2.5D independent partitions by a cutting path if the path is closed (connecting boundaries of $PQ$ or forming a loop). 
\end{restatable}
\begin{proof}
\ In a trivial case, if all nodes on $P$ are on boundary $\partial P$, $PQ$ is independent because every node on $P$ maps to $Q$.  Now, assume $v_k$ is an inner node of $P$ such that $v_k\notin\partial P$ and the next node is $v_k^\prime\notin Q$.  Because the next node is the closest point to $\Phi(v_k)$, one can find a sufficiently small disk $B(v_k, \epsilon), \epsilon>0$ so that the deformation $\Phi$ of any point on the disk has the closest point $v_k^\prime$.  Now, the domain $P$ maps to at least two connected components by $\Phi$; one is the image of the disk, and another is the region that intersects $Q$.  Having two connected components contradicts Rudin's Theorem 4.22~\cite{rudin}; the continuous mapping $\Phi$ of $P$ shall be connected. This terminates the proof.
\end{proof}

\section{Refining a Partition by Inner Nodes}

Readers may skip this step if the 2.5D independent partitions are small enough to reduce complexity. Some 2.5D independent partitions isolated by cutting graphs could still include a large number of triangles or even inner nodes in the lower or upper mesh. To derive smaller partitions and further reduce complexity in the latter processes, we decompose every 2.5D independent partition with inner node(s).
% \textbf{(Optionally) refining a partition with inner nodes}.  
% There is an opportunity to further decompose a 2.5D independent partition with an inner node(s) into smaller partitions to further reduce complexity in the latter processes.
% We refine some 3D partitions that have inner nodes in upper mesh in this stage to make partitions smaller and further reduce complexity in latter processes.
% 
% , then there must be some inner node(s) in its upper mesh having no previous nodes, because \textit{boundary nodes} are in cutting faces and have previous nodes.
These partitions are split by \textit{penta-faces} that include an edge in the lower mesh, two edges between two nodes and their next nodes, and a path with two edges in the upper mesh passing the inner node (e.g., 50155-50156-50154-50153-50152 in Figure 7~{(b)} of the main document). Figure 7~{(c)} of the main document shows the split result of the partition in Figure 7~{(b)} of the main document. There might be more than one penta-face crossing one inner node; we use the one that can balance the number of cells in both the lower and upper meshes in two split partitions. Note that one can further refine a 2.5D independent partition with multiple adjacent inner nodes by multinode cycles, not only by penta-faces with 5-node cycles. Splitting by multinode cycles yields smaller partitions but makes triangulation and compatibility on cross sections more complex.

\section{Pseudo-code of Our Algorithm}
The whole node elimination algorithm is shown in~\Cref{alg:node_elimination}. Algorithms~\ref{alg:pivot_choose} and~\ref{alg:pivot_remove} are pseudo-codes for algorithms in odd and even levels.
\begin{algorithm}[!ht]
\small
\caption{Node Elimination Algorithm}\label{alg:node_elimination}
\KwData{a face-triangulated polyhedron}
\KwResult{tetrahedralization result for the polyhedron}
current\_root $\gets$ Node(\textit{separated\_tets} $\gets$ $\emptyset$, \textit{remaining\_volume} $\gets$ volume,
 \textit{pivot} $\gets$ \texttt{None}, \textit{unvisited\_children} $\gets$ $\emptyset$)\;
tree $\gets$ Tree(\textit{root}$\gets$ current\_root)\;
current\_node $\gets$\ tree.\textit{root}\;
divisible $\gets$ \texttt{True}\;
\While{current\_node.remaining\_volume$\neq\emptyset$}{
\eIf{divisible == \texttt{False}}{
    \If{no unvisited nodes in the tree}{ \textit{Throw}(``This polyhedron is indivisible.'')
    % \Comment{this volume is indivisible}
}
    current\_node $\gets$ current\_node.\textit{parent.unvisited\_children}[0]\;
    divisible $\gets$ \texttt{True}\;}{
\eIf{current\_node.pivot==\texttt{None}}{
    current\_node, tree, divisible $\gets$ \textit{PivotChoose}(current\_node, tree)\;
    }{
    current\_node, tree, divisible $\gets$ \textit{PivotRemove}(current\_node, tree)\;
    }
}}
\textbf{return} current\_node.\textit{separated\_tets}
\end{algorithm}

\begin{algorithm}[!ht]
\small
\caption{PivotChoose}\label{alg:pivot_choose}
\KwData{tree\_node, tree}
find mesh nodes with minimum degree\;
generate children representing pivot nodes for tree\_node\;
divisible $\gets$ \texttt{False} \;
\While{divisible==\texttt{False}}{
\eIf{tree\_node.unvisited\_children$\neq\emptyset$}{
current\_node $\gets$ tree\_node.\textit{unvisited\_children}[0]\;
remove current\_node from tree\_node.\textit{unvisited\_children}\;
current\_node, tree, divisible $\gets$ \textit{PivotRemove}(current\_node, tree)\;
}{
\textbf{return} current\_node, tree, \texttt{False}\;
}
\textbf{return} current\_node, tree, \texttt{True}\;
}
\end{algorithm}

\begin{algorithm}[!ht]
\small
\caption{PivotRemove}\label{alg:pivot_remove}
\KwData{tree\_node, tree}
check the cycles formed by pivot and its neighbors; determine its type\;
divisible $\gets$ if a divisible way is found in~\Cref{tab:pivot_cases}\;
\eIf{divisible}{
generate children representing dividing ways for tree\_node\;
current\_node $\gets$ tree\_node.\textit{unvisited\_child}[0]\;
remove current\_node from tree\_node.\textit{unvisited\_children}\;
update current\_node.\textit{separated\_tets} and current\_node.\textit{remaining\_volume}\;
return current\_node, tree, \texttt{True}
}{
return current\_node, tree, \texttt{False}
}
\end{algorithm}

\section{Additional Evaluation on ITER}

\add{\textbf{Visualization results}. The visualization results at $(31/96)2\pi$ of Lagrangian interpolation with different numbers of samples per magnetic line is shown in}~\Cref{fig:lag_vis}. \add{As illustrated in the main document, we keep the storage of samples the same, i.e., we iteratively reduce the number of magnetic field lines while increasing the number of samples per line by a factor of two. The results indicate that increasing number of samples in spatial domain is more important than that in temporal domain.}

\begin{figure}[!th]
    \centering
    \includegraphics[width=\columnwidth]{figs/Lagrangian_vis.pdf}
    \caption{
    \add{Upsampling results for $\delta n_e/n_{e0}$ on ITER data of the magnetic field-following method, our method, and Lagrangian interpolation with different numbers of samples along each magnetic line (denoted as $n_{toroidal}$).}
    }
    \label{fig:lag_vis}
\end{figure}

\begin{figure}[!th]
    \centering
    \includegraphics[width=\columnwidth]{figs/time_comp.pdf}
    \caption{
    $\phi$ vs. time for magnetic-following interpolation, our method, and the naive baseline on XGC data. Naive baseline is slightly faster than our method, while magnetic field-following method usually needs $O(10^4)$ times compared with the other two. On the sampled poloidal planes, magnetic-following method takes less than one second because only a 2D cell locating and a 2D barycentric interpolation are required for it on sampled poloidal planes.
    }
    \label{fig:phi_vs_time}
\end{figure}

\textbf{Extremum Lines (Inverse Approximation)}. To study 3D blob filaments, we co-designed with scientists the definition of \emph{blob core lines} as the extremum lines---loci of local minimum/maximum where radial and axial gradients of $f$ vanish and the radial-axial Hessian $\mathbf{H}_f$ is positive-/negative-definite:
\begin{equation}
  \frac{\partial f}{\partial R} = \frac{\partial f}{\partial Z} = 0 \mbox{~and~} \lambda_1\lambda_2>0,
  % \mathbf{H}(f(\mathbf{x})) \mbox{positive-/negative-definite},
\end{equation}
where $R$ and $Z$ are the radial and axial coordinates, respectively, and 
$\lambda_1$ and $\lambda_2$ are the eigenvalues of the radial-axial Hessian $\mathbf{H}_f$, which considers only $R$ and $Z$ axes:
\begin{equation}
  \mathbf{H}_f = 
  {\begin{pmatrix} \frac{\partial^2 f}{\partial R^2} & \frac{\partial^2 f}{\partial R\partial Z}\\
  \frac{\partial^2 f}{\partial Z\partial R} & \frac{\partial^2 f}{\partial Z^2}
  \end{pmatrix}}.
\end{equation}
% $\mathbf{x}\in\mathbb{R}^4$ are the radial, axial, azimuth, and time coordinates of a point of the blob filament; 
% 
We reformulate the extraction of extremum lines as a critical point tracking problem by treating $\phi$ as time and use the feature tracking kit FTK~\cite{guo2021ftk} to extract and visualize the curves.  FTK assumes that the gradient vector field is piecewise linear so that critical point trajectories are reconstructed directly in a space mesh, which is by default nondeforming; we made minor changes to FTK software to support deformed space meshes.  Figure~\ref{fig:filament} demonstrates extremum line extraction results with our deformed mesh.  Qualitatively speaking, the resulting curves reflect the same trends that scientists observe in isosurface and volume rendering; we plan to investigate further the accuracy evaluation of extremum lines in future work.

% While we observe a significant benefit of using deformed space meshes for feature tracking, 

% and non-deformed mesh.  
% We observe artifacts resulting from non-deforming meshes, and extremum lines appear closer to the isosurfaces of $f$.  

% With assumption that both radial gradient $\partial f / \partial R$ and axial gradient $\partial f / \partial R$ are piecewise linear in $R$, $Z$, and $\phi$ directions. \HG{To be continued.} 

\begin{figure}
    \centering
    \includegraphics[width=0.65\columnwidth]{figs/filament.png}
    \caption{Extremum line extraction in XGC data with our deformed mesh.} % \HG{TODO: visualize the same thing with non-deforming mesh}}
    \label{fig:filament}
\end{figure}

\section{Additional Case Study with Synthetic Data}

The additional case study demonstrates the generality of our methodology beyond fusion. The data are synthesized by rotating two Gaussian blobs with phase difference $\pi$ around the center of a circular field. We set the radius of the circular field to be 1 and the full width at half maximum of two blobs to be 0.3, and we uniformly choose 16 $\phi$'s in one cycle ($2\pi$). 
The synthetic function is 
% Then the value at position $(x,y)$ and timestep $t$ is given by the following closed form:
\begin{align}
\begin{split}
    f(x,y,t)&=Ce^{-B((x-A\cos\omega t)^2+(y-A\sin\omega t)^2))}\\
    &+Ce^{-B((x+A\cos\omega t)^2+(y+A\sin\omega t)^2))},
\end{split}
\end{align}
% \begin{align}
% \begin{split}
%     f(x,y,t)&=9.806e^{-30.807((x-0.5cos(0.393t))^2+(y-0.5sin(0.393t))^2))} \\
%     &+9.806e^{-30.807((x+0.5cos(0.393t))^2+(y+0.5sin(0.393t))^2))}.
% \end{split}
% \end{align}
% 
where $C=9.806$, $B=30.807$, and $\omega=0.393$.  
Values at several timesteps are shown in \Cref{fig:synthetic}. Discretization of this 2D field gives 1,000 nodes and 1,903 triangle cells (\Cref{fig:synthetic_mesh}~{(a)}). Next nodes of nodes are determined by their positions at the next timestep, which forms a space with 2,000 nodes (\Cref{fig:synthetic_mesh}~{(c)}). Our algorithm yields 5,961 tetrahedron cells for this space. We conduct the same evaluation as in the main document on this synthetic dataset.

\begin{figure}
    \centering
    \includegraphics[width=\columnwidth]{figs/synthetic.pdf}
    \caption{Synthetic dataset showing rotation of two Gaussian blobs, denoted by A and B, around the center of a circular field with cycle $T=16$. This time-varying dataset also introduces a deforming space.}
    \label{fig:synthetic}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=\columnwidth]{figs/synthetic_mesh.pdf}
    \caption{
    % \HG{It appears that boundary triangles are very thin.  Let me try to find a good circular mesh for the synthetic case.}
    Mesh for synthetic data. (a) and (b) show the original 2D triangular mesh of a circular field with 1,000 nodes and 1,903 cells. Spatial-connected components in lower and upper meshes are differentiated by a categorical colormap in (a) and (b), respectively, while white edges highlight cutting graphs. Every red line connects two matched components. (c) shows the deformed space mesh with 2,000 nodes. Lateral edges indicate the rotation of nodes. All edges are straight lines, although they create a curved visual effect on two sides. The deformed mesh generated by our algorithm yields 5,841 cells for these 2,000 nodes.}
    \label{fig:synthetic_mesh}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=\columnwidth]{figs/synthetic_unsampling.pdf}
    \caption{Ground truth and upsampling results of our method on the synthetic dataset. Our method at $\phi=(21/32)2\pi$ has MSE 0.074 and PSNR 50.718 dB; that at $\phi=(31/32)2\pi$ has MSE 0.191 and PSNR 50.593 dB.}
    \label{fig:synthetic_unsampling}
\end{figure}

\textbf{Temporal upsampling}. We again choose two arbitrary timesteps that are in the middle of two successive sampled timesteps, corresponding to $\phi=(21/32)2\pi$ and $\phi=(31/32)2\pi$ in toroidal coordinates. The comparison of our method and ground truth is shown in \Cref{fig:synthetic_unsampling}, which shows a high PSNR. \Cref{fig:synthetic_phi_vs_psnr} shows the variation of PSNR over toroidal coordinates on both our method and the naive baseline. Since there are 16 sampled timesteps, there are 16 arcs in \Cref{fig:synthetic_phi_vs_psnr}. Each arc attains its maxima at two sampled toroidal angles and its minimum at the middle of these two angles. Also, our method has a higher minimum PSNR than does the naive baseline, meaning the naive baseline gives wrong interpolation results.

\begin{figure}[!th]
    \centering
    \includegraphics[width=\columnwidth]{figs/denoised_comp.pdf}
    \caption{$\phi$ vs. PSNR of our method and the naive baseline on synthetic dataset. We evenly sample 16 timesteps, so there are 16 infinity values on both curves. All other observations agree with those in the main document.}
    \label{fig:synthetic_phi_vs_psnr}
\end{figure}

\begin{figure}[!th]
    \centering
    \includegraphics[width=0.75\columnwidth]{figs/synthetic_volRen.pdf}
    \caption{Volume rendering results and isosurfaces for our method and the naive baseline on synthetic data. Similar to the results in the main document, our method yields continuous features while the naive baseline breaks the features.}
    \label{fig:synthetic_vol}
\end{figure}

\textbf{Volume rendering and isosurfacing}. Results for both our method and naive interpolation are shown in \Cref{fig:synthetic_vol}. % It is obvious that 
our method reflects the correct rotation of two blobs, but the naive baseline gives a broken translation along the time axis.

\newpage


\section{Accuracy and Visualization on W-7X}

We show the comparison of TetGen, Lagrangian interpolation, and naive baseline based on PSNR in Figures~\ref{fig:psnr_comp_s} and~\ref{fig:psnr_lag_s}. Since poloidal plane meshes vary along $\phi$-axis in W-7X data, we evaluate values on a $500\times500$ regular grid within the axis-aligned bounding box of the $RZ$-domain. Most of the observations are the same as in the main document, except that TetGen is no longer comparable to our method due to too many failures when tetrahedralizing the independent partitions. Isosurfaces under different isovalues are shown in~\Cref{fig:isosurface_s}, which indicates the deformation behavior of fusion plasma.

\begin{figure}
    \centering
    \includegraphics[width=0.8\linewidth]{figs/psnr_comp_s.pdf}
    \caption{PSNR of three methods on W-7X data over $\Delta\phi=2\pi/640$ taking magnetic field-following interpolation as ground truth.}
    \label{fig:psnr_comp_s}
\end{figure}


\begin{figure}
    \centering
    \includegraphics[width=0.7\linewidth]{figs/psnr_lag_s.pdf}
    \caption{PSNR over $\Delta\phi=2\pi/640$ of our method and Lagrangian interpolation between two poloidal planes on W-7X data.}
    \label{fig:psnr_lag_s}
\end{figure}

\begin{figure*}
    \centering
    \includegraphics[width=0.9\linewidth]{figs/isosurface_s.png}
    \caption{Isosurfaces of \textit{perturbed electrostatic potential} ($\delta\Phi$) on W-7X data.}
    \label{fig:isosurface_s}
\end{figure*}

\section{Comments for domain scientists}

\textbf{Why low toroidal resolution is used for tokamak simulations}. XGC simulations of fusion plasma have different anisotropic resolution requirements. The resolution of the planar triangular meshes at some constant $\phi$ must be comparable to the \textit{ion Larmor radius} $\rho_i$, which is on the scale of 1 mm, to absolutely resolve \textit{ion-scale micro-turbulence}, the small-scale fluctuations in the plasma that are crucial for understanding transport processes. In contrast, the toroidal resolution can be quite low with $n_\phi\sim$16 for two reasons. First, micro-turbulence in tokamaks is elongated along the magnetic field (i.e., it varies more slowly along the field lines) but changes sharply on the scale of $\rho_i$ perpendicular to the magnetic field (i.e., $k_\parallel \ll k_\perp$). Second, the triangular meshes on poloidal planes are designed to be magnetic field-aligned~\cite{adams_ku_2009,fzhang_2015,Riaz2024}, meaning that mesh nodes are arranged to follow the magnetic field lines as closely as possible, to preserve key plasma physics properties according to its underlying physics and guarantee the accuracy of field-aligned interpolation in XGC.

\textbf{Why higher toroidal resolution is used for stellarator simulations}. First, in W7-X, the background magnetic field resolution and the resolution of perturbations (e.g., \textit{electrostatic potential fluctuations}) are coupled. Even though this coupling is not mandatory, it creates a need for higher toroidal resolution. Second, the currently available mesh generator for stellarators cannot produce a mesh that is as accurately aligned with the magnetic field as in tokamaks. This means that higher toroidal resolution is required to compensate for the loss of alignment accuracy, ensuring the simulation results remain reliable.

\textbf{Comments on naive baseline in different toroidal resolutions}. Perturbations in a tokamak are often analyzed in terms of their toroidal mode numbers ($n$), which describe how the perturbation varies along the toroidal (donut-shaped) direction of the plasma. Since the ITER data has been obtained with a relatively low toroidal resolution (i.e., 16 poloidal planes over $\phi\in[0,2\pi)$), the toroidal Fourier spectrum of the perturbations is dominated by low mode numbers $n\lesssim n_\phi/2$ because high-mode-number components are filtered out. Therefore, the naive baseline method can still (barely) reproduce the elongated (field-aligned) mode structure of the density perturbations. At higher resolution, elongated modes with toroidal made numbers $n>n_\phi/2$ can be excited, which would make the result of the naive baseline method considerably worse.

\section{Showcasing Broader Applicability}

We compare our method with TetGen on the Model for Prediction Across Scales–Ocean (MPAS-Ocean) dataset. As shown in~\Cref{fig:mpas-supp}, our method has no failed cases and higher accuracy than TetGen.

\begin{figure}[!htb]
    \centering
    \includegraphics[width=\columnwidth]{figs/mpas.pdf}
    \caption{Upsampling results for the temperature field in the MPAS-Ocean dataset at the midpoint of a 4-day interval. The blue dots indicate the partitions that TetGen failed to tetrahedralize. The zoom-in figures show the original triangular mesh and generated tetrahedral meshes.
    % \HG{Is PSNR still a good approach given so many failed cases?}
    }
    \label{fig:mpas-supp}
\end{figure}

\section{Complete version of lists and figures}

\begin{table}[!t]
  \caption{%
  	Types of neighbors around pivot nodes, their triangulation ways, and corresponding separated tetrahedra. Nodes with superscripts are on the upper mesh while those without superscripts are on the lower mesh. Red lines represent newly added edges in triangulation. ``Pviot'' in the last column is replaced by ``p'' for short.
   % \HG{The symbol $pivot$ is recurring in the last column; use $p$ instead?}
  }
  \label{tab:pivot_cases}
  \scriptsize%
  \centering%
  \begin{tabular}{m{0.1in}|m{0.2in}|m{0.8in}|m{0.85in}|m{0.5in}}
  	\toprule
  	Min deg & Pivot node & \tabincell{pivot node and\\its neighbors} & Volume triangulations & Separated tetrahedra \\
   \midrule
      % \includegraphics[width=0.3in]{figs/prism.pdf}} & \rotatebox{90}{Vis/SciVis} &   \rotatebox{90}{SciVis conf} &   \rotatebox{90}{InfoVis} &   \rotatebox{90}{VAST} &   \rotatebox{90}{VAST conf} &   \rotatebox{90}{TVCG @ VIS} &   \rotatebox{90}{CG\&A @ VIS} &   \rotatebox{90}{VIS/VisWeek} \rotatebox{90}{incl.\ TVCG/CG\&A}   &   \rotatebox{90}{VIS/VisWeek} \rotatebox{90}{w/o TVCG/CG\&A}   \\
  	\multirow{2}*{3} & \tabincell{in\\lower\\mesh} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case1.pdf} & - & \{$p$, $n_0$, $n_1$, $n_x'$\} \\ \cline{2-5}
  	& \tabincell{in\\upper\\mesh} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case2.pdf} & - & \{$p$, $n_0'$, $n_1'$, $n_x$\} \\ \hline
  	\multirow{10}*{4} & \multirow{5}*{\tabincell{in\\lower\\mesh}} & \multirow{2}*{\includegraphics[width=0.7in]{figs/pivot_cases/pivot_case3.pdf}} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case3-1.pdf} & \tabincell{\{$p$, $n_0$,\\$n_x'$, $n_y'$\},\\\{$p$, $n_0$,\\$n_1$, $n_y'$\}}\\ \cline{4-5}
  	& & & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case3-2.pdf} & \tabincell{\{$p$, $n_0$,\\$n_1$, $n_x'$\},\\\{$p$, $n_1$,\\$n_x'$, $n_y'$\}} \\ \cline{3-5}
  	& & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case4.pdf} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case4-1.pdf} & \tabincell{\{$p$, $n_0$,\\$n_x'$, $n_y'$\},\\\{$p$, $n_0$,\\$n_y'$, $n_z'$\}} \\ \cline{3-5}
  	& & \includegraphics[width=0.6in]{figs/pivot_cases/pivot_case5.pdf} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case5-1.pdf} & \tabincell{\{$p$, $n_0$,\\$n_2$, $n_x'$\},\\\{$p$, $n_1$,\\$n_2$, $n_x'$\}} \\ \cline{3-5}
  	& & \includegraphics[width=0.6in]{figs/pivot_cases/pivot_case6.pdf} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case6-1.pdf} & \tabincell{\{$p$, $n_0$,\\$n_2$, $n_x'$\},\\\{$p$, $n_1$,\\$n_2$, $n_x'$\}} \\ \cline{2-5}
  	& \multirow{5}*{\tabincell{in\\upper\\mesh}} & \multirow{2}*{\includegraphics[width=0.7in]{figs/pivot_cases/pivot_case7.pdf}} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case7-1.pdf} & \tabincell{\{$p$, $n_x$,\\$n_0'$, $n_1'$\},\\\{$p$, $n_x$,\\$n_y$, $n_1'$\}}  \\ \cline{4-5}
  	& & & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case7-2.pdf} & \tabincell{\{$p$, $n_x$,\\$n_y$, $n_0'$\},\\\{$p$, $n_y$,\\$n_0'$, $n_1'$\}}  \\ \cline{3-5}
  	& & \includegraphics[width=0.6in]{figs/pivot_cases/pivot_case10.pdf} & \includegraphics[width=0.6in]{figs/pivot_cases/pivot_case10-1.pdf} & \tabincell{\{$p$, $n_x$,\\$n_y$, $n_0'$\},\\\{$p$, $n_y$,\\$n_z$, $n_0'$\}} \\ \cline{3-5}
  	& & \includegraphics[width=0.6in]{figs/pivot_cases/pivot_case8.pdf} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case8-1.pdf} & \tabincell{\{$p$, $n_x$,\\$n_0'$, $n_2'$\},\\\{$p$, $n_x$,\\$n_1'$, $n_2'$\}} \\ \cline{3-5}
  	& & \includegraphics[width=0.6in]{figs/pivot_cases/pivot_case9.pdf} & \includegraphics[width=0.7in]{figs/pivot_cases/pivot_case9-1.pdf} & \tabincell{\{$p$, $n_x$,\\$n_0'$, $n_2'$\},\\\{$p$, $n_x$,\\$n_1'$, $n_2'$\}} \\
  	% \midrule
  	\bottomrule
  \end{tabular}%
\end{table}

\begin{figure}[!ht]
    \centering
    \includegraphics[width=0.45\textwidth]{figs/node_elimination.pdf}
    \caption{Node elimination algorithm shown in a decision-tree paradigm. In odd levels, it makes a decision on ``which mesh node to eliminate'' among mesh nodes with minimum degree; in even levels, it makes a decision on ``how to eliminate'' based on the isolated polyhedron formed by the pivot node and its neighbors.
    % There are ten nodes in original volume, and thus this tree has $2(n-3)+1=15$ levels. The algorithm starts with a volume and an empty separated tetrahedra set, and terminates with an empty volume with all separated tetrahedra.
    }
    \label{fig:node-elimination}
\end{figure}

\begin{table}[h]
  \caption{%
  	Check list for valid subdivision of deformed prisms. If a triangulation is valid, then the two corresponding conditions regarding whether two points are on different sides of a plane shown in the last three columns should  both be satisfied. If one of the points is in the plane, then there is a tetrahedron degenerating into a quadrilateral. The example shown in the third column is an ill-posed prism, which is created by two equilateral triangles where one can be aligned with the other by rotating it by $\pi/2$ around its centroid. The ill-posed prism cannot be triangulated by any of the six triangulations.
  }
  \label{tab:ill_cases}
  % \scriptsize%
  \centering%
  \begin{tabular}{m{0.1in}|m{0.45in}|m{0.8in}|m{0.2in}|m{0.2in}|m{0.6in}}
  	\toprule
  	\multirow{2}*{ID} & \multirow{2}*{\tabincell{Face\\separations}} & \multirow{2}*{Subdivision} & \multicolumn{3}{c}{Conditions to be checked} \\ \cline{4-6}
   & & & pt 1 & pt 2 & plane \\
   \midrule
   \end{tabular}
  \renewcommand{\arraystretch}{2.3}
  \begin{tabular}{m{0.1in}|m{0.45in}|m{0.8in}|m{0.2in}|m{0.2in}|m{0.6in}}
  	\multirow{3}*{1} & $a_0-b_1$ & \multirow{3}*{\includegraphics[width=0.8in]{figs/ill_cases/ill_case1.pdf}} & $a_2$ & $b_1$ & $a_0-a_1-b_2$ \\
   & $a_1-b_2$ & & & & \\
   & $a_0-b_2$ & & $a_1$ & $b_0$ & $a_0-b_1-b_2$ \\ \hline
  	\multirow{3}*{2} & $a_0-b_1$ & \multirow{3}*{\includegraphics[width=0.8in]{figs/ill_cases/ill_case2.pdf}} & $a_1$ & $b_2$ & $a_0-a_2-b_1$ \\
   & $a_2-b_1$ & & & & \\
   & $a_0-b_2$ & & $a_2$ & $b_0$ & $a_0-b_1-b_2$ \\ \hline
  	\multirow{3}*{3} & $a_1-b_0$ & \multirow{3}*{\includegraphics[width=0.8in]{figs/ill_cases/ill_case3.pdf}} & $a_2$ & $b_0$ & $a_0-a_1-b_2$ \\
   & $a_1-b_2$ & & & & \\
   & $a_0-b_2$ & & $a_0$ & $b_1$ & $a_1-b_0-b_2$ \\ \hline
  	\multirow{3}*{4} & $a_0-b_1$ & \multirow{3}*{\includegraphics[width=0.8in]{figs/ill_cases/ill_case4.pdf}} & $a_1$ & $b_0$ & $a_0-a_2-b_1$ \\
   & $a_2-b_1$ & & & & \\
   & $a_2-b_0$ & & $a_0$ & $b_2$ & $a_2-b_0-b_1$ \\ \hline
  	\multirow{3}*{5} & $a_1-b_0$ & \multirow{3}*{\includegraphics[width=0.8in]{figs/ill_cases/ill_case5.pdf}} & $a_0$ & $b_1$ & $a_1-a_2-b_0$ \\
   & $a_2-b_1$ & & & & \\
   & $a_2-b_0$ & & $a_1$ & $b_2$ & $a_2-b_0-b_1$ \\ \hline
  	\multirow{3}*{6} & $a_1-b_0$ & \multirow{3}*{\includegraphics[width=0.8in]{figs/ill_cases/ill_case6.pdf}} & $a_0$ & $b_2$ & $a_1-a_2-b_0$ \\
   & $a_1-b_2$ & & & & \\
   & $a_2-b_0$ & & $a_2$ & $b_1$ & $a_1-b_0-b_2$ \\
  	\bottomrule
  \end{tabular}%
\end{table}

% bibtex
\bibliographystyle{eg-alpha-doi} 
\bibliography{references}       

% biblatex with biber
% \printbibliography

\end{document}
