You are on page 1of 11

Python para Abaqus

Pedro Jorge De Los Santos


2016 Pedro Jorge De Los Santos

ndice general
Acerca de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Fundamentos de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estructuras de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
4

Geometras, secciones y materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

chapter{Postprocesando archivos ODB} . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Procesando informacin bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7
7

NDICE GENERAL

Acerca de
Estos apuntes de Python para Abaqus han nacido con la finalidad de ayudar a usuarios hispanohablantes en el desarrollo de scripts en lenguaje Python para agilizar tareas de preprocesado o
postprocesado en Abaqus.
Un poco a la par de este texto se ha desarrollado una pequea librera de Python (PyQus) que puede
ser utilizada para algunas tareas de postproceso de archivos de salida de Abaqus (ODB). Puede
encontrar los cdigos y la documentacin correspondiente en el repositorio de GitHub PyQus
1
2

Pedro Jorge De Los Santos


delossantosmfq@gmail.com
https://github.com/JorgeDeLosSantos/pyqus

Fundamentos de Python
Python es un lenguaje de programacin desarrollado a finales de los 80s y con sus primeras
versiones liberadas en los albores de los 90s. Se caracteriza por ser interpretado, de tipado dinmico,
multiparadigma y multiplataforma. Posee una licencia de cdigo abierto (PSFL) desarrollada por
la Python Software Foundation (PSF), de modo que el acceso al cdigo fuente del proyecto est
disponible para los desarrolladores. Lo anterior ha permitido, en gran medida, la proliferacin de
una comunidad slida alrededor del mismo.
Es un lenguaje de propsito general, relativamente sencillo de aprender y con un potencial enorme.
Sus aplicaciones pueden pasar desde un simple script para uso personal en las tareas comunes con el
ordenador, el desarrollo web, la seguridad informtica, y desde luego, las aplicaciones en el mbito
cientfico y de ingeniera.

Tipos de datos
Enteros
En matemticas se clasifican como enteros aquellos nmeros en el intervalo (, ), que no
contienen una parte decimal o fraccionaria. Dadas las limitaciones de los ordenadores es evidente
que no podr representarse un entero demasiado grande, generalmente el lmite de representacin
es dado por las caractersticas del procesador.
En Python existen 2 tipos de enteros: el tipo entero ordinario (int) y el entero largo (long). La
diferencia es precisamente el lmite de representacin de cada uno. Puede obtener informacin acerca
del mximo entero tecleando lo siguiente en el intrprete de Python:
1
2
3

>>> import sys


>>> max_int=sys.maxint
>>> max_intl=sys.maxsize

Siendo max_int el entero ordinario mximo representado, generalmente este valor equivale a 231 1.
El valor de max_intl corresponde al mximo entero largo.
Para definir un tipo entero no hace falta declararlo de forma explcita, por ejemplo:

Fundamentos de Python

1
2
3
4
5
6
7
8
9

>>> a=1
>>> b=100
>>> type(a)
<type 'int'>
>>> type(b)
<type 'int'>
>>> c=-100
>>> type(c)
<type 'int'>

De punto flotante
Los nmeros de punto flotante son aquellos que normalmente conocemos como nmeros reales. En
Python para que un valor numrico sea reconocido como real, debe utilizarse la funcin float o
bien aadir la parte decimal del nmero, aun cuando esta sea nula:
1
2
3
4
5

>>> a=3
>>> b=float(3)
>>> c=3.0
>>> type(a),type(b),type(c)
(<type 'int'>, <type 'float'>, <type 'float'>)

Booleanos
Tambin conocidos como valores lgicos, son un tipo de dato fundamental, cuyo valor slo puede
adquirir dos estados: verdadero y falso. Se utilizan comunmente para la toma de decisiones en
conjunto con las estructuras de control de flujo. Las constantes booleanas en Python se nombran
mediante True y False.
Por ejemplo, si comparamos dos nmeros enteros cualesquiera para ver si son iguales:
1
2
3
4
5
6
7
8

>>> a=10
>>> b=15
>>> a==b
False
>>> a>b
False
>>> a<b
True

