首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Abaqus脚本KeyError

Abaqus脚本KeyError
EN

Stack Overflow用户
提问于 2020-05-23 23:48:20
回答 1查看 453关注 0票数 0

我正在尝试使用abaqus脚本进行谐波分析。每次我运行下面的代码,我都会得到'KeyError: XYPlot-1‘。任何帮助都将不胜感激。提亚

代码语言:javascript
复制
# -*- 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()

任何关于我如何做for循环来为不同的杨氏模量,泊松比和密度做各种迭代的额外信息也将非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2020-05-31 03:06:54

欢迎来到Stack Overflow。在python意义上,这意味着找不到密钥XYPlot-1

宏中的

  1. Python命令无需等待abaqus作业完成即可执行。我的建议是将它们一分为二,一个创建并运行分析,另一个读取odb并生成您正在寻找的曲线图。我强烈建议您在所有use wait for completion before continuing to other parts of the script语句之后在脚本的顶部使用
  2. ,以避免与宏read JulianBauer's answer here生成的掩码相关的问题。
  3. 有关如何迭代不同材料属性的信息,请查看文档中的脚本参数化研究。文档中的射弹侵彻平板的例子是我能找到的初学者友好的例子。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61974634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档