Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Erreur scilab, index invalide

Posté par
Alexis0304
14-12-19 à 20:40

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 ?


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

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !