IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

éléments finis dans matlab


Sujet :

MATLAB

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 1
    Par défaut éléments finis dans matlab
    J'ai un soucis ; j'arrive pas pas à trouver les 8 premiers modes et fréquences d'une structure de treillis composé de 18 poutres(voir document joint) en 3D (6 degrés de liberté pour chaque nœuds), les nœuds sont les extrémités de chaque poutre. Le principe est le suivant :
    1- Discrétiser la structure en divisant chaque élément poutre de la structure en nombre identique de sous éléments.
    2-Déterminer les coordonnées de tous les (sous) nœuds de la structure après discrétisation.
    3-Lister tous les sous éléments de la structure
    4-lister les degrés de liberté de tous les nœuds de la structure
    5-Contruire la matrice de localisation grâce à la fonction locel de Matlab
    6-Construiure la matrice de rotation qui sert de passer des axes locaux des éléments à l'axe global pour obtenir la matrice de transformation qui sert à assembler les matrices de raideur et masse élémentaires en matrice de raideur et masse global de la structure. (P.S.: ne pas oublier d'ajouter la masse ponctuelle tout au dessus de la structure)
    7-Définir les conditions limites
    8-Utliser la fonction [V,D] =eigs() pour déterminer les 8 modes et pulsation
    Voici l'énoncé du problème avec mon code matlab.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    clear all 
    close all
    clc
    %% properties of the beams
    N=2;
    A =1e-3 ;        % Cross section [m^2]
    D =sqrt(4*A/pi);   % Cross section diameter [m]
    rho = 2700;           % density of material [kg/m^3]
    E = 69e9;            % Young modulus [Pa]
    mu = 0.33;              % Poisson coefficient [-]
    G = E/(2+2*mu);        % Shear modulus [Pa]
    I_y = (pi*D^4)/64;  % Cross section moment of inertia along z [m^4]
    I_z = I_y;              % Cross section moment of inertia along y [m^4]
    J_x = 2*I_y;% Cross section torsion c [m^4]
    r=sqrt(I_z/A); %giration radius of circular cross section 
     
    %% lumped mass:
    m=20;  % kg
     
    %% coordinates of principal nodes and beam list
    %coord=zeros(18,3);
     
    for i=0:5
        coord(3*i+1,:)=[i*tand(4) 0 i];
        coord(3*i+2,:)=[0.6 -0.3+i*tand(2) i];
        coord(3*i+3,:)=[0.6 0.3-i*tand(2) i];
    end
    Coord=coord
    elementNodes=zeros(48,2);
    elementNodes(1:9,:)=[1 2;...
        2 3;...
        3 1;...
        3 6;...
        1 4;...
        2 5;...
        1 5;...
        3 5;...
        1 6];
    for i=1:4
        elementNodes(i*9+1:i*9+9,:)=elementNodes(1:9,:)+3*i;
    end 
    elementNodes(end-2:end,:)=[16 17;...
        17 18;...
        16 18];
    numberNodes=size(coord,1);
    numberElements=size(elementNodes,1);
     
    hold off
    for i=1:numberElements
        element1=elementNodes(i,1);
        element2=elementNodes(i,2);
        x=[coord(element1,1) coord(element2,1)];
        y=[coord(element1,2) coord(element2,2)];
        z=[coord(element1,3) coord(element2,3)];
        plot3(x,y,z,'-ok');hold on
    end
    axis equal
    subNO
     
    %% List of subelements of structure
    subelement=zeros(numberElements*N,2);
    index = 19;
    k=1;
    if N==1
        disp('Please N must be upper than one or equal to zero in case of no subelement in a beam in the subNO file; thanks')
    elseif N==0
        subelement=elementNodes;
    else
    for i=1:numberElements
       subelement(k,:)=[elementNodes(i,1) index];
     
        k=k+1;
       index= index+1;
        for j=2:N-1
           subelement(k,:) = [index-1 index+1-1];
          index = index+1;
        k=k+1;
        end
        subelement(k,:) = [index-1 elementNodes(i,2)];
        k =k+1;
    end
    end
     
    %% list of DOFs of structure
    t= ((N-1)*length(elementNodes) + numberNodes);
    dofList=zeros(t,6);
     
    for i=1:t
        for j=1:6
     
            dofList(i,j)=(i-1)*6+j;
        end
    end
    %%
     %%Localisation Matrix
        Locel=zeros(N*numberElements,12);
    for i=1:N*numberElements
        dof_1=dofList(subelement(i,1),:); % dofs of 1st node
        dof_2=dofList(subelement(i,2),:); % dofs of 2nd node
        Locel(i,:) = [dof_1 dof_2];
    end
            %% 
     
     
     
     
       % Kglobal(locel,locel)=Kglobal(locel,locel)+T(:,:,s)'*Kel*T(:,:,s);
       % Mglobal(locel,locel)=Mglobal(locel,locel)+T(:,:,s)'*Mel*T(:,:,s);
     
    p3=[0 -0.3 0];
    X3=0; Y3=-0.3;  Z3=0;
    eX = [1 0 0];
    eY = [0 1 0];
    eZ = [0 0 1];  % Global axis (structure)
    k=1;
    n=N*numberElements;
    T=zeros(12,12,n)
    l=zeros(N*numberElements,1)
    for i=1:numberElements
     
        L(i,:)=norm(coord(elementNodes(i,2),:)-coord(elementNodes(i,1),:)); % length of each beam
        l=L(i,:)/N %length of each subelement(discretized beam)
       ex(i,:)=(coord(elementNodes(i,2),:)-coord(elementNodes(i,1),:))/norm(coord(elementNodes(i,2),:)-coord(elementNodes(i,1),:));
       d2(i,:)=(coord(elementNodes(i,2),:)-coord(elementNodes(i,1),:));
       d3(i,:)=p3-coord(elementNodes(i,1),:);
       ey(i,:)=cross(d3(i,:),d2(i,:))./norm(cross(d3(i,:),d2(i,:)));
       ez(i,:)=cross(ex(i,:),ey(i,:));
     
       R(:,:,i)=[dot(eX,ex(i,:)) dot(eY,ex(i,:)) dot(eZ,ex(i,:));...  
       dot(eX,ey(i,:)) dot(eY,ey(i,:)) dot(eZ,ey(i,:));...
       dot(eX,ez(i,:)) dot(eY,ez(i,:)) dot(eZ,ez(i,:)) ]
     Te=[R zeros(3) zeros(3) zeros(3);...
      zeros(3) R  zeros(3) zeros(3);...
      zeros(3) zeros(3) R zeros(3);...
      zeros(3) zeros(3) zeros(3) R];
     
     
    end
    %%Assembly 
     
     
    Kel=[(E*A/l)           0           0           0           0           0           -(E*A/l)            0           0           0           0           0           ;
         0          ((12*E*I_z)/l^3)    0           0           0       (6*E*I_z)/(l^2)     0       (-12*E*I_z)/(l^3)   0           0           0      (6*E*I_z)/(l^2)  ;
         0                  0   (12*E*I_y)/(l^3)    0    (-6*E*I_y)/(l^2)   0               0               0   (-12*E*I_y)/(l^3)   0   (-6*E*I_y)/(l^2)    0           ;
         0                  0           0       (G*J_x)/(l)     0           0               0               0           0       (-G*J_x)/(l)    0           0           ;
         0                  0   (-6*E*I_y)/(l^2)    0       (4*E*I_y)/(l)   0               0               0   (6*E*I_y)/(l^2)     0       (2*E*I_y)/(l)   0           ;
         0          (6*E*I_z)/(l^2)     0           0           0       (4*E*I_z)/(l)       0       (-6*E*I_z)/(l^2)    0           0           0       (2*E*I_z)/(l)   ;
         (-E*A)/(l)         0           0           0           0           0           (E*A)/(l)           0           0           0           0           0           ;
         0          (-12*E*I_z)/(l^3)   0           0           0       (-6*E*I_z)/(l^2)    0       (12*E*I_z)/(l^3)    0           0           0       (-6*E*I_z)/(l^2);
         0                  0   (-12*E*I_y)/(l^3)   0    (6*E*I_y)/(l^2)    0               0               0   (12*E*I_y)/(l^3)    0   (6*E*I_y)/(l^2)     0           ;
         0                  0           0       (-G*J_x)/(l)    0           0               0               0           0       (G*J_x)/(l)     0           0           ;
         0                  0   (-6*E*I_y)/(l^2)	0    (2*E*I_y)/(l)      0               0               0   (6*E*I_y)/(l^2)     0   (4*E*I_y)/(l)       0           ;
         0          (6*E*I_z)/(l^2)     0           0           0       (2*E*I_z)/(l)       0       (-6*E*I_z)/(l^2)    0           0           0       (4*E*I_z)/(l)]  ;
     
     
     
     
    % Elementary mass matrix
    Mel = rho*A*l* ...
       [  1/3    0              0                0       0         0       1/6      0       0        0         0           0;   
           0   13/35            0                0       0      11*l./210    0      9/70     0        0         0        -13*l./420;
           0     0            13/35              0    -11*l./210    0        0       0      9/70      0      13*l./420       0;
           0     0              0               (r^2)/3     0         0        0       0       0      (r^2)/6       0           0;
           0     0         -11*l./210         0     (l)^2/105     0        0       0   -13*l./420    0      -(l)^2/140       0;
           0  11*l./210      0                0       0       l.^2/105    0   13*l/420    0        0         0        -l.^2/140; 
          1/6    0              0                0       0         0       1/3      0       0        0         0           0; 
           0   9/70             0                0       0       13*l./420   0     13/35     0        0         0        -11*l./210;
           0     0            9/70               0     -13*l./420   0        0       0     13/35      0      11*l/210       0;
           0     0              0              (r^2)/6     0         0        0       0       0      r^2/3       0           0;
           0     0         13*l./420          0     -((l)^2)/140    0        0       0    11*l./210    0       (l^2)/105       0;
           0  -13*l./420     0                0       0      -(l^2)/140    0   -11*l./210   0        0         0         ((l)^2)/105];
     
       %% assembly process: 
        Nnode_tot = (N-1)*length(elementNodes) + numberNodes;      % Number of nodes of structure
        Ndof = Nnode_tot*6;
        K_global=zeros(Ndof,Ndof);  %reset the stiffness matrix of the element in global reference frame
        M_global=zeros(Ndof,Ndof);  %reset the stiffness matrix of the element in global reference frame
     
        for k=1:numberElements
            for s=1:N*numberElements
        K_global(Locel(i,:),Locel(i,:))=K_global(Locel(i,:),Locel(i,:))+T(:,:,s)'*Kel*T(:,:,s);
        M_global(Locel(i,:),Locel(i,:))=M_global(Locel(i,:),Locel(i,:))+T(:,:,s)'*Mel*T(:,:,s);
            end
        end
    M_global(91,91)=M_global(91,91)+ m; % lumped mass is located at the 16th node
    M_global(92,92)=M_global(92,92)+ m;
    M_global(93,93)=M_global(93,93)+ m;
     
    % Boundary conditions.
    % nodes 1,2 and 3 are fixed.
    fixNode_1 = [doflist(1,:)];
    fixNode_2 = [doflist(2,:)];
    fixNode_3 = [doflist(3,:)];
     
     
    clampedDOF = [fixNode_1  fixNode_2   fixNode_3 ];
     
    K_global(clampedDOF, :) = [];
    K_global(:, clampedDOF) = [];
    M_global(clampedDOF, :) = [];
    M_global(:, clampedDOF) = [];
     
    [V,D]=eigs(K_global,M_global,5,'sm');
    omega = diag(D.^(0.5));
    f = omega/(2*pi);
     
    %% Damping matrix
     
    Coeff = 2*[omega(1) 1/omega(1); omega(2) 1/omega(2)]^(-1)*[0.01 0.01]'; % Eq. 3.20 p.156
    a = Coeff(1);
    b = Coeff(2);
     
    CGlobal = a*KGlobal + b*MGlobal;  % Eq. 3.19 p.156
    eps = 1/2*(a.*omega + b./omega);
    Merci
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. éléments finis matlab
    Par saoudiabdenour1 dans le forum MATLAB
    Réponses: 0
    Dernier message: 13/02/2017, 22h12
  2. Recherche élément médian dans tableau non trié
    Par chicorico dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2009, 17h39
  3. Réponses: 2
    Dernier message: 28/04/2006, 13h28
  4. [Collections]enlever des éléments répétés dans une ArrayList
    Par apan dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 23/03/2006, 13h28
  5. [Doc] Solveur éléments finis
    Par plegat dans le forum Mathématiques
    Réponses: 2
    Dernier message: 02/02/2006, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo