Abaqus子程序:Uvarm子程序——自定义云图

概述

  • 在包含用户定义输出变量规范的材料定义中,会在所有的元素材料计算点上调用该子程序;

  • 因为Abaqus/Standard迭代到收敛解,可能会在每个增量中的每个材料点上多次调用;

  • 会在每个步骤的每个增量中调用;

  • 允许您定义作为任何可用积分点数量的函数的输出量,这些数量在“使用Abaqus/Standard输出变量标识符”表中列出;

  • 允许您将材料方向定义为输出变量;

  • 可以用于垫片元素;

  • 可以调用实用程序GETVRM以访问材料点数据;

  • 除了静态扰动过程外,不能与线性扰动程序一起使用;

  • 在具有多个负载情况的静态扰动过程中,每个负载情况只会调用一次;并且

  • 在零增量中不能更新。

子程序使用注意

  • 在Abaqus/Standard分析中,可以通过实用程序GETVRM获得材料点数量的值。在非线性分析中,返回的值将对应于当前解的迭代,仅在每个增量的最后一次迭代时代表收敛解。在静态扰动过程中,只能访问计算扰动值的那些数量。材料点数据的值以浮点数、整数和字符数据分别恢复到数组ARRAY、JARRAY和FLGRAY中。浮点数数据以双精度数据恢复。

  • 在Abaqus/Standard中,用户自定义输出量的输出标识符是UVARM。每个分量可以通过UVARMn进行访问,其中n的范围为1到NUVARM。对于给定的材料,您需要指定用户定义输出变量的数量NUVARM,以便在每个材料计算点为每个变量分配空间。这些用户定义的输出变量可用于打印输出和结果文件输出,并写入输出数据库和重启文件,以便在Abaqus/CAE中进行等值线、打印和X-Y绘图。您可以根据需要使用任意数量的用户定义输出变量。

  • 这些数据以双精度提供,可用于向数据(.dat)和结果(.fil)文件输出,并以单精度形式写入输出数据库(.odb)文件中。由于用户提供的UVARM输出变量是双精度的,因此在将输出结果写入输出数据库文件时,即使没有在UVARM中发生溢出错误,也可能会出现与单精度表示容量不足相关的数值溢出错误。

子程序使用

调用界面

1. Material 模块设置

2. Step 模块设置

用户子程序接口


      SUBROUTINE UVARM(UVAR,DIRECT,T,TIME,DTIME,CMNAME,ORNAME,
     1 NUVARM,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,NDI,NSHR,COORD,
     2 JMAC,JMATYP,MATLAYO,LACCFLA)
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME,ORNAME
      CHARACTER*3 FLGRAY(15)
      DIMENSION UVAR(NUVARM),DIRECT(3,3),T(3,3),TIME(2)
      DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)

C     The dimensions of the variables FLGRAY, ARRAY and JARRAY
C     must be set equal to or greater than 15.


      user coding to define UVAR


      RETURN
      END

子程序变量

1. 要定义的变量

UVAR(NUVARM)

一个包含用户定义输出变量的数组。这些值在增量开始时作为输入传入,并且必须在增量结束时作为输出返回

2. 传递信息的变量

DIRECT(3,3)

一个包含材料方向相对于全局基础方向的方向余弦的数组。DIRECT(1,1),DIRECT(2,1),DIRECT(3,1)给出了第一个材料方向的(1, 2, 3)分量;DIRECT(1,2),DIRECT(2,2),DIRECT(3,2)给出了第二个材料方向,依此类推。对于壳体和薄膜元素,前两个方向在元素的平面内,第三个方向是法线方向。这些信息对于梁和桁架元素不可用。

T(3,3)

一个包含相对于元素基准方向的材料取向分量方向余弦的数组。这个取向定义了材料方向(DIRECT)相对于元素基准方向的关系。对于连续介质元素,T和DIRECT是相同的。对于壳体和薄膜元素,T(1,1) = cosθ, T(1,2) = -sinθ, T(2,1) = sinθ, T(2,2) = cosθ, T(3,3) = 1.0,所有其他分量都为零。其中θ是绕法向量逆时针旋转来定义取向的角度。如果没有使用取向,T就是一个单位矩阵。梁和桁架元素不支持取向参数。

其他

TIME(1):当前增量结束时的步长时间值。

TIME(2):当前增量结束时的总时间值。

DTIME:时间增量。

CMNAME:用户指定的材料名称,左对齐。

ORNAME:用户指定的局部取向名称,左对齐。

NUVARM:用户指定的用户定义输出变量数量。

