Christophe Prud'homme <christophe.prudhomme@cemosis.fr>, Laurent Navoret
Le coefficient \(q(u)\) rend l’équation non linéaire (sauf si \(q(u)\) est constant en \(u\) ). |
Pour pouvoir vérifier facilement notre implémentation, nous choisissons le domaine, \(q(u), f,\) et les conditions aux limites de telle sorte que nous ayons une solution simple et exacte \(u\).
Soit \(\Omega\) l’hypercube unitaire \([0,1]^{d}\) en \(d\) dimensions, \(q(u)=(1+u)^{m}, f=0, u=0\) pour \(x_{0}=0, u=1\) pour \(x_{0}=1,\) et \(\partial u / \partial n=0\) à toutes les autres frontières \(x_{i}=0\) et \(x_{i}=1, i=1, \ldots, d-1\).
Les coordonnées sont maintenant représentées par les symboles \(x_{0}, \ldots, x_{d-1} .\)
La solution exacte est alors
La formulation variationnelle de notre problème modèle est la suivante : trouver \(u \in V\) tel que
où
et
Le problème discret se pose comme d’habitude en restreignant \(V\) et \(\hat{V}\) à une paire d’espaces discrets. Comme souvent, nous omettons tout indice sur les espaces discrets et disons simplement que \(V\) et \(\hat{V}\) sont choisis en dimension finie selon un certain type de maille et d’élément. Le problème non linéaire est alors le suivant : trouver \(u \in V\) tel que
avec \(u=\sum_{j=1}^{N} U_{j} \phi_{j}\). Puisque \(F\) est une fonction non linéaire de \(u\) donne lieu à un système d’équations algébriques non linéaires.
Picard
Newton au niveau algébrique
Newton au niveau EDP
L'itération de Picard est un moyen facile de traiter les EDP non linéaires : nous utilisons simplement une solution antérieure connue dans les termes non linéaires de sorte que ces termes deviennent linéaires dans l’inconnue \(u\).
Cette stratégie est également connue comme la méthode des substitutions successives. Pour notre problème particulier, nous utilisons une solution antérieure connue dans le coefficient \(q(u)\). Plus précisément, étant donné une solution \(u^{k}\) de l’itération \(k\), nous cherchons une nouvelle solution (que nous espérons améliorée) \(u^{k+1}\) dans l’itération \(k+1\) telle que \(u^{k+1}\) résout le problème linéaire
Les itérations nécessitent une estimation initiale \(u^{0}.\) On espère que \(u^{k} \rightarrow u\) comme \(k \rightarrow \infty,\) et que \(u^{k+1}\) soit suffisamment proche de la solution exacte \(u\) du problème discret après seulement quelques itérations. |
Nous pouvons facilement formuler un problème variationnel pour \(u^{k+1}\). De manière équivalente, nous pouvons approximer \(q(u)\) par \(q\left(u^{k}\right)\) pour obtenir le même problème variationnel linéaire. Dans les deux cas, le problème consiste à chercher \(u^{k+1} \in V\) tel que
Puisqu’il s’agit d’un problème linéaire dans l’inconnue \(u^{k+1}\), ou de manière équivalente
Les itérations peuvent être arrêtées lorsque
\(\epsilon \equiv \| u^{k+1}-u^{k}||<\texttt{tol}\), où \(\texttt{tol}\) est petit, disons \(10^{-5}\),
le nombre d’itérations dépasse une certaine limite critique.
Dans ce dernier cas, on constatera une divergence de la méthode ou une convergence lente inacceptable. |
Après avoir discrétisé notre problème d’EDP non linéaire, nous pouvons utiliser la méthode de Newton pour résoudre le système d’équations algébriques non linéaires.
A partir du problème variationnel continu, la version discrète résulte en un système d’équations pour les paramètres inconnus \(U_{1}, \ldots, U_{N}\) (en insérant \(u=\sum_{j=1}^{N} U_{j} \phi_{j}\) et \(v=\hat{\phi}_{i}\) dans [nl-discrete]):
La méthode de Newton pour le système \(F_{i}\left(U_{1}, \ldots, U_{j}\right)=0, i=1, \ldots, N\) peut être formulée comme suit
où \(\omega \in[0,1\)] est un paramètre de relaxation, et \(k\) est un indice d’itération.
Remarques
|
Nous avons besoin, dans un programme, de calculer la matrice jacobienne \(\partial F_{i} / \partial U_{j}\) et le vecteur du côté droit \(-F_{i}\). La dérivée \(\partial F_{i} / \partial U_{j}\) s’écrit
Les résultats suivants ont été utilisés pour obtenir l’équation ci-dessus:
Nous pouvons reformuler la matrice jacobienne en introduisant la notation courte \(u^{k}=\sum_{j=1}^{N} U_{j}^{k} \phi_{j}\) ;
Afin de faire calculer cette matrice, nous devons formuler un problème variationnel correspondant. En regardant le système d’équations linéaires de la méthode de Newton,
nous pouvons introduire \(v\) comme fonction de test générale remplaçant \(\hat{\phi}_{i}\), et nous pouvons identifier l’inconnue \(\delta u=\sum_{j=1}^{N} \delta U_{j} \phi_{j}\).
À partir du système linéaire, nous pouvons maintenant "revenir en arrière" pour construire la forme faible discrète correspondante.
L’équation s’adapte à la forme standard \(a(\delta u, v)=L(v)\) avec
Remarques
|
Bien que la méthode de Newton dans les problèmes d’EDP soit normalement formulée au niveau de l’algèbre linéaire, c’est-à-dire comme une méthode de résolution de systèmes d’équations algébriques non linéaires, nous pouvons également formuler la méthode au niveau des EDP.
Cette approche permet de linéariser les EDP avant de les discrétiser.
Étant donné une approximation du champ de solution, \(u^{k}\), nous recherchons une perturbation \(\delta u\) telle que
satisfasse l’EDP non linéaire. Cependant, le problème pour \(\delta u\) est toujours non linéaire et on ne gagne rien.
L’idée est donc de supposer que \(\delta u\) est suffisamment petit pour que l’on puisse linéariser le problème par rapport à \(\delta u\). |
En insérant \(u^{k+1}\) dans l’EDP, on linéarise le terme \(q\) comme suit
et en abandonnant les autres termes non linéaires dans \(\delta u,\) on obtient
Nous pouvons rassembler les termes avec l’inconnue \(\delta u\) sur le côté gauche,
La forme faible de cette EDP est dérivée en la multipliant par une fonction test \(v\) et en l’intégrant sur \(\Omega\), en intégrant les dérivées du second ordre par parties :
Le problème variationnel est le suivant : trouver \(\delta u \in V\) tel que \(a(\delta u, v)=L(v)\) pour tout \(v \in \hat{V},\) où
Les espaces de fonctions \(V\) et \(\hat{V}\), étant continus ou discrets, sont comme dans le problème de Poisson linéaire. |
Nous devons fournir une estimation initiale, par exemple, la solution de l’EDP avec \(q(u)=1\).
La forme faible correspondante \(a_{0}\left(u^{0}, v\right)=L_{0}(v)\) possède
Ensuite, nous entrons dans une boucle et résolvons \(a(\delta u, v)=L(v)\) pour \(\delta u\) et calculons une nouvelle approximation \(u^{k+1}=u^{k}+\delta u\).
Remarques
|
\(u: \Omega \times \mathbb{R}^{+} \rightarrow \mathbb{R}:\) densité
\(u_{°}: \Omega \rightarrow \mathbb{R}:\) donnée initiale
\(f: \Omega \times \mathbb{R}^{+} \rightarrow \mathbb{R}:\) terme source
\(g: \partial \Omega \rightarrow \mathbb{R}:\) valeur au bord
\(\rightarrow\) problème parabolique \(\rightarrow\) Bilan de conservation
\(\rightarrow\) Dissipation de la norme \(L^{2}\)
Une approche simple pour résoudre les EDP dépendant du temps par La méthode des éléments finis consiste à discrétiser d’abord la dérivée en temps par les différences finies. Cela donne un ensemble récursif de problèmes stationnaires, puis on transforme chaque problème stationnaire en un problème variationnel.
Soit l’exposant \(k\) qui désigne une quantité au temps \(t^k\) où \(k\) est un nombre entier comptant les niveaux de temps. Par exemple, \(u^k\) signifie \(u\) au niveau du temps \(k\).
Discrétisation en temps: \(\Delta t>0, t_{n}=n \Delta t .\) On note \(u^{n}(x):=u\left(t_{n}, x\right)\) Schéma d’Euler (implicite):
\(\rightarrow\) "method of lines" \(\rightarrow\) pour trouver \(u^{n},\) on résout un problème elliptique (stationnaire)
Problème au temps \(t^{n}\)
\(V=\left\{v \in H^{1}(\Omega), v=g^{n} \text { sur } \partial \Omega\right\}\) \(V_{0}=\left\{v \in H^{1}(\Omega), v=0 \text { sur } \partial \Omega\right\}\) Problème variationnel
\(\rightarrow\) Méthode d’éléments finis
Pour le calcul de \(u^{0}\) :
interpolation: \(u^{0}=\sum_{j=1}^{N} u_{0}\left(x_{i}\right) \varphi_{i}\)
projection \(L^{2}: u^{0}\) est solution du problème variationnel
Autre schéma numérique pour la discrêtisation de la dérivée en temps : Crank-Nicolson (ordre 2 en temps)
\(u: \mathbb{R}^{+} \times \Omega \rightarrow \mathbb{R}^{d}:\) température ou concentration
\(\beta: \mathbb{R}^{+} \times \Omega \rightarrow \mathbb{R}^{d}:\) vitesse d’advection
\(u: \mathbb{R}^{+} \times \Omega \rightarrow \mathbb{R}^{d}:\) champ de vitesse
\(p: \mathbb{R}^{+} \times \Omega \rightarrow \mathbb{R}:\) pression
advection non-linéaire |
\(f \in L^{2}, \nabla \cdot \beta \in L^{2}\) et \(\beta \in L^{\infty}, \varepsilon, \mu>0 .\) On suppose de plus que \(\mu+\frac{1}{2} \nabla \cdot \beta \geqslant 0\) alors \(a\) est coercif : \(a(v, v) \geqslant \kappa\|v\|_{H^{1}}^{2},\) avec \(\kappa=\varepsilon\) \(a\) est continu \(: a(u, v) \leqslant M\|u\|_{H^{1}}\|v\|_{H^{1}},\) avec \(M=\left(\mu+\varepsilon+\|\beta\|_{\infty}\right)\) On en déduit qu’il existe une unique solution u au problème variationnel.
Preuve de la convergence :
On a ensuite :
Limite faible diffusion (convection dominante): \(\varepsilon \rightarrow 0\) \(\rightarrow\) solution et gradient très grands |
Nombre de Péclet: \(\mathrm{Pe}=\frac{\|\beta\|_{\infty} L}{2 \varepsilon}(L=\) longueur caractéristique du domaine)
Nombre de Péclet local à une maille: \(\mathrm{Pe}_{K}=\frac{\|\beta\|_{\infty} h_{K}}{2 \varepsilon}\)
réduire l’erreur en prenant un très petit paramètre de discrétisation \(h\)
méthodes de stabilisation :
Diffusion artificielle
Galerkin Least-Square (GLS)
Streamline Upwind Petrov Galerkin (SUPG)
Continuous Interior Penalty methods (CIP)
..
Problème : \(L u=f\) avec
Formulation moindre carré :
Cela revient à résoudre \(L^{T} L u=L^{T} f .\) L’unique solution de ce problème est le minimum de la fonction
Problème mal posé : pour \(v \in H^{1}\), \(L v \notin L^{2}(\Omega)\) |
mais pour tout \(v_{h} \in V_{h}\) et tout \(K \in \mathcal{T}_{h}, L v_{h \mid K} \in L^{2}\).
Formulation variationnelle GLS: Trouver \(u \in V_{h},\)
Remarques
|
Soit \(f \in L^{2}(\Omega)\) et \(u \in V\) la solution du problème. Soit \(u_{h} \in V_{h}\) la solution approchée du problème d’advection-diffusion. Si \(u \in H^{k+1}(\Omega),\) alors avec \(\delta_{K}=\delta h_{K} /\|\beta\|\) pour \(P e_{K} \geqslant 1\) et \(\delta\) suffisamment petit,
En prenant \(\delta_{K}=\left(\|\beta\|_{\infty} / h_{K}+\varepsilon / h_{K}^{2}\right)^{-1},\) on obtient la convergence:
\(\rightarrow\) convergence sous-optimale d’un facteur \(1 / 2\) |
Streamline upwind Petrov-Galerkin
(Partie symétrique et antisymétrique)
Remarques
|
Trouver \(u \in V_{h},\)
Remarques
|