Skip to content

Instantly share code, notes, and snippets.

@nicoguaro
Last active September 29, 2023 01:57
Show Gist options
  • Save nicoguaro/f5031acb5ae1efb6b0b96a511db0cf5f to your computer and use it in GitHub Desktop.
Save nicoguaro/f5031acb5ae1efb6b0b96a511db0cf5f to your computer and use it in GitHub Desktop.
Notebooks con implementaciones sencillas del método de elementos finitos para la ecuación de Poisson y de Helmholtz.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Problema de valores propios en 1D con elementos finitos"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Queremos resolver el siguiente problema de valores propios\n",
"\n",
"$$\\frac{d^2 u}{dx^2} = -k^2 u(x)\\, ,$$\n",
"\n",
"con $u(0) = u(1) = 0$.\n",
"\n",
"Vamos a usar una solución aproximada de la forma\n",
"\n",
"$$u(x) = \\sum_{n=0}^{N} u_n \\phi_n(x)\\, ,$$\n",
"\n",
"Si usamos el método de Galerkin, la ecuación diferencial es equivalente\n",
"al siguiente problema\n",
"\n",
"$$\\int_{0}^{1} \\frac{d u}{d x} \\frac{d \\phi_n}{d x} dx\n",
"= \\lambda^2 \\int_{0}^{1} u(x)\\phi_n dx\\, \\quad \\forall \\phi_n\\, .$$\n",
"\n",
"Si remplazamos $u(x)$ en este sistema obtenemos\n",
"\n",
"$$\\sum_{j=0}^N \\left[\\int_{0}^{1} \\frac{d \\phi_i}{d x} \\frac{d \\phi_j}{d x} dx\\right] u_j\n",
"= \\lambda^2 \\sum_{j=0}^N \\left[\\int_{0}^{1} \\phi_i \\phi_j dx\\right] u_j\\, \\quad \\forall \\phi_j\\, .$$\n",
"\n",
"Esto lleva al siguiente problema de valores propios generalizado\n",
"\n",
"$$[K]\\{\\mathbf{u}\\} = \\lambda^2[M]\\{\\mathbf{u}\\}\\, ,$$\n",
"\n",
"donde $[M]$ es la matriz de masa del sistema.\n",
"\n",
"\n",
"<div class=\"alert alert-info\">\n",
"\n",
"Al igual que hicimos anteriormente, en este notebook calculamos las matrices\n",
"de rigidez y de masa de forma simbólica. Sin embargo, en este caso necesitamos\n",
"realizar el cálculo de los valores y vectores propios de forma numérica.\n",
"\n",
"</div>\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib widget"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from scipy.linalg import eigh\n",
"from sympy import *"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"init_printing()\n",
"\n",
"# Configuracion graficos\n",
"gris = '#757575'\n",
"plt.rcParams[\"mathtext.fontset\"] = \"cm\"\n",
"plt.rcParams[\"text.color\"] = gris\n",
"plt.rcParams[\"font.size\"] = 12\n",
"plt.rcParams[\"xtick.color\"] = gris\n",
"plt.rcParams[\"ytick.color\"] = gris\n",
"plt.rcParams[\"axes.labelcolor\"] = gris\n",
"plt.rcParams[\"axes.edgecolor\"] = gris\n",
"plt.rcParams[\"axes.spines.right\"] = False\n",
"plt.rcParams[\"axes.spines.top\"] = False"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"x = symbols('x')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def plot_expr(expr, x, rango=(0, 1), ax=None, linestyle=\"solid\"):\n",
" \"\"\"Grafica expresiones de SymPy que dependen de una variable\"\"\"\n",
" expr_num = lambdify(x, expr, \"numpy\")\n",
" x0 = rango[0]\n",
" x1 = rango[1]\n",
" x_num = np.linspace(x0, x1, 301)\n",
" if ax is None:\n",
" plt.figure()\n",
" ax = plt.gca()\n",
" ax.plot(x_num, expr_num(x_num), linestyle=linestyle)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def hat_fun(x, xi, h):\n",
" \"\"\"Función sombrero centrada en xi y de semi-ancho h.\"\"\"\n",
" fun = Piecewise((0, x< xi - h),\n",
" ((x - xi)/h + 1, (xi - h <= x) & (x < xi)),\n",
" (1 - (x - xi)/h, (xi <= x) & (x < xi + h)),\n",
" (0, x>= xi + h))\n",
" return fun"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Partimos el intervalo $(0, 1)$ en 20 sub-intervalos."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/latex": [
"$\\displaystyle \\left[ 0, \\ \\frac{1}{20}, \\ \\frac{1}{10}, \\ \\frac{3}{20}, \\ \\frac{1}{5}, \\ \\frac{1}{4}, \\ \\frac{3}{10}, \\ \\frac{7}{20}, \\ \\frac{2}{5}, \\ \\frac{9}{20}, \\ \\frac{1}{2}, \\ \\frac{11}{20}, \\ \\frac{3}{5}, \\ \\frac{13}{20}, \\ \\frac{7}{10}, \\ \\frac{3}{4}, \\ \\frac{4}{5}, \\ \\frac{17}{20}, \\ \\frac{9}{10}, \\ \\frac{19}{20}, \\ 1\\right]$"
],
"text/plain": [
"⎡ 11 13 \n",
"⎢0, 1/20, 1/10, 3/20, 1/5, 1/4, 3/10, 7/20, 2/5, 9/20, 1/2, ──, 3/5, ──, 7/10,\n",
"⎣ 20 20 \n",
"\n",
" 17 19 ⎤\n",
" 3/4, 4/5, ──, 9/10, ──, 1⎥\n",
" 20 20 ⎦"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = 0\n",
"b = 1\n",
"n = 20\n",
"dx = S(b - a)/n\n",
"coords = [a + dx*cont for cont in range(n + 1)]\n",
"coords"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"basis = [hat_fun(x, coord, dx) for coord in coords[1:-1]]\n",
"H = Matrix(basis)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"basis_diff = [fun.diff(x) for fun in basis]\n",
"D = Matrix(basis_diff)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"K = D * D.T\n",
"for row in range(n - 1):\n",
" for col in range(row, n - 1):\n",
" if col > row + 1:\n",
" K[row, col] = K[col, row] = 0\n",
" else:\n",
" K[row, col] = K[col, row] = integrate(K[row, col], (x, 0, 1))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"M = H * H.T\n",
"for row in range(n - 1):\n",
" for col in range(row, n - 1):\n",
" if col > row + 1:\n",
" M[row, col] = M[col, row] = 0\n",
" else:\n",
" M[row, col] = M[col, row] = integrate(M[row, col], (x, 0, 1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Convertimos las matrices de SymPy en arreglos de NumPy para calcular\n",
"los valores propios de forma numérica."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"Knum = np.array(K).astype(float)\n",
"Mnum = np.array(M).astype(float)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"vals, vecs = eigh(Knum, Mnum, subset_by_index=(0, 5))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 9.88991461, 39.80417191, 90.48210018, 163.17424011,\n",
" 259.66605013, 382.30196792])"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vals"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 9.8696044 , 39.4784176 , 88.82643961, 157.91367042,\n",
" 246.74011003, 355.30575844])"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vals_ex = np.array([(k*np.pi)**2 for k in range(1, 7)])\n",
"vals_ex"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Miremos el primer vector propio. Para ello realizamos\n",
"la combinación lineal de las funciones sombrero."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"u1_sol = Matrix(vecs[:, 0]).dot(basis)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2fc847a60d2a47b0815e95e3bb8ae2d7",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABb3UlEQVR4nO3deXxU5cH28d/JTFZCNghZgLAkYQ1b2FcFWQQRF3CtK1Z9tbbF2qdiF620pT5dtYstttbKg7YVFEHCvgm4sARCAoQlYSeENSSQZLLMnPePCBVZDGS5M5nr+/nkj5yZM7nmFmeuueec+1i2bduIiIiIiM/wMx1AREREROqXCqCIiIiIj1EBFBEREfExKoAiIiIiPkYFUERERMTHqACKiIiI+BgVQBEREREfowIoIiIi4mNUAEVERER8jAqgiIiIiI9RARQRERHxMSqAIiIiIj5GBVBERETEx6gAioiIiPgYFUARERERH6MCKCIiIuJjVABFREREfIwKoIiIiIiPUQEUERER8TEqgCIiIiI+RgVQRERExMeoAIqIiIj4GBVAERERER+jAigiIiLiY1QARURERHyMCqCIiIiIj1EBFBEREfExKoAiIiIiPkYFUERERMTHqACKiIiI+BgVQBEREREfowIoIiIi4mNUAEVERER8jAqgiIiIiI9RARQRERHxMSqAIiIiIj5GBVBERETEx6gAioiIiPgYFUARERERH6MCKCIiIuJjVABFREREfIwKoIiIiIiPUQEUERER8TEqgCIiIiI+RgVQRERExMeoAIqIiIj4GBVAERERER+jAigiIiLiY1QARURERHyMCqCIiIiIj1EBFBEREfExKoAiIiIiPkYFUERERMTHqACKiIiI+BgVQBEREREfowIoIiIi4mNUAGvAtm1cLhe2bZuOIiIiIlJtKoA1UFZWxosvvkhZWZnpKCIiIiLVpgIoIiIi4mNUAEVERER8jAqgiIiIiI9RARQRERHxMSqAIiIiIj5GBVBERETEx6gAioiIiPgYFUARERERH6MCKCIiIuJjnKYDXK+ysjKWLFnC1q1bKS0tJTo6muHDh9OzZ8+v3ffcuXOkpaWRnZ1NRUUFcXFxjBkzhuTk5LoPLiIiImKY1xbAmTNncvjwYcaOHUvz5s3JyMjg3XffxbZtevXqdcX9KisreeONNygtLWXChAmEhoby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",
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABb3UlEQVR4nO3deXxU5cH28d/JTFZCNghZgLAkYQ1b2FcFWQQRF3CtK1Z9tbbF2qdiF620pT5dtYstttbKg7YVFEHCvgm4sARCAoQlYSeENSSQZLLMnPePCBVZDGS5M5nr+/nkj5yZM7nmFmeuueec+1i2bduIiIiIiM/wMx1AREREROqXCqCIiIiIj1EBFBEREfExKoAiIiIiPkYFUERERMTHqACKiIiI+BgVQBEREREfowIoIiIi4mNUAEVERER8jAqgiIiIiI9RARQRERHxMSqAIiIiIj5GBVBERETEx6gAioiIiPgYFUARERERH6MCKCIiIuJjVABFREREfIwKoIiIiIiPUQEUERER8TEqgCIiIiI+RgVQRERExMeoAIqIiIj4GBVAERERER+jAigiIiLiY1QARURERHyMCqCIiIiIj1EBFBEREfExKoAiIiIiPkYFUERERMTHqACKiIiI+BgVQBEREREfowIoIiIi4mNUAEVERER8jAqgiIiIiI9RARQRERHxMSqAIiIiIj5GBVBERETEx6gAioiIiPgYFUARERERH6MCKCIiIuJjVABFREREfIwKoIiIiIiPUQEUERER8TEqgCIiIiI+RgVQRERExMeoAIqIiIj4GBVAERERER+jAigiIiLiY1QARURERHyMCqCIiIiIj1EBFBEREfExKoAiIiIiPkYFUERERMTHqACKiIiI+BgVQBEREREfowIoIiIi4mNUAGvAtm1cLhe2bZuOIiIiIlJtKoA1UFZWxosvvkhZWZnpKCIiIiLVpgIoIiIi4mNUAEVERER8jAqgiIiIiI9RARQRERHxMSqAIiIiIj5GBVBERETEx6gAioiIiPgYFUARERERH6MCKCIiIuJjnKYDXK+ysjKWLFnC1q1bKS0tJTo6muHDh9OzZ8+v3ffcuXOkpaWRnZ1NRUUFcXFxjBkzhuTk5LoPLiIiImKY1xbAmTNncvjwYcaOHUvz5s3JyMjg3XffxbZtevXqdcX9KisreeONNygtLWXChAmEhoby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' width=640.0/>\n",
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"ax = plt.gca()\n",
"plot_expr(u1_sol, x, (0, 1), ax=ax)\n",
"plot_expr(-np.sqrt(2)*sin(pi*x), x, (0, 1), ax=ax);"
]
},
{
"cell_type": "raw",
"metadata": {},
"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.11.5"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment