I am trying to do harmonic analysis using abaqus scripting. Everytime I run the code below, I get 'KeyError: XYPlot-1'. Any help would be greatly appreciated. TIA
# -*- coding: mbcs -*-
# Do not delete the following import lines
from abaqus import *
from abaqusConstants import *
import __main__
def Macro1():
import section
import regionToolset
import displayGroupMdbToolset as dgm
import part
import material
import assembly
import step
import interaction
import load
import mesh
import optimization
import job
import sketch
import visualization
import xyPlot
import displayGroupOdbToolset as dgo
import connectorBehavior
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=1.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
s.Line(point1=(0.0, 0.0), point2=(0.235000000051223, 0.0))
s.HorizontalConstraint(entity=g[2], addUndoState=False)
s.ObliqueDimension(vertex1=v[0], vertex2=v[1], textPoint=(0.140255361795425,
0.0583333373069763), value=0.985)
session.viewports['Viewport: 1'].view.setValues(nearPlane=0.686013,
farPlane=1.19961, width=1.74884, height=0.832297, cameraPosition=(
0.0144624, 0.0330418, 0.942809), cameraTarget=(0.0144624, 0.0330418,
0))
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=TWO_D_PLANAR,
type=DEFORMABLE_BODY)
p = mdb.models['Model-1'].parts['Part-1']
p.BaseWire(sketch=s)
s.unsetPrimaryObject()
p = mdb.models['Model-1'].parts['Part-1']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
del mdb.models['Model-1'].sketches['__profile__']
session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON,
engineeringFeatures=ON)
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
referenceRepresentation=OFF)
mdb.models['Model-1'].Material(name='Stainless Steel',
description='Creating of Material Properties for Stainless Steel 304')
mdb.models['Model-1'].materials['Stainless Steel'].Density(table=((7930.0,
), ))
mdb.models['Model-1'].materials['Stainless Steel'].Elastic(table=((
200000000000.0, 0.31), ))
mdb.models['Model-1'].PipeProfile(name='Profile-1', r=0.008, t=0.0015)
mdb.models['Model-1'].BeamSection(name='Tube Section',
integration=DURING_ANALYSIS, poissonRatio=0.0, profile='Profile-1',
material='Stainless Steel', temperatureVar=LINEAR,
consistentMassMatrix=False)
p = mdb.models['Model-1'].parts['Part-1']
e = p.edges
edges = e.getSequenceFromMask(mask=('[#1 ]', ), )
region = p.Set(edges=edges, name='Set-1')
p = mdb.models['Model-1'].parts['Part-1']
p.SectionAssignment(region=region, sectionName='Tube Section', offset=0.0,
offsetType=MIDDLE_SURFACE, offsetField='',
thicknessAssignment=FROM_SECTION)
p = mdb.models['Model-1'].parts['Part-1']
e = p.edges
edges = e.getSequenceFromMask(mask=('[#1 ]', ), )
region=p.Set(edges=edges, name='Set-2')
p = mdb.models['Model-1'].parts['Part-1']
p.assignBeamSectionOrientation(region=region, method=N1_COSINES, n1=(0.0, 0.0,
-1.0))
a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
a1 = mdb.models['Model-1'].rootAssembly
a1.DatumCsysByDefault(CARTESIAN)
p = mdb.models['Model-1'].parts['Part-1']
a1.Instance(name='Part-1-1', part=p, dependent=OFF)
session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=OFF,
engineeringFeatures=OFF)
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
referenceRepresentation=ON)
p = mdb.models['Model-1'].parts['Part-1']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
p = mdb.models['Model-1'].parts['Part-1']
e = p.edges
pickedEdges = e.getSequenceFromMask(mask=('[#1 ]', ), )
p.PartitionEdgeByParam(edges=pickedEdges, parameter=0.5)
a1 = mdb.models['Model-1'].rootAssembly
a1.regenerate()
a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(
adaptiveMeshConstraints=ON)
mdb.models['Model-1'].StaticStep(name='Modes', previous='Initial',
description='Finding the frequencies fro all the Modal Shapes')
session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Modes')
del mdb.models['Model-1'].steps['Modes']
session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Initial')
mdb.models['Model-1'].FrequencyStep(name='Modes', previous='Initial',
description='Finding Frequencies of all Mode Shapes', numEigen=20)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Modes')
mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(variables=(
'U', 'E'))
session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON,
predefinedFields=ON, connectors=ON, adaptiveMeshConstraints=OFF)
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['Part-1-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#1 ]', ), )
region = a.Set(vertices=verts1, name='Set-1')
mdb.models['Model-1'].EncastreBC(name='BC-1', createStepName='Modes',
region=region, localCsys=None)
mdb.models['Model-1'].boundaryConditions.changeKey(fromName='BC-1',
toName='Left_Edge_Fixed')
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['Part-1-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#4 ]', ), )
region = a.Set(vertices=verts1, name='Set-2')
mdb.models['Model-1'].EncastreBC(name='BC-2', createStepName='Modes',
region=region, localCsys=None)
mdb.models['Model-1'].boundaryConditions.changeKey(fromName='BC-2',
toName='Right_Edge_Fixed')
session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=ON, loads=OFF,
bcs=OFF, predefinedFields=OFF, connectors=OFF)
session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(
meshTechnique=ON)
a = mdb.models['Model-1'].rootAssembly
e1 = a.instances['Part-1-1'].edges
pickedEdges = e1.getSequenceFromMask(mask=('[#3 ]', ), )
a.seedEdgeByNumber(edges=pickedEdges, number=20, constraint=FINER)
a = mdb.models['Model-1'].rootAssembly
partInstances =(a.instances['Part-1-1'], )
a.generateMesh(regions=partInstances)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=OFF)
session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(
meshTechnique=OFF)
mdb.Job(name='Mode_Job', model='Model-1',
description='Job to find the mode shapes and frequencies',
type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None,
memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True,
explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF,
modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='',
scratch='', resultsFormat=ODB)
mdb.jobs['Mode_Job'].submit(consistencyChecking=OFF)
session.mdbData.summary()
o3 = session.openOdb(name='C:/ABAQUS/Simulations/Scripting/Mode_Job.odb')
session.viewports['Viewport: 1'].setValues(displayedObject=o3)
session.viewports['Viewport: 1'].makeCurrent()
session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(
DEFORMED, ))
session.linkedViewportCommands.setValues(_highlightLinkedViewports=False)
odb = session.odbs['C:/ABAQUS/Simulations/Scripting/Mode_Job.odb']
session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('U',
NODAL, ((COMPONENT, 'U2'), )), ), nodePick=(('PART-1-1', 1, ('[#2 ]',
)), ), )
odb = session.odbs['C:/ABAQUS/Simulations/Scripting/Mode_Job.odb']
xyList = xyPlot.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=((
'U', NODAL, ((COMPONENT, 'U2'), )), ), nodePick=(('PART-1-1', 1, (
'[#2 ]', )), ), )
xyp = session.xyPlots['XYPlot-1']
chartName = xyp.charts.keys()[0]
chart = xyp.charts[chartName]
curveList = session.curveSet(xyData=xyList)
chart.setValues(curvesToPlot=curveList)
session.charts[chartName].autoColor(lines=True, symbols=True)
session.viewports['Viewport: 1'].setValues(displayedObject=xyp)
odb = session.odbs['C:/ABAQUS/Simulations/Scripting/Mode_Job.odb']
session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('U',
NODAL, ((COMPONENT, 'U2'), )), ), nodePick=(('PART-1-1', 1, ('[#2 ]',
)), ), )
p = mdb.models['Model-1'].parts['Part-1']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(
adaptiveMeshConstraints=ON)
mdb.models['Model-1'].SteadyStateModalStep(name='FRF', previous='Modes',
description='FRF of the tube', frequencyRange=((0.0, 750.0, 50, 3.0),
), directDamping=((1, 5, 0.06), ))
session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='FRF')
mdb.models['Model-1'].FieldOutputRequest(name='F-Output-FRF',
createStepName='FRF', variables=('S', 'MISESMAX', 'E', 'U', 'TU', 'TA',
'RT'))
session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON,
predefinedFields=ON, connectors=ON, adaptiveMeshConstraints=OFF)
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['Part-1-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#2 ]', ), )
region = a.Set(vertices=verts1, name='Set-4')
mdb.models['Model-1'].ConcentratedForce(name='Applied Load',
createStepName='FRF', region=region, cf2=-12.5+0j,
distributionType=UNIFORM, field='', localCsys=None)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=OFF, bcs=OFF,
predefinedFields=OFF, connectors=OFF)
mdb.Job(name='FRF_Job', model='Model-1', description='Job to find FRF',
type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None,
memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True,
explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF,
modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='',
scratch='', resultsFormat=ODB)
mdb.jobs['FRF_Job'].submit(consistencyChecking=OFF)
session.mdbData.summary()
o3 = session.openOdb(name='C:/ABAQUS/Simulations/Scripting/FRF_Job.odb')
session.viewports['Viewport: 1'].setValues(displayedObject=o3)
session.viewports['Viewport: 1'].makeCurrent()
session.linkedViewportCommands.setValues(_highlightLinkedViewports=False)
odbName=session.viewports[session.currentViewportName].odbDisplay.name
session.odbData[odbName].setValues(activeFrames=(('FRF', ('0:-1', )), ))
odb = session.odbs['C:/ABAQUS/Simulations/Scripting/FRF_Job.odb']
session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('U',
NODAL, ((COMPONENT, 'U2'), )), ), numericForm=REAL, nodePick=((
'PART-1-1', 1, ('[#2 ]', )), ), )
odb = session.odbs['C:/ABAQUS/Simulations/Scripting/FRF_Job.odb']
xyList = xyPlot.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=((
'U', NODAL, ((COMPONENT, 'U2'), )), ), numericForm=REAL, nodePick=((
'PART-1-1', 1, ('[#2 ]', )), ), )
xyp = session.xyPlots['XYPlot-1']
chartName = xyp.charts.keys()[0]
chart = xyp.charts[chartName]
curveList = session.curveSet(xyData=xyList)
chart.setValues(curvesToPlot=curveList)
session.charts[chartName].autoColor(lines=True, symbols=True)
session.viewports['Viewport: 1'].setValues(displayedObject=xyp)
odb = session.odbs['C:/ABAQUS/Simulations/Scripting/FRF_Job.odb']
session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('U',
NODAL, ((COMPONENT, 'U2'), )), ), numericForm=REAL, nodePick=((
'PART-1-1', 1, ('[#2 ]', )), ), )
Macro1()
Any additional information on how I can do a for loop to do various iterations for different Young's Modulus, Poisson's Ratio and Density will also be greatly appreciated.