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

Simulation Discussion :

Script python pour extraire les déplacements à partir d'Abaqus


Sujet :

Simulation

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Script python pour extraire les déplacements à partir d'Abaqus
    Bonjour,

    Dans le cadre d'un projet, je dois extraire la déformée modale ( et donc les déplacements) d'un modèle abaqus pour chaque mode. Pour cela, j'ai créé un 'Path' dans abaqus de manière à sélectionner les déplacements selon une ligne de ma poutre. Cependant, j'ai déjà essayé différents codes Python afin d'extraire ses données mais je n'y arrive pas... Est ce que quelqu'un aurait une idée svp ?

    Merci d'avance pour ceux qui prendront le temps d'y regarder

    J'avais dans un premier temps fait le code suivant mais il semble y avoir plusieurs erreurs.
    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
    from odbAccess import *
    from abaqus import *
    from abaqusConstants import *
    import types
    import visualization
    from math import *
    from odbMaterial import *
    from odbSection import *
    
    frame_k=[]
    odb=openOdb(path='demoplaque.odb')   # opens database with specified name
    historyRegion=('Path-1')
    historyOutput=['U']
    
    for k in range (len(odb.steps['modal'].frames)):
    	frame_k.append(odb.steps['modal'].frames[k])
            frame_k.fieldOutputs['U']
    fichier = open('results.rpt','w')
    i=0
    for data in frame_k:
            if str(data) != '[]':
                    fichier.write(str(data))
                    i=i+1
                    fichier.write('\n')
    fichier.close()

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Quelle différence entre ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for k in range (len(odb.steps['modal'].frames)):
    	frame_k.append(odb.steps['modal'].frames[k])
    et ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    frame_k = odb.steps['modal'].frames
    Essaye pour voir ...

    Utilise des print pour t'assurer de la validité des étapes de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print('Nombre de frames: %s' % len(frame_k))
    Qu'est-ce que ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        frame_k.fieldOutputs['U']
    frame_k est une liste, les listes n'ont pas d'attribut fieldOutputs et que penser du "['U']" ?


    Pour finir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fichier = open('results.rpt','w')
    i=0     # Inutile !
    for data in frame_k:
            if str(data) != '[]':   # ??
                    fichier.write(str(data))
                    i=i+1     # Inutile !
                    fichier.write('\n')
    fichier.close()
    Est-ce que ce sont les listes vides que tu veux supprimer ?

    Il est souvent plus simple de préparer ses objets avant de les utiliser, avec l'avantage d'un code plus clair pour tout le monde.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # Supprimer les listes vides
    frames = [str(f) for f in frame_k if f]  # ! Supprimera aussi les 0 !
    # Lier les données avec un newline
    text = '\n'.join(frames)
    with open('results.rpt','w') as outf:
        outf.write(text)
    pas de close() avec with open()

    Demo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> l = [25, [], 'hfgtr', [64, 72], 'kjhg']
    >>> f = [str(i) for i in l if i]
    >>> f
    ['25', 'hfgtr', '[64, 72]', 'kjhg']
    >>> txt = '\n'.join(f)
    >>> print(txt)
    25
    hfgtr
    [64, 72]
    kjhg
    D'autre part, si ton code lève une erreur, copie colle le traceback complet avec ton message.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Un très grand merci!
    Tout d'abord un très grand merci déjà pour ta réponse. Pour le 1er changement, ce que tu fais fonctionne donc j'ai gardé cet syntaxe , merci .
    Ensuite, pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frame_k.fieldOutputs['U']
    J'essayais d'afficher les déplacements selon y d'un Path-1 que j'ai défini dans Abaqus, aurais tu une idée de comment faire ca stp ? Cela peut sembler facile mais je n'y arrive pas.
    Et également , aurais tu une idée de comment je peux extraire le coefficient d'amortissement?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Hélas, je ne connais rien à Abaqus.

    J'ai regardé sur leur site, c'est pas open source, il y a bien une version student téléchargeable (c'est peut-être celle-là que tu utilises) mais je n'ai vu aucune mention d'OS or moi je suis sous Linux, pas Windows.

    Tu as vu qu'il existe ce PDF particulièrement complet (en anglais):
    http://www.maths.cam.ac.uk/computing...CRIPT_USER.pdf

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/12/2009, 03h32
  2. Réponses: 1
    Dernier message: 22/11/2006, 09h57
  3. Script shell pour persister les variables exportées
    Par Giovanny Temgoua dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/10/2006, 09h07
  4. [GML] Scripts shell pour extraire des données d'Oracle
    Par diamonds dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 28/09/2006, 07h04
  5. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01

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