diff --git a/benchmark.py b/benchmark.py index e2b68859e7..e956d7a66e 100644 --- a/benchmark.py +++ b/benchmark.py @@ -151,7 +151,7 @@ def _elevate_degree(mesh, degree): mesh_s = Submesh(mesh, dmcommon.CELL_SETS_LABEL, label_struct, mesh.topological_dimension()) mesh_s = _elevate_degree(mesh_s, degree) else: - nref = 0 + nref = 1 mesh = make_mesh(quadrilateral) if nref > 0: mesh = MeshHierarchy(mesh, nref)[-1] @@ -626,14 +626,14 @@ def v_f_left(t_): print(f"Time: {end - start}") elif case in ["FSI1_2", "FSI2_2", "FSI3_2"]: T = 20 # 10.0 # 12.0 - dt = Constant(0.002) #0.001 + dt = Constant(0.001) #0.001 chkstride = int(0.01 / float(dt)) # save every 0.01 sec t = Constant(0.0) CNshift = 1 elast = True linear_elast = True serendipity = True - slip_bc = False + slip_bc = True if use_netgen: fname_checkpoint = f"dumbdata/fsi3_P4_P2_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_netgen_new" fname_FD = f"time_series_FD_P4_P2_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_netgen_new.dat" @@ -643,11 +643,11 @@ def v_f_left(t_): #fname_checkpoint = f"dumbdata/fsi3_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_ALEparamvar1_S" #fname_FD = f"time_series_FD_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_ALEparamvar1_S.dat" #fname_FL = f"time_series_FL_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_ALEparamvar1_S.dat" - fname_checkpoint = f"dumbdata/fsi3_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparamvar1_S" - fname_FD = f"time_series_FD_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparamvar1_S.dat" - fname_FL = f"time_series_FL_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparamvar1_S.dat" - fname_ux = f"time_series_ux_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparamvar1_S.dat" - fname_uy = f"time_series_uy_Q4_Q3_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparamvar1_S.dat" + fname_checkpoint = f"dumbdata/fsi3_Q4_Q3_nref{nref}_0.001_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparam1_S" + fname_FD = f"time_series_FD_Q4_Q3_nref{nref}_0.001_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparam1_S.dat" + fname_FL = f"time_series_FL_Q4_Q3_nref{nref}_0.001_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparam1_S.dat" + fname_ux = f"time_series_ux_Q4_Q3_nref{nref}_0.001_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparam1_S.dat" + fname_uy = f"time_series_uy_Q4_Q3_nref{nref}_0.001_shift{CNshift}_{elast}_{linear_elast}_{slip_bc}_ALEparam1_S.dat" else: fname_checkpoint = f"dumbdata/fsi3_P4_P2_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_ALEparamtest1" fname_FD = f"time_series_FD_P4_P2_nref{nref}_0.002_shift{CNshift}_{elast}_{linear_elast}_ALEparamtest1.dat" @@ -682,11 +682,11 @@ def v_f_left(t_): E_s = mu_s * 2 * (1 + nu_s) lambda_s = nu_s * E_s / (1 + nu_s) / (1 - 2 * nu_s) # ALE constants - #nu_ale = Constant(0.49) + nu_ale = Constant(0.49) mu_ale = Constant(float(mu_s)) - decay_r = Constant(0.5) # decay ratio - profile = (1. - decay_r * abs(x_f - pointA[0]) / (L - pointA[0])) * (1. - decay_r * abs(y_f - pointA[1]) / (L - pointA[0])) - nu_ale = Constant(0.49) * profile + #decay_r = Constant(0.5) # decay ratio + #profile = (1. - decay_r * abs(x_f - pointA[0]) / (L - pointA[0])) * (1. - decay_r * abs(y_f - pointA[1]) / (L - pointA[0])) + #nu_ale = Constant(0.49) * profile #mu_ale = Constant(2 * float(mu_s)) * profile E_ale = mu_ale * 2 * (1 + nu_ale) lambda_ale = nu_ale * E_ale / (1 + nu_ale) / (1 - 2 * nu_ale) @@ -933,7 +933,7 @@ def v_f_left(t_): outfile.write("t val" + "\n") with open(fname_uy, 'w') as outfile: outfile.write("t val" + "\n") - if True: + if False: Vplot = FunctionSpace(mesh_f, "P", degree) vfplot = Function(Vplot, name="mesh_f").assign(Constant(1)) #vf = solution.subfunctions[0] diff --git a/firedrake/variational_solver.py b/firedrake/variational_solver.py index bba281bc14..3c9a2689a4 100644 --- a/firedrake/variational_solver.py +++ b/firedrake/variational_solver.py @@ -366,7 +366,7 @@ def __init__(self, a, L, u, bcs=None, aP=None, else: if not isinstance(L, (ufl.BaseForm, slate.slate.TensorBase)): raise TypeError("Provided RHS is a '%s', not a Form or Slate Tensor" % type(L).__name__) - if len(L.arguments()) != 1: + if len(L.arguments()) != 1 and not L.empty(): raise ValueError("Provided RHS is not a linear form") F = ufl_expr.action(J, u) - L diff --git a/main.tex b/main.tex deleted file mode 100644 index 8548884802..0000000000 --- a/main.tex +++ /dev/null @@ -1,951 +0,0 @@ -\documentclass[]{beamer} - -\usepackage[compatibility=false]{caption} -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{subcaption} -%\usepackage{sidecap} -%\usepackage{minted} -\usepackage{hyperref} -\usepackage{filecontents} -\usepackage{enumitem} -\usepackage{graphicx} -% -- tikz -\usepackage{ -tikz, -pgfplots, -pgfplotstable, -ifthen, -} -\usepgfplotslibrary{patchplots} -\usetikzlibrary{fit} -\usetikzlibrary{calc} -\usetikzlibrary{shapes.geometric} -\pgfplotsset{compat=1.15} -\tikzset{% - highlight/.style={rectangle, rounded corners, fill=red!15, draw, fill opacity=0.5, thick, inner sep=0pt} -} -\newcommand{\tikzmark}[2]{\tikz[overlay, remember picture, baseline=(#1.base)] \node (#1) {#2};} -% -\newcommand{\Highlight}[2]{% - \tikz[overlay, remember picture]{ - \node[highlight, fit=(#1.north west) (#2.south east)] () {};} -} - - -\usepackage{lmodern} -\usepackage{beamercolorthemefiredrake} -\usepackage{beamerouterthemefiredrake} -%\usepackage{beamerfontthemefiredrake} -%\usepackage{beamerthemefiredrake} -\usepackage{beamerinnerthemefiredrake} -\usepackage{pgfplotsthemetolfiredrake} -\setbeamertemplate{items}[square] - -\newcommand{\bs}{\boldsymbol} -\newcommand{\abs}[1]{\left| #1 \right|} -\newcommand{\norm}[1]{\left|\!\left| #1 \right|\!\right|} -\newcommand{\vs}{\vspace{\baselineskip}} -\newcommand{\vsh}{\vspace{0.5\baselineskip}} -\newcommand{\trace}{\textrm{tr}} -\newcommand{\nvs}{\vspace{-\baselineskip}} -\newcommand{\nvsh}{\vspace{-0.5\baselineskip}} -\newcommand{\hs}{\hspace{\textwidth}} -\newcommand{\hsh}{\hspace{0.5\textwidth}} -\newcommand{\nhs}{\hspace{-\textwidth}} -\newcommand{\nhsh}{\hspace{-0.5\textwidth}} -\newcommand{\ol}{\overline} -\newcommand{\dif}{\textrm{d}} -\newcommand{\gradient}{\bs{\nabla}\!} -\newcommand{\divergence}{\bs{\nabla}\!\cdot\!} -\newcommand{\real}{\mathbb{R}} -\newcommand{\complex}{\mathbb{C}} -\newcommand{\D}{\textrm{D}} -\newcommand{\on}{\textrm{on }} -\newcommand{\objname}[1]{\texttt{#1}} -\newcommand{\minus}{\scalebox{0.75}[1.0]{\hspace{2pt}\( - \)\hspace{2pt}}} -\newcommand{\plus}{\scalebox{0.75}[0.75]{\hspace{2pt}\( + \)\hspace{2pt}}} -\newcommand{\card}[1]{|{#1}|} -%\newcommand{\aset}[1]{\textit{#1}} % not work with beamer -\newcommand{\aset}[1]{\mathit{#1}} -\newcommand{\amap}[1]{\mathcal{#1}} -%\newcommand{\anarray}[1]{\textsf{#1}} % not work with beamer -\newcommand{\anarray}[1]{\mathbb{#1}} -\newcommand{\iu}{\mathfrak{i}} % imaginary unit -\newcommand{\threeD}{\textrm{\fontsize{5}{0}\selectfont 3D}} - - -\pgfmathsetmacro{\tikzscale}{2.} -\pgfmathsetmacro{\tikztridegree}{3} -\pgfmathsetmacro{\tikzsqrtthree}{1.7320508075688772} -\pgfmathsetmacro{\tikzsqrttwo}{1.414213} -\pgfmathsetmacro{\tikzoffx}{1.0} -\pgfmathsetmacro{\tikzoffy}{1.0} -\pgfmathsetmacro{\tikzscale}{0.65} -\pgfmathsetmacro{\tikzoffmeshB}{1.5} -\newcommand{\tikzvarl}{0.5} -\definecolor{amber}{rgb}{1.0, 0.75, 0.0} -\definecolor{armygreen}{rgb}{0.29, 0.33, 0.13} -\definecolor{azure(colorwheel)}{rgb}{0.0, 0.5, 1.0} -\definecolor{awesome}{rgb}{1.0, 0.13, 0.32} -\newcommand{\tikzvarlen}{0.35} -\newcommand{\tikzvarnx}{8} -\newcommand{\tikzvarny}{4} -\newcommand{\tikzvarnxm}{7} -\newcommand{\tikzvarnym}{3} -\newcommand{\tikzvarnxtimestwo}{16} -\newcommand{\tikzvarnytimestwo}{8} -\newcommand{\tikzvarnxtimestwominusone}{15} -\newcommand{\tikzvarnytimestwominusone}{7} -\pgfmathsetmacro{\tikzpictureoffset}{6.0} -\newcommand{\tikzmeshcelllen}{1.5} -\newcommand{\tikzveccelllen}{0.5} -\newcommand{\tikzveccelllensmall}{0.3} -\newcommand{\tikzrankoffset}{2.5} -\newcommand{\tikzsubmark}{$\otimes$} - \tikzstyle{point}=[circle, minimum size=0pt,inner sep=0pt] - \tikzstyle{point1}=[circle, minimum size=0pt,inner sep=0pt,fill=gray!40] - \tikzstyle{orntarc}=[x radius=\tikzmeshcelllen*.2, y radius=\tikzmeshcelllen*.2] - %\tikzstyle{dof}=[circle,fill,inner sep=1.5pt] - %\tikzstyle{fsnode}=[circle,draw=black,minimum size=8pt,inner sep=0pt,fill=white] - %\tikzstyle{fsnode1}=[circle,draw=black,minimum size=11pt,inner sep=0pt,fill=gray!40] - \tikzstyle{dof}=[regular polygon,regular polygon sides=4,draw=black,minimum size=16pt,inner sep=-0em,fill=white] - %\tikzstyle{topoedge}=[draw=black,ultra thick,shorten <= 0pt,shorten >= 0pt,-stealth] - \tikzstyle{topoedge}=[draw=black,ultra thick,shorten <= 0pt,shorten >= 0pt] - -\definecolor{amber}{rgb}{1.0, 0.75, 0.0} -\definecolor{armygreen}{rgb}{0.29, 0.33, 0.13} -\definecolor{azure(colorwheel)}{rgb}{0.0, 0.5, 1.0} -\definecolor{awesome}{rgb}{1.0, 0.13, 0.32} - - -\usepackage{xcolor} -\usepackage[utf8]{inputenc} -\usepackage[english]{babel} -\usepackage{minted} -%\usemintedstyle{vim} - -\newcommand{\dbtilde}[1]{\accentset{\approx}{#1}} -\newcommand{\pp}[2]{\frac{\partial #1}{\partial #2}} -\newcommand{\dd}[2]{\frac{\delta #1}{\delta #2}} -\newcommand{\DD}[2]{\frac{D#1}{D#2}} -\newtheorem{remark}{Remark} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{document} - \title[] - {Recent Development in \textsf{Firedrake}} - \author{Koki Sagiyama\inst{1} \and David A. Ham\inst{1}} - \institute{ - \inst{1}% - Department of Mathematics, Imperial College London\\ - } - \date{ICIAM 2023} -\begin{frame} - \titlepage -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{MeshA} -\begin{figure}[] -\begin{tikzpicture} - % Reference element. - \node[] (p0) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 0)$) {}; % vertices - \node[] (p1) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 1)$) {}; - \node[] (p2) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 0)$) {}; - \node[] (p3) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 1)$) {}; - \node[] (p4) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 0)$) {}; - \node[] (p5) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 1)$) {}; - \node[] (p6) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 0)$) {}; - \node[] (p7) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 1)$) {}; - \node[] (p8) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 0)$) {}; - \node[] (p9) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 1)$) {}; - \node[] (p10) at ($(p0)!0.5!(p1)$) {}; % facets - \node[] (p11) at ($(p2)!0.5!(p3)$) {}; - \node[] (p12) at ($(p4)!0.5!(p5)$) {}; - \node[] (p13) at ($(p6)!0.5!(p7)$) {}; - \node[] (p14) at ($(p8)!0.5!(p9)$) {}; - \node[] (p15) at ($(p0)!0.5!(p2)$) {}; - \node[] (p16) at ($(p2)!0.5!(p4)$) {}; - \node[] (p17) at ($(p4)!0.5!(p6)$) {}; - \node[] (p18) at ($(p6)!0.5!(p8)$) {}; - \node[] (p19) at ($(p1)!0.5!(p3)$) {}; - \node[] (p20) at ($(p3)!0.5!(p5)$) {}; - \node[] (p21) at ($(p5)!0.5!(p7)$) {}; - \node[] (p22) at ($(p7)!0.5!(p9)$) {}; - \node[] (p23) at ($(p10)!0.5!(p11)$) {}; % cells - \node[] (p24) at ($(p11)!0.5!(p12)$) {}; - \node[] (p25) at ($(p12)!0.5!(p13)$) {}; - \node[] (p26) at ($(p13)!0.5!(p14)$) {}; - \foreach \x in {0,1,...,26} - { - \node[] (p\x_0) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 1)$) {}; - \node[] (p\x_1) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 2)$) {}; - } -\onslide<1-2>{ - % MeshO - \path[topoedge] ($(p0)$)--($(p1)$); - \path[topoedge] ($(p2)$)--($(p3)$); - \path[topoedge] ($(p4)$)--($(p5)$); - \path[topoedge] ($(p6)$)--($(p7)$); - \path[topoedge] ($(p8)$)--($(p9)$); - \path[topoedge] ($(p0)$)--($(p2)$); - \path[topoedge] ($(p2)$)--($(p4)$); - \path[topoedge] ($(p4)$)--($(p6)$); - \path[topoedge] ($(p6)$)--($(p8)$); - \path[topoedge] ($(p1)$)--($(p3)$); - \path[topoedge] ($(p3)$)--($(p5)$); - \path[topoedge] ($(p5)$)--($(p7)$); - \path[topoedge] ($(p7)$)--($(p9)$); - % MeshO_0 - \path[topoedge] ($(p0_0)$)--($(p1_0)$); - \path[topoedge] ($(p2_0)$)--($(p3_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p6_0)$)--($(p7_0)$); - \path[topoedge] ($(p0_0)$)--($(p2_0)$); - \path[topoedge] ($(p2_0)$)--($(p4_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p6_0)$); - \path[topoedge] ($(p1_0)$)--($(p3_0)$); - \path[topoedge] ($(p3_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p5_0)$)--($(p7_0)$); - % MeshO_1 - \path[topoedge, dashed] ($(p2_1)$)--($(p3_1)$); - \path[topoedge] ($(p4_1)$)--($(p5_1)$); - \path[topoedge] ($(p6_1)$)--($(p7_1)$); - \path[topoedge] ($(p8_1)$)--($(p9_1)$); - \path[topoedge, dashed] ($(p2_1)$)--($(p4_1)$); - \path[topoedge] ($(p4_1)$)--($(p6_1)$); - \path[topoedge] ($(p6_1)$)--($(p8_1)$); - \path[topoedge, dashed] ($(p3_1)$)--($(p5_1)$); - \path[topoedge] ($(p5_1)$)--($(p7_1)$); - \path[topoedge] ($(p7_1)$)--($(p9_1)$); -} -\onslide<2>{ - % submesh - \node[] () at ($(p23)$) {\tikzsubmark}; - \node[] () at ($(p24)$) {\tikzsubmark}; - \node[] () at ($(p23_0)$) {\tikzsubmark}; - \node[] () at ($(p24_0)$) {\tikzsubmark}; - \node[] () at ($(p24_1)$) {\tikzsubmark}; -} -\onslide<3-4>{ - % MeshO - \path[topoedge] ($(p0)$)--($(p1)$); - \path[topoedge] ($(p2)$)--($(p3)$); - \path[topoedge] ($(p4)$)--($(p5)$); - \path[topoedge] ($(p0)$)--($(p2)$); - \path[topoedge] ($(p2)$)--($(p4)$); - \path[topoedge] ($(p1)$)--($(p3)$); - \path[topoedge] ($(p3)$)--($(p5)$); - % MeshO_0 - \path[topoedge] ($(p0_0)$)--($(p1_0)$); - \path[topoedge] ($(p2_0)$)--($(p3_0)$); -\onslide<3>{ - \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); -} -\onslide<4>{ - \path[topoedge] ($(p4_0)$)--($(p5_0)$); -} - \path[topoedge] ($(p0_0)$)--($(p2_0)$); - \path[topoedge] ($(p2_0)$)--($(p4_0)$); - \path[topoedge] ($(p1_0)$)--($(p3_0)$); - \path[topoedge] ($(p3_0)$)--($(p5_0)$); - % MeshO_1 - \path[topoedge, dashed] ($(p2_1)$)--($(p3_1)$); -\onslide<3>{ - \path[topoedge] ($(p4_1)$)--($(p5_1)$); -} -\onslide<4>{ - \path[topoedge, dashed] ($(p4_1)$)--($(p5_1)$); -} - \path[topoedge, dashed] ($(p2_1)$)--($(p4_1)$); - \path[topoedge, dashed] ($(p3_1)$)--($(p5_1)$); -} - % V - \node[dof] (p26) at ($(p10)$) {10}; - - % texts -\node[anchor=east] at ($(p10)$) {$\text{Mesh}_O$\phantom{++}}; -\node[anchor=east] at ($(p10_0)$) {rank 0\phantom{++}}; -\node[anchor=east] at ($(p10_1)$) {rank 1\phantom{++}}; -\end{tikzpicture} -\end{figure} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{Corner case} -\begin{figure}[] -\begin{tikzpicture} - % Reference element. - \node[] (p0) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 0)$) {}; % vertices - \node[] (p1) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 1)$) {}; - \node[] (p2) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 2)$) {}; - \node[] (p3) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 3)$) {}; - \node[] (p4) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 0)$) {}; - \node[] (p5) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 1)$) {}; - \node[] (p6) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 2)$) {}; - \node[] (p7) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 3)$) {}; - \node[] (p8) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 0)$) {}; - \node[] (p9) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 1)$) {}; - \node[] (p10) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 2)$) {}; - \node[] (p11) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 3)$) {}; - \node[] (p12) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 0)$) {}; - \node[] (p13) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 1)$) {}; - \node[] (p14) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 2)$) {}; - \node[] (p15) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 3)$) {}; - \node[] (p16) at ($(p0)!0.5!(p1)$) {}; % facets - \node[] (p17) at ($(p1)!0.5!(p2)$) {}; - \node[] (p18) at ($(p2)!0.5!(p3)$) {}; - \node[] (p19) at ($(p4)!0.5!(p5)$) {}; - \node[] (p20) at ($(p5)!0.5!(p6)$) {}; - \node[] (p21) at ($(p6)!0.5!(p7)$) {}; - \node[] (p22) at ($(p8)!0.5!(p9)$) {}; - \node[] (p23) at ($(p9)!0.5!(p10)$) {}; - \node[] (p24) at ($(p10)!0.5!(p11)$) {}; - \node[] (p25) at ($(p12)!0.5!(p13)$) {}; - \node[] (p26) at ($(p13)!0.5!(p14)$) {}; - \node[] (p27) at ($(p14)!0.5!(p15)$) {}; - \node[] (p28) at ($(p0)!0.5!(p4)$) {}; - \node[] (p29) at ($(p4)!0.5!(p8)$) {}; - \node[] (p30) at ($(p8)!0.5!(p12)$) {}; - \node[] (p31) at ($(p1)!0.5!(p5)$) {}; - \node[] (p32) at ($(p5)!0.5!(p9)$) {}; - \node[] (p33) at ($(p9)!0.5!(p13)$) {}; - \node[] (p34) at ($(p2)!0.5!(p6)$) {}; - \node[] (p35) at ($(p6)!0.5!(p10)$) {}; - \node[] (p36) at ($(p10)!0.5!(p14)$) {}; - \node[] (p37) at ($(p3)!0.5!(p7)$) {}; - \node[] (p38) at ($(p7)!0.5!(p11)$) {}; - \node[] (p39) at ($(p11)!0.5!(p15)$) {}; - \node[] (p40) at ($(p16)!0.5!(p19)$) {}; % cells - \node[] (p41) at ($(p17)!0.5!(p20)$) {}; - \node[] (p42) at ($(p18)!0.5!(p21)$) {}; - \node[] (p43) at ($(p19)!0.5!(p22)$) {}; - \node[] (p44) at ($(p20)!0.5!(p23)$) {}; - \node[] (p45) at ($(p21)!0.5!(p24)$) {}; - \node[] (p46) at ($(p22)!0.5!(p25)$) {}; - \node[] (p47) at ($(p23)!0.5!(p26)$) {}; - \node[] (p48) at ($(p24)!0.5!(p27)$) {}; - \foreach \x in {0,1,...,48} - { - \node[] (p\x_0) [inner sep=0pt] at ($(p\x)+\tikzmeshcelllen*(-2, 0)$) {}; - \node[] (p\x_1) [inner sep=0pt] at ($(p\x)+\tikzmeshcelllen*( 2, 0)$) {}; - } -\onslide<1>{ - % MeshO - \path[topoedge] ($(p0)$)--($(p3)$); - \path[topoedge] ($(p4)$)--($(p7)$); - \path[topoedge] ($(p8)$)--($(p11)$); - \path[topoedge] ($(p12)$)--($(p15)$); - \path[topoedge] ($(p0)$)--($(p12)$); - \path[topoedge] ($(p1)$)--($(p13)$); - \path[topoedge] ($(p2)$)--($(p14)$); - \path[topoedge] ($(p3)$)--($(p15)$); -% texts -\node[anchor=north,yshift=-5pt] at ($(p29)$) {9 element mesh}; -} -\onslide<2-3>{ - % MeshO_0 - \path[topoedge] ($(p0_0)$)--($(p3_0)$); - \path[topoedge] ($(p4_0)$)--($(p7_0)$); - \path[topoedge, dashed] ($(p8_0)$)--($(p11_0)$); - \path[topoedge] ($(p0_0)$)--($(p4_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p8_0)$); - \path[topoedge] ($(p1_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p5_0)$)--($(p9_0)$); - \path[topoedge] ($(p2_0)$)--($(p6_0)$); - \path[topoedge, dashed] ($(p6_0)$)--($(p10_0)$); - \path[topoedge] ($(p3_0)$)--($(p7_0)$); - \path[topoedge, dashed] ($(p7_0)$)--($(p11_0)$); - % MeshO_1 - \path[topoedge, dashed] ($(p0_1)$)--($(p3_1)$); - \path[topoedge, dashed] ($(p4_1)$)--($(p7_1)$); - \path[topoedge] ($(p8_1)$)--($(p11_1)$); - \path[topoedge] ($(p12_1)$)--($(p15_1)$); - \path[topoedge, dashed] ($(p0_1)$)--($(p4_1)$); - \path[topoedge] ($(p4_1)$)--($(p8_1)$); - \path[topoedge] ($(p8_1)$)--($(p12_1)$); - \path[topoedge, dashed] ($(p1_1)$)--($(p5_1)$); - \path[topoedge] ($(p5_1)$)--($(p9_1)$); - \path[topoedge] ($(p9_1)$)--($(p13_1)$); - \path[topoedge, dashed] ($(p2_1)$)--($(p6_1)$); - \path[topoedge] ($(p6_1)$)--($(p10_1)$); - \path[topoedge] ($(p10_1)$)--($(p14_1)$); - \path[topoedge, dashed] ($(p3_1)$)--($(p7_1)$); - \path[topoedge] ($(p7_1)$)--($(p11_1)$); - \path[topoedge] ($(p11_1)$)--($(p15_1)$); -} -\onslide<3>{ - % submesh - \node[] () at ($(p40_0)$) {\tikzsubmark}; - \node[] () at ($(p41_0)$) {\tikzsubmark}; - \node[] () at ($(p42_0)$) {\tikzsubmark}; - \node[] () at ($(p43_0)$) {\tikzsubmark}; - \node[] () at ($(p40_1)$) {\tikzsubmark}; - \node[] () at ($(p41_1)$) {\tikzsubmark}; - \node[] () at ($(p42_1)$) {\tikzsubmark}; - \node[] () at ($(p43_1)$) {\tikzsubmark}; - \node[] () at ($(p46_1)$) {\tikzsubmark}; - \node[] () at ($(p47_1)$) {\tikzsubmark}; - \node[] () at ($(p48_1)$) {\tikzsubmark}; -} -\onslide<4-5>{ - % MeshO_0 - \path[topoedge] ($(p0_0)$)--($(p3_0)$); - \path[topoedge] ($(p4_0)$)--($(p7_0)$); - \path[topoedge, dashed] ($(p8_0)$)--($(p9_0)$); - \path[topoedge] ($(p0_0)$)--($(p4_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p8_0)$); - \path[topoedge] ($(p1_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p5_0)$)--($(p9_0)$); - \path[topoedge] ($(p2_0)$)--($(p6_0)$); - \path[topoedge] ($(p3_0)$)--($(p7_0)$); - % MeshO_1 - \path[topoedge, dashed] ($(p0_1)$)--($(p3_1)$); - \path[topoedge, dashed] ($(p4_1)$)--($(p7_1)$); - \path[topoedge] ($(p8_1)$)--($(p11_1)$); - \path[topoedge] ($(p12_1)$)--($(p15_1)$); - \path[topoedge, dashed] ($(p0_1)$)--($(p4_1)$); - \path[topoedge] ($(p4_1)$)--($(p8_1)$); - \path[topoedge] ($(p8_1)$)--($(p12_1)$); - \path[topoedge, dashed] ($(p1_1)$)--($(p5_1)$); - \path[topoedge] ($(p5_1)$)--($(p9_1)$); - \path[topoedge] ($(p9_1)$)--($(p13_1)$); - \path[topoedge, dashed] ($(p2_1)$)--($(p6_1)$); - \path[topoedge] ($(p10_1)$)--($(p14_1)$); - \path[topoedge, dashed] ($(p3_1)$)--($(p7_1)$); - \path[topoedge] ($(p11_1)$)--($(p15_1)$); -} -\onslide<5>{ - % submesh - \node[] () at ($(p41_1)$) {$\times$}; - \node[] () at ($(p42_1)$) {$\times$}; -} -\onslide<2->{ -% texts -\node[anchor=north,yshift=-5pt] at ($(p29_0)$) {rank 0}; -\node[anchor=north,yshift=-5pt] at ($(p29_1)$) {rank 1}; -} -\end{tikzpicture} -\end{figure} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{MeshB} -\begin{figure}[] -\begin{tikzpicture} - % Reference element. - \node[] (p0) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 0)$) {}; % vertices - \node[] (p1) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 1)$) {}; - \node[] (p2) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 0)$) {}; - \node[] (p3) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 1)$) {}; - \node[] (p4) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 0)$) {}; - \node[] (p5) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 1)$) {}; - \node[] (p6) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 0)$) {}; - \node[] (p7) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 1)$) {}; - \node[] (p8) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 0)$) {}; - \node[] (p9) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 1)$) {}; - \node[] (p10) at ($(p0)!0.5!(p1)$) {}; % facets - \node[] (p11) at ($(p2)!0.5!(p3)$) {}; - \node[] (p12) at ($(p4)!0.5!(p5)$) {}; - \node[] (p13) at ($(p6)!0.5!(p7)$) {}; - \node[] (p14) at ($(p8)!0.5!(p9)$) {}; - \node[] (p15) at ($(p0)!0.5!(p2)$) {}; - \node[] (p16) at ($(p2)!0.5!(p4)$) {}; - \node[] (p17) at ($(p4)!0.5!(p6)$) {}; - \node[] (p18) at ($(p6)!0.5!(p8)$) {}; - \node[] (p19) at ($(p1)!0.5!(p3)$) {}; - \node[] (p20) at ($(p3)!0.5!(p5)$) {}; - \node[] (p21) at ($(p5)!0.5!(p7)$) {}; - \node[] (p22) at ($(p7)!0.5!(p9)$) {}; - \node[] (p23) at ($(p10)!0.5!(p11)$) {}; % cells - \node[] (p24) at ($(p11)!0.5!(p12)$) {}; - \node[] (p25) at ($(p12)!0.5!(p13)$) {}; - \node[] (p26) at ($(p13)!0.5!(p14)$) {}; - \foreach \x in {0,1,...,26} - { - \node[] (p\x_0) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 1)$) {}; - \node[] (p\x_1) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 2)$) {}; - } -\onslide<1-2>{ - % MeshO - \path[topoedge] ($(p0)$)--($(p1)$); - \path[topoedge] ($(p2)$)--($(p3)$); - \path[topoedge] ($(p4)$)--($(p5)$); - \path[topoedge] ($(p6)$)--($(p7)$); - \path[topoedge] ($(p8)$)--($(p9)$); - \path[topoedge] ($(p0)$)--($(p2)$); - \path[topoedge] ($(p2)$)--($(p4)$); - \path[topoedge] ($(p4)$)--($(p6)$); - \path[topoedge] ($(p6)$)--($(p8)$); - \path[topoedge] ($(p1)$)--($(p3)$); - \path[topoedge] ($(p3)$)--($(p5)$); - \path[topoedge] ($(p5)$)--($(p7)$); - \path[topoedge] ($(p7)$)--($(p9)$); - % MeshO_0 - \path[topoedge] ($(p0_0)$)--($(p1_0)$); - \path[topoedge] ($(p2_0)$)--($(p3_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p6_0)$)--($(p7_0)$); - \path[topoedge] ($(p0_0)$)--($(p2_0)$); - \path[topoedge] ($(p2_0)$)--($(p4_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p6_0)$); - \path[topoedge] ($(p1_0)$)--($(p3_0)$); - \path[topoedge] ($(p3_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p5_0)$)--($(p7_0)$); - % MeshO_1 - \path[topoedge, dashed] ($(p2_1)$)--($(p3_1)$); - \path[topoedge] ($(p4_1)$)--($(p5_1)$); - \path[topoedge] ($(p6_1)$)--($(p7_1)$); - \path[topoedge] ($(p8_1)$)--($(p9_1)$); - \path[topoedge, dashed] ($(p2_1)$)--($(p4_1)$); - \path[topoedge] ($(p4_1)$)--($(p6_1)$); - \path[topoedge] ($(p6_1)$)--($(p8_1)$); - \path[topoedge, dashed] ($(p3_1)$)--($(p5_1)$); - \path[topoedge] ($(p5_1)$)--($(p7_1)$); - \path[topoedge] ($(p7_1)$)--($(p9_1)$); -} -\onslide<2>{ - % submesh - \node[] () at ($(p25)$) {\tikzsubmark}; - \node[] () at ($(p26)$) {\tikzsubmark}; - \node[] () at ($(p25_0)$) {\tikzsubmark}; - \node[] () at ($(p25_1)$) {\tikzsubmark}; - \node[] () at ($(p26_1)$) {\tikzsubmark}; -} -\onslide<3-4>{ - % MeshO - \path[topoedge] ($(p4)$)--($(p5)$); - \path[topoedge] ($(p6)$)--($(p7)$); - \path[topoedge] ($(p8)$)--($(p9)$); - \path[topoedge] ($(p4)$)--($(p6)$); - \path[topoedge] ($(p6)$)--($(p8)$); - \path[topoedge] ($(p5)$)--($(p7)$); - \path[topoedge] ($(p7)$)--($(p9)$); - % MeshO_0 - \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p6_0)$)--($(p7_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p6_0)$); - \path[topoedge, dashed] ($(p5_0)$)--($(p7_0)$); - % MeshO_1 - \path[topoedge] ($(p4_1)$)--($(p5_1)$); - \path[topoedge] ($(p6_1)$)--($(p7_1)$); - \path[topoedge] ($(p8_1)$)--($(p9_1)$); - \path[topoedge] ($(p4_1)$)--($(p6_1)$); - \path[topoedge] ($(p6_1)$)--($(p8_1)$); - \path[topoedge] ($(p5_1)$)--($(p7_1)$); - \path[topoedge] ($(p7_1)$)--($(p9_1)$); - % V - \node[dof] (p26) at ($(p10)$) {10}; -} - % texts -\node[anchor=east] at ($(p10)$) {$\text{Mesh}_O$\phantom{++}}; -\node[anchor=east] at ($(p10_0)$) {rank 0\phantom{++}}; -\node[anchor=east] at ($(p10_1)$) {rank 1\phantom{++}}; -\end{tikzpicture} -\end{figure} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{rank 1's view} -\begin{figure}[] -\begin{tikzpicture} - % Reference element. - \node[] (p0) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 0)$) {}; % vertices - \node[] (p1) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 1)$) {}; - \node[] (p2) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 0)$) {}; - \node[] (p3) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 1)$) {}; - \node[] (p4) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 0)$) {}; - \node[] (p5) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 1)$) {}; - \node[] (p6) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 0)$) {}; - \node[] (p7) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 1)$) {}; - \node[] (p8) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 0)$) {}; - \node[] (p9) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 1)$) {}; - \node[] (p10) at ($(p0)!0.5!(p1)$) {}; % facets - \node[] (p11) at ($(p2)!0.5!(p3)$) {}; - \node[] (p12) at ($(p4)!0.5!(p5)$) {}; - \node[] (p13) at ($(p6)!0.5!(p7)$) {}; - \node[] (p14) at ($(p8)!0.5!(p9)$) {}; - \node[] (p15) at ($(p0)!0.5!(p2)$) {}; - \node[] (p16) at ($(p2)!0.5!(p4)$) {}; - \node[] (p17) at ($(p4)!0.5!(p6)$) {}; - \node[] (p18) at ($(p6)!0.5!(p8)$) {}; - \node[] (p19) at ($(p1)!0.5!(p3)$) {}; - \node[] (p20) at ($(p3)!0.5!(p5)$) {}; - \node[] (p21) at ($(p5)!0.5!(p7)$) {}; - \node[] (p22) at ($(p7)!0.5!(p9)$) {}; - \node[] (p23) at ($(p10)!0.5!(p11)$) {}; % cells - \node[] (p24) at ($(p11)!0.5!(p12)$) {}; - \node[] (p25) at ($(p12)!0.5!(p13)$) {}; - \node[] (p26) at ($(p13)!0.5!(p14)$) {}; - \foreach \x in {0,1,...,26} - { - \node[] (p\x_0) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 1)$) {}; - \node[] (p\x_1) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 2)$) {}; - } - % MeshO - \path[topoedge, dashed] ($(p2)$)--($(p3)$); - \path[topoedge] ($(p4)$)--($(p5)$); - \path[topoedge] ($(p6)$)--($(p7)$); - \path[topoedge] ($(p8)$)--($(p9)$); - \path[topoedge, dashed] ($(p2)$)--($(p4)$); - \path[topoedge] ($(p4)$)--($(p6)$); - \path[topoedge] ($(p6)$)--($(p8)$); - \path[topoedge, dashed] ($(p3)$)--($(p5)$); - \path[topoedge] ($(p5)$)--($(p7)$); - \path[topoedge] ($(p7)$)--($(p9)$); - % MeshA_1 - \path[topoedge, dashed] ($(p2_0)$)--($(p3_0)$); - \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); - \path[topoedge, dashed] ($(p2_0)$)--($(p4_0)$); - \path[topoedge, dashed] ($(p3_0)$)--($(p5_0)$); - % MeshB_1 - \path[topoedge] ($(p4_1)$)--($(p5_1)$); - \path[topoedge] ($(p6_1)$)--($(p7_1)$); - \path[topoedge] ($(p8_1)$)--($(p9_1)$); - \path[topoedge] ($(p4_1)$)--($(p6_1)$); - \path[topoedge] ($(p6_1)$)--($(p8_1)$); - \path[topoedge] ($(p5_1)$)--($(p7_1)$); - \path[topoedge] ($(p7_1)$)--($(p9_1)$); - % V - \node[dof] () at ($(p2_0)$) {0}; - \node[dof] () at ($(p3_0)$) {3}; - \node[dof] () at ($(p4_0)$) {1}; - \node[dof] () at ($(p5_0)$) {2}; - \node[dof] () at ($(p4_1)$) {\scriptsize 11}; - \node[dof] () at ($(p5_1)$) {\scriptsize 13}; - \node[dof] () at ($(p6_1)$) {2}; - \node[dof] () at ($(p7_1)$) {7}; - \node[dof] () at ($(p8_1)$) {3}; - \node[dof] () at ($(p9_1)$) {5}; - \node[dof] () at ($(p12_1)$) {\scriptsize 14}; - \node[dof] () at ($(p13_1)$) {8}; - \node[dof] () at ($(p14_1)$) {4}; - \node[dof] () at ($(p17_1)$) {\scriptsize 10}; - \node[dof] () at ($(p18_1)$) {1}; - \node[dof] () at ($(p21_1)$) {\scriptsize 12}; - \node[dof] () at ($(p22_1)$) {6}; - \node[dof] () at ($(p25_1)$) {9}; - \node[dof] () at ($(p26_1)$) {0}; - % texts -\node[anchor=east] at ($(p10)$) {$\text{Mesh}_O$\phantom{++}}; -\node[anchor=east] at ($(p10_0)$) {$\text{Mesh}_A$\phantom{++}}; -\node[anchor=east] at ($(p10_1)$) {$\text{Mesh}_B$\phantom{++}}; -\node[anchor=west] at ($(p12_0)$) {\phantom{+}$f_A,u_A\in V_A$}; -\node[anchor=east] at ($(p12_1)$) {$v_B\in V_B$\phantom{+}}; -\end{tikzpicture} -\end{figure} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{} -Create meshA. - -ownership? (interpolate) - -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{} - -\begin{align} -V:=V_A\times V_B, -\end{align} - -$v:=(v_A, v_B)\in V$ -$f:=(f_A, f_B)\in V$ - - -\begin{align} -\int_{\Gamma_{A,\text{interf}}}f_Bv_A\dif\Gamma -\end{align} - -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{FSI example: solution} -\begin{tikzpicture} -\begin{axis}[ - xmin= 0.00, xmax= 2.50, - ymin= 0.00, ymax= 0.41, - point meta min= 0., point meta max= 1.0, - axis equal image, - colormap/viridis, % hot, cool, bluered, greenyellow, redyellow, violet, blackwhite - width=300pt, - height=200pt, - ytick={0.0, 0.41}, - yticklabels={0.00, 0.41}, - ] -\addplot[patch, - patch type=biquadratic, - point meta=explicit, - shader=faceted interp, % interp, faceted, faceted interp - opacity=1., - ] table[x=x, y=y, meta=mesh_f] {mesh_f.dat}; -\addplot[patch, - patch type=biquadratic, - point meta=explicit, - shader=faceted interp, % interp, faceted, faceted interp - opacity=1., - ] table[x=x, y=y, meta=mesh_s] {mesh_s.dat}; -\end{axis} -\node[] (anchor=west) at (-0.75, 0.75) {$\Gamma_{\text{inflow}}$}; -\node[] (anchor=east) at (9.75, 0.75) {$\Gamma_{\text{outflow}}$}; -\end{tikzpicture} -\begin{tikzpicture} -\begin{axis}[ - xmin= 0.00, xmax= 2.50, - ymin= 0.00, ymax= 0.25, - point meta min= 0., point meta max= 1.0, - axis equal image, - colormap/viridis, - width=300pt, - height=200pt, - xtick={}, - xticklabels={}, - ytick={}, - yticklabels={}, - axis line style={draw=none}, - tick style={draw=none}, - ] -\addplot[patch, - patch type=rectangle, - point meta=explicit, - shader=faceted interp, - opacity=1., - ] table[x=x, y=y, meta=c, row sep=crcr] { -x y c\\ -1.8 0.15 1.\\ -2.0 0.15 1.\\ -2.0 0.25 1.\\ -1.8 0.25 1.\\ -}; -\addplot[patch, - patch type=rectangle, - point meta=explicit, - shader=faceted interp, - opacity=1., - ] table[x=x, y=y, meta=c, row sep=crcr] { -x y c\\ -1.8 0.0 0.\\ -2.0 0.0 0.\\ -2.0 0.1 0.\\ -1.8 0.1 0.\\ -}; -\end{axis} -\node[] (anchor=east) at (8.0, 0.71) {$\Omega_{\text{fluid}\phantom{\text{t}}}$}; -\node[] (anchor=east) at (8.0, 0.12) {$\Omega_{\text{struct}}$}; -\end{tikzpicture} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{FSI example: solution} -\begin{tikzpicture} -\begin{axis}[title={Time : 03.75 [s]}, - xmin= 0.00, xmax= 2.50, - ymin= 0.00, ymax= 0.41, - %xmin= -0.50, xmax= 3.50, - %ymin= -0.50, ymax= 0.91, - % zmin= -100.00, zmax= 100., - xlabel={$x$}, - ylabel={$y$}, - % zlabel={$z$}, - % xtick={0, 1, 2}, - % xticklabels={0, 1, 2}, - % ytick={0, 1}, - % yticklabels={0, 1}, - % ztick={0, 1}, - % zticklabels={0, 1}, - % axis equal, - axis equal image, - colorbar, - %colorbar horizontal/lowlevel, - colormap/blackwhite, % hot, cool, bluered, greenyellow, redyellow, violet, blackwhite - %colorbar/width=10pt, - %view={0}{90}, - width=300pt, - height=200pt, - % axis line style={draw=none}, - % tick style={draw=none}, - ] -\addplot[patch, - patch type=biquadratic, - point meta=explicit, - shader=faceted interp, % interp, faceted, faceted interp - opacity=1., - ] table[x=x, y=y, meta=velocity] {velocity_03.75.dat}; -%\tikzstyle{quiver}=[draw=black,thick,-latex] -%\def\quiverscale{.02} -%\input{quiver.dat} -\end{axis} -\end{tikzpicture} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{FSI example: solution} -\begin{figure}[ht] -\begin{subfigure}[b]{120pt} -\begin{tikzpicture} -\begin{axis}[ - xmin=19.5, xmax=20., - ymin=-0.006, ymax=0., - xlabel={$t$}, - ylabel={$u_x$ of A}, - line width=1.0pt, - width=120pt, - height=120pt, - ] -\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_ux_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; -\end{axis} -\end{tikzpicture} -\end{subfigure} -\begin{subfigure}[b]{120pt} -\begin{tikzpicture} -\begin{axis}[ - xmin=19.5, xmax=20., - ymin=-0.04, ymax=0.04, - xlabel={$t$}, - ylabel={$u_y$ of A}, - line width=1.0pt, - width=120pt, - height=120pt, - ] -\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_uy_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; -\end{axis} -\end{tikzpicture} -\end{subfigure} - -\begin{subfigure}[b]{120pt} -\begin{tikzpicture} -\begin{axis}[ - xmin=19.5, xmax=20., - ymin=430., ymax=485., - xlabel={$t$}, - ylabel={drag}, - line width=1.0pt, - width=120pt, - height=120pt, - ] -\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_FD_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; -\end{axis} -\end{tikzpicture} -\end{subfigure} -\begin{subfigure}[b]{120pt} -\begin{tikzpicture} -\begin{axis}[ - xmin=19.5, xmax=20., - ymin=-150., ymax=200., - xlabel={$t$}, - ylabel={lift}, - line width=1.0pt, - width=120pt, - height=120pt, - ] -\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_FL_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; -\end{axis} -\end{tikzpicture} -\end{subfigure} -\end{figure} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{} -\begin{center} -\begin{tabular}{ |c|c|c| } - \hline - cell1 & cell2 & cell3 \\ - \hline - cell4 & cell5 & cell6 \\ - \hline - cell7 & cell8 & cell9 \\ - \hline -\end{tabular} -\end{center} - -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{} - -Locally on each material edge of integration, -it is just like CG1 test function times CG2 trial function, but -entity-DoF maps are defined on different meshes. - -Talk about core/owned. - -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame}[fragile] -\frametitle{MHD} -\begin{minted}[fontsize=\footnotesize]{python} -from firedrake import * -... -with CheckpointFile("init_cond.h5", "r") as chk: - mesh = chk.load_mesh("mesh_name") - f = chk.load_function(mesh, "func_name") - -# Define problem. - -# Solve for "solution". - -with CheckpointFile("solution.h5", "w") as chk: - f = chk.save_function(solution) -\end{minted} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{Summary} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame}%[allowframebreaks] -\frametitle{References} -\fontsize{5pt}{5}\selectfont -\begin{thebibliography}{Sagiyam,2013} -\bibitem[Ham et al. 2023]{Firedrake} -Ham, D. A., Kelly, P. H. J., Mitchell, L, Cotter, C. J., Kirby, R. C., Sagiyama, K., Bouziani, N., Vorderwuelbecke, S., Gregory, T. J., Betteridge, J., Shapero, D. R., Nixon-Hill, R. W.,Ward, C. J., Farrell, P. E., Brubeck, P. D., Marsden, I., Gibson, T. H., Homolya, M., Sun, T., McRae, A. T. T., Luporini, F., Gregory, A., Lange, M., Funke, S. W., Rathgeber, F., Bercea, G., and Markall, G. R., -\newblock {F}iredrake {U}ser {M}anual. -\bibitem[PETSc/TAO Users Manual]{petsc-user-ref} -Balay, S., Abhyankar, S., Adams, M. F., Benson, S., Brown, J., Brune, P., Buschelman, K., Constantinescu, E., Dalcin, L., Dener, A., Eijkhout, V., Gropp, W. D., Hapla, V., Isaac, T., Jolivet, P., Karpeev, D., Kaushik, D., Knepley, M. G., Kong, F., Kruger, S., May, D. A., McInnes, L. C., Mills, R. T., Mitchell, L., Munson, T., Roman, J. E., Rupp, K., Sanan, P., Sarich, J., Smith, B. F., Zampini, S., Zhang, H., Zhang, H., and Zhang, J., -\newblock {PETSc/TAO} Users Manual, -\newblock ANL-21/39 - Revision 3.17 (2022). -\bibitem[Aln\ae{}s et al. 2014]{UFL} -Aln\ae{}s, M. S. Logg, A., \O{}lgaard, K. B., Rognes, M. E., and Wells, G. N. -\newblock {U}nified form language: {A} domain-specific language for weak formulations of partial differential equations, -\newblock ACM Transactions on Mathematical Software. 40(2014) 1--37. -%\bibitem[Homolya and Ham 2016]{Homolya2016} -%Homolya, M. and Ham, D. A., -%\newblock {A} parallel edge orientation algorithm for quadrilateral meshes, -%\newblock SIAM Journal on Scientific Computing. 38(2016) S48--S61. -\bibitem[Scroggs et al. 2022]{Scroggs2022} -Scroggs, M. W., Dokken, J. S., Richardson, C. N., and Wells, G. N., -\newblock {C}onstruction of {A}rbitrary {O}rder {F}inite {E}lement {D}egree-of-{F}reedom {M}aps on {P}olygonal and {P}olyhedral {C}ell {M}eshes, -\newblock ACM Transactions on Mathematical SoftwareVolume. 48(2022) 1--23. -\bibitem[Guddati and Lim 2006]{GuddatiLim2006} -Guddati, M. N. and Lim, K., -\newblock {C}ontinued fraction absorbing boundary conditions for convex polygonal domains, -\newblock International Journal for Numerical Methods in Engineering. 66(2006) 949--977. -%\bibitem[Ainsworth 2004]{Ainsworth2004} -%Ainsworth, M., -%\newblock {D}ispersive and dissipative behaviour of high order discontinuous Galerkin finite element methods, -%\newblock Journal of Computational Physics. 198(2004) 106--130. -\bibitem[Wimmer and Tang 2022]{Wimmer2022} -Wimmer, G. A. and Tang, X., -\newblock {S}tructure preserving transport stabilized compatible finite element methods for magnetohydrodynamics, -\newblock arXiv. 2210.02348(2022). -\bibitem[Sagiyama and Ham 2023]{SagiyamaHam2023} -Sagiyama, K. and Ham, D. A., -\newblock {A}bsorbing boundary conditions for the Helmholtz equation using Gauss-Legendre quadrature reduced integrations, -\newblock arXiv. 2308.12255(2023). -\end{thebibliography} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{Acknowledgement} -This work was funded under -%the embedded CSE programme of the ARCHER2 -%UK National Supercomputing Service (http://www.archer2.ac.uk) and -the Engineering and Physical -Sciences Research Council [grant numbers EP/R029423/1, EP/W029731/1]. -\end{frame} -\end{document} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/presentation.tex b/presentation.tex index d22dcfe752..18da1a0630 100644 --- a/presentation.tex +++ b/presentation.tex @@ -98,17 +98,18 @@ \newcommand{\tikzvarnxtimestwominusone}{15} \newcommand{\tikzvarnytimestwominusone}{7} \pgfmathsetmacro{\tikzpictureoffset}{6.0} -\newcommand{\tikzmeshcelllen}{2} +\newcommand{\tikzmeshcelllen}{1.5} \newcommand{\tikzveccelllen}{0.5} \newcommand{\tikzveccelllensmall}{0.3} \newcommand{\tikzrankoffset}{2.5} +\newcommand{\tikzsubmark}{$\otimes$} \tikzstyle{point}=[circle, minimum size=0pt,inner sep=0pt] \tikzstyle{point1}=[circle, minimum size=0pt,inner sep=0pt,fill=gray!40] \tikzstyle{orntarc}=[x radius=\tikzmeshcelllen*.2, y radius=\tikzmeshcelllen*.2] - \tikzstyle{dof}=[circle,fill,inner sep=1.5pt] - \tikzstyle{fsnode}=[circle,draw=black,minimum size=8pt,inner sep=0pt,fill=white] - \tikzstyle{fsnode1}=[circle,draw=black,minimum size=11pt,inner sep=0pt,fill=gray!40] - \tikzstyle{refnode}=[regular polygon,regular polygon sides=4,draw=black,minimum size=12pt,inner sep=-0em,fill=white] + %\tikzstyle{dof}=[circle,fill,inner sep=1.5pt] + %\tikzstyle{fsnode}=[circle,draw=black,minimum size=8pt,inner sep=0pt,fill=white] + %\tikzstyle{fsnode1}=[circle,draw=black,minimum size=11pt,inner sep=0pt,fill=gray!40] + \tikzstyle{dof}=[regular polygon,regular polygon sides=4,draw=black,minimum size=16pt,inner sep=-0em,fill=white] %\tikzstyle{topoedge}=[draw=black,ultra thick,shorten <= 0pt,shorten >= 0pt,-stealth] \tikzstyle{topoedge}=[draw=black,ultra thick,shorten <= 0pt,shorten >= 0pt] @@ -145,7 +146,9 @@ \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} -\frametitle{} +\frametitle{MeshA} +\cite{TurekHron2006} +\cite{TurekHron2010} \begin{figure}[] \begin{tikzpicture} % Reference element. @@ -181,7 +184,8 @@ \node[] (p\x_0) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 1)$) {}; \node[] (p\x_1) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 2)$) {}; } - % meshO +\onslide<1-2>{ + % MeshO \path[topoedge] ($(p0)$)--($(p1)$); \path[topoedge] ($(p2)$)--($(p3)$); \path[topoedge] ($(p4)$)--($(p5)$); @@ -195,7 +199,7 @@ \path[topoedge] ($(p3)$)--($(p5)$); \path[topoedge] ($(p5)$)--($(p7)$); \path[topoedge] ($(p7)$)--($(p9)$); - % meshO_0 + % MeshO_0 \path[topoedge] ($(p0_0)$)--($(p1_0)$); \path[topoedge] ($(p2_0)$)--($(p3_0)$); \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); @@ -206,7 +210,7 @@ \path[topoedge] ($(p1_0)$)--($(p3_0)$); \path[topoedge] ($(p3_0)$)--($(p5_0)$); \path[topoedge, dashed] ($(p5_0)$)--($(p7_0)$); - % meshO_1 + % MeshO_1 \path[topoedge, dashed] ($(p2_1)$)--($(p3_1)$); \path[topoedge] ($(p4_1)$)--($(p5_1)$); \path[topoedge] ($(p6_1)$)--($(p7_1)$); @@ -217,10 +221,420 @@ \path[topoedge, dashed] ($(p3_1)$)--($(p5_1)$); \path[topoedge] ($(p5_1)$)--($(p7_1)$); \path[topoedge] ($(p7_1)$)--($(p9_1)$); - % -\node[anchor=east] at ($(p10)$) {meshO}; -\node[anchor=east] at ($(p10_0)$) {rank 0}; -\node[anchor=east] at ($(p10_1)$) {rank 1}; +} +\onslide<2>{ + % submesh + \node[] () at ($(p23)$) {\tikzsubmark}; + \node[] () at ($(p24)$) {\tikzsubmark}; + \node[] () at ($(p23_0)$) {\tikzsubmark}; + \node[] () at ($(p24_0)$) {\tikzsubmark}; + \node[] () at ($(p24_1)$) {\tikzsubmark}; +} +\onslide<3-4>{ + % MeshO + \path[topoedge] ($(p0)$)--($(p1)$); + \path[topoedge] ($(p2)$)--($(p3)$); + \path[topoedge] ($(p4)$)--($(p5)$); + \path[topoedge] ($(p0)$)--($(p2)$); + \path[topoedge] ($(p2)$)--($(p4)$); + \path[topoedge] ($(p1)$)--($(p3)$); + \path[topoedge] ($(p3)$)--($(p5)$); + % MeshO_0 + \path[topoedge] ($(p0_0)$)--($(p1_0)$); + \path[topoedge] ($(p2_0)$)--($(p3_0)$); +\onslide<3>{ + \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); +} +\onslide<4>{ + \path[topoedge] ($(p4_0)$)--($(p5_0)$); +} + \path[topoedge] ($(p0_0)$)--($(p2_0)$); + \path[topoedge] ($(p2_0)$)--($(p4_0)$); + \path[topoedge] ($(p1_0)$)--($(p3_0)$); + \path[topoedge] ($(p3_0)$)--($(p5_0)$); + % MeshO_1 + \path[topoedge, dashed] ($(p2_1)$)--($(p3_1)$); +\onslide<3>{ + \path[topoedge] ($(p4_1)$)--($(p5_1)$); +} +\onslide<4>{ + \path[topoedge, dashed] ($(p4_1)$)--($(p5_1)$); +} + \path[topoedge, dashed] ($(p2_1)$)--($(p4_1)$); + \path[topoedge, dashed] ($(p3_1)$)--($(p5_1)$); +} + % V + \node[dof] (p26) at ($(p10)$) {10}; + + % texts +\node[anchor=east] at ($(p10)$) {$\text{Mesh}_O$\phantom{++}}; +\node[anchor=east] at ($(p10_0)$) {rank 0\phantom{++}}; +\node[anchor=east] at ($(p10_1)$) {rank 1\phantom{++}}; +\end{tikzpicture} +\end{figure} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{Corner case} +\begin{figure}[] +\begin{tikzpicture} + % Reference element. + \node[] (p0) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 0)$) {}; % vertices + \node[] (p1) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 1)$) {}; + \node[] (p2) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 2)$) {}; + \node[] (p3) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 3)$) {}; + \node[] (p4) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 0)$) {}; + \node[] (p5) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 1)$) {}; + \node[] (p6) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 2)$) {}; + \node[] (p7) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 3)$) {}; + \node[] (p8) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 0)$) {}; + \node[] (p9) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 1)$) {}; + \node[] (p10) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 2)$) {}; + \node[] (p11) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 3)$) {}; + \node[] (p12) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 0)$) {}; + \node[] (p13) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 1)$) {}; + \node[] (p14) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 2)$) {}; + \node[] (p15) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 3)$) {}; + \node[] (p16) at ($(p0)!0.5!(p1)$) {}; % facets + \node[] (p17) at ($(p1)!0.5!(p2)$) {}; + \node[] (p18) at ($(p2)!0.5!(p3)$) {}; + \node[] (p19) at ($(p4)!0.5!(p5)$) {}; + \node[] (p20) at ($(p5)!0.5!(p6)$) {}; + \node[] (p21) at ($(p6)!0.5!(p7)$) {}; + \node[] (p22) at ($(p8)!0.5!(p9)$) {}; + \node[] (p23) at ($(p9)!0.5!(p10)$) {}; + \node[] (p24) at ($(p10)!0.5!(p11)$) {}; + \node[] (p25) at ($(p12)!0.5!(p13)$) {}; + \node[] (p26) at ($(p13)!0.5!(p14)$) {}; + \node[] (p27) at ($(p14)!0.5!(p15)$) {}; + \node[] (p28) at ($(p0)!0.5!(p4)$) {}; + \node[] (p29) at ($(p4)!0.5!(p8)$) {}; + \node[] (p30) at ($(p8)!0.5!(p12)$) {}; + \node[] (p31) at ($(p1)!0.5!(p5)$) {}; + \node[] (p32) at ($(p5)!0.5!(p9)$) {}; + \node[] (p33) at ($(p9)!0.5!(p13)$) {}; + \node[] (p34) at ($(p2)!0.5!(p6)$) {}; + \node[] (p35) at ($(p6)!0.5!(p10)$) {}; + \node[] (p36) at ($(p10)!0.5!(p14)$) {}; + \node[] (p37) at ($(p3)!0.5!(p7)$) {}; + \node[] (p38) at ($(p7)!0.5!(p11)$) {}; + \node[] (p39) at ($(p11)!0.5!(p15)$) {}; + \node[] (p40) at ($(p16)!0.5!(p19)$) {}; % cells + \node[] (p41) at ($(p17)!0.5!(p20)$) {}; + \node[] (p42) at ($(p18)!0.5!(p21)$) {}; + \node[] (p43) at ($(p19)!0.5!(p22)$) {}; + \node[] (p44) at ($(p20)!0.5!(p23)$) {}; + \node[] (p45) at ($(p21)!0.5!(p24)$) {}; + \node[] (p46) at ($(p22)!0.5!(p25)$) {}; + \node[] (p47) at ($(p23)!0.5!(p26)$) {}; + \node[] (p48) at ($(p24)!0.5!(p27)$) {}; + \foreach \x in {0,1,...,48} + { + \node[] (p\x_0) [inner sep=0pt] at ($(p\x)+\tikzmeshcelllen*(-2, 0)$) {}; + \node[] (p\x_1) [inner sep=0pt] at ($(p\x)+\tikzmeshcelllen*( 2, 0)$) {}; + } +\onslide<1>{ + % MeshO + \path[topoedge] ($(p0)$)--($(p3)$); + \path[topoedge] ($(p4)$)--($(p7)$); + \path[topoedge] ($(p8)$)--($(p11)$); + \path[topoedge] ($(p12)$)--($(p15)$); + \path[topoedge] ($(p0)$)--($(p12)$); + \path[topoedge] ($(p1)$)--($(p13)$); + \path[topoedge] ($(p2)$)--($(p14)$); + \path[topoedge] ($(p3)$)--($(p15)$); +% texts +\node[anchor=north,yshift=-5pt] at ($(p29)$) {9 element mesh}; +} +\onslide<2-3>{ + % MeshO_0 + \path[topoedge] ($(p0_0)$)--($(p3_0)$); + \path[topoedge] ($(p4_0)$)--($(p7_0)$); + \path[topoedge, dashed] ($(p8_0)$)--($(p11_0)$); + \path[topoedge] ($(p0_0)$)--($(p4_0)$); + \path[topoedge, dashed] ($(p4_0)$)--($(p8_0)$); + \path[topoedge] ($(p1_0)$)--($(p5_0)$); + \path[topoedge, dashed] ($(p5_0)$)--($(p9_0)$); + \path[topoedge] ($(p2_0)$)--($(p6_0)$); + \path[topoedge, dashed] ($(p6_0)$)--($(p10_0)$); + \path[topoedge] ($(p3_0)$)--($(p7_0)$); + \path[topoedge, dashed] ($(p7_0)$)--($(p11_0)$); + % MeshO_1 + \path[topoedge, dashed] ($(p0_1)$)--($(p3_1)$); + \path[topoedge, dashed] ($(p4_1)$)--($(p7_1)$); + \path[topoedge] ($(p8_1)$)--($(p11_1)$); + \path[topoedge] ($(p12_1)$)--($(p15_1)$); + \path[topoedge, dashed] ($(p0_1)$)--($(p4_1)$); + \path[topoedge] ($(p4_1)$)--($(p8_1)$); + \path[topoedge] ($(p8_1)$)--($(p12_1)$); + \path[topoedge, dashed] ($(p1_1)$)--($(p5_1)$); + \path[topoedge] ($(p5_1)$)--($(p9_1)$); + \path[topoedge] ($(p9_1)$)--($(p13_1)$); + \path[topoedge, dashed] ($(p2_1)$)--($(p6_1)$); + \path[topoedge] ($(p6_1)$)--($(p10_1)$); + \path[topoedge] ($(p10_1)$)--($(p14_1)$); + \path[topoedge, dashed] ($(p3_1)$)--($(p7_1)$); + \path[topoedge] ($(p7_1)$)--($(p11_1)$); + \path[topoedge] ($(p11_1)$)--($(p15_1)$); +} +\onslide<3>{ + % submesh + \node[] () at ($(p40_0)$) {\tikzsubmark}; + \node[] () at ($(p41_0)$) {\tikzsubmark}; + \node[] () at ($(p42_0)$) {\tikzsubmark}; + \node[] () at ($(p43_0)$) {\tikzsubmark}; + \node[] () at ($(p40_1)$) {\tikzsubmark}; + \node[] () at ($(p41_1)$) {\tikzsubmark}; + \node[] () at ($(p42_1)$) {\tikzsubmark}; + \node[] () at ($(p43_1)$) {\tikzsubmark}; + \node[] () at ($(p46_1)$) {\tikzsubmark}; + \node[] () at ($(p47_1)$) {\tikzsubmark}; + \node[] () at ($(p48_1)$) {\tikzsubmark}; +} +\onslide<4-5>{ + % MeshO_0 + \path[topoedge] ($(p0_0)$)--($(p3_0)$); + \path[topoedge] ($(p4_0)$)--($(p7_0)$); + \path[topoedge, dashed] ($(p8_0)$)--($(p9_0)$); + \path[topoedge] ($(p0_0)$)--($(p4_0)$); + \path[topoedge, dashed] ($(p4_0)$)--($(p8_0)$); + \path[topoedge] ($(p1_0)$)--($(p5_0)$); + \path[topoedge, dashed] ($(p5_0)$)--($(p9_0)$); + \path[topoedge] ($(p2_0)$)--($(p6_0)$); + \path[topoedge] ($(p3_0)$)--($(p7_0)$); + % MeshO_1 + \path[topoedge, dashed] ($(p0_1)$)--($(p3_1)$); + \path[topoedge, dashed] ($(p4_1)$)--($(p7_1)$); + \path[topoedge] ($(p8_1)$)--($(p11_1)$); + \path[topoedge] ($(p12_1)$)--($(p15_1)$); + \path[topoedge, dashed] ($(p0_1)$)--($(p4_1)$); + \path[topoedge] ($(p4_1)$)--($(p8_1)$); + \path[topoedge] ($(p8_1)$)--($(p12_1)$); + \path[topoedge, dashed] ($(p1_1)$)--($(p5_1)$); + \path[topoedge] ($(p5_1)$)--($(p9_1)$); + \path[topoedge] ($(p9_1)$)--($(p13_1)$); + \path[topoedge, dashed] ($(p2_1)$)--($(p6_1)$); + \path[topoedge] ($(p10_1)$)--($(p14_1)$); + \path[topoedge, dashed] ($(p3_1)$)--($(p7_1)$); + \path[topoedge] ($(p11_1)$)--($(p15_1)$); +} +\onslide<5>{ + % submesh + \node[] () at ($(p41_1)$) {$\times$}; + \node[] () at ($(p42_1)$) {$\times$}; +} +\onslide<2->{ +% texts +\node[anchor=north,yshift=-5pt] at ($(p29_0)$) {rank 0}; +\node[anchor=north,yshift=-5pt] at ($(p29_1)$) {rank 1}; +} +\end{tikzpicture} +\end{figure} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{MeshB} +\begin{figure}[] +\begin{tikzpicture} + % Reference element. + \node[] (p0) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 0)$) {}; % vertices + \node[] (p1) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 1)$) {}; + \node[] (p2) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 0)$) {}; + \node[] (p3) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 1)$) {}; + \node[] (p4) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 0)$) {}; + \node[] (p5) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 1)$) {}; + \node[] (p6) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 0)$) {}; + \node[] (p7) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 1)$) {}; + \node[] (p8) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 0)$) {}; + \node[] (p9) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 1)$) {}; + \node[] (p10) at ($(p0)!0.5!(p1)$) {}; % facets + \node[] (p11) at ($(p2)!0.5!(p3)$) {}; + \node[] (p12) at ($(p4)!0.5!(p5)$) {}; + \node[] (p13) at ($(p6)!0.5!(p7)$) {}; + \node[] (p14) at ($(p8)!0.5!(p9)$) {}; + \node[] (p15) at ($(p0)!0.5!(p2)$) {}; + \node[] (p16) at ($(p2)!0.5!(p4)$) {}; + \node[] (p17) at ($(p4)!0.5!(p6)$) {}; + \node[] (p18) at ($(p6)!0.5!(p8)$) {}; + \node[] (p19) at ($(p1)!0.5!(p3)$) {}; + \node[] (p20) at ($(p3)!0.5!(p5)$) {}; + \node[] (p21) at ($(p5)!0.5!(p7)$) {}; + \node[] (p22) at ($(p7)!0.5!(p9)$) {}; + \node[] (p23) at ($(p10)!0.5!(p11)$) {}; % cells + \node[] (p24) at ($(p11)!0.5!(p12)$) {}; + \node[] (p25) at ($(p12)!0.5!(p13)$) {}; + \node[] (p26) at ($(p13)!0.5!(p14)$) {}; + \foreach \x in {0,1,...,26} + { + \node[] (p\x_0) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 1)$) {}; + \node[] (p\x_1) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 2)$) {}; + } +\onslide<1-2>{ + % MeshO + \path[topoedge] ($(p0)$)--($(p1)$); + \path[topoedge] ($(p2)$)--($(p3)$); + \path[topoedge] ($(p4)$)--($(p5)$); + \path[topoedge] ($(p6)$)--($(p7)$); + \path[topoedge] ($(p8)$)--($(p9)$); + \path[topoedge] ($(p0)$)--($(p2)$); + \path[topoedge] ($(p2)$)--($(p4)$); + \path[topoedge] ($(p4)$)--($(p6)$); + \path[topoedge] ($(p6)$)--($(p8)$); + \path[topoedge] ($(p1)$)--($(p3)$); + \path[topoedge] ($(p3)$)--($(p5)$); + \path[topoedge] ($(p5)$)--($(p7)$); + \path[topoedge] ($(p7)$)--($(p9)$); + % MeshO_0 + \path[topoedge] ($(p0_0)$)--($(p1_0)$); + \path[topoedge] ($(p2_0)$)--($(p3_0)$); + \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); + \path[topoedge, dashed] ($(p6_0)$)--($(p7_0)$); + \path[topoedge] ($(p0_0)$)--($(p2_0)$); + \path[topoedge] ($(p2_0)$)--($(p4_0)$); + \path[topoedge, dashed] ($(p4_0)$)--($(p6_0)$); + \path[topoedge] ($(p1_0)$)--($(p3_0)$); + \path[topoedge] ($(p3_0)$)--($(p5_0)$); + \path[topoedge, dashed] ($(p5_0)$)--($(p7_0)$); + % MeshO_1 + \path[topoedge, dashed] ($(p2_1)$)--($(p3_1)$); + \path[topoedge] ($(p4_1)$)--($(p5_1)$); + \path[topoedge] ($(p6_1)$)--($(p7_1)$); + \path[topoedge] ($(p8_1)$)--($(p9_1)$); + \path[topoedge, dashed] ($(p2_1)$)--($(p4_1)$); + \path[topoedge] ($(p4_1)$)--($(p6_1)$); + \path[topoedge] ($(p6_1)$)--($(p8_1)$); + \path[topoedge, dashed] ($(p3_1)$)--($(p5_1)$); + \path[topoedge] ($(p5_1)$)--($(p7_1)$); + \path[topoedge] ($(p7_1)$)--($(p9_1)$); +} +\onslide<2>{ + % submesh + \node[] () at ($(p25)$) {\tikzsubmark}; + \node[] () at ($(p26)$) {\tikzsubmark}; + \node[] () at ($(p25_0)$) {\tikzsubmark}; + \node[] () at ($(p25_1)$) {\tikzsubmark}; + \node[] () at ($(p26_1)$) {\tikzsubmark}; +} +\onslide<3-4>{ + % MeshO + \path[topoedge] ($(p4)$)--($(p5)$); + \path[topoedge] ($(p6)$)--($(p7)$); + \path[topoedge] ($(p8)$)--($(p9)$); + \path[topoedge] ($(p4)$)--($(p6)$); + \path[topoedge] ($(p6)$)--($(p8)$); + \path[topoedge] ($(p5)$)--($(p7)$); + \path[topoedge] ($(p7)$)--($(p9)$); + % MeshO_0 + \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); + \path[topoedge, dashed] ($(p6_0)$)--($(p7_0)$); + \path[topoedge, dashed] ($(p4_0)$)--($(p6_0)$); + \path[topoedge, dashed] ($(p5_0)$)--($(p7_0)$); + % MeshO_1 + \path[topoedge] ($(p4_1)$)--($(p5_1)$); + \path[topoedge] ($(p6_1)$)--($(p7_1)$); + \path[topoedge] ($(p8_1)$)--($(p9_1)$); + \path[topoedge] ($(p4_1)$)--($(p6_1)$); + \path[topoedge] ($(p6_1)$)--($(p8_1)$); + \path[topoedge] ($(p5_1)$)--($(p7_1)$); + \path[topoedge] ($(p7_1)$)--($(p9_1)$); + % V + \node[dof] (p26) at ($(p10)$) {10}; +} + % texts +\node[anchor=east] at ($(p10)$) {$\text{Mesh}_O$\phantom{++}}; +\node[anchor=east] at ($(p10_0)$) {rank 0\phantom{++}}; +\node[anchor=east] at ($(p10_1)$) {rank 1\phantom{++}}; +\end{tikzpicture} +\end{figure} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{rank 1's view} +\begin{figure}[] +\begin{tikzpicture} + % Reference element. + \node[] (p0) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 0)$) {}; % vertices + \node[] (p1) [inner sep=0pt] at ($\tikzmeshcelllen*(0, 1)$) {}; + \node[] (p2) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 0)$) {}; + \node[] (p3) [inner sep=0pt] at ($\tikzmeshcelllen*(1, 1)$) {}; + \node[] (p4) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 0)$) {}; + \node[] (p5) [inner sep=0pt] at ($\tikzmeshcelllen*(2, 1)$) {}; + \node[] (p6) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 0)$) {}; + \node[] (p7) [inner sep=0pt] at ($\tikzmeshcelllen*(3, 1)$) {}; + \node[] (p8) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 0)$) {}; + \node[] (p9) [inner sep=0pt] at ($\tikzmeshcelllen*(4, 1)$) {}; + \node[] (p10) at ($(p0)!0.5!(p1)$) {}; % facets + \node[] (p11) at ($(p2)!0.5!(p3)$) {}; + \node[] (p12) at ($(p4)!0.5!(p5)$) {}; + \node[] (p13) at ($(p6)!0.5!(p7)$) {}; + \node[] (p14) at ($(p8)!0.5!(p9)$) {}; + \node[] (p15) at ($(p0)!0.5!(p2)$) {}; + \node[] (p16) at ($(p2)!0.5!(p4)$) {}; + \node[] (p17) at ($(p4)!0.5!(p6)$) {}; + \node[] (p18) at ($(p6)!0.5!(p8)$) {}; + \node[] (p19) at ($(p1)!0.5!(p3)$) {}; + \node[] (p20) at ($(p3)!0.5!(p5)$) {}; + \node[] (p21) at ($(p5)!0.5!(p7)$) {}; + \node[] (p22) at ($(p7)!0.5!(p9)$) {}; + \node[] (p23) at ($(p10)!0.5!(p11)$) {}; % cells + \node[] (p24) at ($(p11)!0.5!(p12)$) {}; + \node[] (p25) at ($(p12)!0.5!(p13)$) {}; + \node[] (p26) at ($(p13)!0.5!(p14)$) {}; + \foreach \x in {0,1,...,26} + { + \node[] (p\x_0) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 1)$) {}; + \node[] (p\x_1) [inner sep=0pt] at ($(p\x)-\tikzrankoffset*(0, 2)$) {}; + } + % MeshO + \path[topoedge, dashed] ($(p2)$)--($(p3)$); + \path[topoedge] ($(p4)$)--($(p5)$); + \path[topoedge] ($(p6)$)--($(p7)$); + \path[topoedge] ($(p8)$)--($(p9)$); + \path[topoedge, dashed] ($(p2)$)--($(p4)$); + \path[topoedge] ($(p4)$)--($(p6)$); + \path[topoedge] ($(p6)$)--($(p8)$); + \path[topoedge, dashed] ($(p3)$)--($(p5)$); + \path[topoedge] ($(p5)$)--($(p7)$); + \path[topoedge] ($(p7)$)--($(p9)$); + % MeshA_1 + \path[topoedge, dashed] ($(p2_0)$)--($(p3_0)$); + \path[topoedge, dashed] ($(p4_0)$)--($(p5_0)$); + \path[topoedge, dashed] ($(p2_0)$)--($(p4_0)$); + \path[topoedge, dashed] ($(p3_0)$)--($(p5_0)$); + % MeshB_1 + \path[topoedge] ($(p4_1)$)--($(p5_1)$); + \path[topoedge] ($(p6_1)$)--($(p7_1)$); + \path[topoedge] ($(p8_1)$)--($(p9_1)$); + \path[topoedge] ($(p4_1)$)--($(p6_1)$); + \path[topoedge] ($(p6_1)$)--($(p8_1)$); + \path[topoedge] ($(p5_1)$)--($(p7_1)$); + \path[topoedge] ($(p7_1)$)--($(p9_1)$); + % V + \node[dof] () at ($(p2_0)$) {0}; + \node[dof] () at ($(p3_0)$) {3}; + \node[dof] () at ($(p4_0)$) {1}; + \node[dof] () at ($(p5_0)$) {2}; + \node[dof] () at ($(p4_1)$) {\scriptsize 11}; + \node[dof] () at ($(p5_1)$) {\scriptsize 13}; + \node[dof] () at ($(p6_1)$) {2}; + \node[dof] () at ($(p7_1)$) {7}; + \node[dof] () at ($(p8_1)$) {3}; + \node[dof] () at ($(p9_1)$) {5}; + \node[dof] () at ($(p12_1)$) {\scriptsize 14}; + \node[dof] () at ($(p13_1)$) {8}; + \node[dof] () at ($(p14_1)$) {4}; + \node[dof] () at ($(p17_1)$) {\scriptsize 10}; + \node[dof] () at ($(p18_1)$) {1}; + \node[dof] () at ($(p21_1)$) {\scriptsize 12}; + \node[dof] () at ($(p22_1)$) {6}; + \node[dof] () at ($(p25_1)$) {9}; + \node[dof] () at ($(p26_1)$) {0}; + % texts +\node[anchor=east] at ($(p10)$) {$\text{Mesh}_O$\phantom{++}}; +\node[anchor=east] at ($(p10_0)$) {$\text{Mesh}_A$\phantom{++}}; +\node[anchor=east] at ($(p10_1)$) {$\text{Mesh}_B$\phantom{++}}; +\node[anchor=west] at ($(p12_0)$) {\phantom{+}$f_A,u_A\in V_A$}; +\node[anchor=east] at ($(p12_1)$) {$v_B\in V_B$\phantom{+}}; \end{tikzpicture} \end{figure} \end{frame} @@ -248,6 +662,247 @@ \int_{\Gamma_{A,\text{interf}}}f_Bv_A\dif\Gamma \end{align} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{FSI example: solution} +\begin{tikzpicture} +\begin{axis}[ + xmin= 0.00, xmax= 2.50, + ymin= 0.00, ymax= 0.41, + point meta min= 0., point meta max= 1.0, + axis equal image, + colormap/viridis, % hot, cool, bluered, greenyellow, redyellow, violet, blackwhite + width=300pt, + height=200pt, + ytick={0.0, 0.41}, + yticklabels={0.00, 0.41}, + ] +\iffalse +\addplot[patch, + patch type=biquadratic, + point meta=explicit, + shader=faceted interp, % interp, faceted, faceted interp + opacity=1., + ] table[x=x, y=y, meta=mesh_f] {mesh_f.dat}; +\addplot[patch, + patch type=biquadratic, + point meta=explicit, + shader=faceted interp, % interp, faceted, faceted interp + opacity=1., + ] table[x=x, y=y, meta=mesh_s] {mesh_s.dat}; +\fi +\end{axis} +\node[] (anchor=west) at (-0.75, 0.75) {$\Gamma_{\text{inflow}}$}; +\node[] (anchor=east) at (9.75, 0.75) {$\Gamma_{\text{outflow}}$}; +\end{tikzpicture} +\begin{tikzpicture} +\begin{axis}[ + xmin= 0.00, xmax= 2.50, + ymin= 0.00, ymax= 0.25, + point meta min= 0., point meta max= 1.0, + axis equal image, + colormap/viridis, + width=300pt, + height=200pt, + xtick={}, + xticklabels={}, + ytick={}, + yticklabels={}, + axis line style={draw=none}, + tick style={draw=none}, + ] +\addplot[patch, + patch type=rectangle, + point meta=explicit, + shader=faceted interp, + opacity=1., + ] table[x=x, y=y, meta=c, row sep=crcr] { +x y c\\ +1.8 0.15 1.\\ +2.0 0.15 1.\\ +2.0 0.25 1.\\ +1.8 0.25 1.\\ +}; +\addplot[patch, + patch type=rectangle, + point meta=explicit, + shader=faceted interp, + opacity=1., + ] table[x=x, y=y, meta=c, row sep=crcr] { +x y c\\ +1.8 0.0 0.\\ +2.0 0.0 0.\\ +2.0 0.1 0.\\ +1.8 0.1 0.\\ +}; +\end{axis} +\node[] (anchor=east) at (8.0, 0.71) {$\Omega_{\text{fluid}\phantom{\text{t}}}$}; +\node[] (anchor=east) at (8.0, 0.12) {$\Omega_{\text{struct}}$}; +\end{tikzpicture} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{} +Arbitrary Lagrangian-Eulerian (ALE) formulation + +material +(Lagrangian) description, for the fluid it is usually the spatial (Eulerian) description + +St. Venant-Kirchhoff material model + +High-order fluid–structure interaction in 2D and 3D application to blood flow in arteries + +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{FSI example: solution} +\begin{tikzpicture} +\begin{axis}[title={Time : 03.75 [s]}, + xmin= 0.00, xmax= 2.50, + ymin= 0.00, ymax= 0.41, + %xmin= -0.50, xmax= 3.50, + %ymin= -0.50, ymax= 0.91, + % zmin= -100.00, zmax= 100., + xlabel={$x$}, + ylabel={$y$}, + % zlabel={$z$}, + % xtick={0, 1, 2}, + % xticklabels={0, 1, 2}, + % ytick={0, 1}, + % yticklabels={0, 1}, + % ztick={0, 1}, + % zticklabels={0, 1}, + % axis equal, + axis equal image, + colorbar, + %colorbar horizontal/lowlevel, + colormap/blackwhite, % hot, cool, bluered, greenyellow, redyellow, violet, blackwhite + %colorbar/width=10pt, + %view={0}{90}, + width=300pt, + height=200pt, + % axis line style={draw=none}, + % tick style={draw=none}, + ] +\iffalse +\addplot[patch, + patch type=biquadratic, + point meta=explicit, + shader=faceted interp, % interp, faceted, faceted interp + opacity=1., + ] table[x=x, y=y, meta=velocity] {velocity_03.75.dat}; +\fi +%\tikzstyle{quiver}=[draw=black,thick,-latex] +%\def\quiverscale{.02} +%\input{quiver.dat} +\end{axis} +\end{tikzpicture} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{FSI example: solution} +\begin{figure}[ht] +\begin{subfigure}[b]{120pt} +\begin{tikzpicture} +\begin{axis}[ + xmin=19.5, xmax=20., + ymin=-0.006, ymax=0., + xlabel={$t$}, + ylabel={$u_x$ of A}, + line width=1.0pt, + width=120pt, + height=120pt, + ] +\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_ux_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; +\end{axis} +\end{tikzpicture} +\end{subfigure} +\begin{subfigure}[b]{120pt} +\begin{tikzpicture} +\begin{axis}[ + xmin=19.5, xmax=20., + ymin=-0.04, ymax=0.04, + xlabel={$t$}, + ylabel={$u_y$ of A}, + line width=1.0pt, + width=120pt, + height=120pt, + ] +\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_uy_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; +\end{axis} +\end{tikzpicture} +\end{subfigure} + +\begin{subfigure}[b]{120pt} +\begin{tikzpicture} +\begin{axis}[ + xmin=19.5, xmax=20., + ymin=430., ymax=485., + xlabel={$t$}, + ylabel={drag}, + line width=1.0pt, + width=120pt, + height=120pt, + ] +\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_FD_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; +\end{axis} +\end{tikzpicture} +\end{subfigure} +\begin{subfigure}[b]{120pt} +\begin{tikzpicture} +\begin{axis}[ + xmin=19.5, xmax=20., + ymin=-150., ymax=200., + xlabel={$t$}, + ylabel={lift}, + line width=1.0pt, + width=120pt, + height=120pt, + ] +\addplot[color=red, mark=o, mark size=0.0pt] table[x=t, y=val] {time_series_FL_Q4_Q3_nref0_0.002_shift1_True_True_False_ALEparamvar1_S.dat}; +\end{axis} +\end{tikzpicture} +\end{subfigure} +\end{figure} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{} +Turek 304,128 +Our test 155,098 +\begin{center} +\begin{table} +\begin{tabular}{ |c|c|c| } + \hline + & $u_x$ of A [$10^{-3}$] & $u_y$ of A[$10^{-3}$] \\ + \hline + \cite{TurekHron2006} & -2.69\pm 2.53 & 1.48\pm 34.38 \\ + \hline + \cite{TurekHron2010} & -2.88\pm 2.72 & 1.47\pm 34.99 \\ + \hline + \textbf{Our test} & \textbf{-2.86}\pm\textbf{2.59} & \textbf{1.47}\pm\textbf{35.22} \\ + \hline +\end{tabular} +\caption {Displacement at point A.} +\end{table} + +\begin{table} +\begin{tabular}{ |c|c|c| } + \hline + & $F_D$ & $F_L$ \\ + \hline + \cite{TurekHron2006} & 457.3\pm 22.66 & 2.22\pm 149.78\\ + \hline + \cite{TurekHron2010} & 460.5\pm 27.74 & 2.50\pm 153.91\\ + \hline + \textbf{Our test} & \textbf{459.5}\pm\textbf{26.04}&\textbf{2.28}\pm\textbf{156.20}\\ + \hline +\end{tabular} +\caption {Drag and lift.} +\end{table} +\end{center} + \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} @@ -257,6 +912,7 @@ it is just like CG1 test function times CG2 trial function, but entity-DoF maps are defined on different meshes. +Talk about core/owned. \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -277,32 +933,6 @@ f = chk.save_function(solution) \end{minted} \end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} -\frametitle{} -\begin{figure}[ht] -\begin{tikzpicture}[scale=1] -\begin{axis}[xmin=0, xmax=3, - ymin=1e-9, ymax=1, - xlabel={Time}, - ylabel={$F_L$}, - ylabel shift = 0 pt, - xtick={1,2,3}, - xticklabels={$1$,$2$, $3$}, - legend pos=south west, - width=7cm,height=7cm] -%\addplot table[x index=0,y index=1,col sep=comma] {convergence_case_2_N_4.dat}; -%\addlegendentry{$r=1$} -%\addplot table[x index=0,y index=2,col sep=comma] {convergence_case_2_N_4.dat}; -%\addlegendentry{$r=2$} -%\addplot table[x index=0,y index=3,col sep=comma] {convergence_case_2_N_4.dat}; -%\addlegendentry{$r=3$} -%\addplot table[x index=0,y index=4,col sep=comma] {convergence_case_2_N_4.dat}; -%\addlegendentry{$r=4$} -\end{axis} -\end{tikzpicture} -\end{figure}% -\end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{Summary} @@ -313,10 +943,10 @@ \fontsize{5pt}{5}\selectfont \begin{thebibliography}{Sagiyam,2013} \bibitem[Ham et al. 2023]{Firedrake} -Ham, D. A., Kelly, P. H. J., Mitchell, L, Cotter, C. J., Kirby, R. C., Sagiyama, K., Bouziani, N., Vorderwuelbecke, S., Gregory, T. J., Betteridge, J., Shapero, D. R., Nixon-Hill, R. W.,Ward, C. J., Farrell, P. E., Brubeck, P. D., Marsden, I., Gibson, T. H., Homolya, M., Sun, T., McRae, A. T. T., Luporini, F., Gregory, A., Lange, M., Funke, S. W., Rathgeber, F., Bercea, G., and Markall, G. R., +Ham, D. A., Kelly, P. H. J., Mitchell, L, Cotter, C. J., Kirby, R. C., Sagiyama, K., Bouziani, N., Vorderwuelbecke, S., Gregory, T. J., Betteridge, J., Shapero, D. R., Nixon-Hill, R. W.,Ward, C. J., Farrell, P. E., Brubeck, P. D., Marsden, I., Gibson, T. H., Homolya, M., Sun, T., McRae, A. T. T., Luporini, F., Gregory, A., Lange, M., Funke, S. W., Rathgeber, F., Bercea, G., and Markall, G. R. \newblock {F}iredrake {U}ser {M}anual. \bibitem[PETSc/TAO Users Manual]{petsc-user-ref} -Balay, S., Abhyankar, S., Adams, M. F., Benson, S., Brown, J., Brune, P., Buschelman, K., Constantinescu, E., Dalcin, L., Dener, A., Eijkhout, V., Gropp, W. D., Hapla, V., Isaac, T., Jolivet, P., Karpeev, D., Kaushik, D., Knepley, M. G., Kong, F., Kruger, S., May, D. A., McInnes, L. C., Mills, R. T., Mitchell, L., Munson, T., Roman, J. E., Rupp, K., Sanan, P., Sarich, J., Smith, B. F., Zampini, S., Zhang, H., Zhang, H., and Zhang, J., +Balay, S., Abhyankar, S., Adams, M. F., Benson, S., Brown, J., Brune, P., Buschelman, K., Constantinescu, E., Dalcin, L., Dener, A., Eijkhout, V., Gropp, W. D., Hapla, V., Isaac, T., Jolivet, P., Karpeev, D., Kaushik, D., Knepley, M. G., Kong, F., Kruger, S., May, D. A., McInnes, L. C., Mills, R. T., Mitchell, L., Munson, T., Roman, J. E., Rupp, K., Sanan, P., Sarich, J., Smith, B. F., Zampini, S., Zhang, H., Zhang, H., and Zhang, J. \newblock {PETSc/TAO} Users Manual, \newblock ANL-21/39 - Revision 3.17 (2022). \bibitem[Aln\ae{}s et al. 2014]{UFL} @@ -327,26 +957,14 @@ %Homolya, M. and Ham, D. A., %\newblock {A} parallel edge orientation algorithm for quadrilateral meshes, %\newblock SIAM Journal on Scientific Computing. 38(2016) S48--S61. -\bibitem[Scroggs et al. 2022]{Scroggs2022} -Scroggs, M. W., Dokken, J. S., Richardson, C. N., and Wells, G. N., -\newblock {C}onstruction of {A}rbitrary {O}rder {F}inite {E}lement {D}egree-of-{F}reedom {M}aps on {P}olygonal and {P}olyhedral {C}ell {M}eshes, -\newblock ACM Transactions on Mathematical SoftwareVolume. 48(2022) 1--23. -\bibitem[Guddati and Lim 2006]{GuddatiLim2006} -Guddati, M. N. and Lim, K., -\newblock {C}ontinued fraction absorbing boundary conditions for convex polygonal domains, -\newblock International Journal for Numerical Methods in Engineering. 66(2006) 949--977. -%\bibitem[Ainsworth 2004]{Ainsworth2004} -%Ainsworth, M., -%\newblock {D}ispersive and dissipative behaviour of high order discontinuous Galerkin finite element methods, -%\newblock Journal of Computational Physics. 198(2004) 106--130. -\bibitem[Wimmer and Tang 2022]{Wimmer2022} -Wimmer, G. A. and Tang, X., -\newblock {S}tructure preserving transport stabilized compatible finite element methods for magnetohydrodynamics, -\newblock arXiv. 2210.02348(2022). -\bibitem[Sagiyama and Ham 2023]{SagiyamaHam2023} -Sagiyama, K. and Ham, D. A., -\newblock {A}bsorbing boundary conditions for the Helmholtz equation using Gauss-Legendre quadrature reduced integrations, -\newblock arXiv. 2308.12255(2023). +\bibitem[TurekHron2006]{TurekHron2006} +Turek, S. and Hron, J. +\newblock {P}roposal for {N}umerical {B}enchmarking of {F}luid-{S}tructure {I}nteraction between an {E}lastic {O}bject and {L}aminar {I}ncompressible {F}low +\newblock Springer Berlin Heidelberg, Fluid-Structure Interaction. (2006) 371--385. +\bibitem[Turek et al. 2010]{TurekHron2010} +Turek, S., Hron. J., M\'{a}dl\'{i}k, M., Razzaq, M., Wobker, H., and Acker, J.F. +\newblock {N}umerical {S}imulation and {B}enchmarking of a {M}onolithic {M}ultigrid {S}olver for {F}luid-{S}tructure {I}nteraction {P}roblems with {A}pplication to {H}emodynamics, +\newblock Springer Berlin Heidelberg, Fluid-Structure Interaction II (2010) 193--220. \end{thebibliography} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -360,3 +978,8 @@ \end{frame} \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} +\frametitle{Firedrake 24} +\end{frame} +\end{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%