Bonjour,
Avec la méthode des éléments finis, je dois écrire un programme Scilab permettant de résoudre par méthode explicite un problème de barre à 1 dimension. J'ai déjà écris quelque chose mais suis surpris pas les résultats que j'obtiens. Je poste donc ici pour vous demander votre avis, et éventuellement corriger ce qui ne va pas. Je joins ici également le sujet : Task_2.pdf (pour l'instant je cherche juste à écrire le programme, pas répondre aux questions ^^ ).
Explication du programme
Je considère que chaque élément de ma barre est un ressort de raideur où est le module de Young, la section de la barre, le nombre de nœuds de ma barre (et donc le nombre d'éléments de ma barre), et la longueur totale de ma barre. La matrice de raideur est donc :
Je pose l'hypothèse que ma barre est fixe à une extrémité, ma matrice devient donc :
Et donc pour trouver le déplacement de chaque nœud à l'instant je cherche à résoudre l'équation suivante :
où est la matrice des masse (matrice diagonale, ou chaque terme vaut la masse divisé par le nombre de nœuds), la matrices des force extérieures, pour mon problème, pour l'instant, il s'agit juste d'une force constante à l'extrémité.
Pour résoudre cette équation j'utilise la méthode explicite, comme vous pouvez le voir ci-dessous dans l'extrait de code Scilab :
Ci-dessous le code complet commenté :Code:D = zeros(n, nt); //d : déplacement Dp = zeros(n, nt); // d point : vitesse Dpp = zeros(n, nt); // d point point : accélération //valeurs initiales du déplacement, vitesse, accé Dinit = zeros(n,1); Dpinit = zeros(n,1); Dppinit = zeros(n,1); Rint= zeros(n, nt); Rint(:,1) = K * Dinit; D(:, 1) = Dinit + deltat * Dpinit + 1/2*deltat^2*inv(M)*(P(:,1)-Rint(:,1)); Dp(:,1) = Dpinit + 1/2*deltat*Dppinit; for i=1:(nt-1) Dpp(:,i) = inv(M)*(P(:,i)-Rint(:,i)); D(:,i+1) = D(:,i) + deltat * Dp(:,i) + deltat^2 * inv(M)*(P(:,i)-Rint(:,i)); Rint(:,i+1) = K * D(:, i+1); Dp(:,i+1) = Dp(:,i) + deltat*Dpp(:,i); end
Cliquez pour afficher
Résultat obtenu
J'affiche donc le résultat sous forme 3D : axe X ce sont les coordonnées de la barre, axe Y le temps, et axe Z le déplacement des nœuds :
deplcament.png
Comme vous pouvez le voir, j'obtiens un déplacement des nœuds périodique alors que la force que j'applique est constante. Je trouve cela très bizarre étant donné que si j'applique une force constante c'est "comme si" je faisais un essai de traction... Or lors d'un essai de traction la barre est constamment en extension... Ensuite je me dis que j'ai modélisé tout ça par des ressorts, est-ce une erreur ? Je ne vois pas comment faire autrement et je ne sais pas si je dois croire ce le résultat que j'obtiens... Quel est donc votre avis ? Merci.
-----