TP sur un problème de géologie.
Le but de ce TP est d'aborder un problème de "géologie". Nous allons modéliser la propagation d'un front d'onde dans le sol. La difficulté sera de tenir compte des inhomogénéités du terrain pour décrire la propagation de l'onde. Ce TP se décomposera en sous parties- La définition du milieu,
- et le calculs effectifs de la propagation de l'onde.
La définition du milieu
Le terrain que nous allons chercher à modéliser sera représentée par une fonction à coordonnées et (la profondeur), qui à chaque position associe une densité. Dans notre modèle, cette densité indiquera la vitesse de propagation des ondes en ce point. Par exemple, pour un terrain parfaitement homogène, on définira une fonction comme ci-après :
La fonction ci-dessus renvoie pour toutes positions la valeur constante , donc dans tout le milieu l'onde se propage à vitesse constante. Cependant, ce modèle est assez peu réaliste car le sol est généralement structuré par couches. On parle de milieu stratifié.
Écrire une fonction qui définit un milieu contenant couches dans lesquelles nous avons trois vitesses constantes différentes (prendre les vitesses , et et des couches de largeurs ). La vitesse varie donc uniquement selon la profondeur .
Écrire une fonction qui prend en argument un milieu (c'est à dire une fonction) et qui renvoie l'affichage du milieu considéré. Utiliser pour cela la commande density_plot
Remarque : À l'aide de l'option cmap
, vous pouvez donner un meilleur aspect à votre graphique. Vous pouvez également vous amuser avec la commande sorted(colormaps)
pour trouver tous les choix possibles de cmap
.
Une manière de définir un obstacle est de considérer une zone dans laquelle la vitesse de l'onde est nulle. Dans ce cas, l'onde ne se propage plus et est arrêté par l'obstacle.
À l'aide des milieux stratifié et homogène défini ci-dessus, définisser nouveaux milieux contenant chacun un obstacle (de la forme de votre choix). Afficher les avec la fonction définie précédemment.
La propagation d'une ondes
Nous allons maintenant modéliser la propagation d'une onde dans nos différents domaines. Pour simplifier, on supposera que la position du front d'onde est décrite par : où l'angle ne dépend pas de et est une distance postivie . Comme les ondes se propagent dans le sol, donc vers le bas, on supposera (ainsi, la coordonnée est toujours négative).
Dans une direction fixée, on suppose que la vitesse vérifie
Étant donnée un angle fixé et un milieu, écrire une fonction qui renvoie . On rappelle que la vitesse en un point est définie par la densité du milieu en ce point.
L'équation différentielle ne peut pas être résolue exactement, car la fonction est a priori quelconque. Nous allons donc utiliser une méthode numérique de résolution. L'idée est d'utiliser l'algorithme suivant : où , et est un paramètre petit. L'idée de la méthode est de remplacer la dérivée par un taux d'accroissement. Remarquer que quand , ce taux d'accroissement tend vers la dérivée . Dans l'expression ci-dessus, on peut isoler comme suit : Étant donnée , on peut calculer la suite des avec l'expression ci-dessus jusque , où est un paramètre choisi.
À l'aide de la méthode d'euler explicite, écrire une fonction prenant en paramètre la fonction et le temps , et qui résout l'équation . Cette fonction devra renvoyer la liste des solutions calculées à chaque temps , où , jusque .
On considère un émetteur placé sur le sol en coordonnée . Il émet une onde qui va se propager dans toutes les directions . Avec ce que nous avons développé jusqu'ici, le but est de représenter l'onde se propageant dans un milieu choisi.
Écrire une fonction qui prend en argument un milieu et un temps de simulation, et qui renvoie une animation du front d'onde se propageant dans le milieu considéré (tester avec les différents milieux définis).
Indication : Pour calculer la solution dans 'toutes' les directions , considérer simplement valeurs de reparties équitablement dans l'intervalle .