es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ABAQUS-python: escribir resultados de ODB en un archivo

Tengo el siguiente script para abrir un archivo ABAQUS ODB y obtener desplazamientos y coordenadas de un conjunto de nodos específico. Puedo imprimirlos en pantalla, pero necesito ayuda para escribirlos en un archivo (.xlsx, .cvs, .dat o .txt) para su posterior procesamiento. Soy nuevo en la programación con abaqus, así que cualquier ayuda sería apreciada. El código actualmente es el siguiente:

from odbAccess import *
from numpy import array

odb = openOdb(path='Test_3.odb')
lastFrame = odb.steps['Step-1'].frames[1]

displacement = lastFrame.fieldOutputs['U']
coords=lastFrame.fieldOutputs['COORD']

NodeSetx = odb.rootAssembly.instances['CFRPSKINTS-1'].nodeSets['NODESETXAXIS']
NodeSety = odb.rootAssembly.instances['CFRPSKINTS-1'].nodeSets['NODESETYAXIS']

centerDisplacementx = displacement.getSubset(region=NodeSetx)
NodeCoordx = coords.getSubset(region=NodeSetx)

centerDisplacementy = displacement.getSubset(region=NodeSety)
NodeCoordy = coords.getSubset(region=NodeSety)

for v in centerDisplacementx.values:
    dispout = v.nodeLabel, v.data[2]
    print (disp_out)

for c in NodeCoordx.values:
    coordout = c.nodeLabel, c.data[0], c.data[1], c.data[2]
    print (coord_out)

odb.close()
Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el módulo csv para escribir los datos en un archivo.Puede usar la clase csv.writer para escribir los datos en un archivo. El código se vería algo así:

    import csv
    
    with open('output.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile, delimiter=',')
        writer.writerow(['Etiqueta de Nodo', 'Desplazamiento', 'Coordenada X', 'Coordenada Y', 'Coordenada Z'])
        for v in centerDisplacement_x.values:
            disp_out = v.nodeLabel, v.data[2]
            for c in NodeCoord_x.values:
                coord_out = c.nodeLabel, c.data[0], c.data[1], c.data[2]
                if v.nodeLabel == c.nodeLabel:
                    writer.writerow([v.nodeLabel, v.data[2], c.data[0], c.data[1], c.data[2]])
    
    odb.close()
    

    Este código escribirá los datos en un archivo csv llamado output.csv.

Comments are closed.