Fundamentos de Python

Cadenas de caracteres
Listas
Tuplas
Diccionarios

Estructuras de control
Sentencia if
La sentencia if es una estructura de control flujo simple, utilizada para la toma de decisiones en el
curso de ejecucin que sigue el programa. En casi todos los algoritmos existen porciones de cdigo
que slo deben ejecutarse cuando se cumpla una condicin establecida, es ah donde la sentencia if
tiene su utilidad. Vea el ejemplo dado a continuacin:
1
2
3

a = 10
if a > 0:
print "Nmero positivo"

Veamos: primero se define una variable a con valor 10, posteriormente se hace la comprobacin
que si a es mayor a cero, lo cual implicara imprimir en pantalla un mensaje, de lo contrario no
se realizar accin alguna. Para el ejemplo mostrado, puesto que a es 10, entonces es un nmero
positivo, y por ende se ejecutar la porcin de cdigo incluido en la sentencia if.
En muchas situaciones la sentencia if se utiliza en conjunto con la sentencia complementaria else,
para formar una bifurcacin doble, que permite seleccionar una opcin especificada o bien otra
por default. A manera de ejemplo vamos a desarrollar un programa que determinar si un nmero
ingresado es par o impar:
1
2
3
4
5

n = input("n = ")
if (-1)**n == 1:
print "Par"
else:
print "Impar"

Si la condicin propuesta se cumple entonces se ejecutar el bloque incluido dentro de la sentencia


if, en cualquier otro caso se ejecutar el bloque definido por la clusula else.
Adems de las anteriores, existe otra forma ms general definida por las sentencias
if-elif-else cuya estructura general es:

Fundamentos de Python

1
2
3
4
5
6
7
8
9
10
11
12
13

if cond1:
# ...
elif cond2:
# ...
elif cond3:
# ...
.
.
.
elif condN:
# ...
else:
# ...

La anterior es un tipo de bifurcacin mltiple, que permite seleccionar entre varias condiciones
definidas en la clusula if y en las subsecuentes elif, y una opcin por defecto establecida en la
clusula else. Un ejemplo:
1
2
3
4
5
6
7

n = input("n = ")
if n>0:
print "Positivo"
elif n<0:
print "Negativo"
else:
print "Cero"

Bucle for
Bucle while

Geometras, secciones y materiales

chapter{Postprocesando archivos
ODB}
Procesando informacin bsica
Partes
Las partes o geometras son las entidades bsicas en Abaqus, y a partir las cuales se construye el
ensamble o modelo. Las partes pueden ser bidimensionales o tridimensionales, deformables o rgidas,
dependiendo de las caractersticas del cuerpo fsico a representar.
Para leer informacin acerca de las partes incluidas en un archivo ODB, debemos primeramente leer
el archivo y enseguida acceder al diccionario parts.
En el siguiente cdigo se imprimen en consola todas las partes que contiene el archivo ejemplo.odb,
y adicionalmente se imprime el tipo de la parte en cuestin (Deformable, Analtica,).
1
2
3
4
5
6

from odbAccess import openOdb


dbpath = "ejemplo.odb"
odb = openOdb(path=dbpath)
for _name,_prt in odb.parts.items():
print _name, _prt.type

Pero claro, siempre que sea posible es mejor escribir cdigo que pueda ser reutilizado, en forma de
funciones y/o clases que puedan almacenarse en mdulos y posteriormente importarse en un script
donde sean utilizadas.
En el siguiente cdigo se define una funcin get_parts que bsicamente lee la informacin de las
partes que componen el archivo de salida, devolviendo una lista de tuplas con los nombres y tipos
de las partes.

chapter{Postprocesando archivos ODB}

1
2
3
4
5
6
7
8
9

from odbAccess import *


def get_parts(dbpath):
odb = openOdb(path=dbpath)
_parts = []
for _name,_prt in odb.parts.items():
_type = _prt.type
_parts.append((_name,_type))
return _parts

Secciones
Materiales
Pasos de carga
Interacciones
Instancias

You might also like