From a4104d8c52a13f7226052c2b15b81e6025042ddb Mon Sep 17 00:00:00 2001 From: Simon Sticko Date: Fri, 20 May 2022 12:55:02 +0200 Subject: [PATCH] Add section on the cutfem implementation --- 9.4/paper.bib | 18 +++++++- 9.4/paper.tex | 70 +++++++++++++++++++++++++++++- 9.4/svg/immersed-domain.pdf | Bin 0 -> 5753 bytes 9.4/svg/immersed_quadratures.pdf | Bin 0 -> 9185 bytes 9.4/svg/location-to-level-set.pdf | Bin 0 -> 16659 bytes 5 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 9.4/svg/immersed-domain.pdf create mode 100644 9.4/svg/immersed_quadratures.pdf create mode 100644 9.4/svg/location-to-level-set.pdf diff --git a/9.4/paper.bib b/9.4/paper.bib index 5087734..b52d093 100644 --- a/9.4/paper.bib +++ b/9.4/paper.bib @@ -1295,4 +1295,20 @@ doi = {10.1504/IJCSE.2009.029164} booktitle={SpringSim (HPC)}, pages={1--1}, year={2017} -} \ No newline at end of file +} + +@article{saye2015, + title = {High-{Order} {Quadrature} {Methods} for {Implicitly} {Defined} {Surfaces} and {Volumes} in {Hyperrectangles}}, + volume = {37}, + issn = {1064-8275, 1095-7197}, + url = {http://epubs.siam.org/doi/10.1137/140966290}, + doi = {10.1137/140966290}, + language = {en}, + number = {2}, + urldate = {2016-01-27}, + journal = {SIAM Journal on Scientific Computing}, + author = {Saye, R. I.}, + month = jan, + year = {2015}, + pages = {A993--A1019} +} diff --git a/9.4/paper.tex b/9.4/paper.tex index 47924d4..59ec1dd 100644 --- a/9.4/paper.tex +++ b/9.4/paper.tex @@ -26,6 +26,9 @@ \usepackage[normalem]{ulem} +\usepackage{caption} +\usepackage{subcaption} + \usepackage{todonotes} \pgfplotsset{compat=1.9} @@ -67,6 +70,7 @@ cross/.default={2pt}} Matthias Maier, Peter Munch, Jean-Paul Pelteret, + Simon Sticko, Bruno Turcksin, David Wells }, @@ -114,7 +118,7 @@ cross/.default={2pt}} \affil[7]{Department of Information Technology, Uppsala University, Box 337, 751\,05 Uppsala, Sweden. - {\texttt{martin.kronbichler@it.uu.se}}} + {\texttt{martin.kronbichler/simon.sticko@it.uu.se}}} \author[8]{Matthias~Maier} \affil[8]{Department of Mathematics, @@ -134,6 +138,8 @@ cross/.default={2pt}} \affil[10]{Independent researcher. {\texttt{jppelteret@gmail.com}}} +\author[7]{Simon~Sticko} + \author[1*]{Bruno~Turcksin} \author[11]{David Wells} @@ -580,10 +586,68 @@ to \dealii in the future. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{CutFEM support}\label{sec:cut} +Several classes have been added to the \texttt{NonMatching} namespace to enable the use of cut finite element methods, where the domain is immersed in the background mesh, as illustrated in Figure~\ref{fig:immersed-domain}. +Many of the new classes assume that the domain, $\Omega$, is described by a level set function, +$\psi : \mathbb{R}^d \to \mathbb{R}$, such that +\begin{align} + \Omega = \{x \in \mathbb{R}^d : \psi(x)<0\}, + \qquad + \Gamma = \partial \Omega = \{x \in \mathbb{R}^d : \psi(x) = 0\}. +\end{align} \begin{itemize} -\item new classes + \item The \texttt{MeshClassifier} class identifies how the active cells and faces are located relative to the zero contour of the level set function, as illustrated in Figure~\ref{fig:location-to-level-set}. Its \texttt{location\_to\_level\_set} function takes a cell/face and + returns an enum, \texttt{ LocationToLevelSet}, which takes values \{\texttt{inside}, \texttt{outside}, \texttt{intersected}\}. + These represent that $\psi$ is negative, positive, or varies in sign over the cell/face. + That is, the cell/face is located inside/outside $\Omega$, or is intersected by $\Gamma$. + This information is typically needed when choosing what element a cell of the \texttt{DoFHandler} should use. + + \item The \texttt{QuadratureGenerator} class, which implements the algorithm in \cite{saye2015}, generates high-order quadrature rules for the 3 different regions of a \texttt{BoundingBox}, $B$, defined by the sign of the level set function: + \begin{align} + B \cap \Omega = \{ x\in B: \psi(x) < 0 \}, \quad + B \cap \Gamma = \{ x\in B: \psi(x) = 0 \}, \quad + \{ x\in B: \psi(x) > 0 \}. + \end{align} + An example of these quadratures is shown in Figure~\ref{fig:immersed_quadratures}. + Correspondingly, the \newline \texttt{FaceQuadratureGenerator} class generates the same type of quadratures but over a face of $B$. + Furthermore, the new classes \texttt{DiscreteQuadratureGenerator} and \newline \texttt{DiscreteFaceQuadratureGenerator} can be used to generate these quadrature rules over a cell/face when the level set function lies in a finite element space: $\psi_h \in V_h$, and when the reference cell of the cell/face is a hypercube. + + \item \texttt{ImmersedSurfaceQuadrature} is a class representing a quadrature rule over a $(d-1)$-dimensional surface embedded in $\mathbb{R}^d$ ($\psi = 0$ in Figure~\ref{fig:immersed_quadratures}). In addition to the weight, it stores the unit normal to the surface, for each quadrature point. This is needed to be able to transform the quadrature rule from reference space to real space. + + \item \texttt{FEImmersedSurfaceValues} is a \texttt{FEValues}-like class for evaluating real space values based on an \texttt{ImmersedSurfaceQuadrature}. + + \item \texttt{NonMatching::FEValues} combines the functionality of several of the above classes to simplify assembling. It works similarly to \texttt{hp::FEValues}. + When calling the \texttt{reinit} function, the immersed quadrature rules are generated in the background and + \texttt{dealii::FEValues} objects for the inside/outside region and a \texttt{FEImmersedSurfaceValues} object for the surface regions are set up internally. These can then be obtained using getter-functions and used for the assembly. + Since the generation of immersed quadrature rules is not for free, + \texttt{NonMatching::FEValues} calls \texttt{QuadratureGenerator} only if it is needed, i.e. if the cell is intersected. If the cell passed to \texttt{reinit} is not intersected, already cached \texttt{dealii::FEValues} objects will be returned by the getter functions. + Correspondingly, the class \texttt{NonMatching::FEInterfaceValues} generates + \texttt{dealii::FEInterfaceValues} objects for assembling face terms of the type $F \cap \{x : \psi(x) < 0 \}$ or $F \cap \{x : \psi(x) > 0 \}$. \end{itemize} +\begin{figure}[h] + \centering + \begin{subfigure}[b]{0.3\textwidth} + \centering + \includegraphics[height=.12\paperheight]{svg/immersed-domain.pdf} + \caption{\label{fig:immersed-domain}} + \end{subfigure} + \qquad + \begin{subfigure}[b]{0.3\textwidth} + \centering + \includegraphics[height=.12\paperheight]{svg/location-to-level-set.pdf} + \caption{ \label{fig:location-to-level-set}} + \end{subfigure} + \caption{a) Domain immersed in a background mesh. b) Value of \texttt{LocationToLevelSet} for each cell} +\end{figure} + +\begin{figure}[h] + \centering + \includegraphics[width=.4\paperwidth]{svg/immersed_quadratures.pdf} + \caption{Quadrature points for integrating over the three different regions of a cell cut by the zero contour of the level set function, $\psi$. \label{fig:immersed_quadratures}} +\end{figure} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Integration with the Computational Geometry Algorithms Library (CGAL)}\label{sec:cgal} @@ -879,6 +943,8 @@ hybrid parallelization and improved data locality''. M.~Maier was partially supported by NSF Awards DMS-1912847 and DMS-2045636. +S.~Sticko was partially supported by eSSENCE of e-Science. + D.~Wells was supported by NSF through Grant DMS-1344962. The Interdisciplinary Center for Scientific Computing (IWR) at Heidelberg diff --git a/9.4/svg/immersed-domain.pdf b/9.4/svg/immersed-domain.pdf new file mode 100644 index 0000000000000000000000000000000000000000..073fd664fc7c73706b568f59bafd1a048561c349 GIT binary patch literal 5753 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 literal 0 HcmV?d00001 diff --git a/9.4/svg/immersed_quadratures.pdf b/9.4/svg/immersed_quadratures.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4113fbf7b3c141fc8997dac4bb968b75f3e69170 GIT binary patch literal 9185 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 literal 0 HcmV?d00001 diff --git a/9.4/svg/location-to-level-set.pdf b/9.4/svg/location-to-level-set.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b19c868f4a64dd66ead0966ac2a7c39b818da21c GIT binary patch literal 16659 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 QXSOl2!H|-Q%8SALKRNw_b^rhX literal 0 HcmV?d00001 -- 2.39.5