Erreur d'index sur Scilab
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Erreur d'index sur Scilab



  1. #1
    invite4e138e41

    Erreur d'index sur Scilab


    ------

    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 ?


    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
    Cordialement,

    Alexis,

    -----

  2. #2
    umfred

    Re : Erreur d'index sur Scilab

    a priori, je dirais que l'erreur vient du fait que tu as 2 variables S et que ton opération n'agit pas comme tu le souhaites.

    au début, tu définies S comme S=ones(11,1)*3*10^(-4); (un vecteur)
    et dans ta boucle, tu la redéfinies par S=(noeuds_coor(elements(e,2),2 )-noeuds_coor(elements(e,1),2))/L(e); (un scalaire)
    donc dans ton opération de K(e), tu utilises ce dernier S et pas celui du début quand tu appelles S et S(e), donc tu ne peux pas indexer un scalaire au 2nd tour de ta boucle, ce qui te génère l'erreur.
    Il faut donc que tu renommes l'une de tes 2 variables.

Discussions similaires

  1. Erreur scilab
    Par invite3195f5cf dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 04/01/2017, 17h52
  2. Programme Scilab, erreur invalid index
    Par invitec94a53e1 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 16/11/2012, 23h18
  3. SCILAB-"Index invalide"
    Par invite3e1e58b5 dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 01/12/2011, 19h07
  4. [scilab] Problème sur une erreur d'index invalide
    Par invite42f97068 dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 15/04/2010, 12h19
  5. [scilab]Index invalide
    Par invite1cede1ba dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 29/11/2009, 11h13