None .. An html document created by ipypublish
outline: ipypublish.templates.outline_schemas/rst_outline.rst.j2 with segments: - nbsphinx-ipypublish-content: ipypublish sphinx content
4. Résolution d’EDO en temps¶
Basile Marchand (basile.marchand@mines-paristech.fr)
4.1. Introduction¶
Intégration numérique ?
Considérons la forme générale d’une EDO du premier ordre
\(\mathbf{q}(t)\in\mathbb{R}^n,\; \forall t \in [0,T]\).
Mais ça sert à quoi ?
De manière générale, il existe de nombreux cas de figures où l’on ne sait pas trouver de solution analytique à une EDO.
En mécanique de nombreuses lois de comportement s’expriment sous la forme d’EDO en temps. Traduisant de fait l’impact de l’histoire sur l’état actuel.
Il existe toute un zoologie de méthodes d’intégration temporelle. Mais dans le cadre de ce cours on se limite aux méthodes les plus utilisées en mécanique à savoir :
La \(\theta\)-méthode
La méthode de Runge-Kutta
4.1.1. La notion de discrétisation en temps¶
Pour tous les schémas d’intégration il est nécessaire de se donner une discrétisation en temps. On découpe donc l’intervalle de temps \([t\_{init}, t\_{end}]\) en \(n\) intervalles de même taille ou non
4.2. La \(\theta\)-méthode¶
L’idée de base
La \(\theta\)-méthode repose sur une évaluation de la dérivée temporelle par différences finies complétée par une évaluation de l’EDO en \(t_\theta\)
\[\dfrac{ \mathbf{q}_{i+1} - \mathbf{q}_i }{\Delta t} = \mathbf{B}( \mathbf{q}_\theta , t_\theta )\]
La \(\theta\)-méthode regroupe entre autres les trois méthodes suivantes : - Euler explicite $ (:raw-latex:`\theta`=0) $ - Cranck-Nicholson $ (:raw-latex:`theta`=0.5 )$ - Euler implicite $ (:raw-latex:`theta`=1) $
La méthode d’Euler explicite :math:`(theta=0)`
On considère la dérivée au début de l’intervalle de temps
peut immédiatement déterminer \(\mathbf{q}_{i+1}\).
En revanche attention au pas de temps. Car la méthode est conditionellemnt stable.
La méthode de Cranck-Nicholson :math:`(theta = 0.5)`
La méthode de Crank-Nicholson est similaire à une formule de quadrature par la méthode des trapèzes pour les EDO linéaires.
La méthode d’Euler implicite :math:`(theta = 1)`
\[ \begin{align}\begin{aligned} \dfrac{ \mathbf{q}_{i+1} - \mathbf{q}_i }{\Delta t} = \mathbf{B}( \mathbf{q}_{i+1} , t_i )\\Ce qui permet d'écrire la suite :\end{aligned}\end{align} \]\[ \begin{align}\begin{aligned} \mathbf{q}_{i+1} = \mathbf{q}_{i} + \Delta t \mathbf{B}( \mathbf{q}_{i+1} , t_{i+1} )\\Problème **non-linéaire** !!\end{aligned}\end{align} \]
Synthèse dans le cas d’une EDO linéaire
Dans le cas où l’opérateur \(\mathbf{B}\) est linéaire on peut nécessairement écrire l’EDO sous la forme :
Dans ce cas la \(\theta\)-méthode se ramène à la résolution de systèmes linéaire :
Dans le cas de pas de temps constant il est fortement recommandé de calculer une factorisation de \(\left( \frac{1}{\Delta t} \mathbf{C} + \theta \mathbf{K} \right)\) en phase préliminaire
Retour sur le Euler implicite
\[ \begin{align}\begin{aligned} \mathbf{q}_{i+1} = \mathbf{q}_{i} + \Delta t \mathbf{B}( \mathbf{q}_{i+1} , t_{i+1} )\\Le problème à résoudre est non-linéaire !\end{aligned}\end{align} \]
\[\mathbf{G}(\mathbf{q}_{i+1} ) = \mathbf{q}_{i+1} - \mathbf{q}_{i} - \Delta t \mathbf{B}( \mathbf{q}_{i+1} , t\_{i+1} ) = 0\]
On applique alors une méthode de Newton :
Avec \(\mathcal{J}( \mathbf{F}( \mathbf{q}_{i+1}^{(k)} ) )\) la matrice Jacobienne définie par :
Dans la pratique deux approches pour calculer la matrice jacobienne : - Calcul analytique - Par perturbation
Pour plus de détails revoir le cours précédent sur la résolution de systèmes non-linéaires.
4.2.1. Quelques propriétés mathématiques¶
Existence, unicité et convergence
Existence et unicité : en associant une condition initiale \(\mathbf{q}_0\) ont obtient un problème de Cauchy
Le thérorème de Cauchy-Lipchitz stipule alors que :
Si on connait :math:`mathbf{q}_0` et si :math:`mathbf{B}(mathbf{q}, t)` est localement lipchitzienne par rapport à la première variable alors la solution existe et elle est unique
Consistance d’un schéma numérique
Une méthode d’intégration temporelle est consistante si et seulement si elle engendre une suite \(\lbrace \mathbf{q}_{i} \rbrace_{i=1,...,n}\) telle que
La consistance d’une méthode d’intégration est une condition nécessaire de convergence
Stabilité d’un schéma numérique
Une méthode d’intégration est stable si une petite variation du vecteur d’état à l’instant \(t_i\) n’entraîne que des variations consécutives qui ne sont pas croissantes au cours du temps
Stabilité de la :math:`theta`-méthode : cas de la diffusion
Soit un barreau soumis en \(x=0\) à une température imposée et en \(x=L\) à un flux imposé.
\[ \begin{align}\begin{aligned} \mathbf{C}\cdot \mathbf{\dot{q}} + \mathbf{K}\cdot \mathbf{q} = \mathbf{F}\\Où les différents opérateurs sont définis :\end{aligned}\end{align} \]\[C_{ij} = \rho C_p \frac{h}{4} ( 2 \delta_{ij} + \delta_{(i-1)j} + \delta_{(i+1)j} )\; ; \; C_{1j} = \rho C_p \frac{h}{4} (\delta_{1j} + \delta_{2j} )\]
\[K_{ij} = \frac{k}{h} ( 2 \delta_{ij} - \delta_{(i-1)j} - \delta_{(i+1)j} )\; ; \; K_{1j} = \frac{k}{h} (\delta_{1j} - \delta_{2j} ) \; ; \; F_{i} = T^d \delta_{(N)i}\]
Avec \(\delta_{ij}\) le symbole de Kronecker
Illustration
*TODO*
Astuce : changement de variable par projection dans une base de vecteurs propres:
\((\boldsymbol{\phi}^T \mathbf{K} \boldsymbol{\phi})_{ij} = \lambda_{i} \delta_{ij}\). Il s’agit donc d’un système d’équations découplées.
Considérons l’effet d’une perturbation à la ligne \(k\) :
Appliquons la \(\theta\)-méthode à la ligne \(k\):
en \(t_i\) pour la ligne \(k\). On obtient l’équation d’évolution de la perturbation:
\(\max_{k} | \frac{1 + \Delta t \: (\theta - 1) \: \lambda^{(k)}}{1 + \Delta t \: \theta \: \lambda^{(k)}} | < 1\) alors il n’y a pas d’amplification de perturbation et donc le schéma est stable.
Cas linéaire
Existe-t-il une valeur de \(\Delta t > 0\), notée \(\Delta t_{c}^{(k)}\) telle que:
tel que:
Si \(\theta \ge \frac{1}{2}\), on a \(\max_k | \mathcal{A}_k | < 1\). Le schéma est stable.
Si \(\theta < \frac{1}{2}\), comment choisir \(\Delta t\)?
Nous souhaitons avoir \(\mathcal{A}^{(k)} > -1\):
Retour sur le problème de diffusion
Dans le cas du problème parabolique de diffusion thermique, les valeurs propres \(\lambda^{(k)}\) dépendent de \(h\), la taille des éléments. On peut alors introduire le coefficient CFL (Courant–Friedrichs–Lewy):
la plus grande valeur propre du plus petit élément pris de façon isolée (théorème de Irons et Threhane).
On obtient ici:
On en déduit:
temps pour \(\theta < \frac{1}{2}\).
Dans le cas étudié, on a:
\(h\) est petit pour capter de forts gradients, plus il faut \(\Delta t\) petit.
4.3. Méthode de Runge-Kutta¶
L’idée de base
Parfois l’emploi de la méthode d’Euler implicite est impossible et la résolution avec un Euler explicite couteraît trop cher.
Principe de la méthode : - Prédiction - Correction
*Runge-Kutta d’ordre 2 (RK2)*
Le principe est d’estimer la dérivée au milieu du pas d’intégration
La prévision est construite à partir de deux évaluations de la fonction \(\mathbf{B}\)
\(\delta_1 \mathbf{q}\) est l’incrément calculé par la méthode d’Euler explicite.
Ce schéma annule le premier ordre de l’erreur.
*Runge-Kutta d’ordre 4 (RK4)*
La prévision est construite avec quatre évaluations de la fonction \(\mathbf{B}\):
Remarque sur la complexité numérique:
Les pas de temps utilisés pour ce schéma ne sont pas nécessairement deux fois plus grands que ceux utilisés pour le schéma du second ordre. Mais s’ils le sont la complexité numérique du schéma est moins grande que celle de RK2.
Contrôle du pas de temps
Approche empirique pour évaluer la convergence de l’approximation: 1. diviser la taille du pas de temps par 2 2. comparer les prévisions 3. recommencer tant que l’écart entre les deux dernières prévisions est jugé trop important.
Une méthode adaptative de pas de temps permet de mieux répartir sur l’intervalle de temps les erreurs d’approximation en ayant le souci de réduire les temps de calcul. L’adaptation des pas de temps permet aussi de faciliter la linéarisation de certains problèmes d’évolution non linéaires.
*Approche par extrapolation locale [Press94].*
En doublant le pas de temps, on estime la solution exacte \(\overline{\mathbf{q}}\) de deux façons par RK4:
tel que:
d’avoir une erreur \(\eta^\star = \epsilon\_{tol}\) si \(\eta > \epsilon\_{tol}\), tel que:
\(\Delta t^\star = \Delta t \: (\frac{\eta}{\epsilon\_{tol}})^{1/5}\)
Le contrôle du pas de temps passe par une estimation de l’erreur
*Il y a donc un coût additionnel !!*
C’est néanmoins très utile voir impératif
*Cela permet d’optimiser les coûts de calcul*
4.4. Modèle de Maxwell¶
Calculer la solution analytique
Déterminer la solution par une approche Euler explicite
Déterminer la solution par une approche Euler implicite
Faire de même avec la méthode RK4
Utiliser
scipy.integrate.odepour calculer la solution de ce problème et comparer
Données : \(\eta = 1000\,MPa.s\), \(E=20000\,MPa\), \(T=10\,s\)