- 积分
- 1
- 注册时间
- 2003-7-18
- 仿真币
-
- 最后登录
- 1970-1-1
|
同一个分析,我仅仅是为了将圆周上的一系列结点施加沿径向的位移(位移值是结点的空间坐标值的函数),当我不怕麻烦对每一个结点施加我用该函数计算出来的位移值时,分析可以正常运行,其定义格式如下:
*boundary
n1,1,1,-0.0043
。。。。。N多个结点均是如此定义,其中n1。。为每一个结点,且已在transform中定义好,沿径向
而我想省事(当然用子程序肯定就是为了省事),将此函数写入子程序DISP,其定义如下:
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
DIMENSION U(3),TIME(2),COORDS(3)
open(16,file="D:/prueba.dat",position='append')
open(17,file="D:/prueba1.dat",position='append')
write(16,*), coords(1),coords(2),coords(3)
close(16)
U(1)=0.5*(1.0-SQRT(COORDS(1)*COORDS(1)+COORDS(2)*COORDS(2)))
write(17,*) node,time(1),JDOF,U(1),U(2),U(3)
close(17)
RETURN
END
式中的U(1)即为我的函数,函数没有问题,通过输出到dat的值我也可以看出,和我自己计算的值 是一样的,可就是这样,一用子程序分析就不能收敛,这是为什么,难道是我子程序写的有问题?可输出来的值没有问题呀!
在inp中调用该子程序这样写的:
*boundary,user
n1,1,1
那么我想是不是调用过程中的问题?我从dat文件中可以看出,在abaqus每一次分析平衡迭代时,均调用一次子程序,而似乎不用子程序的边条仅仅是在分析之前将位移值加好后就不再对其进行操作了(个人想法,不知是不是对?)
那怎么样才能达到两者一致的效果呢?这个模型还算简单,如果结点狂多的话,手写不就累死了?
我发了N个贴子了,却总没能得到大家的帮助,都有点气馁了,真心希望得到大家帮助!
大家可以讨论一下!
谢了! |
|