From: Marco Feder Date: Tue, 20 Jun 2023 07:16:21 +0000 (+0200) Subject: Talk about cells intersection and prolongation operator X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a32195e6ff29bd3ab6037a2a86dd5f5f6c2c1c7;p=release-papers.git Talk about cells intersection and prolongation operator --- diff --git a/9.5/paper.tex b/9.5/paper.tex index 79d7863..6cacb33 100644 --- a/9.5/paper.tex +++ b/9.5/paper.tex @@ -515,7 +515,9 @@ in more detail. In the current release, we added experimental support to compute intersections on parallel::distributed::Triangulation objects using \texttt{CGAL}~\cite{cgal-user-ref}. For this purpose we introduced a free function, which computes intersections and relevant information for communication from \texttt{intersection\_requests}. \texttt{intersection\_requests} is a vector indicating entities of a given triangulation (in the form of \texttt{GridTools::Cache}) that intersections are computed upon. -Each entity (face or cell) is described by a vector of vertices. +Each entity (face or cell) is described by a vector of vertices. The actual computation of the intersection of two geometric +entities is performed by the new function \texttt{CGALWrappers::compute\_intersection\_of\_cells()}. + \begin{c++} // compute intersections on distributed triangulation @@ -564,18 +566,24 @@ In the current release, we have added support for the case that multigrid levels are given by non-nested meshes~\cite{adams2002evaluation, bittencourt2001nonnested, bramble1991analysis}. An example for such meshes is presented in Figure~\ref{fig:nonnested}. -\begin{figure} - -\centering - -\todo[inline]{Complete these figures.} - -\fbox{\begin{minipage}{0.31\textwidth}\centering 0\vspace{5cm}\end{minipage}} -\fbox{\begin{minipage}{0.31\textwidth}\centering 1\vspace{5cm}\end{minipage}} -\fbox{\begin{minipage}{0.31\textwidth}\centering 2\vspace{5cm}\end{minipage}} - -\caption{\it Example of non-nested multigrid levels.}\label{fig:nonnested} +\begin{figure} + \centering + \begin{subfigure}[b]{0.28\textwidth} + \centering + \includegraphics[width=\textwidth]{png/mesh_0.png} + \end{subfigure}\qquad + \hfill + \begin{subfigure}[b]{0.28\textwidth} + \centering + \includegraphics[width=\textwidth]{png/mesh_1.png} + \end{subfigure} + \hfill + \begin{subfigure}[b]{0.28\textwidth} + \centering + \includegraphics[width=\textwidth]{png/mesh_2.png} + \end{subfigure} + \caption{\it Example of non-nested multigrid levels.}\label{fig:nonnested} \end{figure} The current implementation extends the existing global-coarsening infrastructure by @@ -598,21 +606,16 @@ takes \texttt{Mapping} instances, and (ii) is not limited to the case that the coarser of the two \texttt{DoFHandler} instances can be generated by a coarsening step from the fine mesh. -At the time of writing, the \texttt{MGTwoLevelTransferNonNested} operator performs -a pointwise interpolation (injection) from the coarse mesh to the support points -of the fine mesh. Adopting the notation of~\cite{munch2022gc}, we perform -for prolongation -\todo{I think you need to at least explain in a few words what each of - the components of this formula is.} -\todo{Alternatively (MK's preference), skip the parts that are just unnecessary - abstractions that do not help the reader's understanding.} +At the time of writing, the \texttt{MGTwoLevelTransferNonNested} operator provides a prolongation operator $\mathcal{P}^{(f,c)}$ +that prolongates a vector $x^{(c)}$ from the coarse space to the fine space: \begin{align*} -x^{(f)} = \mathcal{W}^{(f)} \circ \sum_{e \in \{\text{coarse cells}\}} \mathcal{S}_e^{(f)} \circ \mathcal{P}_e^{(f, c)} -\circ \mathcal{C}_e^{(c)} \circ \mathcal{G}_e^{(c)} x^{(c)}, +x^{(f)} = \mathcal{P}^{(f, c)} x^{(c)}, \end{align*} -i.e., loop over all coarse cells and interpolate to all (fine support) points that fall -into the cell with \texttt{FEPointEvaluation}. The local result is scattered into a global -vector, which is finalized by a communication and a weighting step. +by a pointwise interpolation (injection) from the coarse mesh to the support points of the fine mesh. This is done +by looping over all coarse cells and interpolating to all (fine support) points that fall into the cell with +\texttt{FEPointEvaluation}. The local result is scattered into $x^{(f)}$, which is finalized by a +communication and a weighting step that is necessary as multiple elements could add to the same global entry. + The current implementation works for scalar and vectorial, continuous (\texttt{FE\_Q}) and discontinuous (\texttt{FE\_DGQ}) elements on hypercube-shaped cells. We plan to support diff --git a/9.5/png/mesh_0.png b/9.5/png/mesh_0.png new file mode 100644 index 0000000..6397226 Binary files /dev/null and b/9.5/png/mesh_0.png differ diff --git a/9.5/png/mesh_1.png b/9.5/png/mesh_1.png new file mode 100644 index 0000000..83d669a Binary files /dev/null and b/9.5/png/mesh_1.png differ diff --git a/9.5/png/mesh_2.png b/9.5/png/mesh_2.png new file mode 100644 index 0000000..9796e35 Binary files /dev/null and b/9.5/png/mesh_2.png differ