找回密码
 注册
Simdroid-非首页
查看: 445|回复: 7

[子程序] 子程序Disp使用中的一些个人总结

[复制链接]
发表于 2012-12-14 19:09:29 | 显示全部楼层 |阅读模式 来自 浙江杭州
本帖最后由 windsun.typ 于 2012-12-14 19:10 编辑

子程序Disp的详细分析
      SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION U(3),TIME(2),COORDS(3)
C
      用户自己编写的子程序代码
      RETURN
      END
---------------------------------------
首先,要注意的是,在计算中,子程序在每一个step,每一个increment,每一次迭代中,
都非常有可能被多次调用,而不是只被调用一次。

---------------------------------------
子程序中的变量解释

U:传出(返回)的数组。如果是位移边界时,U(1),U(2),U(3)分别代表位移,速度,加速度
KSTEP:传入的参数,step的编号。例如是在第n个step时调用本子程序的,那么传入的KSTEP就是KSTEP=n
KINC:传入的参数,increment的编号。例如是在第n个step中的第m个increment时调用本子程序的,
     那么传入的KINC就是KINC=m
TIME:传入的数组,代表目前计算的时刻。其中TIME(1)代表调用本子程序时,在KSTEP中的时刻值;
     而TIME(1)代表调用本子程序时,在总计算时间(包括前面所有已计算step的时长)中的时刻值
NODE:传入的参数,节点编号。计算中,Disp这个子程序不是循环所有节点的,而是从inp文件中指定的
     节点集合中进行循环。例如,在inp中,调用Disp的语句为
     *Boundary, user
     BCNODES-LEFT, 8, 8
     那么,节点的循环就在BCNODES-LEFT中进行,即只取BCNODES-LEFT中的节点作为NODE的参数值传递
     入子程序中。另外,要注意的是,如果BCNODES-LEFT这个节点集合中的个别节点A已在前面的计算中
     被定义了边界条件,则上述两句对A不起作用。例如上述的两句命令是定义孔压的,BCNODES-LEFT包
     括编号为1,2,3,4的四个节点,其中节点2已经在更前面的部分被定义了零孔压,则这里的子程序对于
     节点2是不起作用的,NODE=2时子程序不会被调用,传递进子程序的NODE参数也不会包括2这个值。
NOEL:传入的参数,单元编号。在举例的这个命令里
     *Boundary, user
     BCNODES-LEFT, 8, 8
     限制循环范围的是节点集合BCNODES-LEFT而不是单元集合,单元编号NOEL没有被传递进来,所以NOEL
     没被赋值,NOEL会一直等于零(已测试)。至于其他的情况下,NOEL的参数值是否会被传入来,则尚未
     清除,可能当指定单元集合时,NOEL会被传递进来(可能)
JDOF:传入的参数,要被设置边界条件的自由度编号。在举例的这个命令里
     *Boundary, user
     BCNODES-LEFT, 8, 8
     要被设置边界条件的自由度编号是8,代表孔压。所以,每一次调用子程序时传递进来的JDOF的参数
     值都是8,没有其他值。这里8, 8代表从编号为8的自由度到编号为8的自由度,即仅仅取8。另外,
     编号为1,2,3的自由度分别代表x,y,z方向的位移。具体可看manual的"convention"部分。
COORDS:传入的数组,指编号为NODE的节点的坐标。其中,COORDS(1),COORDS(2),COORDS(3)分别代表节点
       x,y,z坐标。值得注意的是,这里可以考虑大变形的影响。

评分

1

查看全部评分

发表于 2012-12-28 23:33:02 | 显示全部楼层 来自 陕西西安
Simdroid开发平台
楼主能否传个inp,我在CAE定义disp的调用时,一直有问题,谢谢
回复 不支持

使用道具 举报

 楼主| 发表于 2012-12-29 14:39:54 | 显示全部楼层 来自 浙江杭州
雨中孤影 发表于 2012-12-28 23:33
楼主能否传个inp,我在CAE定义disp的调用时,一直有问题,谢谢

目前有项目在做,inp目前不方便传给你,你可以描述一下你的问题,咱们讨论一下。怎样?
回复 不支持

使用道具 举报

发表于 2013-1-7 11:25:19 | 显示全部楼层 来自 湖南长沙
楼主,不知道有没有办法实现在某一个边界上随时间的推移,将一部分孔压边界改为默认的不可渗透边界
回复 不支持

使用道具 举报

 楼主| 发表于 2013-1-7 20:32:30 | 显示全部楼层 来自 浙江杭州
能不能说一说你的具体的详细的要求咧?可以在简单的模型上测试一下,再放到大的模型中。
回复 不支持

使用道具 举报

发表于 2013-2-6 00:07:22 | 显示全部楼层 来自 德国
能否选取整个实体作为边界条件,在子程序中不设置任何限制,我只想知道其当前的节点坐标和单元号,不知道可否实现,请赐教,谢谢。。。
回复 不支持

使用道具 举报

 楼主| 发表于 2013-2-8 13:36:11 | 显示全部楼层 来自 浙江杭州
zsc13810288137 发表于 2013-2-6 00:07
能否选取整个实体作为边界条件,在子程序中不设置任何限制,我只想知道其当前的节点坐标和单元号,不知道可 ...


你的意思我看得不是很懂。难道说边界的节点坐标和单元号你不知道么?再说你要来干什么用呢?
回复 不支持

使用道具 举报

发表于 2013-2-8 23:51:56 | 显示全部楼层 来自 德国
windsun.typ 发表于 2013-2-8 13:36
你的意思我看得不是很懂。难道说边界的节点坐标和单元号你不知道么?再说你要来干什么用呢? ...

我已经解决了,不过还是谢谢。。。需要将一个子程序中的变量(节点坐标)弄到另一个子程序里面。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-23 19:22 , Processed in 0.048026 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表