N.B. : le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.
Les calculatrices sont autorisées
Le sujet est composé de trois parties partiellement indépendantes.
Modélisation du mouvement d'une plateforme en mer
On s'intéresse à la résolution d'équations du mouvement dans une approche classique de la mécanique afin d'étudier le mouvement d'une plateforme en mer. Le modèle envisagé est un système à un degré de liberté considéré comme oscillateur harmonique : une masse est reliée à un ressort, avec ou sans amortissement, et peut être soumise à une excitation externe.
La résolution est tout d'abord abordée de façon analytique puis de façon numérique, avant enfin de comparer les résultats obtenus.
Les résolutions analytiques et numériques sont largement indépendantes.
Dans la suite de l'énoncé, toutes les grandeurs vectorielles sont indiquées en gras.
Un aide-mémoire sur numpy est donné en Annexe.
On considère le mouvement d'une plateforme en mer soumise à un courant marin. Sa partie supérieure de masse tonnes est considérée comme rigide et le mouvement principal de la plateforme a lieu suivant (figure 1(a)).
Afin d'étudier le mouvement de cette plateforme, on la représente par une masse , liée à un ressort de constante de raideur et à un amortisseur de constante d'amortissement , pouvant subir une excitation externe de force , et se déplaçant sur un support (figure 1(b)). Le ressort représente la rigidité de l'ensemble du support de la plateforme. L'amortisseur permet de prendre en compte l'effet de l'eau environnante et la force d'excitation externe celui des vagues qui frappent périodiquement la plateforme. La masse est supposée se déplacer selon une seule direction parallèle à l'axe Ox en fonction du temps .
Figure 1 - (a) Plateforme en mer soumise aux vagues marines, (b) système masse ( ), ressort ( ), amortisseur ( ) et excitation externe ( )
Les projections sur l'axe Ox de la position, de la vitesse et de l'accélération de la masse en fonction du temps sont notées respectivement , et . La force totale agissant sur la masse correspond à la réaction normale de la base horizontale, à la force de frottement , à la force de rappel du ressort, au poids de la masse et à la force d'excitation externe. La position d'équilibre de la masse sera choisie à . En l'absence d'action de l'amortisseur, la masse se déplace sur la base horizontale sans frottements.
Partie I - Résolution analytique et détermination des paramètres pour la modélisation
Q1. En effectuant une projection sur l'axe Ox , montrer que et n'interviennent pas dans le bilan des forces.
I. 1 - Ressort sans amortissement et sans excitation
Q2. Démontrer que l'équation du mouvement de la masse correspond à l'équation différentielle du second ordre suivante :
Q3. La solution de cette équation prend la forme générale suivante
avec et deux coefficients réels. Exprimer en fonction des grandeurs caractéristiques du système et donner sa signification physique. De plus, en remarquant qu'à et , déterminer les expressions de et de en fonction de et de .
Q4. On cherche à reformuler l'équation précédente sous une forme plus compacte du type :
Donner les expressions de et de en fonction de et de .
Q5. Représenter qualitativement en fonction de et indiquer sur le tracé et .
Q6. En utilisant les expressions des énergies cinétique et potentielle du système, montrer que l'énergie totale du système est alors :
Justifier le résultat obtenu.
Q7. Représenter qualitativement et en fonction de .
I. 2 - Ressort avec amortissement et sans excitation
Q8. La force de frottement que l'amortisseur exerce sur la masse est considérée comme linéaire, c'est-à-dire proportionnelle au vecteur vitesse de celle-ci : , avec constante d'amortissement ( ). En considérant une projection sur l'axe Ox , démontrer que la position de la masse en fonction du temps suit l'équation du mouvement ci-après
avec défini en question et à exprimer en fonction de et .
Q9. Dans le cas où prend la forme suivante :
Déterminer les deux coefficients réels et en fonction de et . On utilisera pour cela les mêmes conditions initiales que celles utilisées en question Q3.
Q10. Montrer alors que l'on peut obtenir une forme du type
et à préciser.
Q11. Représenter qualitativement en fonction de et indiquer sur le tracé et .
Q12. Donner l'expression de et commenter les cas où et .
Q13. Montrer de façon simple que est une fonction décroissante de . À quoi cela est-il dû ?
Q14. On envisage deux temps successifs et pour lesquels les déplacements sont et , tels que et , avec : période des oscillations amorties. En utilisant l'équation (7) et en considérant que , montrer que :
Q15. Le relevé du déplacement horizontal de la plateforme en fonction du temps est représenté en figure 2.
En utilisant les deux points qui sont indiqués sur la figure, déterminer et .
Comment ce tracé serait modifié en fonction de la valeur de ?
Figure 2 - Relevé du déplacement horizontal (en m ) de la plateforme de masse tonnes en fonction du temps (en s). Les deux temps et mentionnés en question sont indiqués
I. 3 - Ressort avec amortissement et avec excitation
On envisage enfin le cas où le système est soumis à la fois aux effets d'amortissement et d'excitation. On se limite ici à la réponse à une excitation harmonique sinusoïdale de fréquence produite par une force extérieure au système
avec vecteur unitaire sur l'axe Ox et on se place dans le cas traité précédemment pour l'étude de l'amortisseur, c'est-à-dire (I.2).
On admet de plus dans ce qui suit que la réponse du système dans le cas où amortisseur et excitation sont pris en compte peut s'écrire comme somme de la solution donnée par l'équation (6) et de la contribution due à l'excitation :
Q16. Montrer que l'équation différentielle caractérisant le système devient alors :
Q17. En utilisant l'équation (10) et en privilégiant une représentation complexe, vérifier que :
Q18. Exprimer la grandeur en fonction de et expliciter le sens physique de .
Q19. Trouver la condition sur puis sur pour laquelle est maximale.
Q20. Si l'on considère une période moyenne des vagues en mer de 8 s , que peut-on conclure sur le mouvement de la plateforme?
Partie II - Modélisation : codage
On souhaite maintenant obtenir et de façon numérique et comparer les résultats obtenus à ceux fournis par les solutions analytiques précédentes pour . On rappelle que et représentent respectivement la position de la masse et l'énergie mécanique totale en fonction du temps.
Pour cela, le temps est discrétisé en points avec un pas de temps constant . Les pas sont effectués pendant la simulation de durée totale . On note respectivement et les valeurs de et à .
À chaque pas, les équations du mouvement reliant et à et sont utilisées afin d'obtenir les valeurs de et . Les conditions initiales et sont connues et permettent de démarrer le processus d'intégration numérique. Deux algorithmes distincts (Euler et Leapfrog) vont être utilisés dans la suite.
Pour l'écriture du code, on se place dans le cas le plus général, c'est-à-dire avec amortissement et excitation harmonique externe. Les variables et tableaux suivants sont notamment choisis :
N nombre de points sur l'axe des temps utilisés pendant toute la simulation
t[] tableau des temps (s), de dimension N
x[] tableau des positions (m), de dimension N
v[] tableau des vitesses (m.s }\mp@subsup{}{}{-1}\mathrm{ ), de dimension }
E[] tableau des énergies totales (J), de dimension N
F[] tableau des forces d'excitation (N), de dimension N
dt pas de temps (s)
tmax temps total de la simulation (s)
k constante de raideur du ressort (N.m -1)
m masse du système (kg)
om0 }\quad\mp@subsup{\omega}{0}{}(\mp@subsup{s}{}{-1}
zeta \zeta(sans unité)
Tableau 1 - Principaux tableaux et principales variables utilisés pour la résolution numérique
On rappelle qu'un aide-mémoire sur numpy est fourni en Annexe, page 10.
Q21. Écrire les lignes de code permettant de définir l'entier . On suppose et connus et fixés par l'utilisateur en début de code.
Q22. Écrire alors l'instruction permettant de définir le tableau t qui contient toutes les valeurs de telles que : . On rappelle que le temps est discrétisé en points avec un pas de temps constant et que pas sont effectués.
Q23. En effectuant des développements de Taylor de et tronqués à l'ordre 1 , on obtient l'algorithme d'Euler, où et sont évalués au même temps selon le schéma donné figure 3, page 7 :
Donner les expressions de et en fonction de et .
Figure 3 - Discrétisation en temps utilisée dans le cas de l'algorithme d'Euler. Les conditions initiales correspondent à ( )
Q24. Écrire la boucle en permettant d'obtenir toutes les valeurs de , et où i correspond à un point sur l'axe des temps. On précisera les variables éventuellement introduites en supposant qu'elles ont été définies dans le code.
Q25. Dans l'algorithme de Leapfrog, les sont évalués aux temps entiers, c'est-à-dire à , alors que les sont évalués à selon le schéma donné figure 4. Ainsi, pour cet algorithme, représente de façon approchée la position à l'instant , et représente de façon approchée la vitesse à l'instant .
Figure 4 - Discrétisation en temps utilisée dans le cas de l'algorithme de Leapfrog. Les conditions initiales correspondent à ( )
Pour le système considéré, montrer alors que et prennent les formes suivantes:
Q26. Quel problème pose l'évaluation de ?
Dans la suite, on préfèrera ainsi évaluer .
Q27. Comment obtenir à partir de et ?
Q28. En introduisant deux variables fac1 et fac2 correspondant respectivement à et , écrire la boucle en i permettant d'obtenir toutes les valeurs de et .
Q29. Compléter la boucle de la question Q28 avec le calcul du terme d'énergie totale.
Q30. Écrire une fonction integration(F) qui prend en argument le tableau des forces d'excitation et renvoie les tableaux x[] et E[] complétés.
On introduira pour cela une variable algo supposée définie en global, permettant d'appliquer l'algorithme d'Euler si algo0 ou de Leapfrog si algo1.
On considèrera également le cas .
Q31. Écrire une fonction force( ) qui prend en argument , et de l'équation (9) et retourne la valeur de pour un temps t donné.
Q32. Écrire une fonction force_exc() qui complète et retourne le tableau F[] des forces d'excitation en fonction du booléen exc défini globalement valant True si une excitation est appliquée au système, False sinon.
Dans le cas où excTrue, on appellera la fonction force définie précédemment en question Q31. Dans le cas où excFalse, on prendra alors : .
Q33. Donner alors les lignes de code permettant de réaliser la simulation numérique à partir des fonctions précédentes.
Q34. On souhaite désormais estimer la qualité des résultats numériques par rapport aux données analytiques de référence. Écrire une fonction ema(d, dref) qui calcule l'erreur maximale absolue entre un jeu de données numériques dn et analytiques da. On supposera que les tableaux dn et da sont de même dimension .
Q35. Pour le problème particulier qui nous intéresse, si l'on souhaite appliquer cette fonction aux tableaux contenant les données numériques et analytiques pour , quel est l'indice maximal de ces tableaux à considérer?
Réécrire alors la fonction ema pour qu'elle soit applicable aux deux algorithmes considérés.
Partie III - Modélisation : analyse des résultats d'un cas simple
Toutes les données numériques suivantes ont été obtenues avec : tonnes, et et la valeur de obtenue en question , dans le cas d'un système sans amortissement et sans excitation externe. Le tableau 2 en page 9 présente les erreurs maximales absolues (EMA) calculées avec la fonction ema des énergies obtenues numériquement par rapport à celles obtenues analytiquement, pour les deux algorithmes envisagés et divers pas de temps.
Q36. Justifier l'ordre de grandeur des considérés du tableau 2 pour la discrétisation en temps utilisée.
Q37. En utilisant les données numériques du tableau 2 donner l'ordre approximatif de l'erreur globale sur des deux algorithmes considérés. Justifier votre réponse.
Q38. Dans le cas simple de l'algorithme d'Euler, comment augmente lorsqu' on passe de à ? Relier alors ce résultat aux données du tableau 2.
EMA
Euler
Leapfrog
0,050
128,0203160
0,0837314
0,010
15,1373529
0,0033484
0,005
7,1159053
0,0008371
0,001
1,3556230
0,0000335
Tableau 2 - EMA obtenues pour (en J) par rapport à la valeur analytique, pour différents pas de temps , dans le cas où il n'y a pas d'amortissement et d'excitation externe
Une propriété importante que devrait vérifier un algorithme d'intégration est la réversibilité dans le temps : en partant des positions et vitesses d'un temps et en appliquant un pas de temps , un algorithme réversible en temps devrait redonner les positions et vitesses du temps .
En pratique, en partant d'un couple ( ), on applique donc tout d'abord un pas pour déterminer ( ), puis on applique un pas afin d'obtenir ( ). Si ( ) = ( ), alors l'algorithme est dit réversible en temps.
Q39. Pourquoi s'agit-il d'une propriété importante à vérifier pour le problème considéré ?
Q40. Donner l'expression de en fonction de pour les deux algorithmes considérés. Peut-on déjà conclure sur la réversibilité en temps de chacun de ces algorithmes?
Q41. Donner alors l'expression de en fonction de lorsque nécessaire et conclure sur la réversibilité en temps.
Q42. On s'intéresse enfin à une simulation de plus grande durée ( ). La figure donne l'évolution de l'erreur absolue sur entre données numériques et analytiques ( ) pour les deux algorithmes choisis. Que peut-on mettre en évidence sur cette figure ?
Figure 5 - Erreurs absolues calculées sur la position de la masse à , pour les deux algorithmes considérés
Q43. Conclure sur les avantages et les inconvénients de chacun de ces algorithmes et sur leur adéquation pour le traitement numérique de ce problème dans le cas où on envisage une simulation de plusieurs heures.
ANNEXE
Aide-mémoire sur numpy
Les bibliothèques sont importées de la façon suivante :
from math import *
import numpy as np
La création d'un tableau numpy tab à une dimension possédant éléments, tous initialisés à 0 , est réalisée à l'aide de l'instruction :
>>> tab=np.zeros(n)
Celle d'un tableau numpy tab à une dimension possédant éléments, uniformément répartis entre deux valeurs debut et fin, se fait avec :