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
相关产品推荐
相关产品推荐

