Search code examples
pythonabaqus

Abaqus VisError - problem with xyDataListFromField


I have a python script in Abaqus gui. When I try to run this script I have error: VisError: No xy data was extracted using the provided options.

The python script fragment is:

 session.viewports['Viewport: 1'].setValues(displayedObject=o3)
session.viewports['Viewport: 1'].makeCurrent()
a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.mdbData.summary()
session.viewports['Viewport: 1'].setValues(
    displayedObject=session.odbs[os.getcwd() + '/' + 'Hotforging1.odb'])
session.viewports['Viewport: 1'].assemblyDisplay.setValues(
    adaptiveMeshConstraints=OFF)
session.linkedViewportCommands.setValues(_highlightLinkedViewports=False)
odb = session.odbs[os.getcwd() + '/' + 'Hotforging1.odb']
session.xyDataListFromField(odb=odb, outputPosition=INTEGRATION_POINT,
                            variable=(('HFL', INTEGRATION_POINT),
                                      ('LE', INTEGRATION_POINT),
                                      ('PE', INTEGRATION_POINT),
                                      ('S', INTEGRATION_POINT),),
                            elementPick=(('HBEAM-1', 4, ('[#0:15 #800 #0:3 #40000000 #900000 ]',)),), )

I know that the problem is with xyDataListFromField function, but I don't know how can I solve it.


Solution

  • The element input for xyDataListFromField method is wrong. I think, the input '[#0:15 #800 #0:3 #40000000 #900000 ]', you must have got from getSequenceFromMask method. The input for this method is internal, hence you cannot use it in your code.
    Anyways, first of all, I did not find elementPick option for this method. However, some alternative option you can use are: elementSets and elementLabels.
    This information I got from Abaqus Scripting reference Guide:

    elementSets
    A sequence of Strings specifying element sets or a String specifying a single element set.

    elementLabels
    A sequence of expressions specifying element labels per part instance in the model. Each part instance element expression is a sequence of a String specifying the part instance name and a sequence of element expressions; for example, (('partInstance1',(1,'7','3:15;3'),), ('partInstance2','8'),)).
    The element expressions can be any of the following:
    • An Int specifying a single element label; for example, 1.
    • A String specifying a single element label; for example, '7'. • A String specifying a sequence of element labels; for example, '3:5' and '3:15:3'.

    I think, elementSets option is easy to use, where is just need to provide the element set names.