An example of reading node and element information from an output database

The following script illustrates how you can open the output database used by the Abaqus/CAE Visualization module tutorial output database and print out some nodal and element information. Use the following commands to retrieve the example script and the tutorial output database:

abaqus fetch job=odbElementConnectivity
abaqus fetch job=viewer_tutorial

# odbElementConnectivity.py
# Script to extract node and element information.
#
# Command line argument is the path to the output
# database.
#
# For each node of each part instance:
#     Print the node label and the nodal coordinates.
#
# For each element of each part instance:
#     Print the element label, the element type, the
#     number of nodes, and the element connectivity.

from odbAccess import *
import sys

# Check that an output database was specified.

if len(sys.argv) != 2:
    print('Error: you must supply the name \
        of an odb on the command line')
    sys.exit(1)

# Get the command line argument.

odbPath = sys.argv[1]

# Open the output database.

odb = openOdb(path=odbPath)

assembly = odb.rootAssembly

# Model data output

print('Model data for ODB: ', odbPath)

# For each instance in the assembly.

numNodes = numElements = 0

for name, instance in assembly.instances.items():
    
    n = len(instance.nodes)
    print('Number of nodes of instance %s: %d' % (name, n))
    numNodes = numNodes + n

    print()
    print('NODAL COORDINATES')

    # For each node of each part instance
    # print the node label and the nodal coordinates.
    # Three-dimensional parts include X-, Y-, and Z-coordinates.
    # Two-dimensional parts include X- and Y-coordinates.

    if instance.embeddedSpace == THREE_D:
        print('    X         Y         Z')
        for node in instance.nodes:
            print(node.coordinates)
    else:
        print('    X         Y')
        for node in instance.nodes:
            print(node.coordinates)
             
    # For each element of each part instance
    # print the element label, the element type, the
    # number of nodes, and the element connectivity.
       
    n = len(instance.elements)
    print('Number of elements of instance ', name, ': ', n)
    numElements = numElements + n

    print('ELEMENT CONNECTIVITY')
    print(' Number  Type    Connectivity')
    for element in instance.elements:
        print('%5d %8s' % (element.label, element.type), end=' ')
        for nodeNum in element.connectivity:
           print('%4d' % nodeNum, end=' ')
        print()
   
print()
print('Number of instances: ', len(assembly.instances))
print('Total number of elements: ', numElements)
print('Total number of nodes: ', numNodes)