Scripting-Python-Abaqus
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Scripting-Python-Abaqus



  1. #1
    inviteae3c8da4

    Scripting-Python-Abaqus


    ------

    Bonjour,

    Dans le cadre d'un projet de simulation numérique sous Abaqus, j'ai 60 fichiers ODB, à partir de ces fichiers mon rôle est de faire extraire les 60 courbes-forces et les points (x,y) de chaque courbe sur le nœud (271) , je peux faire ça manuellement, mais je cherche une méthode automatique (c'est très lent de faire ça manuellement), alors j'ai utilisé Python script ,le problème ce que je suis débutant en python et j'ai besoin d'aide. Voila j'ai écris ce code en utilisant ABAQUS Documentation il y a des erreurs et je n'arrive pas à les corrigé


    J'ai mis ici le code que j'ai écris:

    ****************************** ****************************** **********
    Code:
    #Property of Not Real Engineering 
    #Copyright 2020 Not Real Engineering - All Rights Reserved You may not use, 
    #           distribute and modify this code without the written permission 
    #           from Not Real Engineering.
    ############################################################################
    ##             Reading the ODB file                                       ##
    ############################################################################
    
    Nom : ERREUR.PNG
    Affichages : 993
    Taille : 26,9 Ko
    from part import *
    from material import *
    from section import *
    from assembly import *
    from step import *
    from interaction import *
    from load import *
    from mesh import *
    from optimization import *
    from job import *
    from sketch import *
    from visualization import *
    from connectorBehavior import *
    import random
    from array import *
    from odbAccess import openOdb
    import odbAccess
    import math
    import numpy    
    import os        # Operating system
    import shutil    # copying or moving files
    
    
    Max_iterations=61
    
    
    #Open text file to write results
    sortie = open('Results_fromODB.txt' , 'w')#text file to fine the results
    sortie.write('\t Property of Not Real Engineering')
    sortie.write('\n')
    
    
    for q in range(1, Max_iterations):
    
    	odbname='com_cantilver_c%d' %(q)        # set odb name here
    	path='./'                    # set odb path here (if in working dir no need to change!)
    	myodbpath=path+odbname+'.odb'    
    	odb=openOdb(myodbpath)
    	
    	step1 = odb.steps['Step-1']
    	#create a historyRegion for a specific point(Node271)
    	hRegionStep1=step1.HistoryRegion(name='historyNode271',description='Displacement and reaction force',point=Part-1-1.Nodes[271])
    	#create variables for this history output in step1
    	hOutputStep1U2=hRegionStep1.HistoryOutput(name='U2',description='Displacement', type=SCALAR) 
    	hOutputStep1Rf2=hRegionStep1.HistoryOutput(name='Rf2',description='Displacement', type=SCALAR) 
    	#Add history data for step1
    	timeData1=[0.0, 1.0]
    	u2Data=[0.0, 1.0]
    	rf2Data=[0.0, 1.0]
    
    	hOutputStepU1.addData(frameValue=timeData1,value=u2Data)
    	hOutputSteprf2.addData(frameValue=timeData1,value=rf2Data)
    	
    	odb.close()
         
    		
    sortie.close()
    ****************************** ****************************** ******************************
    message d'erreur

    Nom : ERREUR.PNG
Affichages : 993
Taille : 26,9 Ko

    j'ai mis aussi le fichier Abaqus documentation que j'ai utilisé:
    https://classes.engineering.wustl.ed...md/default.htm

    Merci d'avance

    Cordialement
    g

    -----
    Dernière modification par JPL ; 05/07/2021 à 21h54. Motif: ajout de la balise Code pour garder l’indentation

  2. #2
    umfred

    Re : Scripting-Python-Abaqus

    je dirais que le problème vient du nom "Part-1-1"; python y voit des moins et pas des tirets

  3. #3
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    Ah ok, j'ai compris

    mais on fait quoi pour que Python puisse voir des tirets ?

  4. #4
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    Est ce qu'il faut ajouter un module ?

  5. A voir en vidéo sur Futura
  6. #5
    umfred

    Re : Scripting-Python-Abaqus

    Dans le nom d'une variable, ce n'est pas possible (dans très peu voire aucun langage à ma connaissance)
    Ne sachant pas vraiment d'où sort ce "Part-1-1", difficile d'aider, mais si tu sais d'où il vient (je dirais la base de données à vu de nez), il faudrait le renommer avec des '_' à la place des '-'

  7. #6
    umfred

    Re : Scripting-Python-Abaqus

    c'est peut-être step1 au lieu de part-1-1 aussi ?

  8. #7
    polo974

    Re : Scripting-Python-Abaqus

    peut-être un truc du genre:
    Code:
        part1 = odb.parts['Part-1-1']
        hRegionStep1=step1.HistoryRegion(name='historyNode271',description='Displacement and reaction force',point=part1.Nodes[271])
    mais c'est un peu au jeu des devinettes...

    sinon:
    hOutputStep1U2 = ...
    hOutputStep1Rf2 = ...
    puis
    hOutputStepU1.addData ...
    hOutputSteprf2.addData ...

    il n'y aurait pas erreur orthographique sur les noms ? ? ?
    Jusqu'ici tout va bien...

  9. #8
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    Bonjour polo974,

    Oui j'ai vérifié tout maintenant, mais j'ai rien trouvé .

  10. #9
    vgondr98

    Re : Scripting-Python-Abaqus

    Bonjour,

    Il y a un truc que je ne comprends pas.

    Dans cette documentation :
    https://abaqus-docs.mit.edu/2017/Eng...eadhistpyc.htm

    Il y a un exemple de code avec historyRegions mais il y a des crochets à la place des parenthèses et il y a un s en plus.

    Code PHP:
    from odbAccess import *

    odb openOdb(path='viewer_tutorial.odb')
    step2 odb.steps['Step-2']
    region step2.historyRegions['Node PART-1-1.1000']
    u2Data region.historyOutputs['U2'].data
    dispFile 
    open('disp.dat','w')
    for 
    timeu2Disp in u2Data:
        
    dispFile.write('%10.4E   %10.4E\n' % (timeu2Disp))
    dispFile.close() 
    Dans quelle doc, tu as trouvé l'exemple où historyRegion était écrit avec des parenthèses ?

  11. #10
    vgondr98

    Re : Scripting-Python-Abaqus

    Sinon, est-ce que tu connais la fonction help de python ?
    https://www.geeksforgeeks.org/help-function-in-python/

  12. #11
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    Bonjour vgondr98,

    j'ai trouvé l'exemple dans ABAQUS Version 6.6 Documentation, voici des captures d'écran Pièce jointe 442611
    Pièce jointe 442612






    j'ai répété le même travail mais avec seulement 4 modèles et j'ai mis ta proposition , voila j'ai trouvé cet erreur

    Est ce que vous pouvez vérifier avec moi peut être j'ai oublié quelque chose ?

    ça c'est mon premier projet sous python
    ****************************** **************************
    Code:
    from part import *
    from material import *
    from section import *
    from assembly import *
    from step import *
    from interaction import *
    from load import *
    from mesh import *
    from optimization import *
    from job import *
    from sketch import *
    from visualization import *
    from connectorBehavior import *
    import random
    from array import *
    from odbAccess import openOdb
    import odbAccess
    import math
    import numpy    
    import os        # Operating system
    import shutil    # copying or moving files
    from abaqusConstants import*
    
    Max_iterations=5
    
    
    #Open text file to write results
    sortie = open('Results_fromODB.txt' , 'w')#text file to fine the results
    sortie.write('\t Property of Not Real Engineering')
    sortie.write('\n')
    
    
    for q in range(1, Max_iterations):
    
    	odbname='cyl_cantilver_c%d' %(q)        # set odb name here
    	path='./'                    # set odb path here (if in working dir no need to change!)
    	myodbpath=path+odbname+'.odb'    
    	odb=openOdb(myodbpath)
    	step1 = odb.steps['Step-1']
    	#
    	region = step1.historyRegions['Node piece1.1017']
    	u2Data = region.historyOutputs['U2'].data
    	dispFile = open('disp.dat','w')
    	for time, u2Disp in u2Data:
    		dispFile.write('%10.4E   %10.4E\n' % (time, u2Disp))
    	dispFile.close()
    	
       
    		
    	sortie.close()
    Nom : ERREUR.PNG
Affichages : 886
Taille : 24,7 KoNom : ERREUR.PNG
Affichages : 886
Taille : 24,7 Ko

    ****************************** ************************

    Merci d'avance
    Dernière modification par JPL ; 07/07/2021 à 23h05. Motif: ajout de la balise Code pour garder l’indentation

  13. #12
    umfred

    Re : Scripting-Python-Abaqus

    Le message dit qu'il n'y a pas la clé "Node piece1.1017" dans step1.historyRegions
    Affiche les clés avec un print(step1.historyRegions.key s()) mais d'après les messages précédents, ça devrait être
    region=step1.historyRegions['Node Part-1-1.1017']
    enfin tout dépend de comment c'est défini dans ton fichier

  14. #13
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    Oui dans le nouveau modèle le nom de la pièce est "piece1" et le nom de l'instance est "piece1-1"

    normalement d'après mon modèle on écrit comme ça region=step1.historyRegions['Node piece1-1.1017']

    Moi je m'en doute sur le noeud 1017

    Dans le step-1, j'ai crée un point s sur le noeud 1017 et j'ai demandé d'afficher sur ce point RF2 et U2
    voici la figure
    Nom : ca.PNG
Affichages : 925
Taille : 73,6 Ko

    Ou il y a une autre méthode pour définir un nœud ?

    Merci

  15. #14
    umfred

    Re : Scripting-Python-Abaqus

    pour le message d'erreur, il serait plus intéressant d'ouvrir le noeud Steps et Step-1 (puisque c'est à lui que tu accèdes via ton code odb.steps['Step-1']
    et initialement tu parlais du noeud 271
    mais effectivement, ça devrait s'écrire comme tu l'indiques (avec en plus le tuto complet http://dsk-016-1.fsid.cvut.cz:2080/v...05ch09s05.html )

  16. #15
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    emm j'ai pas compris
    c'est à dire "d'ouvrir le noeud Steps et Step-1" ?

    Dans ce modèle j'ai défini le point sur le noeud 1017 et sur le même point j'ai demandé d'afficher U2 et RF2
    (il y a seulement noeud 1017) il n'y a rien sur le point 271

  17. #16
    umfred

    Re : Scripting-Python-Abaqus

    Citation Envoyé par ghmas Voir le message
    emm j'ai pas compris
    c'est à dire "d'ouvrir le noeud Steps et Step-1" ?
    sur ta capture, dans ton arborescence à gauche, il y Steps avec un + devant, c'est ce que j'entends par "ouvrir le noeud Steps" pour voir l'arborescence vers ton fameux noeud 1017

  18. #17
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    Ah ok

    voila
    Nom : steps.PNG
Affichages : 884
Taille : 19,0 Ko

  19. #18
    umfred

    Re : Scripting-Python-Abaqus

    finalement, ça ne m'aide pas plus que ça
    tu n'as pas testé avec les corrections que tu as indiqué ? c'est à dire region = step1.historyRegions['Node piece1-1.1017']
    ou de voir ce que te renvois un print(step1.historyRegions.key s()) (pas d'espaces entre le key et le s (c'est le forum qui le rajoutes automatiquement)

  20. #19
    inviteae3c8da4

    Re : Scripting-Python-Abaqus

    ***********************
    from part import *
    from material import *
    from section import *
    from assembly import *
    from step import *
    from interaction import *
    from load import *
    from mesh import *
    from optimization import *
    from job import *
    from sketch import *
    from visualization import *
    from connectorBehavior import *
    import random
    from array import *
    from odbAccess import openOdb
    import odbAccess
    import math
    import numpy
    import os # Operating system
    import shutil # copying or moving files
    from abaqusConstants import*

    Max_iterations=5


    #Open text file to write results
    sortie = open('Results_fromODB.txt' , 'w')#text file to fine the results



    for q in range(1, Max_iterations):

    odbname='cyl_cantilver_c%d' %(q) # set odb name here
    path='./' # set odb path here (if in working dir no need to change!)
    myodbpath=path+odbname+'.odb'
    odb=openOdb(myodbpath)


    step1 = odb.steps['Step-1']
    #
    region = step1.historyRegions['Node piece1-1.1017']
    u2Data = region.historyOutputs['U2'].data
    dispFile = open('disp.dat','w')
    for time, u2Disp in u2Data:
    dispFile.write('%10.4E %10.4E\n' % (time, u2Disp))
    dispFile.close()
    print(step1.historyRegions.key s())

    sortie.close()
    ***************************
    c'est la dernière version
    Nom : Capture.PNG
Affichages : 867
Taille : 16,2 Ko

  21. #20
    umfred

    Re : Scripting-Python-Abaqus

    met le
    Code:
    print(step1.historyRegions.keys())
    avant ta ligne 51 (donc juste après step1=odb.steps['Step-1']) sinon on ne va pas savoir quelles clés tu as pour Step-1 ...
    Dernière modification par JPL ; 12/07/2021 à 18h17.

Discussions similaires

  1. [Python] subprocess, lancer un autre programme avec python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 30/11/2016, 19h56
  2. en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?
    Par docEmmettBrown dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 10/06/2015, 16h47
  3. scripting centralisé sur parc Windows
    Par BastienBastien dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 17/08/2008, 10h37
  4. active scripting
    Par invite8d5e957f dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 17/06/2007, 14h21
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...