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 :

Ecrire une table de donnée Nastran


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Ecrire une table de donnée Nastran
    Bonjour à tous,

    Dans le cadre de mon travail de fin d'étude, je suis amené à simuler les réponses temporelles d'éléments non linéaires (comme des ressorts cubiques ou des matériaux hyperélastiques) au moyen du logiciel Nastran.

    Pour décrire les lois de comportement de ces non-linéarités, Nastran demande des tables dans lesquelles on entre la coordonnée d'un certain nombre de points de la courbe Contrainte/Déformation.

    Cette table prend la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $--01--><--02--><--03--><--04--><--05--><--06--><--07--><--08--><--09--><--10-->
    TABLES1 NTABLE
            x1      y1      x2      y2      ...     ...     ENDT
    Pour ceux qui ne connaitrait pas :
    • "$" : Symbole de commentaire ;
    • TABLES1 : Nom de la fonction Nastran pour la création d'une table ;
    • NTABLE : Numéro de la table créée ;
    • x1 : Abscisse du premier point ;
    • y1 : Coordonnée du premier point ;
    • x2 : Abscisse du second point ;
    • y2 : Coordonnée du second point ;
    • etc...
    • ENDT : Commande signalant la fin du tableau.


    Ma question ici est : comment demander à Matlab, à partir de données calculées dans un vecteur ou une matrice, d'écrire celles-ci sous cette forme pour qu'elles puissent être utilisées par Nastran sans post-traitement par un utilisateur ?

    Je vois comment écrire un fichier ou même des données dans un fichier. Ce que je ne sais pas comment faire, par contre, c'est imposer la structure des fichiers Nastran.
    En effet, Nastran découpe chaque ligne d'un fichier de lecture en 10 cases de 8 caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $--01--><--02--><--03--><--04--><--05--><--06--><--07--><--08--><--09--><--10-->
    Il faut donc qu'à chaque fois que Matlab écrit une donnée, par exemple une abscisse, il saute automatiquement au "champs" suivant avant d'écrire la seconde.

    Je voulais donc savoir s'il était possible de faire cela automatiquement ou si cela doit se faire de manière détournée (par exemple en utilisant le fait que le nombre d'espaces entre 2 champs étant donné par : "8 - Nbre de caractères écrits pour la donnée").

    Je suis donc un peu perdu dans tout ça, surtout que je n'ai jamais vraiment utilisé Matlab écrire des fichiers .txt.


    J'espère avoir été clair dans mes explications. Si ce n'était pas le cas, n'hésitez pas à me le faire savoir.

    Merci d'avance si vous savez me donner un petit coup de pouce !


    Cédric

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    tu vas devoir utiliser les foncitons fopen, fprintf et fclose :
    Un exemple pour fprintf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf('%8g%8g',5.4,5.698)
    Voir la documentation de ces fonctions pour plus de précisions.

  3. #3
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Essaye d'ouvrir ton fichier que tu viens de décrire avec excel :
    1) soit ça t'affiche tes données dans des colonnes différentes : dans ce cas il faudra que tu écrives tes données avec des "tabulations" (je ne sais plus comment faire, mais un coup de google devrait t'aider)
    2) soit ça t'affiche tes données dans une seule colonne : dans ce cas, il faut que tu écrives tes données comme tu l'as décrit.

    Essaye aussi de faire le test en supprimant la première ligne.

    Cordialement,

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour à tous,

    Merci déjà pour vos réponses très rapides !

    Tout d'abord, pour répondre à tachmou, ce sont bien des espaces et non des tabulations. Ces dernières ne sont pas prises en compte par Nastran.

    En grattant un peu de mon côté, j'ai aussi découvert les formats '%-8g' de la fonction 'fprintf'. A elle seule, elle permet de quasiment rédiger le fichier.

    Toutefois, un problème se pose lorsque les valeurs sont très grandes (font apparaitre plus de 8 chiffres). En effet, le format '%g' utilise alors automatiquement l'écriture scientifique, mais le nombre de caractères dépassent quand même le quotat de 8. Je suppose qu'il se limite à 8 chiffres, sans compter le 'e+06'...
    Est-il possible d'imposer, automatiquement, un nombre total de caractères (y compris le 'e+06') ?


    Encore merci !

    Cédric

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Dans ce cas, il faudra imposer à 2 le nombre de chiffre après la virgule, pour que l'on ait un format du style : x.xxexxx

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour ton aide !
    J'y suis finalement arrivé et ma fonction marche impeccablement.

    Problem solved !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Excel] Redimenssionner une table de donnée
    Par websurfeur dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2006, 11h55
  2. Ecrire une table en XML
    Par norby042 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 14h30
  3. Réponses: 8
    Dernier message: 19/01/2006, 19h16
  4. Réponses: 9
    Dernier message: 07/10/2004, 20h41
  5. [QuickReport] Données d'une table et données calculées
    Par poufouille dans le forum Bases de données
    Réponses: 11
    Dernier message: 30/03/2004, 17h01

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