1. 简介
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)C INCLUDE 'ABA_PARAM.INC'C DIMENSION U(3),TIME(3),COORDS(3)C user coding to define U RETURN END
说明:
子程序在执行的过程中,遍历边界条件上的每个节点,遍历每个节点上的自由度约束,每个约束均执行一次子程序。变量NODE用于辨识节点、JDOF用于辨识自由度编号。
如果在边界条件定义时,输入了预定义值,那个程序执行过程中会将该值传入子程序。如果子程序不修改该值,那么abaqus会按照默认方式处理该约束条件。如果没有输入预定义值,那么子程序必须对其赋值,否则报错或者赋0值。
需要被定义的变量:
U(1)
被传入的变量
名称 | 描述 |
---|---|
KSTEP | 分析步编号 |
KINC | 增量步编号 |
TIME(1) | 当前分析步值中的时间 |
TIME(2) | 当前总的分析时间 |
TIME(3) | 当前时间增量 |
NODE | 节点编号 如果子程序被用于描述连接运动或者接触运动,该变量不可用 |
NOEL | 单元编号 如果子程序被用于描述边界条件,该变量不可用 |
JDOF | 当前传入变量的自由度编号 |
COORDS | 荷载点当前坐标;如果考虑几何非线性,该值是上一个增量步结束时的值;否则是原始的节点坐标值;如果子程序被用于描述连接运动或接触运动,该变量不可用 |
建立一个长为10,横截面为矩形的梁,截面高宽均为0.1,材料属性为线弹性,E=2.06e5,v=0.3。梁两端均施加全约束,梁体本身采用DISP定义约束。划分100个单元。模型如下图所示:
使用如下代码实现,一个三角波传输的过程。
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)C INCLUDE 'ABA_PARAM.INC'C DIMENSION U(3),TIME(3),COORDS(3) Real*8 xxC xx = KINC * 0.07 IF (COORDS(1)>=xx) then U(1) = 0 else if ( COORDS(1)<xx .AND. COORDS(1)>= xx-1 ) then U(1) = 0.5 * (xx-COORDS(1)) else if (COORDS(1)< xx-1 .and. COORDS(1)>=xx-2) then U(1) = 0.5 * (COORDS(1)-xx+2) else U(1) = 0.0 end if if (NODE == 1 .or. NODE == 101) then U(1) = 0 end if RETURN END
计算结果如下:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删