{"id":1301,"date":"2026-08-21T14:31:09","date_gmt":"2026-08-21T14:31:09","guid":{"rendered":"https:\/\/matforge.org\/?p=1301","raw":"https:\/\/matforge.org\/?p=1301"},"modified":"2026-08-21T14:31:09","modified_gmt":"2026-08-21T14:31:09","slug":"discontinuous-galerkin-method-tutorial","status":"publish","type":"post","link":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/","title":{"rendered":"Tutoriel discontinu de la m\u00e9thode Galerkin\u00a0: d\u00e9rivation, flux et impl\u00e9mentation de Python","raw":"Tutoriel discontinu de la m\u00e9thode Galerkin\u00a0: d\u00e9rivation, flux et impl\u00e9mentation de Python"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><article>\n<p>La m\u00e9thode de Galerkin discontinue, g\u00e9n\u00e9ralement raccourcie en DG, est une technique num\u00e9rique pour r\u00e9soudre les \u00e9quations aux d\u00e9riv\u00e9es partielles. Il combine plusieurs propri\u00e9t\u00e9s utiles des m\u00e9thodes de volume fini et d&rsquo;\u00e9l\u00e9ments finis. Comme la m\u00e9thode du volume fini, la DG peut pr\u00e9server les quantit\u00e9s localement gr\u00e2ce \u00e0 des flux soigneusement d\u00e9finis. Comme la m\u00e9thode des \u00e9l\u00e9ments finis, il prend en charge les mailles flexibles et les approximations polynomiales \u00e0 l&rsquo;int\u00e9rieur de chaque \u00e9l\u00e9ment.<\/p>\n<p>La caract\u00e9ristique d\u00e9terminante de DG est que la solution num\u00e9rique n&rsquo;a pas besoin de rester continue au-del\u00e0 des limites des \u00e9l\u00e9ments. Chaque \u00e9l\u00e9ment a sa propre repr\u00e9sentation polynomiale. Les \u00e9l\u00e9ments voisins communiquent \u00e0 travers des flux num\u00e9riques \u00e9valu\u00e9s \u00e0 leurs interfaces partag\u00e9es.<\/p>\n<p>Cette structure rend la DG utile pour la propagation des ondes, les \u00e9quations de transport, le flux compressible, les syst\u00e8mes d&rsquo;eau peu profonde, l&rsquo;\u00e9lectromagn\u00e9tique et les probl\u00e8mes qui contiennent des chocs ou des interfaces de mat\u00e9riaux. Il est \u00e9galement attrayant pour le calcul parall\u00e8le, car de nombreux calculs peuvent \u00eatre effectu\u00e9s ind\u00e9pendamment \u00e0 l&rsquo;int\u00e9rieur de chaque \u00e9l\u00e9ment.<\/p>\n<h2>Comment la DG diff\u00e8re des autres m\u00e9thodes<\/h2>\n<p>Une m\u00e9thode de volume fini stocke g\u00e9n\u00e9ralement une valeur moyenne dans chaque cellule et calcule le flux d&rsquo;une quantit\u00e9 conserv\u00e9e \u00e0 travers les faces des cellules. Il fournit une forte conservation locale, mais de nombreux sch\u00e9mas de base de volumes finis utilisent des approximations spatiales d&rsquo;ordre relativement faible.<\/p>\n<p>Une m\u00e9thode d&rsquo;\u00e9l\u00e9ments finis continus repr\u00e9sente la solution avec des fonctions de base polynomiales qui se connectent en continu au-del\u00e0 des limites des \u00e9l\u00e9ments. Cela offre une flexibilit\u00e9 g\u00e9om\u00e9trique et une approximation d&rsquo;ordre \u00e9lev\u00e9, mais les discontinuit\u00e9s ne peuvent \u00eatre repr\u00e9sent\u00e9es directement sans traitement suppl\u00e9mentaire.<\/p>\n<p>DG utilise des fonctions de base polynomiales \u00e0 l&rsquo;int\u00e9rieur de chaque \u00e9l\u00e9ment tout en permettant des valeurs s\u00e9par\u00e9es de chaque c\u00f4t\u00e9 d&rsquo;une interface. Les flux num\u00e9riques d\u00e9terminent la fa\u00e7on dont ces valeurs interagissent. La m\u00e9thode fournit donc une conservation locale, une approximation d&rsquo;ordre \u00e9lev\u00e9 et un soutien direct pour des solutions discontinues.<\/p>\n<h2>L&rsquo;\u00e9quation d&rsquo;advection continue<\/h2>\n<p>L&rsquo;\u00e9quation d&rsquo;advection lin\u00e9aire unidimensionnelle fournit une introduction claire \u00e0 DG&nbsp;:<\/p>\n<pre><code>\u2202u\/\u2202t + \u2202f(u)\/\u2202x = 0<\/code><\/pre>\n<p>Pour une vitesse de transport constante <code>a<\/code>, le flux physique est&nbsp;:<\/p>\n<pre><code>f(u) = a u<\/code><\/pre>\n<p>L&rsquo;\u00e9quation devient alors :<\/p>\n<pre><code>\u2202u\/\u2202t + a \u2202u\/\u2202x = 0<\/code><\/pre>\n<p>Ce mod\u00e8le d\u00e9crit un profil qui se d\u00e9place dans le domaine sans changer de forme. Lorsque <code>a<\/code> est positif, l&rsquo;information se d\u00e9place de gauche \u00e0 droite. Lorsqu&rsquo;elle est n\u00e9gative, l&rsquo;information se d\u00e9place de droite \u00e0 gauche.<\/p>\n<h2>Diviser le domaine en \u00e9l\u00e9ments<\/h2>\n<p>Supposons que le domaine s&rsquo;\u00e9tende de z\u00e9ro \u00e0 <code>L<\/code>. La DG la divise en \u00e9l\u00e9ments non chevauchants :<\/p>\n<pre><code>\u03a9 = K\u2081 \u222a K\u2082 \u222a ... \u222a K\u2099<\/code><\/pre>\n<p>Au sein de chaque \u00e9l\u00e9ment, la solution num\u00e9rique est repr\u00e9sent\u00e9e par un polyn\u00f4me :<\/p>\n<pre><code>u\u2095(x, t) = \u03a3 U\u1d62(t) \u03c6\u1d62(x)<\/code><\/pre>\n<p>Les fonctions <code>\u03c6\u1d62<\/code> sont des fonctions de base locale et les coefficients <code>U\u1d62<\/code> sont les degr\u00e9s de libert\u00e9 qui changent avec le temps.<\/p>\n<p>Un polyn\u00f4me de degr\u00e9 z\u00e9ro stocke une valeur constante dans chaque \u00e9l\u00e9ment. Une approximation lin\u00e9aire utilise deux degr\u00e9s de libert\u00e9 locaux dans une dimension. Une approximation quadratique en utilise trois.<\/p>\n<p>Contrairement aux \u00e9l\u00e9ments finis continus, DG ne force pas le polyn\u00f4me d&rsquo;un \u00e9l\u00e9ment \u00e0 correspondre au polyn\u00f4me dans le suivant. \u00c0 une interface partag\u00e9e, la solution peut donc avoir une valeur gauche et une valeur correcte.<\/p>\n<h2>D\u00e9river la forme faiblement \u00e9l\u00e9mentaire<\/h2>\n<p>La formulation DG commence par multiplier l&rsquo;\u00e9quation r\u00e9gissant par une fonction de test <code>v<\/code> et int\u00e9grant sur un \u00e9l\u00e9ment&nbsp;:<\/p>\n<pre><code>\u222bK (\u2202u\u2095\/\u2202t) v dx + \u222bK (\u2202f(u\u2095)\/\u2202x) v dx = 0<\/code><\/pre>\n<p>L&rsquo;int\u00e9gration par parties d\u00e9place la d\u00e9riv\u00e9e spatiale du flux physique vers la fonction de test :<\/p>\n<pre><code>\u222bK (\u2202u\u2095\/\u2202t) v dx\n- \u222bK f(u\u2095) \u2202v\/\u2202x dx\n+ f(u\u2095) v |\u2202K = 0<\/code><\/pre>\n<p>Le terme limite est essentiel. Il d\u00e9crit le flux \u00e0 travers les c\u00f4t\u00e9s gauche et droit de l&rsquo;\u00e9l\u00e9ment.<\/p>\n<p>\u00c9tant donn\u00e9 que la solution DG peut \u00eatre discontinue \u00e0 une interface, le flux physique n&rsquo;y est pas d\u00e9fini de mani\u00e8re unique. Un \u00e9l\u00e9ment fournit une valeur \u00e0 partir de la gauche, tandis que son voisin fournit une autre valeur \u00e0 partir de la droite. DG remplace le flux physique ambigu par un flux num\u00e9rique :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a)<\/code><\/pre>\n<p>La forme finale faible d&rsquo;un \u00e9l\u00e9ment est :<\/p>\n<pre><code>\u222bK (\u2202u\u2095\/\u2202t) v dx\n- \u222bK f(u\u2095) \u2202v\/\u2202x dx\n+ f\u0302R vR\n- f\u0302L vL = 0<\/code><\/pre>\n<p>Cette \u00e9quation contient une contribution \u00e9l\u00e9ment-local de volume et deux contributions d&rsquo;interface. Les flux num\u00e9riques sont les seuls termes qui relient directement les \u00e9l\u00e9ments voisins.<\/p>\n<h2>Pourquoi les flux num\u00e9riques sont importants<\/h2>\n<p>Un flux num\u00e9rique doit \u00eatre coh\u00e9rent. Lorsque les deux valeurs d&rsquo;interface sont \u00e9gales, il doit reproduire le flux physique :<\/p>\n<pre><code>f\u0302(u, u) = f(u)<\/code><\/pre>\n<p>Il doit \u00e9galement assurer une stabilit\u00e9 appropri\u00e9e. Pour les probl\u00e8mes de transport, le flux doit respecter la direction dans laquelle les informations se d\u00e9placent.<\/p>\n<p>Le choix de flux contr\u00f4le la force avec laquelle les \u00e9l\u00e9ments voisins interagissent et la quantit\u00e9 de dissipation num\u00e9rique est introduite. Un flux inadapt\u00e9 peut cr\u00e9er des oscillations, un lissage excessif ou des vitesses d&rsquo;onde incorrectes.<\/p>\n<h2>Flux au vent<\/h2>\n<p>Pour l&rsquo;advection lin\u00e9aire avec une vitesse positive, l&rsquo;information provient du c\u00f4t\u00e9 gauche d&rsquo;une interface. Le flux au vent est donc :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a) = a u\u207b    when a &gt; 0<\/code><\/pre>\n<p>Pour la vitesse n\u00e9gative, les informations proviennent de la droite :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a) = a u\u207a    when a &lt; 0<\/code><\/pre>\n<p>Une expression compacte est :<\/p>\n<pre><code>f\u0302 = a\u207au\u207b + a\u207bu\u207a\n\na\u207a = max(a, 0)\na\u207b = min(a, 0)<\/code><\/pre>\n<p>Le flux au vent est simple, stable et largement utilis\u00e9. Il introduit une certaine dissipation num\u00e9rique, mais la quantit\u00e9 diminue g\u00e9n\u00e9ralement \u00e0 mesure que le maillage est raffin\u00e9 ou que l&rsquo;ordre polynomial augmente.<\/p>\n<h2>Flux local de Lax-Friedrichs<\/h2>\n<p>Le flux local de Lax-Friedrichs, \u00e9galement appel\u00e9 flux de Rusanov, est fr\u00e9quemment utilis\u00e9 pour les lois de conservation non lin\u00e9aires :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a)\n= 0.5[f(u\u207b) + f(u\u207a)]\n- 0.5 \u03b1(u\u207a - u\u207b)<\/code><\/pre>\n<p>Le param\u00e8tre <code>\u03b1<\/code> est une estimation de la plus grande vitesse caract\u00e9ristique \u00e0 l&rsquo;interface. Pour une advection lin\u00e9aire constante, c&rsquo;est g\u00e9n\u00e9ralement <code>|a|<\/code>.<\/p>\n<p>La premi\u00e8re partie fait la moyenne des flux physiques. La deuxi\u00e8me partie ajoute une dissipation qui aide \u00e0 contr\u00f4ler les modes d&rsquo;interface instables. Ce flux est robuste et facile \u00e0 mettre en \u0153uvre, bien qu&rsquo;il puisse \u00eatre plus diffusant qu&rsquo;un solveur Riemann approximatif sp\u00e9cialis\u00e9.<\/p>\n<h2>Solveurs de Riemann<\/h2>\n<p>Les syst\u00e8mes hyperboliques non lin\u00e9aires peuvent contenir plusieurs ondes se d\u00e9pla\u00e7ant \u00e0 des vitesses diff\u00e9rentes. Les exemples incluent les \u00e9quations d&rsquo;Euler pour l&rsquo;\u00e9coulement compressible et les \u00e9quations d&rsquo;eau peu profonde.<\/p>\n<p>Un solveur de Riemann examine les \u00e9tats gauche et droit \u00e0 une interface et estime les ondes produites par leur interaction. Les solveurs exacts de Riemann peuvent \u00eatre co\u00fbteux, de sorte que les codes DG pratiques utilisent g\u00e9n\u00e9ralement des m\u00e9thodes approximatives telles que ROE, HLL, HLLC ou Rusanov.<\/p>\n<p>Le choix correct d\u00e9pend de l&rsquo;\u00e9quation, de la pr\u00e9cision souhait\u00e9e, des exigences de robustesse et de la capacit\u00e9 de pr\u00e9server des propri\u00e9t\u00e9s physiques importantes.<\/p>\n<h2>Le syst\u00e8me \u00e0 matrice semi-discr\u00e8te<\/h2>\n<p>Apr\u00e8s avoir s\u00e9lectionn\u00e9 les fonctions de base et de test, la forme faible peut \u00eatre exprim\u00e9e sous la forme d&rsquo;un syst\u00e8me d&rsquo;\u00e9quations diff\u00e9rentielles ordinaires :<\/p>\n<pre><code>M dU\/dt = R(U)<\/code><\/pre>\n<p>La matrice de masse contient les int\u00e9grales des produits de base-fonction :<\/p>\n<pre><code>M\u1d62\u2c7c = \u222bK \u03c6\u1d62 \u03c6\u2c7c dx<\/code><\/pre>\n<p>Le r\u00e9sidu <code>R(U)<\/code> comprend les contributions de d\u00e9riv\u00e9s de volume et de flux num\u00e9rique.<\/p>\n<p>\u00c9tant donn\u00e9 que les fonctions de base DG appartiennent \u00e0 des \u00e9l\u00e9ments individuels, la matrice de masse globale a une structure en bloc-diagonale. Chaque \u00e9l\u00e9ment contribue \u00e0 un petit bloc ind\u00e9pendant. Ces blocs peuvent \u00eatre invers\u00e9s s\u00e9par\u00e9ment.<\/p>\n<p>La matrice de masse n&rsquo;est pas automatiquement diagonale pour chaque base et r\u00e8gle d&rsquo;int\u00e9gration. Il devient diagonal ou approximativement diagonal dans les formulations de DG nodales courantes qui utilisent des points d&rsquo;interpolation et de quadrature correspondants, tels que la collocation de Gauss-Lobatto. D&rsquo;autres formulations utilisent de petites matrices d&rsquo;\u00e9l\u00e9ments denses.<\/p>\n<h2>Choisir les fonctions de base et la quadrature<\/h2>\n<p>Les m\u00e9thodes DG utilisent g\u00e9n\u00e9ralement des bases polynomiales modales ou nodales. Une base modale repr\u00e9sente la solution \u00e0 travers des modes polynomiaux, souvent bas\u00e9s sur des polyn\u00f4mes de Legendre. Une base nodale stocke les valeurs de la solution aux n\u0153uds d&rsquo;interpolation \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;\u00e9l\u00e9ment.<\/p>\n<p>Les formulations nodales sont pratiques car les valeurs d&rsquo;interface peuvent \u00eatre obtenues directement lorsque des n\u0153uds sont plac\u00e9s sur les limites des \u00e9l\u00e9ments. Les points de Gauss-Lobatto incluent les deux extr\u00e9mit\u00e9s de l&rsquo;\u00e9l\u00e9ment de r\u00e9f\u00e9rence, tandis que les points de Gauss restent \u00e0 l&rsquo;int\u00e9rieur.<\/p>\n<p>La quadrature num\u00e9rique \u00e9value les int\u00e9grales sous la forme faible. La r\u00e8gle de la quadrature doit \u00eatre suffisamment pr\u00e9cise pour le degr\u00e9 polynomial et tous les termes non lin\u00e9aires. Une quadrature insuffisante peut introduire une erreur et une instabilit\u00e9 d&rsquo;alias.<\/p>\n<h2>Ordre et pr\u00e9cision polynomiales<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>dipl\u00f4me polynomial<\/th>\n<th>Degr\u00e9s de libert\u00e9 locaux en 1D<\/th>\n<th>R\u00f4le typique<\/th>\n<\/tr>\n<tr>\n<td><code>p = 0<\/code><\/td>\n<td>1<\/td>\n<td>Approximation constante par morceaux similaire \u00e0 une m\u00e9thode de volume fini du premier ordre<\/td>\n<\/tr>\n<tr>\n<td><code>p = 1<\/code><\/td>\n<td>2<\/td>\n<td>Point de d\u00e9part pratique avec variation lin\u00e9aire \u00e0 l&rsquo;int\u00e9rieur de chaque \u00e9l\u00e9ment<\/td>\n<\/tr>\n<tr>\n<td><code>p = 2<\/code><\/td>\n<td>3<\/td>\n<td>Pr\u00e9cision accrue pour des solutions fluides \u00e0 un co\u00fbt suppl\u00e9mentaire mod\u00e9r\u00e9<\/td>\n<\/tr>\n<tr>\n<td><code>p = 3<\/code><\/td>\n<td>4<\/td>\n<td>Approximation d&rsquo;ordre \u00e9lev\u00e9 n\u00e9cessitant une stabilit\u00e9 et un contr\u00f4le en quadrature plus stricts<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pour des solutions suffisamment lisses, une m\u00e9thode DG bien con\u00e7ue peut atteindre une erreur proportionnelle \u00e0 environ <code>h^(p+1)<\/code>. L&rsquo;augmentation du degr\u00e9 polynomial peut donc am\u00e9liorer la pr\u00e9cision sans ajouter plus d&rsquo;\u00e9l\u00e9ments.<\/p>\n<p>L&rsquo;ordre sup\u00e9rieur n&rsquo;est pas toujours mieux. Les chocs et les discontinuit\u00e9s nettes peuvent cr\u00e9er des oscillations pr\u00e8s du saut. Des limiteurs, une viscosit\u00e9 artificielle, un filtrage ou des techniques de capture de chocs peuvent \u00eatre n\u00e9cessaires.<\/p>\n<h2>Un solveur DG lin\u00e9aire dans NumPy<\/h2>\n<p>L&rsquo;exemple \u00e9ducatif suivant met en \u0153uvre une m\u00e9thode DG lin\u00e9aire <code>p = 1<\/code> pour une advection unidimensionnelle p\u00e9riodique. Chaque \u00e9l\u00e9ment contient deux degr\u00e9s de libert\u00e9 situ\u00e9s \u00e0 ses extr\u00e9mit\u00e9s.<\/p>\n<p>L&rsquo;impl\u00e9mentation utilise la forme faible de l&rsquo;\u00e9l\u00e9ment, un flux au vent et une m\u00e9thode Runge-Kutta pr\u00e9servant la stabilit\u00e9 de force du troisi\u00e8me ordre.<\/p>\n<pre><code class=\"language-python\">import numpy as np\n\n# Domain and model parameters\nlength = 1.0\nnumber_of_elements = 80\nvelocity = 1.0\nfinal_time = 0.5\n\nelement_width = length \/ number_of_elements\njacobian = element_width \/ 2.0\n\n# Reference-element mass matrix for linear basis functions\nmass_reference = np.array([\n    [2.0 \/ 3.0, 1.0 \/ 3.0],\n    [1.0 \/ 3.0, 2.0 \/ 3.0]\n])\n\nmass_matrix = jacobian * mass_reference\ninverse_mass = np.linalg.inv(mass_matrix)\n\n# S[i, j] = integral(phi_j * derivative(phi_i)) on [-1, 1]\nvolume_matrix = np.array([\n    [-0.5, -0.5],\n    [ 0.5,  0.5]\n])\n\nleft_vector = np.array([1.0, 0.0])\nright_vector = np.array([0.0, 1.0])\n\n# Physical coordinates of local DG nodes\nleft_edges = np.arange(number_of_elements) * element_width\nright_edges = left_edges + element_width\ncoordinates = np.column_stack((left_edges, right_edges))\n\n# Smooth periodic initial condition\nsolution = (\n    0.5\n    + 0.5 * np.sin(2.0 * np.pi * coordinates \/ length)\n)\n\ndef upwind_flux(left_state, right_state, speed):\n    positive_speed = max(speed, 0.0)\n    negative_speed = min(speed, 0.0)\n\n    return (\n        positive_speed * left_state\n        + negative_speed * right_state\n    )\n\ndef spatial_residual(values):\n    residual = np.zeros_like(values)\n\n    for element in range(number_of_elements):\n        left_neighbor = (element - 1) % number_of_elements\n        right_neighbor = (element + 1) % number_of_elements\n\n        # States on the left interface\n        left_inside = values[element, 0]\n        left_outside = values[left_neighbor, 1]\n\n        # States on the right interface\n        right_inside = values[element, 1]\n        right_outside = values[right_neighbor, 0]\n\n        flux_left = upwind_flux(\n            left_outside,\n            left_inside,\n            velocity\n        )\n\n        flux_right = upwind_flux(\n            right_inside,\n            right_outside,\n            velocity\n        )\n\n        local_rhs = (\n            velocity * volume_matrix @ values[element]\n            + flux_left * left_vector\n            - flux_right * right_vector\n        )\n\n        residual[element] = inverse_mass @ local_rhs\n\n    return residual\n\n# Conservative time-step estimate\ntime_step = 0.1 * element_width \/ abs(velocity)\ncurrent_time = 0.0\n\nwhile current_time &lt; final_time:\n    dt = min(time_step, final_time - current_time)\n\n    # SSP-RK3 stage 1\n    stage_one = solution + dt * spatial_residual(solution)\n\n    # SSP-RK3 stage 2\n    stage_two = (\n        0.75 * solution\n        + 0.25 * (\n            stage_one\n            + dt * spatial_residual(stage_one)\n        )\n    )\n\n    # SSP-RK3 stage 3\n    solution = (\n        (1.0 \/ 3.0) * solution\n        + (2.0 \/ 3.0) * (\n            stage_two\n            + dt * spatial_residual(stage_two)\n        )\n    )\n\n    current_time += dt\n\nprint(\"Simulation completed\")\nprint(\"Final time:\", current_time)\nprint(\"Minimum value:\", solution.min())\nprint(\"Maximum value:\", solution.max())<\/code><\/pre>\n<p>Cet exemple est intentionnellement limit\u00e9 \u00e0 un probl\u00e8me lin\u00e9aire lisse. Les solveurs de DG de production n\u00e9cessitent \u00e9galement des traitements aux limites robustes, des mappages multidimensionnels, une quadrature pr\u00e9cise, une \u00e9valuation de flux non lin\u00e9aire, des limiteurs et une int\u00e9gration plus avanc\u00e9e dans le temps.<\/p>\n<h2>Int\u00e9gration du temps et condition LFC<\/h2>\n<p>La discr\u00e9tisation spatiale DG cr\u00e9e un syst\u00e8me d&rsquo;\u00e9quations diff\u00e9rentielles ordinaires. Une m\u00e9thode explicite telle que Runge-Kutta peut alors faire avancer ce syst\u00e8me dans le temps.<\/p>\n<p>Le pas de temps stable maximum d\u00e9pend de la vitesse d&rsquo;onde, de la taille des \u00e9l\u00e9ments, du degr\u00e9 polynomial, du flux et de l&rsquo;int\u00e9grateur de temps. Une mise \u00e0 l&rsquo;\u00e9chelle commune est :<\/p>\n<pre><code>\u0394t \u221d h \/ [(2p + 1)|a|]<\/code><\/pre>\n<p>La constante de stabilit\u00e9 exacte d\u00e9pend de la m\u00e9thode. Il doit \u00eatre \u00e9tabli par l&rsquo;analyse, la documentation ou les tests num\u00e9riques plut\u00f4t que trait\u00e9s comme universels.<\/p>\n<p>L&rsquo;augmentation de l&rsquo;ordre polynomial r\u00e9duit normalement le plus grand pas de temps explicitement stable. DG d&rsquo;ordre \u00e9lev\u00e9 peut donc n\u00e9cessiter plus d&rsquo;\u00e9tapes, m\u00eame lorsqu&rsquo;il a besoin de moins d&rsquo;\u00e9l\u00e9ments.<\/p>\n<h2>DG pour les probl\u00e8mes domin\u00e9s par l&rsquo;advection<\/h2>\n<p>Les m\u00e9thodes de Galerkin continue standard peuvent d\u00e9velopper des oscillations lorsque l&rsquo;advection domine la diffusion. Des m\u00e9thodes continues stabilis\u00e9es telles que SUPG modifient les fonctions de test pour ajouter un contr\u00f4le le long des lignes de courant.<\/p>\n<p>DG g\u00e8re le transport \u00e0 travers les flux d&rsquo;interface. Au vent ou approximativement, les flux de Riemann introduisent une stabilisation sensible \u00e0 la direction et pr\u00e9servent la conservation locale.<\/p>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>aspect<\/th>\n<th>DG avec flux au vent<\/th>\n<th>soup<\/th>\n<\/tr>\n<tr>\n<td>Espace de solution<\/td>\n<td>discontinu entre les \u00e9l\u00e9ments<\/td>\n<td>g\u00e9n\u00e9ralement continu<\/td>\n<\/tr>\n<tr>\n<td>Pr\u00e9servation<\/td>\n<td>Conservation des \u00e9l\u00e9ments locaux<\/td>\n<td>d\u00e9pend de la formulation<\/td>\n<\/tr>\n<tr>\n<td>Stabilisation<\/td>\n<td>Introduit via les flux d&rsquo;interface<\/td>\n<td>Introduit par des fonctions de test modifi\u00e9es<\/td>\n<\/tr>\n<tr>\n<td>discontinuit\u00e9s<\/td>\n<td>repr\u00e9sent\u00e9 directement<\/td>\n<td>Habituellement enduit sur les \u00e9l\u00e9ments continus<\/td>\n<\/tr>\n<tr>\n<td>Nombre d&rsquo;inconnus<\/td>\n<td>Plus \u00e9lev\u00e9 car les interfaces ne partagent pas les degr\u00e9s de libert\u00e9<\/td>\n<td>Abaisser parce que les \u00e9l\u00e9ments voisins partagent des n\u0153uds<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Le SUPG reste efficace pour de nombreux probl\u00e8mes domin\u00e9s par la convection. La DG est attrayante lorsque la conservation locale, les solutions discontinues, les mailles complexes ou l&rsquo;adaptabilit\u00e9 des \u00e9l\u00e9ments sont des exigences centrales.<\/p>\n<h2>DG vs FVM et FEM continue<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Fonctionnalit\u00e9<\/th>\n<th>M\u00e9thode du volume fini<\/th>\n<th>FEM continue<\/th>\n<th>Galerkine discontinu<\/th>\n<\/tr>\n<tr>\n<td>Conservation locale<\/td>\n<td>Fort<\/td>\n<td>Non automatique dans les formulations standard<\/td>\n<td>Fort gr\u00e2ce aux flux num\u00e9riques<\/td>\n<\/tr>\n<tr>\n<td>Flexibilit\u00e9 polynomiale<\/td>\n<td>G\u00e9n\u00e9ralement limit\u00e9 dans les r\u00e9gimes de base<\/td>\n<td>Haut<\/td>\n<td>Haut<\/td>\n<\/tr>\n<tr>\n<td>Discontinuit\u00e9s de l&rsquo;interface<\/td>\n<td>Stock\u00e9 par les moyennes cellulaires et la reconstruction<\/td>\n<td>Pas directement repr\u00e9sent\u00e9<\/td>\n<td>repr\u00e9sent\u00e9 naturellement<\/td>\n<\/tr>\n<tr>\n<td>Comte inconnu<\/td>\n<td>relativement faible<\/td>\n<td>R\u00e9duit par des n\u0153uds partag\u00e9s<\/td>\n<td>plus \u00e9lev\u00e9 parce que les degr\u00e9s de libert\u00e9 sont des \u00e9l\u00e9ments locaux<\/td>\n<\/tr>\n<tr>\n<td>Structure parall\u00e8le<\/td>\n<td>Bon<\/td>\n<td>n\u00e9cessite un couplage global<\/td>\n<td>Localit\u00e9 d&rsquo;\u00e9l\u00e9ments forts avec communication faciale<\/td>\n<\/tr>\n<tr>\n<td>difficult\u00e9 de mise en \u0153uvre<\/td>\n<td>Faible \u00e0 mod\u00e9r\u00e9<\/td>\n<td>Mod\u00e9rer<\/td>\n<td>mod\u00e9r\u00e9 \u00e0 \u00e9lev\u00e9<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Avantages de la m\u00e9thode DG<\/h2>\n<ul>\n<li>La conservation locale est int\u00e9gr\u00e9e \u00e0 l&rsquo;\u00e9quilibre des flux d&rsquo;interface.<\/li>\n<li>Le degr\u00e9 polynomial peut varier d&rsquo;un \u00e9l\u00e9ment \u00e0 l&rsquo;autre.<\/li>\n<li>Les discontinuit\u00e9s ne violent pas l&rsquo;espace d&rsquo;approximation.<\/li>\n<li>Les calculs d&rsquo;\u00e9l\u00e9ments sont bien adapt\u00e9s au mat\u00e9riel parall\u00e8le.<\/li>\n<li>Des maillages complexes et non structur\u00e9s peuvent \u00eatre pris en charge.<\/li>\n<li>Le raffinement du maillage et l&rsquo;enrichissement polynomial peuvent \u00eatre combin\u00e9s.<\/li>\n<li>Diff\u00e9rents flux num\u00e9riques peuvent \u00eatre s\u00e9lectionn\u00e9s pour diff\u00e9rentes \u00e9quations.<\/li>\n<\/ul>\n<h2>Limites de la DG<\/h2>\n<p>DG utilise normalement plus de degr\u00e9s de libert\u00e9 qu&rsquo;une m\u00e9thode par \u00e9l\u00e9ments finis continus du m\u00eame degr\u00e9 polynomial, car les \u00e9l\u00e9ments voisins ne partagent pas les valeurs d&rsquo;interface.<\/p>\n<p>La m\u00e9thode n\u00e9cessite \u00e9galement une conception de flux minutieuse. Les \u00e9quations hyperboliques, elliptiques et mixtes n\u00e9cessitent des traitements d&rsquo;interface diff\u00e9rents. Les op\u00e9rateurs de diffusion exigent des formulations telles que la p\u00e9nalit\u00e9 int\u00e9rieure, la DG locale ou des techniques connexes.<\/p>\n<p>Les m\u00e9thodes explicites de DG d&rsquo;ordre \u00e9lev\u00e9 peuvent avoir des limites de pas de temps restrictives. Les probl\u00e8mes non lin\u00e9aires peuvent n\u00e9cessiter des limiteurs, des flux stables entropie, une pr\u00e9servation de la positivit\u00e9 ou une viscosit\u00e9 artificielle.<\/p>\n<p>Ces fonctionnalit\u00e9s rendent la DG puissante mais plus difficile \u00e0 impl\u00e9menter correctement que les sch\u00e9mas de base des diff\u00e9rences finies ou des volumes finis.<\/p>\n<h2>erreurs de mise en \u0153uvre courantes<\/h2>\n<p>Une erreur courante consiste \u00e0 utiliser le flux physique directement \u00e0 une interface discontinue sans d\u00e9finir comment les deux valeurs voisines doivent \u00eatre combin\u00e9es.<\/p>\n<p>D&rsquo;autres erreurs fr\u00e9quentes incluent :<\/p>\n<ul>\n<li>Utiliser le mauvais signe pour la contribution des limites gauche ou droite<\/li>\n<li>Appliquer des orientations vectorielles incoh\u00e9rentes<\/li>\n<li>En supposant que la matrice de masse est toujours diagonale<\/li>\n<li>Utilisation de la quadrature trop faible pour les termes non lin\u00e9aires<\/li>\n<li>Ignorer la d\u00e9pendance polynomiale-degr\u00e9 de la limite de LFC<\/li>\n<li>appliquer des conditions aux limites p\u00e9riodiques ou physiques de mani\u00e8re incorrecte<\/li>\n<li>Utilisation de polyn\u00f4mes d&rsquo;ordre \u00e9lev\u00e9 \u00e0 proximit\u00e9 de chocs sans limiteur<\/li>\n<li>Tester uniquement la sortie visuelle au lieu de la convergence et de la conservation<\/li>\n<\/ul>\n<h2>Comment valider un solveur DG<\/h2>\n<p>Commencez par un probl\u00e8me qui a une solution analytique connue. L&rsquo;advection lin\u00e9aire p\u00e9riodique est utile car le profil exact est simplement d\u00e9cal\u00e9 de <code>a t<\/code>.<\/p>\n<p>Ex\u00e9cutez le solveur avec plusieurs r\u00e9solutions de maillage et mesurez une norme d&rsquo;erreur. Pour une solution lisse, le taux de convergence observ\u00e9 doit approcher de l&rsquo;ordre th\u00e9orique de la m\u00e9thode.<\/p>\n<p>V\u00e9rifiez la conservation en int\u00e9grant la solution \u00e0 travers le domaine. Pour une advection p\u00e9riodique, la masse totale devrait rester presque constante.<\/p>\n<p>Testez les vitesses positives et n\u00e9gatives pour v\u00e9rifier la direction du vent. Les donn\u00e9es initiales constantes doivent rester constantes. Les \u00e9tats limites doivent \u00e9galement \u00eatre test\u00e9s s\u00e9par\u00e9ment avant de passer \u00e0 des \u00e9quations non lin\u00e9aires.<\/p>\n<h2>Quand choisir DG<\/h2>\n<p>La DG est un choix fort lorsque le probl\u00e8me contient des ondes, des chocs, des interfaces mat\u00e9rielles ou un comportement domin\u00e9 par les transports. Il est \u00e9galement utile lorsque la conservation locale est essentielle ou lorsque la simulation b\u00e9n\u00e9ficie d&rsquo;une pr\u00e9cision d&rsquo;ordre \u00e9lev\u00e9 sur un maillage non structur\u00e9.<\/p>\n<p>Une m\u00e9thode de base du volume fini peut rester plus simple pour les probl\u00e8mes de conservation de faible ordre. Les \u00e9l\u00e9ments finis continus peuvent \u00eatre plus efficaces pour des probl\u00e8mes elliptiques ou structurels lisses o\u00f9 des discontinuit\u00e9s ne sont pas attendus.<\/p>\n<p>La m\u00e9thode num\u00e9rique doit suivre la structure math\u00e9matique de la PDE plut\u00f4t que la popularit\u00e9 actuelle ou la disponibilit\u00e9 des logiciels.<\/p>\n<h2>Conclusion<\/h2>\n<p>La m\u00e9thode Galerkin discontinue repr\u00e9sente la solution avec des polyn\u00f4mes ind\u00e9pendants \u00e0 l&rsquo;int\u00e9rieur de chaque \u00e9l\u00e9ment. Sa formulation faible produit des termes limites naturels qui sont remplac\u00e9s par des flux num\u00e9riques. Ces flux contr\u00f4lent la fa\u00e7on dont les informations se d\u00e9placent entre les \u00e9l\u00e9ments et permettent \u00e0 la m\u00e9thode compl\u00e8te de pr\u00e9server les quantit\u00e9s localement.<\/p>\n<p>DG combine une approximation polynomiale d&rsquo;ordre \u00e9lev\u00e9, une flexibilit\u00e9 g\u00e9om\u00e9trique, une manipulation de discontinuit\u00e9 et une localit\u00e9 d&rsquo;\u00e9l\u00e9ments solide. Ces avantages le rendent utile pour la propagation des ondes, les lois de conservation hyperboliques, les syst\u00e8mes domin\u00e9s par la convection et les simulations parall\u00e8les de grande taille.<\/p>\n<p>La m\u00e9thode introduit \u00e9galement une complexit\u00e9 suppl\u00e9mentaire. Les flux, les quadratures, les restrictions de pas de temps, les limiteurs et les conditions aux limites doivent \u00eatre s\u00e9lectionn\u00e9s avec soin. Une mise en \u0153uvre fiable doit \u00eatre d\u00e9velopp\u00e9e progressivement, en commen\u00e7ant par une simple \u00e9quation lin\u00e9aire et v\u00e9rifi\u00e9e par des tests de convergence et de conservation.<\/p>\n<p>Pour les chercheurs qui comprennent d\u00e9j\u00e0 le volume fini ou les m\u00e9thodes d&rsquo;\u00e9l\u00e9ments finis, la DG fournit une prochaine \u00e9tape naturelle vers des solveurs PDE localement conservateurs dans le Python scientifique.<\/p>\n<\/article>\n","protected":false,"raw":"<article>\n<p>La m\u00e9thode de Galerkin discontinue, g\u00e9n\u00e9ralement raccourcie en DG, est une technique num\u00e9rique pour r\u00e9soudre les \u00e9quations aux d\u00e9riv\u00e9es partielles. Il combine plusieurs propri\u00e9t\u00e9s utiles des m\u00e9thodes de volume fini et d'\u00e9l\u00e9ments finis. Comme la m\u00e9thode du volume fini, la DG peut pr\u00e9server les quantit\u00e9s localement gr\u00e2ce \u00e0 des flux soigneusement d\u00e9finis. Comme la m\u00e9thode des \u00e9l\u00e9ments finis, il prend en charge les mailles flexibles et les approximations polynomiales \u00e0 l'int\u00e9rieur de chaque \u00e9l\u00e9ment.<\/p>\n<p>La caract\u00e9ristique d\u00e9terminante de DG est que la solution num\u00e9rique n'a pas besoin de rester continue au-del\u00e0 des limites des \u00e9l\u00e9ments. Chaque \u00e9l\u00e9ment a sa propre repr\u00e9sentation polynomiale. Les \u00e9l\u00e9ments voisins communiquent \u00e0 travers des flux num\u00e9riques \u00e9valu\u00e9s \u00e0 leurs interfaces partag\u00e9es.<\/p>\n<p>Cette structure rend la DG utile pour la propagation des ondes, les \u00e9quations de transport, le flux compressible, les syst\u00e8mes d'eau peu profonde, l'\u00e9lectromagn\u00e9tique et les probl\u00e8mes qui contiennent des chocs ou des interfaces de mat\u00e9riaux. Il est \u00e9galement attrayant pour le calcul parall\u00e8le, car de nombreux calculs peuvent \u00eatre effectu\u00e9s ind\u00e9pendamment \u00e0 l'int\u00e9rieur de chaque \u00e9l\u00e9ment.<\/p>\n<h2>Comment la DG diff\u00e8re des autres m\u00e9thodes<\/h2>\n<p>Une m\u00e9thode de volume fini stocke g\u00e9n\u00e9ralement une valeur moyenne dans chaque cellule et calcule le flux d'une quantit\u00e9 conserv\u00e9e \u00e0 travers les faces des cellules. Il fournit une forte conservation locale, mais de nombreux sch\u00e9mas de base de volumes finis utilisent des approximations spatiales d'ordre relativement faible.<\/p>\n<p>Une m\u00e9thode d'\u00e9l\u00e9ments finis continus repr\u00e9sente la solution avec des fonctions de base polynomiales qui se connectent en continu au-del\u00e0 des limites des \u00e9l\u00e9ments. Cela offre une flexibilit\u00e9 g\u00e9om\u00e9trique et une approximation d'ordre \u00e9lev\u00e9, mais les discontinuit\u00e9s ne peuvent \u00eatre repr\u00e9sent\u00e9es directement sans traitement suppl\u00e9mentaire.<\/p>\n<p>DG utilise des fonctions de base polynomiales \u00e0 l'int\u00e9rieur de chaque \u00e9l\u00e9ment tout en permettant des valeurs s\u00e9par\u00e9es de chaque c\u00f4t\u00e9 d'une interface. Les flux num\u00e9riques d\u00e9terminent la fa\u00e7on dont ces valeurs interagissent. La m\u00e9thode fournit donc une conservation locale, une approximation d'ordre \u00e9lev\u00e9 et un soutien direct pour des solutions discontinues.<\/p>\n<h2>L'\u00e9quation d'advection continue<\/h2>\n<p>L'\u00e9quation d'advection lin\u00e9aire unidimensionnelle fournit une introduction claire \u00e0 DG&nbsp;:<\/p>\n<pre><code>\u2202u\/\u2202t + \u2202f(u)\/\u2202x = 0<\/code><\/pre>\n<p>Pour une vitesse de transport constante <code>a<\/code>, le flux physique est&nbsp;:<\/p>\n<pre><code>f(u) = a u<\/code><\/pre>\n<p>L'\u00e9quation devient alors :<\/p>\n<pre><code>\u2202u\/\u2202t + a \u2202u\/\u2202x = 0<\/code><\/pre>\n<p>Ce mod\u00e8le d\u00e9crit un profil qui se d\u00e9place dans le domaine sans changer de forme. Lorsque <code>a<\/code> est positif, l'information se d\u00e9place de gauche \u00e0 droite. Lorsqu'elle est n\u00e9gative, l'information se d\u00e9place de droite \u00e0 gauche.<\/p>\n<h2>Diviser le domaine en \u00e9l\u00e9ments<\/h2>\n<p>Supposons que le domaine s'\u00e9tende de z\u00e9ro \u00e0 <code>L<\/code>. La DG la divise en \u00e9l\u00e9ments non chevauchants :<\/p>\n<pre><code>\u03a9 = K\u2081 \u222a K\u2082 \u222a ... \u222a K\u2099<\/code><\/pre>\n<p>Au sein de chaque \u00e9l\u00e9ment, la solution num\u00e9rique est repr\u00e9sent\u00e9e par un polyn\u00f4me :<\/p>\n<pre><code>u\u2095(x, t) = \u03a3 U\u1d62(t) \u03c6\u1d62(x)<\/code><\/pre>\n<p>Les fonctions <code>\u03c6\u1d62<\/code> sont des fonctions de base locale et les coefficients <code>U\u1d62<\/code> sont les degr\u00e9s de libert\u00e9 qui changent avec le temps.<\/p>\n<p>Un polyn\u00f4me de degr\u00e9 z\u00e9ro stocke une valeur constante dans chaque \u00e9l\u00e9ment. Une approximation lin\u00e9aire utilise deux degr\u00e9s de libert\u00e9 locaux dans une dimension. Une approximation quadratique en utilise trois.<\/p>\n<p>Contrairement aux \u00e9l\u00e9ments finis continus, DG ne force pas le polyn\u00f4me d'un \u00e9l\u00e9ment \u00e0 correspondre au polyn\u00f4me dans le suivant. \u00c0 une interface partag\u00e9e, la solution peut donc avoir une valeur gauche et une valeur correcte.<\/p>\n<h2>D\u00e9river la forme faiblement \u00e9l\u00e9mentaire<\/h2>\n<p>La formulation DG commence par multiplier l'\u00e9quation r\u00e9gissant par une fonction de test <code>v<\/code> et int\u00e9grant sur un \u00e9l\u00e9ment&nbsp;:<\/p>\n<pre><code>\u222bK (\u2202u\u2095\/\u2202t) v dx + \u222bK (\u2202f(u\u2095)\/\u2202x) v dx = 0<\/code><\/pre>\n<p>L'int\u00e9gration par parties d\u00e9place la d\u00e9riv\u00e9e spatiale du flux physique vers la fonction de test :<\/p>\n<pre><code>\u222bK (\u2202u\u2095\/\u2202t) v dx\n- \u222bK f(u\u2095) \u2202v\/\u2202x dx\n+ f(u\u2095) v |\u2202K = 0<\/code><\/pre>\n<p>Le terme limite est essentiel. Il d\u00e9crit le flux \u00e0 travers les c\u00f4t\u00e9s gauche et droit de l'\u00e9l\u00e9ment.<\/p>\n<p>\u00c9tant donn\u00e9 que la solution DG peut \u00eatre discontinue \u00e0 une interface, le flux physique n'y est pas d\u00e9fini de mani\u00e8re unique. Un \u00e9l\u00e9ment fournit une valeur \u00e0 partir de la gauche, tandis que son voisin fournit une autre valeur \u00e0 partir de la droite. DG remplace le flux physique ambigu par un flux num\u00e9rique :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a)<\/code><\/pre>\n<p>La forme finale faible d'un \u00e9l\u00e9ment est :<\/p>\n<pre><code>\u222bK (\u2202u\u2095\/\u2202t) v dx\n- \u222bK f(u\u2095) \u2202v\/\u2202x dx\n+ f\u0302R vR\n- f\u0302L vL = 0<\/code><\/pre>\n<p>Cette \u00e9quation contient une contribution \u00e9l\u00e9ment-local de volume et deux contributions d'interface. Les flux num\u00e9riques sont les seuls termes qui relient directement les \u00e9l\u00e9ments voisins.<\/p>\n<h2>Pourquoi les flux num\u00e9riques sont importants<\/h2>\n<p>Un flux num\u00e9rique doit \u00eatre coh\u00e9rent. Lorsque les deux valeurs d'interface sont \u00e9gales, il doit reproduire le flux physique :<\/p>\n<pre><code>f\u0302(u, u) = f(u)<\/code><\/pre>\n<p>Il doit \u00e9galement assurer une stabilit\u00e9 appropri\u00e9e. Pour les probl\u00e8mes de transport, le flux doit respecter la direction dans laquelle les informations se d\u00e9placent.<\/p>\n<p>Le choix de flux contr\u00f4le la force avec laquelle les \u00e9l\u00e9ments voisins interagissent et la quantit\u00e9 de dissipation num\u00e9rique est introduite. Un flux inadapt\u00e9 peut cr\u00e9er des oscillations, un lissage excessif ou des vitesses d'onde incorrectes.<\/p>\n<h2>Flux au vent<\/h2>\n<p>Pour l'advection lin\u00e9aire avec une vitesse positive, l'information provient du c\u00f4t\u00e9 gauche d'une interface. Le flux au vent est donc :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a) = a u\u207b    when a &gt; 0<\/code><\/pre>\n<p>Pour la vitesse n\u00e9gative, les informations proviennent de la droite :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a) = a u\u207a    when a &lt; 0<\/code><\/pre>\n<p>Une expression compacte est :<\/p>\n<pre><code>f\u0302 = a\u207au\u207b + a\u207bu\u207a\n\na\u207a = max(a, 0)\na\u207b = min(a, 0)<\/code><\/pre>\n<p>Le flux au vent est simple, stable et largement utilis\u00e9. Il introduit une certaine dissipation num\u00e9rique, mais la quantit\u00e9 diminue g\u00e9n\u00e9ralement \u00e0 mesure que le maillage est raffin\u00e9 ou que l'ordre polynomial augmente.<\/p>\n<h2>Flux local de Lax-Friedrichs<\/h2>\n<p>Le flux local de Lax-Friedrichs, \u00e9galement appel\u00e9 flux de Rusanov, est fr\u00e9quemment utilis\u00e9 pour les lois de conservation non lin\u00e9aires :<\/p>\n<pre><code>f\u0302(u\u207b, u\u207a)\n= 0.5[f(u\u207b) + f(u\u207a)]\n- 0.5 \u03b1(u\u207a - u\u207b)<\/code><\/pre>\n<p>Le param\u00e8tre <code>\u03b1<\/code> est une estimation de la plus grande vitesse caract\u00e9ristique \u00e0 l'interface. Pour une advection lin\u00e9aire constante, c'est g\u00e9n\u00e9ralement <code>|a|<\/code>.<\/p>\n<p>La premi\u00e8re partie fait la moyenne des flux physiques. La deuxi\u00e8me partie ajoute une dissipation qui aide \u00e0 contr\u00f4ler les modes d'interface instables. Ce flux est robuste et facile \u00e0 mettre en \u0153uvre, bien qu'il puisse \u00eatre plus diffusant qu'un solveur Riemann approximatif sp\u00e9cialis\u00e9.<\/p>\n<h2>Solveurs de Riemann<\/h2>\n<p>Les syst\u00e8mes hyperboliques non lin\u00e9aires peuvent contenir plusieurs ondes se d\u00e9pla\u00e7ant \u00e0 des vitesses diff\u00e9rentes. Les exemples incluent les \u00e9quations d'Euler pour l'\u00e9coulement compressible et les \u00e9quations d'eau peu profonde.<\/p>\n<p>Un solveur de Riemann examine les \u00e9tats gauche et droit \u00e0 une interface et estime les ondes produites par leur interaction. Les solveurs exacts de Riemann peuvent \u00eatre co\u00fbteux, de sorte que les codes DG pratiques utilisent g\u00e9n\u00e9ralement des m\u00e9thodes approximatives telles que ROE, HLL, HLLC ou Rusanov.<\/p>\n<p>Le choix correct d\u00e9pend de l'\u00e9quation, de la pr\u00e9cision souhait\u00e9e, des exigences de robustesse et de la capacit\u00e9 de pr\u00e9server des propri\u00e9t\u00e9s physiques importantes.<\/p>\n<h2>Le syst\u00e8me \u00e0 matrice semi-discr\u00e8te<\/h2>\n<p>Apr\u00e8s avoir s\u00e9lectionn\u00e9 les fonctions de base et de test, la forme faible peut \u00eatre exprim\u00e9e sous la forme d'un syst\u00e8me d'\u00e9quations diff\u00e9rentielles ordinaires :<\/p>\n<pre><code>M dU\/dt = R(U)<\/code><\/pre>\n<p>La matrice de masse contient les int\u00e9grales des produits de base-fonction :<\/p>\n<pre><code>M\u1d62\u2c7c = \u222bK \u03c6\u1d62 \u03c6\u2c7c dx<\/code><\/pre>\n<p>Le r\u00e9sidu <code>R(U)<\/code> comprend les contributions de d\u00e9riv\u00e9s de volume et de flux num\u00e9rique.<\/p>\n<p>\u00c9tant donn\u00e9 que les fonctions de base DG appartiennent \u00e0 des \u00e9l\u00e9ments individuels, la matrice de masse globale a une structure en bloc-diagonale. Chaque \u00e9l\u00e9ment contribue \u00e0 un petit bloc ind\u00e9pendant. Ces blocs peuvent \u00eatre invers\u00e9s s\u00e9par\u00e9ment.<\/p>\n<p>La matrice de masse n'est pas automatiquement diagonale pour chaque base et r\u00e8gle d'int\u00e9gration. Il devient diagonal ou approximativement diagonal dans les formulations de DG nodales courantes qui utilisent des points d'interpolation et de quadrature correspondants, tels que la collocation de Gauss-Lobatto. D'autres formulations utilisent de petites matrices d'\u00e9l\u00e9ments denses.<\/p>\n<h2>Choisir les fonctions de base et la quadrature<\/h2>\n<p>Les m\u00e9thodes DG utilisent g\u00e9n\u00e9ralement des bases polynomiales modales ou nodales. Une base modale repr\u00e9sente la solution \u00e0 travers des modes polynomiaux, souvent bas\u00e9s sur des polyn\u00f4mes de Legendre. Une base nodale stocke les valeurs de la solution aux n\u0153uds d'interpolation \u00e0 l'int\u00e9rieur de l'\u00e9l\u00e9ment.<\/p>\n<p>Les formulations nodales sont pratiques car les valeurs d'interface peuvent \u00eatre obtenues directement lorsque des n\u0153uds sont plac\u00e9s sur les limites des \u00e9l\u00e9ments. Les points de Gauss-Lobatto incluent les deux extr\u00e9mit\u00e9s de l'\u00e9l\u00e9ment de r\u00e9f\u00e9rence, tandis que les points de Gauss restent \u00e0 l'int\u00e9rieur.<\/p>\n<p>La quadrature num\u00e9rique \u00e9value les int\u00e9grales sous la forme faible. La r\u00e8gle de la quadrature doit \u00eatre suffisamment pr\u00e9cise pour le degr\u00e9 polynomial et tous les termes non lin\u00e9aires. Une quadrature insuffisante peut introduire une erreur et une instabilit\u00e9 d'alias.<\/p>\n<h2>Ordre et pr\u00e9cision polynomiales<\/h2>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>dipl\u00f4me polynomial<\/th>\n<th>Degr\u00e9s de libert\u00e9 locaux en 1D<\/th>\n<th>R\u00f4le typique<\/th>\n<\/tr>\n<tr>\n<td><code>p = 0<\/code><\/td>\n<td>1<\/td>\n<td>Approximation constante par morceaux similaire \u00e0 une m\u00e9thode de volume fini du premier ordre<\/td>\n<\/tr>\n<tr>\n<td><code>p = 1<\/code><\/td>\n<td>2<\/td>\n<td>Point de d\u00e9part pratique avec variation lin\u00e9aire \u00e0 l'int\u00e9rieur de chaque \u00e9l\u00e9ment<\/td>\n<\/tr>\n<tr>\n<td><code>p = 2<\/code><\/td>\n<td>3<\/td>\n<td>Pr\u00e9cision accrue pour des solutions fluides \u00e0 un co\u00fbt suppl\u00e9mentaire mod\u00e9r\u00e9<\/td>\n<\/tr>\n<tr>\n<td><code>p = 3<\/code><\/td>\n<td>4<\/td>\n<td>Approximation d'ordre \u00e9lev\u00e9 n\u00e9cessitant une stabilit\u00e9 et un contr\u00f4le en quadrature plus stricts<\/td>\n<\/tr>\n<\/tbody><\/table>\n<p>Pour des solutions suffisamment lisses, une m\u00e9thode DG bien con\u00e7ue peut atteindre une erreur proportionnelle \u00e0 environ <code>h^(p+1)<\/code>. L'augmentation du degr\u00e9 polynomial peut donc am\u00e9liorer la pr\u00e9cision sans ajouter plus d'\u00e9l\u00e9ments.<\/p>\n<p>L'ordre sup\u00e9rieur n'est pas toujours mieux. Les chocs et les discontinuit\u00e9s nettes peuvent cr\u00e9er des oscillations pr\u00e8s du saut. Des limiteurs, une viscosit\u00e9 artificielle, un filtrage ou des techniques de capture de chocs peuvent \u00eatre n\u00e9cessaires.<\/p>\n<h2>Un solveur DG lin\u00e9aire dans NumPy<\/h2>\n<p>L'exemple \u00e9ducatif suivant met en \u0153uvre une m\u00e9thode DG lin\u00e9aire <code>p = 1<\/code> pour une advection unidimensionnelle p\u00e9riodique. Chaque \u00e9l\u00e9ment contient deux degr\u00e9s de libert\u00e9 situ\u00e9s \u00e0 ses extr\u00e9mit\u00e9s.<\/p>\n<p>L'impl\u00e9mentation utilise la forme faible de l'\u00e9l\u00e9ment, un flux au vent et une m\u00e9thode Runge-Kutta pr\u00e9servant la stabilit\u00e9 de force du troisi\u00e8me ordre.<\/p>\n<pre><code class=\"language-python\">import numpy as np\n\n# Domain and model parameters\nlength = 1.0\nnumber_of_elements = 80\nvelocity = 1.0\nfinal_time = 0.5\n\nelement_width = length \/ number_of_elements\njacobian = element_width \/ 2.0\n\n# Reference-element mass matrix for linear basis functions\nmass_reference = np.array([\n    [2.0 \/ 3.0, 1.0 \/ 3.0],\n    [1.0 \/ 3.0, 2.0 \/ 3.0]\n])\n\nmass_matrix = jacobian * mass_reference\ninverse_mass = np.linalg.inv(mass_matrix)\n\n# S[i, j] = integral(phi_j * derivative(phi_i)) on [-1, 1]\nvolume_matrix = np.array([\n    [-0.5, -0.5],\n    [ 0.5,  0.5]\n])\n\nleft_vector = np.array([1.0, 0.0])\nright_vector = np.array([0.0, 1.0])\n\n# Physical coordinates of local DG nodes\nleft_edges = np.arange(number_of_elements) * element_width\nright_edges = left_edges + element_width\ncoordinates = np.column_stack((left_edges, right_edges))\n\n# Smooth periodic initial condition\nsolution = (\n    0.5\n    + 0.5 * np.sin(2.0 * np.pi * coordinates \/ length)\n)\n\ndef upwind_flux(left_state, right_state, speed):\n    positive_speed = max(speed, 0.0)\n    negative_speed = min(speed, 0.0)\n\n    return (\n        positive_speed * left_state\n        + negative_speed * right_state\n    )\n\ndef spatial_residual(values):\n    residual = np.zeros_like(values)\n\n    for element in range(number_of_elements):\n        left_neighbor = (element - 1) % number_of_elements\n        right_neighbor = (element + 1) % number_of_elements\n\n        # States on the left interface\n        left_inside = values[element, 0]\n        left_outside = values[left_neighbor, 1]\n\n        # States on the right interface\n        right_inside = values[element, 1]\n        right_outside = values[right_neighbor, 0]\n\n        flux_left = upwind_flux(\n            left_outside,\n            left_inside,\n            velocity\n        )\n\n        flux_right = upwind_flux(\n            right_inside,\n            right_outside,\n            velocity\n        )\n\n        local_rhs = (\n            velocity * volume_matrix @ values[element]\n            + flux_left * left_vector\n            - flux_right * right_vector\n        )\n\n        residual[element] = inverse_mass @ local_rhs\n\n    return residual\n\n# Conservative time-step estimate\ntime_step = 0.1 * element_width \/ abs(velocity)\ncurrent_time = 0.0\n\nwhile current_time &lt; final_time:\n    dt = min(time_step, final_time - current_time)\n\n    # SSP-RK3 stage 1\n    stage_one = solution + dt * spatial_residual(solution)\n\n    # SSP-RK3 stage 2\n    stage_two = (\n        0.75 * solution\n        + 0.25 * (\n            stage_one\n            + dt * spatial_residual(stage_one)\n        )\n    )\n\n    # SSP-RK3 stage 3\n    solution = (\n        (1.0 \/ 3.0) * solution\n        + (2.0 \/ 3.0) * (\n            stage_two\n            + dt * spatial_residual(stage_two)\n        )\n    )\n\n    current_time += dt\n\nprint(\"Simulation completed\")\nprint(\"Final time:\", current_time)\nprint(\"Minimum value:\", solution.min())\nprint(\"Maximum value:\", solution.max())<\/code><\/pre>\n<p>Cet exemple est intentionnellement limit\u00e9 \u00e0 un probl\u00e8me lin\u00e9aire lisse. Les solveurs de DG de production n\u00e9cessitent \u00e9galement des traitements aux limites robustes, des mappages multidimensionnels, une quadrature pr\u00e9cise, une \u00e9valuation de flux non lin\u00e9aire, des limiteurs et une int\u00e9gration plus avanc\u00e9e dans le temps.<\/p>\n<h2>Int\u00e9gration du temps et condition LFC<\/h2>\n<p>La discr\u00e9tisation spatiale DG cr\u00e9e un syst\u00e8me d'\u00e9quations diff\u00e9rentielles ordinaires. Une m\u00e9thode explicite telle que Runge-Kutta peut alors faire avancer ce syst\u00e8me dans le temps.<\/p>\n<p>Le pas de temps stable maximum d\u00e9pend de la vitesse d'onde, de la taille des \u00e9l\u00e9ments, du degr\u00e9 polynomial, du flux et de l'int\u00e9grateur de temps. Une mise \u00e0 l'\u00e9chelle commune est :<\/p>\n<pre><code>\u0394t \u221d h \/ [(2p + 1)|a|]<\/code><\/pre>\n<p>La constante de stabilit\u00e9 exacte d\u00e9pend de la m\u00e9thode. Il doit \u00eatre \u00e9tabli par l'analyse, la documentation ou les tests num\u00e9riques plut\u00f4t que trait\u00e9s comme universels.<\/p>\n<p>L'augmentation de l'ordre polynomial r\u00e9duit normalement le plus grand pas de temps explicitement stable. DG d'ordre \u00e9lev\u00e9 peut donc n\u00e9cessiter plus d'\u00e9tapes, m\u00eame lorsqu'il a besoin de moins d'\u00e9l\u00e9ments.<\/p>\n<h2>DG pour les probl\u00e8mes domin\u00e9s par l'advection<\/h2>\n<p>Les m\u00e9thodes de Galerkin continue standard peuvent d\u00e9velopper des oscillations lorsque l'advection domine la diffusion. Des m\u00e9thodes continues stabilis\u00e9es telles que SUPG modifient les fonctions de test pour ajouter un contr\u00f4le le long des lignes de courant.<\/p>\n<p>DG g\u00e8re le transport \u00e0 travers les flux d'interface. Au vent ou approximativement, les flux de Riemann introduisent une stabilisation sensible \u00e0 la direction et pr\u00e9servent la conservation locale.<\/p>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>aspect<\/th>\n<th>DG avec flux au vent<\/th>\n<th>soup<\/th>\n<\/tr>\n<tr>\n<td>Espace de solution<\/td>\n<td>discontinu entre les \u00e9l\u00e9ments<\/td>\n<td>g\u00e9n\u00e9ralement continu<\/td>\n<\/tr>\n<tr>\n<td>Pr\u00e9servation<\/td>\n<td>Conservation des \u00e9l\u00e9ments locaux<\/td>\n<td>d\u00e9pend de la formulation<\/td>\n<\/tr>\n<tr>\n<td>Stabilisation<\/td>\n<td>Introduit via les flux d'interface<\/td>\n<td>Introduit par des fonctions de test modifi\u00e9es<\/td>\n<\/tr>\n<tr>\n<td>discontinuit\u00e9s<\/td>\n<td>repr\u00e9sent\u00e9 directement<\/td>\n<td>Habituellement enduit sur les \u00e9l\u00e9ments continus<\/td>\n<\/tr>\n<tr>\n<td>Nombre d'inconnus<\/td>\n<td>Plus \u00e9lev\u00e9 car les interfaces ne partagent pas les degr\u00e9s de libert\u00e9<\/td>\n<td>Abaisser parce que les \u00e9l\u00e9ments voisins partagent des n\u0153uds<\/td>\n<\/tr>\n<\/tbody><\/table>\n<p>Le SUPG reste efficace pour de nombreux probl\u00e8mes domin\u00e9s par la convection. La DG est attrayante lorsque la conservation locale, les solutions discontinues, les mailles complexes ou l'adaptabilit\u00e9 des \u00e9l\u00e9ments sont des exigences centrales.<\/p>\n<h2>DG vs FVM et FEM continue<\/h2>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>Fonctionnalit\u00e9<\/th>\n<th>M\u00e9thode du volume fini<\/th>\n<th>FEM continue<\/th>\n<th>Galerkine discontinu<\/th>\n<\/tr>\n<tr>\n<td>Conservation locale<\/td>\n<td>Fort<\/td>\n<td>Non automatique dans les formulations standard<\/td>\n<td>Fort gr\u00e2ce aux flux num\u00e9riques<\/td>\n<\/tr>\n<tr>\n<td>Flexibilit\u00e9 polynomiale<\/td>\n<td>G\u00e9n\u00e9ralement limit\u00e9 dans les r\u00e9gimes de base<\/td>\n<td>Haut<\/td>\n<td>Haut<\/td>\n<\/tr>\n<tr>\n<td>Discontinuit\u00e9s de l'interface<\/td>\n<td>Stock\u00e9 par les moyennes cellulaires et la reconstruction<\/td>\n<td>Pas directement repr\u00e9sent\u00e9<\/td>\n<td>repr\u00e9sent\u00e9 naturellement<\/td>\n<\/tr>\n<tr>\n<td>Comte inconnu<\/td>\n<td>relativement faible<\/td>\n<td>R\u00e9duit par des n\u0153uds partag\u00e9s<\/td>\n<td>plus \u00e9lev\u00e9 parce que les degr\u00e9s de libert\u00e9 sont des \u00e9l\u00e9ments locaux<\/td>\n<\/tr>\n<tr>\n<td>Structure parall\u00e8le<\/td>\n<td>Bon<\/td>\n<td>n\u00e9cessite un couplage global<\/td>\n<td>Localit\u00e9 d'\u00e9l\u00e9ments forts avec communication faciale<\/td>\n<\/tr>\n<tr>\n<td>difficult\u00e9 de mise en \u0153uvre<\/td>\n<td>Faible \u00e0 mod\u00e9r\u00e9<\/td>\n<td>Mod\u00e9rer<\/td>\n<td>mod\u00e9r\u00e9 \u00e0 \u00e9lev\u00e9<\/td>\n<\/tr>\n<\/tbody><\/table>\n<h2>Avantages de la m\u00e9thode DG<\/h2>\n<ul>\n<li>La conservation locale est int\u00e9gr\u00e9e \u00e0 l'\u00e9quilibre des flux d'interface.<\/li>\n<li>Le degr\u00e9 polynomial peut varier d'un \u00e9l\u00e9ment \u00e0 l'autre.<\/li>\n<li>Les discontinuit\u00e9s ne violent pas l'espace d'approximation.<\/li>\n<li>Les calculs d'\u00e9l\u00e9ments sont bien adapt\u00e9s au mat\u00e9riel parall\u00e8le.<\/li>\n<li>Des maillages complexes et non structur\u00e9s peuvent \u00eatre pris en charge.<\/li>\n<li>Le raffinement du maillage et l'enrichissement polynomial peuvent \u00eatre combin\u00e9s.<\/li>\n<li>Diff\u00e9rents flux num\u00e9riques peuvent \u00eatre s\u00e9lectionn\u00e9s pour diff\u00e9rentes \u00e9quations.<\/li>\n<\/ul>\n<h2>Limites de la DG<\/h2>\n<p>DG utilise normalement plus de degr\u00e9s de libert\u00e9 qu'une m\u00e9thode par \u00e9l\u00e9ments finis continus du m\u00eame degr\u00e9 polynomial, car les \u00e9l\u00e9ments voisins ne partagent pas les valeurs d'interface.<\/p>\n<p>La m\u00e9thode n\u00e9cessite \u00e9galement une conception de flux minutieuse. Les \u00e9quations hyperboliques, elliptiques et mixtes n\u00e9cessitent des traitements d'interface diff\u00e9rents. Les op\u00e9rateurs de diffusion exigent des formulations telles que la p\u00e9nalit\u00e9 int\u00e9rieure, la DG locale ou des techniques connexes.<\/p>\n<p>Les m\u00e9thodes explicites de DG d'ordre \u00e9lev\u00e9 peuvent avoir des limites de pas de temps restrictives. Les probl\u00e8mes non lin\u00e9aires peuvent n\u00e9cessiter des limiteurs, des flux stables entropie, une pr\u00e9servation de la positivit\u00e9 ou une viscosit\u00e9 artificielle.<\/p>\n<p>Ces fonctionnalit\u00e9s rendent la DG puissante mais plus difficile \u00e0 impl\u00e9menter correctement que les sch\u00e9mas de base des diff\u00e9rences finies ou des volumes finis.<\/p>\n<h2>erreurs de mise en \u0153uvre courantes<\/h2>\n<p>Une erreur courante consiste \u00e0 utiliser le flux physique directement \u00e0 une interface discontinue sans d\u00e9finir comment les deux valeurs voisines doivent \u00eatre combin\u00e9es.<\/p>\n<p>D'autres erreurs fr\u00e9quentes incluent :<\/p>\n<ul>\n<li>Utiliser le mauvais signe pour la contribution des limites gauche ou droite<\/li>\n<li>Appliquer des orientations vectorielles incoh\u00e9rentes<\/li>\n<li>En supposant que la matrice de masse est toujours diagonale<\/li>\n<li>Utilisation de la quadrature trop faible pour les termes non lin\u00e9aires<\/li>\n<li>Ignorer la d\u00e9pendance polynomiale-degr\u00e9 de la limite de LFC<\/li>\n<li>appliquer des conditions aux limites p\u00e9riodiques ou physiques de mani\u00e8re incorrecte<\/li>\n<li>Utilisation de polyn\u00f4mes d'ordre \u00e9lev\u00e9 \u00e0 proximit\u00e9 de chocs sans limiteur<\/li>\n<li>Tester uniquement la sortie visuelle au lieu de la convergence et de la conservation<\/li>\n<\/ul>\n<h2>Comment valider un solveur DG<\/h2>\n<p>Commencez par un probl\u00e8me qui a une solution analytique connue. L'advection lin\u00e9aire p\u00e9riodique est utile car le profil exact est simplement d\u00e9cal\u00e9 de <code>a t<\/code>.<\/p>\n<p>Ex\u00e9cutez le solveur avec plusieurs r\u00e9solutions de maillage et mesurez une norme d'erreur. Pour une solution lisse, le taux de convergence observ\u00e9 doit approcher de l'ordre th\u00e9orique de la m\u00e9thode.<\/p>\n<p>V\u00e9rifiez la conservation en int\u00e9grant la solution \u00e0 travers le domaine. Pour une advection p\u00e9riodique, la masse totale devrait rester presque constante.<\/p>\n<p>Testez les vitesses positives et n\u00e9gatives pour v\u00e9rifier la direction du vent. Les donn\u00e9es initiales constantes doivent rester constantes. Les \u00e9tats limites doivent \u00e9galement \u00eatre test\u00e9s s\u00e9par\u00e9ment avant de passer \u00e0 des \u00e9quations non lin\u00e9aires.<\/p>\n<h2>Quand choisir DG<\/h2>\n<p>La DG est un choix fort lorsque le probl\u00e8me contient des ondes, des chocs, des interfaces mat\u00e9rielles ou un comportement domin\u00e9 par les transports. Il est \u00e9galement utile lorsque la conservation locale est essentielle ou lorsque la simulation b\u00e9n\u00e9ficie d'une pr\u00e9cision d'ordre \u00e9lev\u00e9 sur un maillage non structur\u00e9.<\/p>\n<p>Une m\u00e9thode de base du volume fini peut rester plus simple pour les probl\u00e8mes de conservation de faible ordre. Les \u00e9l\u00e9ments finis continus peuvent \u00eatre plus efficaces pour des probl\u00e8mes elliptiques ou structurels lisses o\u00f9 des discontinuit\u00e9s ne sont pas attendus.<\/p>\n<p>La m\u00e9thode num\u00e9rique doit suivre la structure math\u00e9matique de la PDE plut\u00f4t que la popularit\u00e9 actuelle ou la disponibilit\u00e9 des logiciels.<\/p>\n<h2>Conclusion<\/h2>\n<p>La m\u00e9thode Galerkin discontinue repr\u00e9sente la solution avec des polyn\u00f4mes ind\u00e9pendants \u00e0 l'int\u00e9rieur de chaque \u00e9l\u00e9ment. Sa formulation faible produit des termes limites naturels qui sont remplac\u00e9s par des flux num\u00e9riques. Ces flux contr\u00f4lent la fa\u00e7on dont les informations se d\u00e9placent entre les \u00e9l\u00e9ments et permettent \u00e0 la m\u00e9thode compl\u00e8te de pr\u00e9server les quantit\u00e9s localement.<\/p>\n<p>DG combine une approximation polynomiale d'ordre \u00e9lev\u00e9, une flexibilit\u00e9 g\u00e9om\u00e9trique, une manipulation de discontinuit\u00e9 et une localit\u00e9 d'\u00e9l\u00e9ments solide. Ces avantages le rendent utile pour la propagation des ondes, les lois de conservation hyperboliques, les syst\u00e8mes domin\u00e9s par la convection et les simulations parall\u00e8les de grande taille.<\/p>\n<p>La m\u00e9thode introduit \u00e9galement une complexit\u00e9 suppl\u00e9mentaire. Les flux, les quadratures, les restrictions de pas de temps, les limiteurs et les conditions aux limites doivent \u00eatre s\u00e9lectionn\u00e9s avec soin. Une mise en \u0153uvre fiable doit \u00eatre d\u00e9velopp\u00e9e progressivement, en commen\u00e7ant par une simple \u00e9quation lin\u00e9aire et v\u00e9rifi\u00e9e par des tests de convergence et de conservation.<\/p>\n<p>Pour les chercheurs qui comprennent d\u00e9j\u00e0 le volume fini ou les m\u00e9thodes d'\u00e9l\u00e9ments finis, la DG fournit une prochaine \u00e9tape naturelle vers des solveurs PDE localement conservateurs dans le Python scientifique.<\/p>\n<\/article>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>D\u00e9rivation \u00e9tape par \u00e9tape de la m\u00e9thode Galerkin discontinue, comparaison de flux num\u00e9rique et mise en \u0153uvre 1D compl\u00e8te en Python. Apprenez quand la DG surpasse la FVM et la FEM continue.<\/p>\n","protected":false,"raw":"D\u00e9rivation \u00e9tape par \u00e9tape de la m\u00e9thode Galerkin discontinue, comparaison de flux num\u00e9rique et mise en \u0153uvre 1D compl\u00e8te en Python. Apprenez quand la DG surpasse la FVM et la FEM continue."},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"fr_FR","_original_post":"https:\/\/matforge.org\/?p=465","iawp_total_views":1,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1301","post","type-post","status-publish","format-standard","hentry","category-fipy-documentation-examples-development","fr-FR"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>M\u00e9thode Galerkin discontinue en Python<\/title>\n<meta name=\"description\" content=\"Apprenez comment les m\u00e9thodes DG utilisent des formes faibles, des flux num\u00e9riques, des bases polynomiales et la conservation locale pour r\u00e9soudre les PDE dans le python scientifique.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"M\u00e9thode Galerkin discontinue en Python\" \/>\n<meta property=\"og:description\" content=\"Apprenez comment les m\u00e9thodes DG utilisent des formes faibles, des flux num\u00e9riques, des bases polynomiales et la conservation locale pour r\u00e9soudre les PDE dans le python scientifique.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:31:09+00:00\" \/>\n<meta name=\"author\" content=\"Tomas Delgado\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tomas Delgado\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/\"},\"author\":{\"name\":\"Tomas Delgado\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"headline\":\"Tutoriel discontinu de la m\u00e9thode Galerkin\u00a0: d\u00e9rivation, flux et impl\u00e9mentation de Python\",\"datePublished\":\"2026-08-21T14:31:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/\"},\"wordCount\":3136,\"commentCount\":0,\"articleSection\":[\"FIPY : documentation, exemples &amp; D\u00e9veloppement\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/\",\"name\":\"M\u00e9thode Galerkin discontinue en Python\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-21T14:31:09+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"description\":\"Apprenez comment les m\u00e9thodes DG utilisent des formes faibles, des flux num\u00e9riques, des bases polynomiales et la conservation locale pour r\u00e9soudre les PDE dans le python scientifique.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/discontinuous-galerkin-method-tutorial\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutoriel discontinu de la m\u00e9thode Galerkin\u00a0: d\u00e9rivation, flux et impl\u00e9mentation de Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\",\"name\":\"Tomas Delgado\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"caption\":\"Tomas Delgado\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/tomas-delgado\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"M\u00e9thode Galerkin discontinue en Python","description":"Apprenez comment les m\u00e9thodes DG utilisent des formes faibles, des flux num\u00e9riques, des bases polynomiales et la conservation locale pour r\u00e9soudre les PDE dans le python scientifique.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/","og_locale":"fr_FR","og_type":"article","og_title":"M\u00e9thode Galerkin discontinue en Python","og_description":"Apprenez comment les m\u00e9thodes DG utilisent des formes faibles, des flux num\u00e9riques, des bases polynomiales et la conservation locale pour r\u00e9soudre les PDE dans le python scientifique.","og_url":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/","og_site_name":"matforge.org","article_published_time":"2026-08-21T14:31:09+00:00","author":"Tomas Delgado","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Tomas Delgado","Dur\u00e9e de lecture estim\u00e9e":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/"},"author":{"name":"Tomas Delgado","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"headline":"Tutoriel discontinu de la m\u00e9thode Galerkin\u00a0: d\u00e9rivation, flux et impl\u00e9mentation de Python","datePublished":"2026-08-21T14:31:09+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/"},"wordCount":3136,"commentCount":0,"articleSection":["FIPY : documentation, exemples &amp; D\u00e9veloppement"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/","url":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/","name":"M\u00e9thode Galerkin discontinue en Python","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-21T14:31:09+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"description":"Apprenez comment les m\u00e9thodes DG utilisent des formes faibles, des flux num\u00e9riques, des bases polynomiales et la conservation locale pour r\u00e9soudre les PDE dans le python scientifique.","breadcrumb":{"@id":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/fr\/discontinuous-galerkin-method-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/"},{"@type":"ListItem","position":2,"name":"Tutoriel discontinu de la m\u00e9thode Galerkin\u00a0: d\u00e9rivation, flux et impl\u00e9mentation de Python"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061","name":"Tomas Delgado","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","caption":"Tomas Delgado"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/tomas-delgado\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1301"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1301\/revisions"}],"predecessor-version":[{"id":1389,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1301\/revisions\/1389"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}