Script python pour Abaqus

Document Actions
Réponses: 8   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

Script python pour Abaqus

Posté par ritalex le 30/08/2010 12:53
bonjour à tous,

Je fais actuellement un stage en Allemagne pour calculer les efforts dans une aile d'avion.
Pour la modélisation de cette aile, j'ai utilisé Visual c++ pour avoir un fichier .cpp et transformé en .inp et je l'ai chargé via Abaqus CAE ( Import inp file)

Maintenant, on m'a demandé de faire les calculs avec des scripts python mais je ne m'en suis jamais servi... est ce que quelqu'un pourrait me dire la démarche à suivre pour créer un fichier python (quel type de fichier) et comment le charger avec abaqus CAE.

Je vous remercie d'avance

Re: Script python pour Abaqus

Posté par fredogo le 30/08/2010 13:26
Bonjour,

La dernière vesion de python est la version 3.x qui est sur pas mal de choses différentes de l'ancienne version 2.x

Pour avoir un tutoriel va voir ici

Je ne connais pas Abaqus CAE, mais en général beaucoup de lib n'ont pas été mis à jour par rapport à la version 3, donc je te conseillerais la version 2.7 de python.

Les fichiers ont l'extension py .

Pour importer un module on utilise cette syntaxe

code:
import module


Je te conseille de lire le tutoriel et de poser tes questions quand tu as des difficultés.

Pour créer le fichier python, tu crées tout simplement un fichier texte avec l'extension py.

Re: Script python pour Abaqus

Posté par ritalex le 30/08/2010 16:45
ok merci pour ta rapidité

je viens de passer plus de 3h sur ce tuto .pdf, il est très bien expliqué.

Pour l'instant, je n'ai pas de question

Je crois que pour utiliser un fichier .py avec abaqus CAE, il faut ouvrir le fichier .py avec Abaqus PDE et commencer un debbuging comme avec visual c++

Re: Script python pour Abaqus

