Using regions to read a subset of field output data

After you have created an OdbSet object using model data, you can use the getSubset method to read only the data corresponding to that region. Typically, you will be reading data from a region that refers to a node set or an element set. For example, the following statements create a variable called center that refers to the node set PUNCH at the center of the hemispherical punch. In a previous section you created the displacement variable that refers to the displacement of the entire model in the final frame of the first step. Now you use the getSubset command to get the displacement for only the center region.

center = odb.rootAssembly.instances['PART-1-1'].nodeSets['PUNCH']
centerDisplacement = displacement.getSubset(region=center)
centerValues = centerDisplacement.values
for v in centerValues:
    print(v.nodeLabel, v.data)
The resulting output is
1000 array([0.0000, -76.4555], 'd')
The arguments to getSubset are a region, an element type, a position, or section point data. The following is a second example that uses an element set to define the region and generates formatted output. For more information on tuples, the len() function, and the range() function, see Sequences and Sequence operations.
topCenter = \
    odb.rootAssembly.instances['PART-1-1'].elementSets['CENT']
stressField = odb.steps['Step-2'].frames[3].fieldOutputs['S']

# The following variable represents the stress at 
# integration points for CAX4 elements from the 
# element set "CENT."

field = stressField.getSubset(region=topCenter, 
    position=INTEGRATION_POINT, elementType = 'CAX4')
fieldValues = field.values
for v in fieldValues: 
    print('Element label = ', v.elementLabel)    
    if v.integrationPoint:
        print('Integration Point = ', v.integrationPoint)
    else:
        print()
# For each tensor component.

    for component in v.data:

# Print using a format. The comma at the end of the 
# print statement suppresses the carriage return.

        print('%-10.5f' % component)

# After each tuple has printed, print a carriage return.

    print()
The resulting output is
Element label =  1 Integration Point =  1
S : 0.01230    -0.05658   0.00892    -0.00015  
Element label =  1 Integration Point =  2
S : 0.01313    -0.05659   0.00892    -0.00106  
Element label =  1 Integration Point =  3
S : 0.00619    -0.05642   0.00892    -0.00023  
Element label =  1 Integration Point =  4
S : 0.00697    -0.05642   0.00892    -0.00108  
Element label =  11 Integration Point =  1
S : 0.01281    -0.05660   0.00897    -0.00146  
Element label =  11 Integration Point =  2
S : 0.01183    -0.05651   0.00897    -0.00257  
Element label =  11 Integration Point =  3 ...

Possible values for the position argument to the getSubset command are:

  • INTEGRATION_POINT

  • NODAL

  • ELEMENT_NODAL

  • CENTROID

If the requested field values are not found in the output database at the specified ELEMENT_NODAL or CENTROID positions, they are extrapolated from the field data at the INTEGRATION_POINT position.