You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Abaqus创建单元集合时出现Keyword Error问题求助

Abaqus创建单元集合触发Keyword Error的解决方案

问题背景

在Abaqus中尝试创建两个单元集合,用于为部件分配不同材料属性:

  • GEL_cell:通过固定位置的findAt方法选取
  • PCL_cell:通过线搜索获取单元后,经过去重、过滤GEL单元得到

已确认两者均为Cell类型,但执行Set创建代码时触发Keyword Error。

问题代码

r = np.sqrt((centerx[i]*centerx[i])+(centery[i]*centery[i]))
D = 0.2
f_space = .6
Model_str = 'Model-R' + str(int(r)) + ' FD' + str(int(D*1000)) + 'um FS' + str(int(f_space*1000)) +'um'    

PCL_search = []
PCL_linsearchx = np.linspace(-stampw/2,stampw/2,40)
for k in range(0,int(len(PCL_linsearchx)-1)):
    PCL_search.append(mdb.models[Model_str].parts['Part-4'].cells.findAt((PCL_linsearchx[k],stamph,1.5*b))) # PCL seach loops
    mdb.models[Model_str].rootAssembly.ReferencePoint(point=([PCL_linsearchx[k],stamph,3*b/2])) # reference points to see where my line search is

GEL_cell = mdb.models[Model_str].parts['Part-4'].cells.findAt((0,0,0))


PCL_fil = []
[PCL_fil.append(x) for x in PCL_search if x not in PCL_fil] # removing duplicates and any of the cells that are the gel
for k in range(0,int(len(PCL_fil)-1)):
    if PCL_fil[k] == GEL_cell:
        PCL_fil[k] = None

PCL_fil = list(filter(lambda item: item is not None, PCL_fil)) # second filter of the line search
PCL_cell = PCL_fil[0]

print('PCL_cell: ', PCL_cell)
print('GEL_cell: ', GEL_cell)

print('gel type', type(GEL_cell))
print('PCL type', type(PCL_fil[0]))


GEL_set = mdb.models[Model_str].parts['Part-4'].Set(cells = GEL_cell, name= 'Gel-set') # point of error
PCL_set = mdb.models[Model_str].parts['Part-4'].Set(cells= PCL_cell, name='PCL-set') # 

单元输出结果

mdb.models['Model-R36 FD200um FS600um'].parts['Part-4'].cells[0]
mdb.models['Model-R36 FD200um FS600um'].parts['Part-4'].cells[1]

解决方法

问题核心:Abaqus的Set()方法要求cells参数接收Cell对象的可迭代序列(如列表、元组),而非单个Cell对象。即使只需要传入一个单元,也必须将其包装在序列中。

修改创建集合的两行代码:

# 将单个Cell对象放入列表中传入
GEL_set = mdb.models[Model_str].parts['Part-4'].Set(cells = [GEL_cell], name= 'Gel-set')
PCL_set = mdb.models[Model_str].parts['Part-4'].Set(cells= [PCL_cell], name='PCL-set')

验证说明

  • findAt()方法返回的是单个Cell实例,而Set()的cells参数需要的是可迭代集合。直接传入单个对象会导致API参数不匹配,触发Keyword Error。
  • 可以通过print(type([GEL_cell]))确认参数类型为列表,符合Abaqus API的要求。

内容的提问来源于stack exchange,提问作者swinston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:10:40