Posté par ritalex le 01/09/2010 13:24
Pour effectuer l'étude d'une pièce sur Abaqus, voic les étapes 'a suivre:
-> création du fichier
-> création d'un "part" pour faire une piece
-> création du materiau pour chaque pièce "Material"
-> création d'une section pour chaque pièce "Section"
-> Assemblage des pièces "Assembly"
-> Définition du "step" (ie étude en statique ou dynamique)
-> définition du "load" (les charges sur les pièces et conditions aux limites)
-> Maillage "Mesh"
-> faire calculer Abaqus "job"
-> Voir les résultats " Vizualisation
Toutes ces étapes sont écrites dans ce script python que j'ai récupéré sur le manuel d'aide Abaqus:( cas d'une poutre encastrée dans un mur)

"""
beamExample.py

Reproduce the cantilever beam example from the
Appendix of the Getting Started with
Abaqus: Interactive Edition Manual.
"""

from abaqus import *
import testUtils
testUtils.setBackwardCompatibility()
from abaqusConstants import *

# Create a model.

myModel = mdb.Model(name='Beam')

# Create a new viewport in which to display the model
# and the results of the analysis.

myViewport = session.Viewport(name='Cantilever Beam Example',
origin=(20, 20), width=150, height=120)

#-----------------------------------------------------

import part

# Create a sketch for the base feature.

mySketch = myModel.ConstrainedSketch(name='beamProfile',
sheetSize=250.)

# Create the rectangle.

mySketch.rectangle(point1=(-100,10), point2=(100,-10))

# Create a three-dimensional, deformable part.

myBeam = myModel.Part(name='Beam', dimensionality=THREE_D,
type=DEFORMABLE_BODY)

# Create the part's base feature by extruding the sketch
# through a distance of 25.0.

myBeam.BaseSolidExtrude(sketch=mySketch, depth=25.0)

#-----------------------------------------------------

import material

# Create a material.

mySteel = myModel.Material(name='Steel')

# Create the elastic properties: youngsModulus is 209.E3
# and poissonsRatio is 0.3

elasticProperties = (209.E3, 0.3)
mySteel.Elastic(table=(elasticProperties, ) )

#-------------------------------------------------------

import section

# Create the solid section.

mySection = myModel.HomogeneousSolidSection(name='beamSection',
material='Steel', thickness=1.0)

# Assign the section to the region. The region refers
# to the single cell in this model.

region = (myBeam.cells,)
myBeam.SectionAssignment(region=region,
sectionName='beamSection')

#-------------------------------------------------------

import assembly

# Create a part instance.

myAssembly = myModel.rootAssembly
myInstance = myAssembly.Instance(name='beamInstance',
part=myBeam, dependent=OFF)

#-------------------------------------------------------

import step

# Create a step. The time period of the static step is 1.0,
# and the initial incrementation is 0.1; the step is created
# after the initial step.

myModel.StaticStep(name='beamLoad', previous='Initial',
timePeriod=1.0, initialInc=0.1,
description='Load the top of the beam.')

#-------------------------------------------------------

import load

# Find the end face using coordinates.

endFaceCenter = (-100,0,12.5)
endFace = myInstance.faces.findAt((endFaceCenter,) )

# Create a boundary condition that encastres one end
# of the beam.

endRegion = (endFace,)
myModel.EncastreBC(name='Fixed',createStepName='beamLoad',
region=endRegion)

# Find the top face using coordinates.

topFaceCenter = (0,10,12.5)
topFace = myInstance.faces.findAt((topFaceCenter,) )

# Create a pressure load on the top face of the beam.

topSurface = ((topFace, SIDE1), )
myModel.Pressure(name='Pressure', createStepName='beamLoad',
region=topSurface, magnitude=0.5)

#-------------------------------------------------------

import mesh

# Assign an element type to the part instance.

region = (myInstance.cells,)
elemType = mesh.ElemType(elemCode=C3D8I, elemLibrary=STANDARD)
myAssembly.setElementType(regions=region, elemTypes=(elemType,))

# Seed the part instance.

myAssembly.seedPartInstance(regions=(myInstance,), size=10.0)

# Mesh the part instance.

myAssembly.generateMesh(regions=(myInstance,))

# Display the meshed beam.

myViewport.assemblyDisplay.setValues(mesh=ON)
myViewport.assemblyDisplay.meshOptions.setValues(meshTechnique=ON)
myViewport.setValues(displayedObject=myAssembly)

#-------------------------------------------------------

import job

# Create an analysis job for the model and submit it.

jobName = 'beam_tutorial'
myJob = mdb.Job(name=jobName, model='Beam',
description='Cantilever beam tutorial')

# Wait for the job to complete.

myJob.submit()
myJob.waitForCompletion()

#-------------------------------------------------------

import visualization

# Open the output database and display a
# default contour plot.

myOdb = visualization.openOdb(path=jobName + '.odb')
myViewport.setValues(displayedObject=myOdb)
myViewport.odbDisplay.display.setValues(plotState=CONTOURS_ON_DEF)

myViewport.odbDisplay.commonOptions.setValues(renderStyle=FILLED)







Quand j'ai fini d'écrire ce script sur ma version 2.6 de python, j'enregistre sous beamExample.py
Ensuite, je vais sur Abaqus CAE. Ensuite, File -> Abaqus PDE afin de tester le fichier beamExample.py
quand je suis sur Abaqus PDE, j'ouvre le fichier .py mais ensuite je ne sais pas ce qu'il faut faire, je suis bloqué à cette étape

Merci d'avance pour votre réponses

Re: Script python pour Abaqus

Posté par ritalex le 01/09/2010 13:27
Sur Abaqus PDE, j'ai testé le script en cliquant sur le bouton "Play" mais un message d'erreur s'est affiché:


*Starting main file:c:/Dokumente und Einstellungen/fabi_al/Desktop/beamExample.py
Traceback (most recent call last):
File "atx/int/impl/atxPdb.py", line 1664, in debugFile
File "c:/Dokumente und Einstellungen/fabi_al/Desktop/beamExample.py", line 1
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19)on win32
^
SyntaxError: invalid syntax
Exit from main file:c:/Dokumente und Einstellungen/fabi_al/Desktop/beamExample.py

