-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
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 | ||
} |