移动荷载子程序
之前论坛里有关于移动荷载的例子,但都没有详细说明,对于我这个初学者却看不懂,经过自己的摸索,下面是关于移动载荷的一点理解,希望能帮到有需要的人。移动荷载的实现,是通过积分点坐标自动捕捉加载面
v=20(速度)
dis=v*time(1)(ABAQUS传递给子程序的时间到当前时间下加载面移动的距离)
z1min=6.9-dis
z1max=7.13-dis(当前时间下加载面上下边界的坐标)
x1max=22.115
x1min=21.795(加载面左右边界的坐标)
if(COORDS(3).ge.z1min.and.COORDS(3).lt.z1max
*.and.COORDS(1).ge.x1min.and.COORDS(1).lt.x1max)then (if判断语句,表示在加载面范围内就加
载,范围外荷载为0;.ge.=great equal 大于等于;.gt.=great than大于;.le.=less equal小于等
于;.lt.=less than大于)
f=700000.+311*pi*pi*sin(7*pi*time(1))(dload子程序中,f可以表示成时间,积分点坐标等的函
数) 移动荷载子程序最主要的就是要区分移动坐标,COORDS(3)=z,COORDS(2)=y,COORDS(1)=x,大于小于的话就自行判别了 子程序,要是有图形显示就好了,看看先:) 楼主您好,可以加个好友向您请教一些东西吗 楼主你好,你所解释的参数是哪一个子程序或者模型的?麻烦可以贴上来看看吗? 谢谢楼主分享。 看看如何 本帖最后由 Edimion 于 2019-1-4 16:31 编辑
这个程序基本上就是这样的,但是你这样写其实不太好
这样的话会让你的判断条件变得非常长,尤其是多点加载,比如一辆车的四个轮子
一般的这样写比较好
F=0
if ****
f=1
end
if ****
f=1
end
……
首先赋值一个f=0,然后一点一点判断
此外,还有一个技巧
就是你这个代码里面,X1MAX 和 X1MIN其实是个常数,这样的常数不建议写在程序里,而是在模型中直接切割出轮迹线(如果定义的是车轮荷载的话),这样的话判断条件会变简单,加载面会变小,dload被调用的次数也会变少,整个运算都比较快。
最早的时候我也这么写,直到后来做毕业论文的时候,需要加8个轮子,完全懵逼了,那个判断条件超级长。但是如果切割出来轮迹线就是四个简单的判断了
这是我写的经验帖,前面的部分是我初学的时候写的,后面更新的部分是后来写的
建议主要看后面更新的部分
http://forum.simwe.com/thread-1254726-1-1.html
子程序实现移动荷载的方法,一次只能加一个荷载吗
页:
[1]