🐍Python script Helps you extract Nodal Deflections from .odb file in ABAQUS: Knowledge Sharing

Hi Community members,

Have you ever wondered how to extract nodal deflections from your ABAQUS simulation? 

Let me take you through a simple PYTHON script to take your FEA game to the next level! 

 

I performed a simulation from the Verification section of the ABAQUS documentation which has cyclic loading. 

 

Now I would like to know the nodal deflections in the frame I need:

from odbAccess import *
from abaqusConstants import *
import os

def extract_nodal_deflections(odb_path, output_file):
""" Extracts nodal deflections from an ABAQUS output database (odb) file and saves them to a text file.
Parameters: odb_path (str): Path to the ABAQUS .odb file.
 output_file (str): Path to the output text file where deflections will be saved."""
    
    if not os.path.exists(odb_path):
        raise FileNotFoundError(f"The specified ODB file does not exist: {odb_path}")

    # Open the ODB file
    odb = openOdb(odb_path)

    # Access the first step (modify as needed for specific steps)
    step_name = list(odb.steps.keys())[0]
    step = odb.steps[step_name]

    # Access the first frame (modify as needed for specific frames)
    frame = step.frames[-1]

    # Access the displacement field output
    if 'U' not in frame.fieldOutputs:
        raise ValueError("Displacement field ('U') not found in the ODB file.")

    displacement = frame.fieldOutputs['U']

    # Access the nodes and write deflections to the output file
    with open(output_file, 'w') as f:
        f.write("Node Label, U1, U2, U3\\n")

        for value in displacement.values:
            node_label = value.nodeLabel
            u1, u2, u3 = value.data
            f.write(f"{node_label}, {u1:.6f}, {u2:.6f}, {u3:.6f}\\n")

    print(f"Nodal deflections have been written to {output_file}")

    # Close the ODB file
    odb.close()

# Example
if __name__ == "__main__":
    odb_file_path = "path_to_your_odb_file.odb"  # Replace with your ODB file path
    output_file_path = "nodal_deflections.txt"  # Replace with your desired output file path

    extract_nodal_deflections(odb_file_path, output_file_path)

Feel free to reuse this script by just changing the path to your .odb file!

Its that easy!

 

The output looks like this:

Edu  Abaqus PYTHON Knowledge Sharing FEA