Bonjour,
Je cherche à coder un programme destiné à la résolution de treillis 2D par la méthode des éléments finis. Cependant, en cherchant à assembler une matrice, je me retrouve avec une erreur d'index qui semble venir de la taille des matrices (ligne 45). Avez-vous une idée d'où peut venir cette erreur ?
Cordialement,Code:clear //elements elements=[1,2;1,3;2,3;2,4;3,4;3,5;4,5;4,6;5,6;5,7;6,7]; //nombre d'éléments nombre_ele=size(elements,1); //nombre de noeuds nombre_noeuds=7; //coordonnées des noeuds noeuds_coor=[0,0;1.8,3.118;3.6,0;5.4,3.118;7.2,0;9,3.118;10.8,0]; //inconnues nodales inc_nodales=[1,2,3,4;1,2,5,6;3,4,5,6;3,4,7,8;5,6,7,8;5,6,9,10;7,8,9,10;7,8,11,12;9,10,11,12;9,10,13,14;11,12,13,14]; //Définition de la section et du module d'Young S=ones(11,1)*3*10^(-4); E=ones(11,1)*70*10^9; //définition des matrices deplacements=zeros(2*nombre_noeuds,1); force=zeros(2*nombre_noeuds,1); Ke=zeros(2*nombre_noeuds); //force appliquées force(2)=-280000; force(6)=-210000; force(10)=-280000; force(12)=-360000; //Conditions limites deplacements (1,1)=0; deplacements (2,1)=0; deplacements (14,1)=0; // Assemblage de la matrice de rigidité élementaire for e=1:nombre_ele L(e)=sqrt((noeuds_coor(elements(e,2),1)-noeuds_coor(elements(e,1),1))^2+(noeuds_coor(elements(e,2),2)-noeuds_coor(elements(e,1),2))^2); C=(noeuds_coor(elements(e,2),1)-noeuds_coor(elements(e,1),1))/L(e); S=(noeuds_coor(elements(e,2),2)-noeuds_coor(elements(e,1),2))/L(e); Ke=(S(e)*E(e)/L(e)*[C*C C*S -C*C -C*S;C*S S*S -C*S -S*S;-C*C -C*S C*C C*S; -C*S -S*S C*S S*S]); // Assemblage de la matrice de rigidité globale inc_nodales_vec=inc_nodales(e,:); for i=1:4 for j=1:4 K(inc_nodales_vec(1,i),inc_nodales_vec(1,j))= Ke(inc_nodales_vec(1,i),inc_nodales_vec(1,j))+Ke(i,j); end end end
Alexis,
-----