[Python] Extracting the Mises values in Abaqus from an .odb file

Discussão em 'Python' iniciado por Stack, Janeiro 21, 2025.

  1. Stack

    Stack Membro Participativo

    I'm writing a code in python that extracts MISES stress (S) in Abaqus 2019 of an instance that is part of an assembly. I have written similar codes for CPRESS or Deformation, but can't get a hold of the stresses. I don't understand why the zip doesn't support iteration. Thankful for any help!

    import csv
    from odbAccess import openOdb
    from abaqusConstants import *

    #Extract Mises

    def getMISES(output_path_mises, odb_path):
    odb = openOdb(odb_path)

    mises_data = odb.steps['Belastung'].frames[-1].fieldOutputs['S']

    #max mises is always in this instance
    instance = odb.rootAssembly.instances['PRUEFKOERPER_4-1']
    node_coords = {node.label: node.coordinates for node in instance.nodes}

    with open(output_path_mises, 'w') as csv_file:
    csv_writer = csv.writer(csv_file)
    csv_writer.writerow(['NodeLabel', 'x', 'y', 'z', 'MISES'])

    for block in mises_data.bulkDataBlocks:
    for node_label, mises_value in zip(block.nodeLabels, block.data):
    if mises_value > 300.0: #Filter
    coords = node_coords.get(node_label, [None, None, None])
    csv_writer.writerow([node_label, coords[0], coords[1], coords[2], '{:.4f}'.format(float(mises_value))])

    odb.close()

    Continue reading...

Compartilhe esta Página