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

[子程序] 说说使用子程序UAMP的一点点经验

[复制链接]
发表于 2012-3-23 21:20:36 | 显示全部楼层 |阅读模式 来自 江苏南京
本帖最后由 npulgh 于 2012-3-23 21:24 编辑

前几天纠结一个问题:怎么给结构施加一个和制定转角相关的变化载荷,不能用CAE中和时间相关的幅值曲线,使用分析场定义也不行。
于是没躲开子程序,只好硬着头皮摸索了一下UAMP,说说自己的一点儿使用经验,本人菜鸟,欢迎大家拍砖
standard中使用uamp,explicit使用vuamp,只是略有差别。具体大家参考用户帮助文档。
帮助文档才是本源,最佳参考资料,对于特定的部分,踏踏实实地看完仔细研究才是最省时省力的方式,心急走捷径才会走弯路嘞,
一、关于子程序运行环境的设置:
这个参考大侠的帖子
http://forum.simwe.com/forum.php?mod=viewthread&tid=1027880&highlight=%E5%AD%90%E7%A8%8B%E5%BA%8F%E5%AE%89%E8%A3%85
http://forum.simwe.com/thread-900894-1-1.html
我用的是visual studio 2008 Professional(英文版)+Intel visual fortran 11.0.061+abaqus6.10,
二、定义UAMP的方法
原理是这样的:用户在history变量输出中定义一个输出值作为sensor值,然后定义一个user amplitude并指定状态变量数目,然后在提交运算的时候把子程序文件一起提交,程序运行过程中在每个增量步之始会调用子程序读取幅值,子程序中根据定义好的函数也就是Amp值=function(sensor值)(大概就这个意思吧)去得到一个幅值传给主程序,如此反复。当然幅值也可是是时间的函数。如果需要在上一次调用和本次调用之间传递变量,就要使用到刚才说的状态变量svars。
用户文档中给出了几个例子,建议大家好好研究下,一定要看懂,每个变量的含义帮助中都有详细解释。
1、定义user amplitude
建模完成,定义
定义载荷的时候,选中用户自定义

会弹出对话框要求输入状态变量的个数,我没用到状态变量,所以设置0.继续。
关于状态变量,个人理解是在UAMP的上一次调用和下一次调用之间传递数值的一个载体,至于传递什么数值,用户可以自己指定,并且都用svars(1),svars(2)的变量名,不能自己定义变量名。另外,在每一个增量步的开始的时候,程序会调用UAMP。显然地,增量步步长越小,使用UAMP定义的载荷就越接近理想,这个要大家留意,并且自己把握。帮助文档中有个警告说,UAMP子程序的准确性一定要用户自己去验证的。
注意:amplitude的名称一定要是全部大写的,切记,不然会找不到幅值名称。
2、定义sensor
connector中的参数,单个节点的历史输出变量可以用来定义一个sensor,就是传感器,这个在CAE中可以操作,很简单

这里我的选择了实现定义好的包含一个参考点的set,注意只能输出每个定义为sensor的历史变量只能输出一个变量值,一个sensor对应一个历史变量输出变量值,
输出频率只是定义了写入文件中的频率,实际上运行的时候每个增量步都要传给子程序的,
要选中use sensor when avilable,
特别注意:sensor name,也就是你定义的历史输出名称,一定要是大写的,否则子程序找不到sensor值。
ok,cae中的操作完成,下面看子程序
3、子程序

这里我定义了两个user amp,加在同一点两个方向的载荷,x和y,是关于该点的转角值的,所以只有一个sensor,两个多项式函数就搞定,
4、提交运算

只要选上你的子程序文件就可以了。
5、子程序调试
如果子程序编译出错,去Temp文件夹下找和inp文件同名的log文件,打开即可看到编译过程。
当然msg文件等中也有有用信息。

附上inp文件和for文件,还有相关帮助文档原文。

从论坛受益不少,真心感谢大家的帮助,同时特别向管理员和版主致谢,

本帖子中包含更多资源

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

×

评分

1

查看全部评分

发表于 2012-4-1 08:51:46 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
谢谢楼主分享,受益匪浅。
回复 不支持

使用道具 举报

发表于 2012-4-1 09:32:51 | 显示全部楼层 来自 北京
wow,感谢分享
回复 不支持

使用道具 举报

发表于 2012-7-5 13:23:32 | 显示全部楼层 来自 新加坡
请教一下,我的nSensor变量怎么是零呢;觉得abaqus的函数应该可以得到sensor name
类似有个getSensorName之类的函数吧?
回复 不支持

使用道具 举报

发表于 2012-7-5 17:23:33 | 显示全部楼层 来自 新加坡
居然发现,新的6.12版本出错了
回复 不支持

使用道具 举报

发表于 2013-5-14 16:11:26 | 显示全部楼层 来自 湖北武汉
您好,我请教一个问题,   4.1.12 UAMP.pdf中的inp模型为什么导入到abaqus6.10中,没有几何模型~
请问您是怎么查看手册中inp文件的
回复 不支持

使用道具 举报

发表于 2014-2-22 11:14:46 | 显示全部楼层 来自 山东青岛
楼主下了很大功夫,非常感谢
回复 不支持

使用道具 举报

发表于 2016-10-7 15:03:21 | 显示全部楼层 来自 美国
想问下,如果是幅值随时间变化的函数,是不是更简单?谢谢
回复 不支持

使用道具 举报

发表于 2016-10-10 12:46:18 | 显示全部楼层 来自 美国
想请问下,楼主您程序中,parameter(phiMax=60.00d0, zero=0.0d0)
      dimension lFlagsInfo(nFlagsInfo),lFlagsDefine(nFlagsDefine)
      dimension jSensorLookUpTable(*)  责怪里面的参数phiMax=60.00d0, zero=0.0d0是什么用处啊,看您程序里头也没使用这些?
回复 不支持

使用道具 举报

发表于 2018-10-31 20:56:01 | 显示全部楼层 来自 河南开封
非常感谢楼主,受益匪浅!我QQ1970259268,您能否加一下,我向您请教一下关于UAMP的问题。
回复 不支持

使用道具 举报

发表于 2018-12-23 19:04:56 | 显示全部楼层 来自 黑龙江大庆
请问UAMP里的SENSOR是只能输出节点输出吗?
回复 不支持

使用道具 举报

发表于 2020-8-18 18:49:01 | 显示全部楼层 来自 俄罗斯
最近正在学这个,感谢
回复 不支持

使用道具 举报

发表于 2021-3-5 17:09:10 | 显示全部楼层 来自 中国
感谢楼主,一篇文章解决了我很多疑问,楼主下了很大功夫,佩服
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 18:21 , Processed in 0.051287 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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