NOEL:单元编号。

NPT:积分点编号。

LAYER:层编号(用于复合壳体和分层固体)。

KSPT:当前层中的截面点编号。

KSTEP:步骤编号。

KINC:增量编号。

NDI:该点应力分量的个数。

NSHR:该点剪切应力分量的个数。

COORD:该材料点的坐标。

JMAC:必须传递给GETVRM实用程序以访问输出变量的变量。

JMATYP:必须传递给GETVRM实用程序以访问输出变量的变量。

MATLAYO:必须传递给GETVRM实用程序以访问输出变量的变量。

LACCFLA:必须传递给GETVRM实用程序以访问输出变量的变量。

案例介绍

下面是一个名为UVARM的用户子程序的示例。该子程序通过从应力张量σ中减去运动硬化塑性模型中的运动偏移张量α,计算当前状态应力相对于屈服面中心的位置。


      SUBROUTINE UVARM(UVAR,DIRECT,T,TIME,DTIME,CMNAME,ORNAME,
     1 NUVARM,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,NDI,NSHR,COORD,
     2 JMAC,JMATYP,MATLAYO,LACCFLA) 
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME,ORNAME
      CHARACTER*3 FLGRAY(15)
      DIMENSION UVAR(NUVARM),DIRECT(3,3),T(3,3),TIME(2) 
      DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
C
C Error counter:
      JERROR = 0
C Stress tensor:
      CALL GETVRM('S',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
     1 MATLAYO,LACCFLA)
      JERROR = JERROR + JRCD
      UVAR(1) = ARRAY(1)
      UVAR(2) = ARRAY(2)
      UVAR(3) = ARRAY(3)
      UVAR(4) = ARRAY(4)
      UVAR(5) = ARRAY(5)
      UVAR(6) = ARRAY(6)
C Kinematic shift tensor:
      CALL GETVRM('ALPHA',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
     1 MATLAYO,LACCFLA)
      JERROR = JERROR + JRCD
C Calculate the position relative to the center of the
C yield surface:
      UVAR(1) = UVAR(1) - ARRAY(1)
      UVAR(2) = UVAR(2) - ARRAY(2)
      UVAR(3) = UVAR(3) - ARRAY(3)
      UVAR(4) = UVAR(4) - ARRAY(4)
      UVAR(5) = UVAR(5) - ARRAY(5)
      UVAR(6) = UVAR(6) - ARRAY(6)
C If error, write comment to .DAT file:
      IF(JERROR.NE.0)THEN
        WRITE(6,*) 'REQUEST ERROR IN UVARM FOR ELEMENT NUMBER ',
     1      NOEL,'INTEGRATION POINT NUMBER ',NPT
      ENDIF
      RETURN
      END

结语

今天分享一个用于自定义场输出的子程序,例如自定义云图等,公众号冬生亦东生后台回复 Uvarm子程序

获取更多案例。如果觉得有用请分享让更多人看到,觉得有不当之处欢迎指正交流。好看的话,下次再看。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于学习 Abaqus 子程序,你可以按照以下步骤进行: 1. 熟悉 Abaqus 宏命令语言(Abaqus Scripting Interface):子程序是通过宏命令编写的,因此了解宏命令语言对于学习子程序至关重要。你可以查阅 Abaqus 提供的宏命令语言文档,并阅读相关教程和示例代码。 2. 了解 Abaqus 子程序的工作原理:子程序是用于扩展 Abaqus 功能的用户自定义代码。它们可以用于自定义材料模型、边界条件、加载等。了解子程序的工作原理将帮助你理解如何编写和使用它们。 3. 学习子程序的编写和调试:编写子程序需要具备一定的编程知识和经验。你可以选择使用 Fortran 或 C/C++ 作为编程语言,并使用适当的开发环境(如 Visual Studio)来编写和调试你的代码。Abaqus 提供了一些示例子程序供参考。 4. 运行和验证子程序:在编写完成子程序后,你可以将其编译为动态链接库,并将其与 Abaqus 软件集成。通过定义材料参数、加载条件等,你可以在 Abaqus 中使用和验证你的子程序。 5. 深入学习和应用:一旦你掌握了基本的子程序编写技巧,你可以进一步学习和应用高级的子程序技术,如用户自定义本构模型、接触算法等。 需要注意的是,学习 Abaqus 子程序需要具备一定的数学、力学和编程基础。如果你刚开始学习 Abaqus,建议先掌握软件的基本功能和使用方法,然后再逐步学习和应用子程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬生亦东生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值