Skip to content

Commit

Permalink
Update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
JSchoeberl committed Mar 3, 2024
1 parent d84f036 commit 49c118d
Show file tree
Hide file tree
Showing 123 changed files with 16,687 additions and 6,936 deletions.
182 changes: 99 additions & 83 deletions DG/Nitsche.html

Large diffs are not rendered by default.

136 changes: 76 additions & 60 deletions DG/elliptic.html

Large diffs are not rendered by default.

124 changes: 70 additions & 54 deletions DG/elliptic_stdDG.html

Large diffs are not rendered by default.

144 changes: 80 additions & 64 deletions DG/fourthorder.html

Large diffs are not rendered by default.

138 changes: 77 additions & 61 deletions DG/instationary.html

Large diffs are not rendered by default.

136 changes: 76 additions & 60 deletions DG/splitting.html

Large diffs are not rendered by default.

144 changes: 80 additions & 64 deletions DG/stationary.html

Large diffs are not rendered by default.

138 changes: 77 additions & 61 deletions DG/stokes.html

Large diffs are not rendered by default.

952 changes: 952 additions & 0 deletions FEM/erroranalysis.html

Large diffs are not rendered by default.

699 changes: 699 additions & 0 deletions FEM/finiteelements.html

Large diffs are not rendered by default.

872 changes: 872 additions & 0 deletions FEM/nonconforming.html

Large diffs are not rendered by default.

681 changes: 681 additions & 0 deletions FEM/sytemassembling.html

Large diffs are not rendered by default.

140 changes: 78 additions & 62 deletions MPIparallel/PETSc_interface.html

Large diffs are not rendered by default.

190 changes: 103 additions & 87 deletions MPIparallel/distmesh.html

Large diffs are not rendered by default.

120 changes: 68 additions & 52 deletions MPIparallel/hdivnstsimple/NavierStokesMT.html

Large diffs are not rendered by default.

120 changes: 68 additions & 52 deletions MPIparallel/hdivnstsimple/TestConvert.html

Large diffs are not rendered by default.

120 changes: 68 additions & 52 deletions MPIparallel/hdivnstsimple/veclaplace-auxiliary.html

Large diffs are not rendered by default.

120 changes: 68 additions & 52 deletions MPIparallel/hdivnstsimple/veclaplace.html

Large diffs are not rendered by default.

152 changes: 84 additions & 68 deletions MPIparallel/intro.html

Large diffs are not rendered by default.

288 changes: 152 additions & 136 deletions MPIparallel/paralleliteration.html

Large diffs are not rendered by default.

138 changes: 77 additions & 61 deletions MPIparallel/parallelstokes.html

Large diffs are not rendered by default.

134 changes: 75 additions & 59 deletions MPIparallel/petsc.html

Large diffs are not rendered by default.

232 changes: 124 additions & 108 deletions MPIparallel/vectypes.html

Large diffs are not rendered by default.

120 changes: 68 additions & 52 deletions README.html

Large diffs are not rendered by default.

430 changes: 430 additions & 0 deletions _sources/FEM/erroranalysis.ipynb

Large diffs are not rendered by default.

