问题描述
我正在尝试根据数组列表中的值更改 Abaqus 中的模型名称。起初,我创建了两个数组列表并将它们分开,但这不是一个好主意,因为稍后我将在 Beam_h 和 Beam_w 中拥有 100 个值,并且这些值会重复......如果我想让我的模型名称是:model20-10
、model30-10
、model50-10
?此外,到目前为止我使用的循环给了我 model0
、model1
、model2
。在循环中写什么以获得所需的模型名称?
#Here is the code,Beam_h = [20,30,50] #Beam Height mm
Beam_w = [10,10,10] #Beam width mm
divide_list = [x/y for x,y in zip(Beam_h,Beam_w)] ##I do not want to divide.It's wrong
for values in divide_list: ##looping not right
mdb.Model(name='model'+str(values))
BeamModel = mdb.Model(name='model'+str(values))
解决方法
我想,你只需要弄清楚string concatenation
。
您还需要检查重复的模型名称。因为如果您创建具有重复名称的模型,Abaqus 将替换已存在的模型。
要解决此问题,您可以通过以下方式使用 dictionary
对象:
dup_Models = dict() # To store the model names and repeating count
for x,y in zip(Beam_h,Beam_w):
modelName = 'model%d-%d'%(x,y) # String concatenation - You can use other ways also!
if modelName not in dup_Models:
dup_Models[modelName] = 1
umodelName = modelName # Unique model name (No Duplication)
else:
dup_Models[modelName] += 1
umodelName = '%s_%d'%(modelName,dup_Models[modelName])
BeamModel = mdb.Model(name=umodelName)
最后一件事,您不能在模型名称中使用 .
(dot)(Abaqus 抛出错误)。因此,如果 Beam_h
和 Beam_w
的值不是整数,那么您必须以其他方式命名模型,例如。 w=10.5 and w=20.5 --> model10pt5-20pt5
。