npulgh 发表于 2012-3-23 21:20:36

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

本帖最后由 npulgh 于 2012-3-23 21:24 编辑

前几天纠结一个问题:怎么给结构施加一个和制定转角相关的变化载荷,不能用CAE中和时间相关的幅值曲线,使用分析场定义也不行。
于是没躲开子程序,只好硬着头皮摸索了一下UAMP,说说自己的一点儿使用经验,本人菜鸟,欢迎大家拍砖{:3_51:}
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文件,还有相关帮助文档原文。

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

hjq060527 发表于 2012-4-1 08:51:46

谢谢楼主分享,受益匪浅。

ALivErD 发表于 2012-4-1 09:32:51

wow,感谢分享

bluedancer 发表于 2012-7-5 13:23:32

请教一下,我的nSensor变量怎么是零呢;觉得abaqus的函数应该可以得到sensor name
类似有个getSensorName之类的函数吧?

bluedancer 发表于 2012-7-5 17:23:33

居然发现,新的6.12版本出错了

luomateng 发表于 2013-5-14 16:11:26

您好,我请教一个问题,   4.1.12 UAMP.pdf中的inp模型为什么导入到abaqus6.10中,没有几何模型~
请问您是怎么查看手册中inp文件的

chaoren360 发表于 2014-2-22 11:14:46

楼主下了很大功夫,非常感谢

Double_jing 发表于 2016-10-7 15:03:21

想问下,如果是幅值随时间变化的函数,是不是更简单?谢谢

Double_jing 发表于 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是什么用处啊,看您程序里头也没使用这些?

wangch0828 发表于 2017-5-10 19:49:36

:)好好看看

806098331 发表于 2018-10-31 20:56:01

非常感谢楼主,受益匪浅!我QQ1970259268,您能否加一下,我向您请教一下关于UAMP的问题。

李金波 发表于 2018-12-23 19:04:56

请问UAMP里的SENSOR是只能输出节点输出吗?

pcstudying 发表于 2020-8-18 18:49:01

最近正在学这个,感谢

ivyswait 发表于 2021-3-5 17:09:10

感谢楼主,一篇文章解决了我很多疑问,楼主下了很大功夫,佩服
页: [1]
查看完整版本: 说说使用子程序UAMP的一点点经验