206 changes: 206 additions & 0 deletions _sources/FEM/finiteelements.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "519ffe5b-0ec6-4603-9d8c-82dbfa888149",
"metadata": {},
"source": [
"# Finite Element Method\n",
"\n",
"Ciarlet's definition of a finite element is:\n",
"\n",
"> **Definition: Finite element** A finite element is a triple $(T, V_{T}, \\Psi_{T})$, where\n",
"> * $T$ is a bounded set\n",
"> * $V_{T}$ is function space on $T$ of finite dimension $N_T$ \n",
"> * $\\Psi_{T} = \\{ \\psi^1_T, \\ldots , \\psi^{N_T}_T \\}$ is a set of linearly independent functionals on $V_{T}$.\n",
"\n",
"The nodal basis $\\{\\varphi^1_T\\, \\ldots \\varphi^{N_T}_T\\}$ for $V_T$ is the basis \n",
"dual to $\\Psi_T$, i.e., \n",
"\n",
"$$\n",
"\\psi^i_T (\\varphi^j_T) = \\delta_{ij}\n",
"$$\n",
"Barycentric coordinates are useful to express the nodal basis functions.\n",
"\n",
"\n",
"Finite elements with point evaluation functionals are called Lagrange \n",
"finite elements, elements using also derivatives are called Hermite finite elements."
]
},
{
"cell_type": "markdown",
"id": "a76719fd-f7de-4d43-8e0b-ae670b6628b5",
"metadata": {},
"source": [
"Usual function spaces on $T \\subset {\\mathbb R}^2$ are\n",
"\n",
"\\begin{align*}\n",
"P^p & := & \\mbox{span} \\{ x^i y^j : 0 \\leq i, \\, 0 \\leq j, \\, i+j \\leq p \\} \\\\\n",
"Q^p & := & \\mbox{span} \\{ x^i y^j : 0 \\leq i \\leq p, \\, 0 \\leq j \\leq p \\}\n",
"\\end{align*}\n",
"\n",
"Examples for finite elements are\n",
"* A linear line segment \n",
"* A quadratic line segment\n",
"* A Hermite line segment\n",
"* A constant triangle\n",
"* A linear triangle\n",
"* A non-conforming triangle\n",
"* A Morley triangle\n",
"* A Raviart-Thomas triangle"
]
},
{
"cell_type": "markdown",
"id": "80a7e67d-8f75-41fa-b162-a9d3cd355588",
"metadata": {},
"source": [
"The local nodal interpolation operator defined for functions $v \\in C^m(\\overline T)$ is\n",
"\n",
"$$\n",
"I_T v := \\sum_{\\alpha = 1}^{N_T} \\psi^\\alpha_T(v) \\varphi^\\alpha_T\n",
"$$\n",
"It is a projection.\n",
"\n",
"\n",
"Two finite elements $(T,V_T, \\Psi_T)$ and \n",
"$(\\widehat T, V_{\\widehat T}, \\Psi_{\\widehat T})$ are called \n",
"**equivalent** if there exists an invertible function $F$ such that\n",
"* $T = F (\\widehat T)$\n",
"* $V_T = \\{ \\hat v \\circ F^{-1} : \\hat v \\in V_{\\widehat T} \\}$\n",
"% \\item $\\Psi_T = \\{ \\psi_{\\widehat T} (. \\circ F) \\}$\n",
"* $\\Psi_T = \\{ \\psi^T_i : V_T \\rightarrow {\\mathbb R} : v \\rightarrow \\psi^{\\hat T}_i (v \\circ F) \\}$\n",
"\n",
"Two elements are called affine equivalent, if $F$ is an affine-linear function.\n",
"\n",
"Lagrangian finite elements defined above are equivalent. The Hermite elements are not equivalent.\n",
"\n",
"Two finite elements are called interpolation equivalent if there holds\n",
"$$\n",
"I_T (v) \\circ F = I_{\\widehat T} (v \\circ F)\n",
"$$\n",
"\n",
"> **Lemma:** Equivalent elements are interpolation equivalent\n",
"\n",
"The Hermite elements define above are also interpolation equivalent."
]
},
{
"cell_type": "markdown",
"id": "b72e87ce-09cc-4681-a7b5-fe2ac0b922ce",
"metadata": {},
"source": [
"A regular triangulation ${\\cal T} = \\{ T_1, \\ldots, T_M \\}$ of a domain \n",
"$\\Omega$ is the subdivision of a domain $\\Omega$ into closed triangles $T_i$\n",
"such that $\\overline \\Omega = \\cup T_i$ and $T_i \\cap T_j$ is \n",
"* either empty\n",
"* or a common vertex of $T_i$ and $T_j$\n",
"* or a common edge of $T_i$ and $T_j$\n",
"* or $T_i = T_j$ in the case $i = j$.\n",
"\\end{itemize}\n",
"%\n",
"In a wider sense, a triangulation may consist of different element shapes such\n",
"as segments, triangles, quadrilaterals, tetrahedra, hexhedra, prisms, pyramids."
]
},
{
"cell_type": "markdown",
"id": "42533d56-095e-4898-b859-bf07d05ee811",
"metadata": {},
"source": [
"A finite element complex $\\{ (T, V_T, \\Psi_T) \\}$ is a set of finite elements\n",
"defined on the geometric elements of the triangulation ${\\cal T}$.\n",
"\n",
"It is convenient to construct finite element complexes such that all\n",
"its finite elements are affine equivalent to one {\\em reference finite element} $(\\widehat T, \\hat V_T, \\hat \\Psi_T)$. The transformation $F_T$ is such that\n",
"$T = F_T (\\widehat T)$.\n",
"\n",
"\n",
"*Examples:* linear reference line segment on $(0,1)$.\n",
"\n",
"\n",
"The finite element complex allows the definition of the global \n",
"interpolation operator for $C^m$-smooth functions by\n",
"\n",
"$$\n",
"I_{\\cal T} v_{|T} = I_T v_T \\qquad \\forall \\, T \\in {\\cal T}\n",
"$$\n",
"%\n",
"The finite element space is \n",
"\n",
"$$\n",
"V_{\\cal T} := \\{ v = I_{\\cal T} w : w \\in C^m(\\overline \\Omega) \\}\n",
"$$\n",
"\n",
"We say that $V_{\\cal T}$ has regularity $r$ if $V_{\\cal T} \\subset C^r$.\n",
"If $V_{\\cal T} \\neq C^0$, the regularity is defined as~$-1$.\n",
"\n",
"Examples:\n",
"* The $P^1$ - triangle with vertex nodes leads to regularity $0$.\n",
"* The $P^1$ - triangle with edge midpoint nodes leads to regularity $-1$.\n",
"* The $P^0$ - triangle leads to regularity $-1$."
]
},
{
"cell_type": "markdown",
"id": "25da5cd8-b54f-4904-9526-9468f0733392",
"metadata": {},
"source": [
"For smooth functions, functionals $\\psi_{T,\\alpha}$ and $\\psi_{\\widetilde T, \\tilde \\alpha}$ sitting in the same location are equivalent. The set of global \n",
"functionals $\\Psi = \\{ \\psi_1, \\ldots, \\psi_N\\}$ is the linearly independent\n",
"set of functionals containing all (equivalence classes of) local functionals.\n",
"\n",
"The connectivity matrix $C_T \\in {\\mathbb R}^{N \\times N_T}$ is defined such\n",
"that the local functionals are derived from the global ones by\n",
"\n",
"$$\n",
"\\Psi_T (u) = C_T^t \\Psi (u)\n",
"$$\n",
"Examples in 1D and 2D\n",
"\n",
"\n",
"The nodal basis for the global finite element space is the\n",
"basis in $V_{\\cal T}$ dual to the global functionals $\\psi_j$, i.e., \n",
"$$\n",
"\\psi_j(\\varphi_i) = \\delta_{ij}\n",
"$$\n",
"There holds\n",
"\\begin{align*}\n",
"\\varphi_i|_T & = \n",
"I_T \\varphi_i = \\sum_{\\alpha = 1}^{N_T} \\psi_T^\\alpha (\\varphi_i) \\varphi^\\alpha_T \\\\\n",
"& = \\sum_{\\alpha = 1}^{N_T} (C_T^t \\psi(\\varphi_i))_\\alpha \\varphi_T^\\alpha \\\\\n",
"& = \\sum_{\\alpha = 1}^{N_T} (C_T^t e_i)_\\alpha \\varphi_T^\\alpha = \\sum_{\\alpha = 1}^{N_T} C_{T,i\\alpha} \\varphi_T^\\alpha \n",
"\\end{align*}"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8f8359d8-cea0-4423-91b1-7b0feb4db8bb",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading

0 comments on commit 49c118d

Please sign in to comment.