1.简介
用户子程序 UTEMP :
允许您规定模型节点的温度;
每当用户定义的温度场定义下列出的节点需要当前温度值时,将被调用;
忽略为用户子程序之外的关联温度场定义提供的任何温度;和
可用于修改从结果文件中读取的任何温度。
2.本文讨论:
用户子程序接口
要定义的变量
传递信息的变量
3.调用方法
产品Abaqus/Standard
4.用户子程序接口
SUBROUTINE UTEMP(TEMP,NSECPT,KSTEP,KINC,TIME,NODE,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TEMP(NSECPT), TIME(2), COORDS(3)
C
user coding to define TEMP
RETURN
END
5.要定义的变量
TEMP(NSECPT)
节点号 NODE 处的温度值数组。如果节点未连接到梁或壳单元,则仅需返回一个温度值 (NSECPT=1)。否则,要返回的温度数取决于为梁或壳截面选择的温度模式和场变量输入。以下情况是可能出现的:
-
梁截面的温度和场变量作为梁截面描述中显示的点处的值给出。所需值的数量 NSECPT 由指定的特定截面类型确定,如梁截面库中所述。
-
温度和场变量作为壳截面每一层的 n 个等距点的值给出。所需值的数量 NSECPT 等于 n。
-
梁截面的温度和场变量以截面原点处的值以及相对于 2 方向的梯度给出,对于三维梁,截面的 1 方向;或壳截面的温度和场变量作为参考表面的值以及相对于厚度的梯度给出。所需值的数量 NSECPT 对于三维梁为 3,对于二维梁为 2,对于壳为 2。如梁单元和壳单元中所述,首先给出中间曲面值,然后是第一个和(如果需要的话)第二个梯度。
-
还可以请求以其他两种方式之一设置温度:从先前生成的结果文件或通过直接数据输入。当数组 TEMP 被传递到用户子程序 UTEMP 时,它将仅包含从结果文件中获得的温度。您可以在此例程中修改这些值。任何作为直接数据输入给出的值都将被忽略。
6.传递信息的变量
NSECPT
模型中任何节点所需的最大截面值数。
KSTEP
分析步号
KINC
增量步号
TIME(1)
步骤时间的当前值。
TIME(2)
总时间的当前值。
NODE
节点号
COORDS
包含该点当前坐标的数组。
7.案例
这里为了便于学习理解,给出一个小案例吧,首先UTEMP子程序自定义了节点温度,接着使用UFIELD子程序定义了与温度有关的三个场变量。
C UTEMP子程序
SUBROUTINE UTEMP(TEMP,NSECPT,KSTEP,KINC,TIME,NODE,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C 数组声明
DIMENSION TEMP(NSECPT),COORDS(3),TIME(2)
C 定义节点处的温度值(与时间有关,下面是关系式,可以根据具体问题自定义)
TEMP(1)=100.*(TIME(1)+1.)
RETURN
END
C UFIELD子程序
SUBROUTINE UFIELD(FIELD,KFIELD,NSECPT,KSTEP,KINC,TIME,NODE,COORDS,
1 TEMP,DTEMP,NFIELD)
C
INCLUDE 'ABA_PARAM.INC'
C 数组声明
DIMENSION FIELD(NSECPT,NFIELD),COORDS(3),TIME(2),TEMP(NSECPT),
1 DTEMP(NSECPT)
C 这里定义了三个场变量,它们都与温度有关,通过分支语句定义每个场变量
C 下面是三个场变量与温度的关系式
IF(KFIELD.EQ.1) THEN
FIELD(1,1)= TEMP(1)
C 第2个场变量
ELSE IF(KFIELD.EQ.2) THEN
FIELD(1,1)=200+50.*TIME(1)
C 第3个场变量
ELSE IF(KFIELD.EQ.3) THEN
FIELD(1,1)=100.*(TIME(1)+1.)
ENDIF
RETURN
END
结语
前段时间太忙,所以更新的很慢,看到有同学私信我写个Vufield的教程,实际上V开头的子程序是提供给显式动力分析求解器用的,也就是说ufield和Vufield差异性很小,如果有问题欢迎私信一起交流学习(有空的话一定会回复的)。需要案例的公众号回复UTEMP 即可。(获取更多资料和学习交流欢迎大家关注公众号冬生亦东生,分享旨在本人复习和交流)