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 :

calcul de modes propres et des matrices masse raideurs


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut calcul de modes propres et des matrices masse raideurs
    Bonjour

    je suis débutante sur Matlab et je dois modéliser une structure et calculer les modes propres§§ pourriez vous m'aider s'il vous plait

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Il nous faut plus de précisions

    Quel problème rencontres-tu avec MATLAB ?

    Montre nous ce que tu as déjà codé, même si c'est faux.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    merci pour votre réponse, en fait je cherche à calculer les modes propores et faire un maillage à ma structure. vous croyez que c'est possible de le faire avec MATLAB

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    De quelles données disposes-tu ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    ma structure se compose de 21 barres et 10 noeuds.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    C'est un fichier Python, pourquoi vouloir utiliser MATLAB ?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Oui un fichier Python que j'ai généré sous salome meca. Je voudrais calculer les fréquences propres de cette structure en utilisant Matlab.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Voici déjà comment importer la géométrie de la structure :
    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
    fid = fopen('module.py', 'r');
    X = textscan(fid, '%s', 'delimiter', '\n');
    fclose(fid);
     
    % Recuperation des coordonnees des noeuds
    idx  = strncmp(X{1}, 'N', 1);
    subX = X{1}(idx);
     
    noeuds = zeros(numel(subX),3);
    for n = 1:numel(subX)
       noeuds(n,:) = sscanf(subX{n}, 'N%*d = geompy.MakeVertex(%f,%f,%f)'); 
    end
     
    % Recuperation de la connectivite des barres
    idx  = strncmp(X{1}, 'BARRE', 5);
    subX = X{1}(idx);
     
    barre = zeros(2,numel(subX));
    for n = 1:numel(subX)
       barre(:,n) = sscanf(subX{n}, 'BARRE%*d = geompy.MakeLineTwoPnt(N%d, N%d)'); 
    end
     
    barre = barre + 1;
     
    figure
    plot(noeuds(:,1), noeuds(:,2), 'ro', 'markerfacecolor', 'r');
    hold on
    line(noeuds(barre,1), noeuds(barre,2))
    axis equal vis3d
    Il ne te reste plus qu'à définir les matrices de rigidité locales à l'aide des longueurs et des sections de chaque barre et des caractéristiques de leurs matériaux. Puis à assembler le tout pour obtenir la matrice de rigidité globale.
    Images attachées Images attachées  

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup , le fopen m'ouvre le fichier et le je suppose que le r c'est pour le lire. Ce qui est bizzard c'est que quand je fais la même chose que toi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fid=fopen('module.py','r')
    il me donne -1 comme résultat !!
    J'ai essayé de le télécharger en utilisant : load('\users\anita\desktop\module.py'), ça ne marche pas non plus.
    Toi t'as réussi facilement à le lire sur matlab!! ou peut-être que je dois lui donner le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fid=fopen('\users\anita\desktop\module.py','r')
    Qu'est-ce que t'en penses?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Soit tu mets le fichier module.py dans le même dossier que celui où se trouve ton programme MATLAB, soit tu mets le chemin complet vers le fichier module.py dans l'appel à fopen.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    filename = 'module.py';
    pathname = '\users\anita\desktop\';
     
    fid = fopen(fullfile(pathname, filename), 'r');
    Par contre le chemin que tu nous montre semble bizarre
    Su quel système d'exploitation travailles-tu ?

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup ça marche super bien!! tu crois que je peux faire la figure en 3D.??

    [EDIT]
    C'est déjà fait en 3d. Je ne l'ai pas vu merci beaucoup

    [EDIT 2]
    Oups j'ai crié victoire avant l'heure je crois.
    En fait pour que je puisse voir ma structure en 3D je dois rajouter à plot (neouds(barre,3)) et neouds(:3)?? ce qui va donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    figure
    plot(noeuds(,:1),(noeuds(,:2), (noeuds(,:3), 'ro', 'markerfacecolor', 'r');
    hold on
    line(noeuds(barre,1), noeuds(barre,2), noeuds(barre,3))
    axis equal vis3d
    C'est correct??

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Je en sais pas pourquoi j'ai zappé la troisième dimension pour l'affichage

    Bref, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    figure
    plot3(noeuds(:,1), noeuds(:,2), noeuds(:,3), 'ro', 'markerfacecolor', 'r');
    hold on
    line(noeuds(barre,1), noeuds(barre,2), noeuds(barre,3))
    axis equal vis3d

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Parfait; ça marche super bien!! Est ce qu'on peut faire le maillage sur Matlab à cette structure??

    Sinon j'ai une autre question. Le code marche aussi si j'utilise une structure avec un nombre beaucoup plus important en barre et câble?? car j'essaye de l'utiliser pour une autre structure mais il n'arrive pas à détecter les barres ils m'affichent que les neouds

  14. #14
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Citation Envoyé par anita.crus Voir le message
    Est ce qu'on peut faire le maillage sur Matlab à cette structure??
    Je ne comprends pas la question. Dans le cas d'un treillis, la géométrie et le maillage sont confondus.

    Citation Envoyé par anita.crus Voir le message
    car j'essaye de l'utiliser pour une autre structure mais il n'arrive pas à détecter les barres ils m'affichent que les neouds
    Montre nous le fichier correspondant.
    Si la taille du fichier est trop importante, met le dans une archive zip ou rar

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    en fait pour la nouvelle structure, les barres ne sont pas détecter , j'ai ce résultats

    barre= empty matrix: 0-by-2
    size(barre)=0 2

    alors que j'ai plus de 200 barres
    à ton avis, c'est quoi le problème?? qu'est ce que je dois changer??

  16. #16
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    J'ai bien compris mais sans voir le contenu du fichier correspondant, impossible de savoir pourquoi.

  17. #17
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Dut Voir le message
    J'ai bien compris mais sans voir le contenu du fichier correspondant, impossible de savoir pourquoi.

    est ce que je peux te l'envoyer en mp??

  18. #18
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Si aucune barre n'est importée, c'est qu'aucune ligne du fichier ne commence par 'BARRE'

  19. #19
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    en fait, j'ai fait la même chose pour générer le fichier .py. et ça ne marche pas.
    je t'envoie le fichier en question.

  20. #20
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Voici une version plus robuste :

    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
    % fid = fopen('module.py', 'r');
    fid = fopen('treilli.py', 'r');
    X = textscan(fid, '%s', 'delimiter', '\n');
    fclose(fid);
     
    % Recuperation des coordonnees des noeuds
    idx = ~cellfun('isempty', strfind(X{1},'geompy.MakeVertex'));
    subX = X{1}(idx);
     
    points = struct('coord', zeros(numel(subX),3), 'name', {});
     
    for n = 1:numel(subX)
        points(1).coord(n,:) = sscanf(subX{n}, '%*s = geompy.MakeVertex(%f,%f,%f)');
        points(1).name{n} = sscanf(subX{n}, '%s%*s%*s%*s%*s');
    end
     
    % Recuperation de la connectivite des barres
    idx = ~cellfun('isempty', strfind(X{1},'geompy.MakeLineTwoPnt'));
    subX = X{1}(idx);
     
    lignes = struct('point1',{}, 'point2',{}, 'name', {});
     
    for n = 1:numel(subX)
        lignes(1).point1{n} = sscanf(subX{n}, '%*s = geompy.MakeLineTwoPnt(%s%*s');
        lignes(1).point2{n} = sscanf(subX{n}, '%*s%*s%*s%s');
        lignes(1).name{n} = sscanf(subX{n}, '%s%*s%*s%*s');
    end
     
    lignes.point1 = cellfun(@(x) x(1:end-1), lignes.point1, 'UniformOutput',false);
    lignes.point2 = cellfun(@(x) x(1:end-1), lignes.point2, 'UniformOutput',false);
     
    figure
    plot3(points.coord(:,1), points.coord(:,2), points.coord(:,3), 'ro', 'markerfacecolor', 'r');
    hold on
     
    for n = 1:numel(lignes.point1)
     
        idx = strcmp(points.name, lignes.point1{n}) | strcmp(points.name, lignes.point2{n});
     
        if strncmp(lignes.name{n}, 'BARR', 4)
            h_barr(n) = line(points.coord(idx,1), points.coord(idx,2), points.coord(idx,3) ...
                , 'color', 'g', 'linewidth', 2);
        else
            h_geomobj(n) = line(points.coord(idx,1), points.coord(idx,2), points.coord(idx,3) ...
                , 'color', 'b', 'linewidth', 2);
        end
     
    end
    axis equal vis3d
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/10/2014, 17h27
  2. Calcul de liste (on dirait des matrices)
    Par j.staub dans le forum Général Python
    Réponses: 4
    Dernier message: 22/06/2012, 08h39
  3. Calculs des vecteurs propres d'une matrice Symétrique
    Par nadal1991 dans le forum Mathématiques
    Réponses: 20
    Dernier message: 22/06/2011, 00h04
  4. Calcul sur des matrices
    Par Ptinéwik dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/01/2008, 10h37
  5. Calcul rapide des valeurs propres d'une matrice creuse
    Par gsagnol dans le forum Mathématiques
    Réponses: 3
    Dernier message: 21/12/2007, 23h37

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