Re: Script python pour Abaqus

Posté par troisseize le 01/09/2010 15:38
Apparamment, tu as une ligne (la première du fichier c:/Dokumente und Einstellungen/fabi_al/Desktop/beamExample.py) qui ne fais pas partie du code source mais qui a été introduite par erreur.

Re: Script python pour Abaqus

Posté par ritalex le 02/09/2010 10:49
J'ai enlevé cette partie du script mais c'est toujours le même message d'erreur

"""
beamExample.py

Reproduce the cantilever beam example from the
Appendix of the Getting Started with
Abaqus: Interactive Edition Manual.
"""

de plus, dans le message d'erreur, il y a cette ligne:
File "atx/int/impl/atxPdb.py", line 1664, in debugFile

j'essaye de trouver ce fichier mais aucune trace sur l'ordinateur...

Re: Script python pour Abaqus

Posté par franzelli le 24/03/2011 20:37
Bonjour,

Une petite info qui te servira peut être concernant les script Python sous Abaqus. Quand tu es sous CAE, tu as une commande dans le menu "file" qui s'appelle "macro manager". Après avoir préparé ce que tu souhaites faire à l'avance (pour éviter les suppressions à répétition et les retours en arrière) tu peux te servir de cet outil qui te transformera automatiquement toutes les action que tu fera en code Python.
Pour ce faire, tu ouvres ton CAE, tu va dans file/macro manager, tu clique sur create, tu donne un nom à ta fonction et surtout tu choisis l'endroit où tu veux qu'elle soit enregistrée (home ou work, sachant que work représente le dossier de travail dans lequel tu as choisi d'enregistrer tes calculs). Dès que tu valide le nom, une petite fenêtre apparait (stop recording) et tant que tu n'appuies pas dessus, tout ce que tu va faire dans le CAE sera transformé en code python dans ta macro.

Je sais que j'arrive un peu tard mais ça pourra peut être servir à d'autres.

Bonne continuation.

Re: Script python pour Abaqus

Posté par foufou le 20/05/2011 13:08
Bonjour,
j'ai présque la même diffuculté avec Script python pour abaqus.

J'ai un fichier.odb d'une pièce simulée sur Abaqus, et je veux faire un programme sur Python qui m'affiche dans des fichiers.txt les résultats de cette simulation comme par exemple les contarintes maxi et mini pour chaque éléments les chargements imposés. le but est de calculer la duré de vie de cette pièce selon le modèle approprié( soit modèle Gerber, soit Goodmann ou Soderberg)pour conclure sa validation sous critère fatigue.

La démarche du programme est la suivante:
-> lire les données issues des fichiers.odb (les containtes principales maxi et mini, les chargements imposés les matériaux de la pièce)
-> calculer les contraintes équivalentes pour chaque noeuds à partir d'une équation fonction de contraintes maxi et mini ( selon le modèle pris)
-> aprés avoir calculé cette contrainte, on fait appel à une courbe
faite en Excel et qui dépend du matériau de la pièce puis on fait un programme qui prend comme paramètre d'entré l'ordonné (contraite équivalente)de cette courbe, il me renvoie la valeur de l'abcisse (la duré de vie)
-> Enfin il va créer des fichiers.txt qui affichent ces valeurs pour chaque cas de chargements et pour chaque matériaux

j'ai une idée générale sur la démarche de ce programme mais j'ai pas une idée comment le programmer sur Python.
svp j'ai besoin d'aide

merci d'avance

Python.org : Le site officiel du langage Python.
Zope.org : Le site web officiel de Zope.
Daily Python-URL : Actus de l'univers Python.
Tribute to Zyons : Zyons notre ami et membre fondateur de l'Afpy, nous quittait en 2005.