亲爱的每个人,
我已经通过UEL将铁电本构律嵌入到ABAQUS中。对在役铁电器件的应力进行了预测,但后处理困难。
如果你知道的话,能否详细告诉我如何输出?
W.G.江
2007年9月20日
我不熟悉UEL,但如果状态变量(SVARS)不在.odb文件中输出,那么唯一的方法是编写一个后处理程序。如果您想使用CAE然后你应该使用ABAQUS脚本接口(Python或c++)来导入将SVARS数据作为FieldOutput对象放入.odb文件中。
谢谢你的评论。
在UEL中,元素不输出任何字段。当然,我可以通过python输出这些状态变量,但是我们知道,所有的变量都定义在积分点上。在odb中,元素没有可用的信息。因此,我必须使用TECPLOT格式的Fortran代码将这些积分点中的变量转换为UEL中的节点。
在这个过程中有一些问题。因为UEL中没有模型的节点号,所以我不知道如何平滑这些字段,虽然这在有限元法中不难实现。
一些想法:
1.我认为在最坏的情况下,您可以使用PROPS向量传递每个元素的节点连接。
或者:
2.您可以通过PROPS传递元素编号,并在COMMON块中使用数组存储元素连接。然后编写一个子例程,根据元素号检索节点连接性,这是可以从UEL调用的子例程。
只要你有一个有效的网格描述,你总是可以在ABAQUS/CAE中可视化数据,通过使用脚本界面和做一些编码。
我们知道Props(*)是材料属性的矢量。在UEL中,由于缺少整个模型中的节点号,元素连通性向量不可用。
从编程的角度来看,我认为你可以把任何你想要的作为元素属性。: -)
我提到PROPS数组(这是一个实值数组)可能是错误的。
我认为您可能对使用JPROPS更感兴趣是一个整数数组,因此适合将节点连接传递给UEL。
这是来自:ABAQUS Analysis用户手册(v6.6) -> 26.15.1用户自定义元素
”定义元素属性您可以定义与特定用户元素关联的属性数量,然后指定它们的数值。
指定所需属性值的数量可以定义任意数量的属性,以用于形成一般用户元素。您可以指定所需的整数属性值的数量n,以及所需的实(浮点)属性值的数量m;所需值的总数是这两个数的和。默认需要的整型属性值的个数为0,默认需要的真实属性值的个数为0。
整数属性值可以在用户子例程UEL中用作标志、索引、计数器等。实(浮点)属性值的例子包括梁或棒的横截面积、壳体的厚度以及用于定义元素的材料行为的材料属性。
输入文件用法:*USER元素,I PROPERTIES=n, PROPERTIES=m"
最好的
在帮助中:整数属性值可以在用户子例程UEL中用作标志、索引、计数器等。实(浮点)属性值的例子包括梁或棒的横截面积、壳体的厚度以及用于定义元素的材料行为的材料属性。
在我看来,Jprops是user元素的一些整数属性。对于同一个用户元素,Jprops的这些数据是常量。就像从inp文件传入UEL的弹性模块、标志等一样。具有相同用户元素类型(例如U1)的不同元素拥有相同的数据。对于我的工程项目,大约有10万个元素,这是不可能的。忘了说,装配是在abaqus/CAE中进行网格划分的。
最好的问候,
我理解,我认为每个元素都有自己的JPROPS数组,但实际上是每个(用户定义的)元素类型具有唯一的JPROPS,因此相同类型的所有元素共享相同的JPROPS。
但是,一定有办法。总会有办法的!: -)
也许是SVARS ?每个元素都有自己的SVARS。难道你不能只使用SVARS的一个值来存储元素标签,然后你可以有另一个子程序来查找节点连接吗?
在我看来,实现这一目标的最佳方法是使用SVARS阵列。SVARS可以被打印到.dat文件的表中(其中包括元素标签),然后可以对其进行过滤以创建FieldOutput()对象,通过将结果覆盖在原始的“虚拟”网格上来创建CAE中查看的结果。假设您的状态变量数组包含每个集成点的状态变量的所有值(即,它的维度至少是#个状态变量x #个集成点),这在概念上很简单。这种方法避免了担心与节点连接性、元素标签等保持一致,否则就会从头开始重新编写后处理代码。当然,这还假设您在UEL中使用的形状函数可以与ABAQUS元素库中的元素相匹配。如果是这样的话,那么除了用一些编码来获得适当格式的数据之外,任务就非常简单了。
现在就讨论线程中出现的另外两个问题进行评论:1)元素的节点连接性在输入文件中给出,2)元素编号作为变量JELEM传递给子例程。
我希望这对你有帮助。
谢谢你的帮助。在操作过程中会出现一些问题。(1)Python接口可以访问odb文件中的数据,但不能访问*.dat文件。我认为字段值是只读的,不可能被覆盖。我的第一个问题是如何创建FieldOoutput()对象来查看基于元素的字段?(2)例如,在ABAQUS中加入一个类似于C3D8E的用户元素,则要求在ABAQUS /viewer中显示S11的轮廓。每个元素有8个积分点,所以我们必须使用8个状态变量来表示S11,例如:SVARS (1:8)。我的问题是如何使abaqus/查看器知道Svars(1:8)表示S11组件?换句话说,如果我选择Svars(1),查看器将在集成点1中显示S11值,因此我们不能在整个模型上显示S11。
我不知道如果这个线程仍然是一个主题,但你为什么不使用ABAQUS UVARM子程序?这就是我正在做的。使用这个子例程,您可以将集成点数据写入ABAQUS结果数据库中所谓的“虚拟”元素。“虚拟”元素是指与用户元素具有相同连通性,但属性可忽略的元素。在最好的情况下,它也有相同的自由度,但这不是必须的。
致以最亲切的问候