Bonjour,
Je vous écris car ça fait environ 20h que je passe pour un problème que je dois faire pour les cours, en apparence simple et pourtant je ne trouve toujours pas la solution et je commence à en avoir marre ...
Bref, je dois écrire un code matlab pour résoudre le prolème 1D suivant:
Une barre (au sens RDM du terme, hypothèses 1D, etc) est encastrée dans un mur. A t=0, on applique une force F à l'extrémité libre de la barre jusqu'au temps tl. Une onde de pression (un créneau de longueur c*tl, où c est la vitesse de l'onde, dépendant des caractéristiques mécaniques de la barre) se propage dans la barre, se réfléchit sur l'extremité encastrée et repart dans l'autre sens.
On nous demande de résoudre le problème par un algorithme de Newmark. Rien de compliqué a priori, il suffit d'écrire le système matricielle MU''+KU=F obtenu par éléments finis, obtenus en assemblant des matrices masses et raideur élémentaires, etc ...
J'ai implémenté le tout en matlab et fait des tests et là ... ça m****. En gros:
1) Je suis a priori sur que les caractéristiques mécaniques de la barre sont telles que l'on peut "voir" quelque chose, le pas de temps et le maillage sont corrects, etc
2) J'ai testé mon schéma de Newmark sur un cas simple (système masse-ressort 1D) et les résultats sont corrects
3) Ayant passé du temps sur mon problème sans rien trouver, j'ai essayé de résoudre avec un schéma de Runge-Kutta d'ordre 4 ... et ça marche (en tout cas ça a l'air
Avec des paramètres tels que la solution numérique devrait donner une bonne approximation (bruitée, puisqu'on tente d'approcher un créneau par des solutions constantes par morceaux, mais correcte quand même), j'obtiens bien une "onde" qui semble se propager à la même vitesse que le créneau, mais en même temps la contrainte augmente à l'extrémité encastrée alors qu'elle devrait être nulle, ce qui fait que ma solution numérique est complètement "fausse". (il suffit de faire tourner le programme barre_1D en PJ pour le voir). En gros ce qui m'embête le plus c'est cette espèce de "contrainte parasite" qui apparaît à l'extrémité encastrée de la barre, vu que l'onde semble se propager correctement.
Par rapport aux points soulevés ci-dessus, le 2) semble suggérer que mon schéma de Newmark est bien posé et donc que ma formulation EF est fausse, mais le 3 semble dire le contraire ... Après je pense qu'il est plus facile de se tromper sur la formulation EF que sur le schéma de newmark, mais là je coince vraiment .
Bref, je mets mon code en PJ, en espérant qu'un âme charitable daignera s'intéresser à mon problème ... le programme principal est "barre_1D", après je pense que le code est pas trop mal écrit et facile à comprendre, donc j'espère vraiment que quelqu'un pourra m'aider ...
Merci d'avance!
PS: Je précise que j'ai tenue compte de l'encastrement en résolvant un système réduit. Si U est le vecteur des déplacements aux noeuds de ma barre, l'encastrement est au dernier noeud, donc je résous un système réduit en enlevant les dernière lignes/colonnes de K, M et U
Partager