J'essaie de m'initier aux méthodes des éléments finis.Programmation des éléments finis Méthode
Tout mon code est adapté à partir des pages de liens suivants 16-20 http://homepages.cae.wisc.edu/~suresh/ME964Website/M964Notes/Notes/introfem.pdf
Je suis la programmation ainsi que dans Matlab pour effectuer une analyse par éléments finis sur un seul élément de cube 8 noeuds. J'ai défini les xi, eta, axes locaux zeta (on peut penser à ce que x, y, z pour l'instant), donc j'obtenir les fonctions de forme suivantes:
%%shape functions
zeta = 0:.01:1;
eta = 0:.01:1;
xi = 0:.01:1;
N1 = 1/8*(1-xi).*(1-eta).*(1-zeta);
N2 = 1/8*(1+xi).*(1-eta).*(1-zeta);
N3 = 1/8*(1+xi).*(1+eta).*(1-zeta);
N4 = 1/8*(1-xi).*(1+eta).*(1-zeta);
N5 = 1/8*(1-xi).*(1-eta).*(1+zeta);
N6 = 1/8*(1+xi).*(1-eta).*(1+zeta);
N7 = 1/8*(1+xi).*(1+eta).*(1+zeta);
N8 = 1/8*(1-xi).*(1+eta).*(1+zeta);
La matrice [N]
doit être organisé comme ceci selon le texte que je lis:
%N Matrix
N= [N1 0 0 N2 0 0 N3 0 0 N4 0 0 N5 0 0 N6 0 0 N7 0 0 N8 0 0;
0 N1 0 0 N2 0 0 N3 0 0 N4 0 0 N5 0 0 N6 0 0 N7 0 0 N8 0;
0 0 N1 0 0 N2 0 0 N3 0 0 N4 0 0 N5 0 0 N6 0 0 N7 0 0 N8];
pour trouver la matrice [B]
je dois utiliser la matrice [D]
suivante:
%%Del Matrix for node i
%[ d/dx 0 0
% 0 d/dy 0
% 0 0 d/dz . . .
% d/dy d/dx 0
% 0 d/dz d/dy
% d/dz 0 d/dx ]
qui est un opérateur pour continuer [N]
. Plus tard, comme le montre le texte, je ferai des calculs impliquant des intégrales de cette matrice [B]
sur le volume de cet élément. Donc, ma question est, comment puis-je stocker ces fonctions de forme polynomiale dans une matrice, opérer sur eux avec différenciation, puis les intégrer numériquement. Je peux dire avec la façon dont je l'ai mis en place en ce moment, cela ne fonctionnera pas parce que j'ai défini les fonctions comme un vecteur sur un intervalle [0,1]
puis en stockant ces vecteurs dans la matrice [N]
. Ensuite, en utilisant diff()
fonction de différencier de manière appropriée pour trouver la matrice [B]
. Mais puisque les éléments de matrice de [B]
sont maintenant des vecteurs sur un intervalle [0,1]
je pense que cela va causer des problèmes. Comment feriez-vous les gars à propos de ces calculs décrits dans le manuel que j'ai posté ci-dessus?
Eh oui, la façon de le faire est de stocker les valeurs de la fonction de base aux points de gauss dans l'élément ou d'un domaine « parent ».Et utilisez une matrice jacobienne pour l'intégration. –