Abaqus:创建一个新的 FieldOutput(格式?)

Abaqus: Creating a new FieldOutput (format?)

一直在努力解决以下问题:我想为给定的 el 创建一个新的 FieldOutput(可以说一些简单的张量算术运算)。放。不是整个模型,因为这太昂贵了,而且我对那个特定的模型很感兴趣 area/set 无论如何。

我用结果打开一个 odb....

from abaqus import *
from odbAccess import *
from abaqusConstants import *
import visualization
import fileinput
import os

# to make prettyPrint work!
from odbAccess import *
from textRepr import *

# open odb
odb_path="analysis45.odb"
my_odb=session.openOdb(name=odb_path,readOnly=FALSE)

一些替换确保它总是打开 step/instance 无论他们的名字是什么...

# automate the proces of reading the step no matter what its name is
StepNames=(my_odb.steps.keys() )        #   it is a list of all step names
lastStep=( StepNames[-1] )  

# automation of an instance naming (in the same way)
NaseInstance = (my_odb.rootAssembly.instances.keys())
MojeInstance = ( NaseInstance[-1] ) 
CelaMojeInstance=my_odb.rootAssembly.instances[MojeInstance]

在这里找到了其他人计算新数据并将它们填充到新标量的方法:https://gist.github.com/crmccreary/5015483不过,我没有成功理解那里到底发生了什么,因为这个脚本要复杂得多,我不是一个程序员。

试图通过直接向字段硬规定一些值来简化任务(打算稍后用函数替换它,最后以这种方式遍历整个 elset)。我收到一条关于 "illegal argument type for built-in operation" 表单的消息,我认为我尝试插入的数据格式不正确。尝试了文档 w/o 成功。我可以要一个 hint/help 吗?谢谢!

NewField =my_odb.steps[lastStep].frames[0].FieldOutput(name='New_scalar_field',description='Our brand new scalar field', type=SCALAR)
NewField.addData(position=NODAL, instance=CelaMojeInstance, labels=[1657, 1658, 1683, 1684, 14193, 14194, 14195, 14196], data=[(6),(12),(6),(12),(6),(12),(6),(12)])

my_odb.save()
my_odb.close()

这个家伙的解决方案似乎与我的完全相同:http://abaqus-users.1086179.n5.nabble.com/Writing-Results-to-Existing-ODB-file-td21750.html

我明白这个问题对于前辈来说可能太琐碎或太愚蠢了,抱歉。

出于某种原因,当我输入时它起作用了:

data=[(6.0,),(12.0,),(6.0,),(12.0,),(6.0,),(12.0,),(6.0,),(12.0,)]

在数值后加逗号。我真的不知道为什么。希望它对以后的其他人有所帮助。

数据必须由元组的元组组成,就像这样:

((1,),(2,),(3,)).

您的数据由数字元组组成,如下所示:((1),(2),(3))。在python、(1) == 1。这只是括号。要使用一个元素创建一个元组,请使用逗号 (1,) != 1.

我遇到了和你一样的问题,我已经这样解决了。