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

[子程序] 如何使用DLOAD施加不均匀的移动载荷?如图所示

[复制链接]
发表于 2019-9-3 19:33:10 | 显示全部楼层 |阅读模式 来自 湖北武汉
C:\Users\Administrator\Desktop,大家一起交流下
 楼主| 发表于 2019-9-3 19:41:18 | 显示全部楼层 来自 湖北武汉
Simdroid开发平台
C:\Users\Administrator\Desktop\张DLOAD
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-3 19:52:18 | 显示全部楼层 来自 湖北武汉
本帖最后由 山清水秀春暖花 于 2019-9-3 19:54 编辑

C:\Users\81429\Desktop\张DLOAD.png
回复 不支持

使用道具 举报

发表于 2019-9-5 14:55:45 | 显示全部楼层 来自 广东惠州
根据单元坐标施加载荷
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-5 21:06:30 | 显示全部楼层 来自 湖北武汉
本帖最后由 山清水秀春暖花 于 2019-10-5 08:05 编辑
伊面233 发表于 2019-9-5 14:55
根据单元坐标施加载荷

朋友,这个你知道怎么根据坐标来施加吗,
回复 不支持

使用道具 举报

发表于 2019-9-6 09:41:08 | 显示全部楼层 来自 广东河源
我没有时间,大概就是根据数组COORDS读取节点的坐标,根据坐标区间赋予F数值,建议去看看帮助文档了解各个数组、参数的含义。
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-6 17:08:35 | 显示全部楼层 来自 湖北武汉
伊面233 发表于 2019-9-6 09:41
我没有时间,大概就是根据数组COORDS读取节点的坐标,根据坐标区间赋予F数值,建议去看看帮助文档了解各个 ...

多谢多谢,根据提示,在DLOAD子程序的帮助文档没有找到,怎样用数组COORDS来读取节点的坐标呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2019-9-11 16:55:53 | 显示全部楼层 来自 广东惠州
山清水秀春暖花 发表于 2019-9-6 17:08
多谢多谢,根据提示,在DLOAD子程序的帮助文档没有找到,怎样用数组COORDS来读取节点的坐标呢? ...

这个数组里面就存储着节点坐标,你直接用就行
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-13 09:17:04 | 显示全部楼层 来自 湖北武汉
本帖最后由 山清水秀春暖花 于 2019-10-5 08:06 编辑
伊面233 发表于 2019-9-11 16:55
这个数组里面就存储着节点坐标,你直接用就行

你好,我找了很多关于数组COORD的资料,大部分使用“python”来提取节点坐标,可Python不会呀。
回复 不支持

使用道具 举报

发表于 2019-9-17 14:47:33 | 显示全部楼层 来自 广东惠州
山清水秀春暖花 发表于 2019-9-13 09:17
你好,我找了很多关于数组COORD的资料,大部分使用“python”来提取节点坐标,可Python不会呀。能否说下 ...

DLOAD属于ABAQUS内部算法类的子程序,只能用fortran,不能用python
回复 不支持

使用道具 举报

发表于 2019-9-17 14:54:46 | 显示全部楼层 来自 广东河源
就我的理解,每计算一个积分点,abaqus就会调用一次DOLOAD,并且读取这个积分点的相关信息,比如坐标。所以,如果想将X坐标在(1,2)之间的积分点赋予10N的载荷,可以用:
if (coords(1)>1 .and. coords(1)<2) then
        f=10
endif
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-18 10:16:39 | 显示全部楼层 来自 湖北武汉
本帖最后由 山清水秀春暖花 于 2019-10-5 08:07 编辑
伊面233 发表于 2019-9-17 14:54
就我的理解,每计算一个积分点,abaqus就会调用一次DOLOAD,并且读取这个积分点的相关信息,比如坐标。所以 ...

嗯,道理是这样的,


回复 不支持

使用道具 举报

发表于 2019-9-18 10:33:25 | 显示全部楼层 来自 广东河源
可以的,或者另一种写法,用两个if嵌套也行
if(z坐标)then       
   if (x坐标1) then
     f=10
   elseif (x坐标2) then
     f=8
   endif
endif
毕竟fortran每一行有字符限制,太长了得换行,麻烦
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-19 08:32:35 | 显示全部楼层 来自 湖北武汉
奇怪,之前只用Z方向的坐标,用dlaod算出来的结果是移动的。按照我们讨论的新方法,同时限制x方向和z方向的坐标,得到的结果,没有移动了。跟静力差不多,而且结果偏大了很多。不知道是什么原因?
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-19 08:37:35 | 显示全部楼层 来自 湖北武汉
伊面233 发表于 2019-9-18 10:33
可以的,或者另一种写法,用两个if嵌套也行
if(z坐标)then       
   if (x坐标1) then

奇怪,之前只用Z方向的坐标,用dlaod算出来的结果是移动的。按照我们讨论的新方法,同时限制x方向和z方向的坐标,得到的结果,没有移动了。跟静力差不多,而且结果偏大了很多。不知道是什么原因?
回复 不支持

使用道具 举报

发表于 2019-9-19 08:38:09 | 显示全部楼层 来自 台湾
謝謝大大的分享:lol
回复 不支持

使用道具 举报

发表于 2019-9-19 13:48:40 | 显示全部楼层 来自 广东河源
山清水秀春暖花 发表于 2019-9-19 08:37
奇怪,之前只用Z方向的坐标,用dlaod算出来的结果是移动的。按照我们讨论的新方法,同时限制x方向和z方向 ...

你可以用write输出一部分数据看看是否有问题,比如满足if判定条件的节点是否存在。
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-19 15:36:25 | 显示全部楼层 来自 湖北武汉
本帖最后由 山清水秀春暖花 于 2019-9-22 21:24 编辑
伊面233 发表于 2019-9-19 13:48
你可以用write输出一部分数据看看是否有问题,比如满足if判定条件的节点是否存在。 ...

你好,这个问题又弄了很久,你帮我看看dlaod,看看是什么原因?我觉得现在是两个表面施加载荷,a和b分别对应第一个表面的x坐标,c和d对应第二个表面的x坐标,但是结果却变大了,结果也没有移动的效果了,跟静力差不多。
另外,你说的 if判定节点是否存在,这肯定存在呀,if只是判定节点的位置,来施加压强呀。
回复 不支持

使用道具 举报

发表于 2019-9-19 17:20:39 | 显示全部楼层 来自 广东惠州
光看程序容易一脸懵逼,建议在两个F之前输出一些信息,看看是不是有什么异常,比如输出积分点编号,看看这个积分点的位置是不是和你想的一样,比如输出ZMAX,ZMIN,看看是否有异常。不过因为积分点数量很多,可以进行些筛选,比如只输出最后一个分析步。

或者建立一个类似的模型,不用子程序,比如施加一个定载荷,看看约束,接触之类的有么有异常。
回复 不支持

使用道具 举报

 楼主| 发表于 2019-9-20 12:16:48 | 显示全部楼层 来自 湖北
伊面233 发表于 2019-9-19 17:20
光看程序容易一脸懵逼,建议在两个F之前输出一些信息,看看是不是有什么异常,比如输出积分点编号,看看这 ...

谢谢你的回答,比如输出最后 2个分析步的积分点编号,在哪里设置呢?
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 18:25 , Processed in 0.054377 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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