I'm using a python script to extract and post process results fra an Abaqus FE model, but experience inconsistency when working with data from the odb-file. An example is given below.
odbObj = session.openOdb(name=JobName+'.odb', readOnly=True)
step = odbObj.steps['LC5']
set = odbObj.rootAssembly.instances['DETAILEDTOPPLATE-1#TOPPLATE-1'].nodeSets['FD3_N1A']
>>> print
step.frames[1].fieldOutputs['S'].getSubset(region=set,position=
ELEMENT_NODAL,elementType='S8R').bulkDataBlocks[0].data
[[ 1.29479978e-42 -2.41047720e+07 0.00000000e+00 3.10530625e+05]
[ -1.08975990e+07 -2.39987960e+07 0.00000000e+00 3.74051719e+05]
[ -1.10543630e+07 -2.40516500e+07 0.00000000e+00 3.66518000e+05]
[ -1.10951790e+07 -2.41662480e+07 0.00000000e+00 3.20761438e+05]]
>>> print
step.frames[1].fieldOutputs['S'].getSubset(region=set,position=
ELEMENT_NODAL,elementType='S8R').bulkDataBlocks[0].data
[[ 4.87651866e-43 -2.41047720e+07 0.00000000e+00 3.10530625e+05]
[ -1.08975990e+07 -2.39987960e+07 0.00000000e+00 3.74051719e+05]
[ -1.10543630e+07 -2.40516500e+07 0.00000000e+00 3.66518000e+05]
[ -1.10951790e+07 -2.41662480e+07 0.00000000e+00 3.20761438e+05]]
>>> print
step.frames[1].fieldOutputs['S'].getSubset(region=set,position=
ELEMENT_NODAL,elementType='S8R').bulkDataBlocks[0].data
[[ 5.60519386e-45 5.60519386e-45 2.38220739e-44 1.92838405e+31]
[ 5.42138869e-11 1.77519978e+28 1.25672711e-14 3.72739562e+05]
[ -1.10543630e+07 -2.40516500e+07 0.00000000e+00 3.66518000e+05]
[ -1.10951790e+07 -2.41662480e+07 0.00000000e+00 3.20761438e+05]]
>>> print step.frames[1].fieldOutputs['S'].getSubset(region=set,position=
ELEMENT_NODAL,elementType='S8R').bulkDataBlocks[0].data
[[ 2.24207754e-44 5.60519386e-45 0.00000000e+00 3.10530625e+05]
[ -1.08975990e+07 -2.39987960e+07 0.00000000e+00 3.74051719e+05]
[ -1.10543630e+07 -2.40516500e+07 0.00000000e+00 3.66518000e+05]
[ -1.10951790e+07 -2.41662480e+07 0.00000000e+00 3.20761438e+05]]
As seen from above the arrays are not consistent even though the call is exactly the same and thus the data should be identical. I can understand and accept that the really small numbers vary, but all sizes of numbers change.
I hope someone can help solve this problem or give a work around.
Thanks in advance.
Additional information based on comments.
Two workarounds have been suggest (examples shown below is with another data set than above). Method 1) solves the problem.
1) tmp=x.bulkDataBlocks which does the job
tmp=step.frames[1].fieldOutputs['S'].getSubset(
region=set,position=ELEMENT_NODAL,elementType='S8R').bulkDataBlocks
print tmp[0].data
[[-20119512. -7074813.5 0. -2039073.375]
[-20130472. -7037518. 0. -1930314.125]
[-20122654. -6948099. 0. -2073283.625]
[-20107980. -6968545.5 0. -1941211.375]]
print tmp[0].data
[[-20119512. -7074813.5 0. -2039073.375]
[-20130472. -7037518. 0. -1930314.125]
[-20122654. -6948099. 0. -2073283.625]
[-20107980. -6968545.5 0. -1941211.375]]
print tmp[0].data
[[-20119512. -7074813.5 0. -2039073.375]
[-20130472. -7037518. 0. -1930314.125]
[-20122654. -6948099. 0. -2073283.625]
[-20107980. -6968545.5 0. -1941211.375]]
2) tmp=np.copy(x.bulkDataBlocks) which makes even more inconsistency
tmp=np.copy(step.frames[1].fieldOutputs['S'].getSubset(
region=set,position=ELEMENT_NODAL,elementType='S8R').bulkDataBlocks)
print tmp[0].data
[[ 2.24207754e-44 5.60519386e-45 0.00000000e+00 -1.78478850e+06]
[ -1.63939740e+07 -7.07835200e+06 0.00000000e+00 -1.76956088e+06]
[ -1.63960690e+07 -7.07548150e+06 0.00000000e+00 -1.79225850e+06]
[ -1.63969780e+07 -7.07681000e+06 0.00000000e+00 -1.79695375e+06]]
print tmp[0].data
[[ 1.68155816e-44 5.60519386e-45 0.00000000e+00 -1.78478850e+06]
[ -1.63939740e+07 -7.07835200e+06 0.00000000e+00 -1.76956088e+06]
[ -1.63960690e+07 -7.07548150e+06 0.00000000e+00 -1.79225850e+06]
[ -1.63969780e+07 -7.07681000e+06 0.00000000e+00 -1.79695375e+06]]
print tmp[0].data
[[ 5.60519386e-45 5.60519386e-45 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]]