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

[子程序] UMAT 调试运行过程中诡异而有趣的错误

[复制链接]
发表于 2011-8-22 05:52:04 | 显示全部楼层 |阅读模式 来自 英国
本帖最后由 juzi0404 于 2011-8-22 05:55 编辑

小弟写好的子程序在ABA中调试 发现会出现error code 142的错误 于是步步输出跟踪 发现在一个除法式子处是问题根源 即ABA认为分母为0而报错了
  但事实上我的分母输出来有几百多大 绝对不可能为0  我在分母上加了个很小很小的正数却能顺利运行 即 X=1.0D0/Y会报错 而X=1.0D0/(Y+1.0D-16)能运行通过  我用这样输出的X反求Y 发现Y并不为零 和前面输出的值一样也是几百多
   所以觉得十分诡异 分子分母精度我都有注意一致性 分母的值也肯定不为0 所以搞得我有点晕了 恳请大家指点一二 感激不尽!

顺便分享下error code 142报错的几种可能原因:1)被0除,2)赋值时精度不匹配 3)数组未声明却使用 4)数组越界
5)初始计算阶段,有些参数自动设置为0,而这些参数不能0
发表于 2011-8-22 15:10:01 | 显示全部楼层 来自 德国
Simdroid开发平台
计算机一般是不会犯错的。犯错的只可能是人,在X=1.0D0/(Y+1.0D-16)前把Y输出来看看

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-8-22 17:28:01 | 显示全部楼层 来自 英国
回复 2# msyexplore
Sorry I cannot type Chinese for the moment...Thank you for your reply. In fact I did check Y output and it is 332.3333, far more greater than 0, that is why I said the error is funny but also puzzled me
回复 不支持

使用道具 举报

发表于 2011-8-22 17:59:22 | 显示全部楼层 来自 德国
回复 3# juzi0404


   上传正确的模型和子程序
回复 不支持

使用道具 举报

 楼主| 发表于 2011-8-23 06:10:16 | 显示全部楼层 来自 英国
本帖最后由 juzi0404 于 2011-8-23 06:51 编辑

回复 4# cdstudio
谢谢你的回复 我把单元测试的模型以及程序的问题部分传上来了 问题就在那个用SIGMA算的THEDA处 对于分母SJ2加上个很小的正数就能算过去 不加就报错 之前用初始应力STRESS计算由于ABA传入的初始量均为零可以理解分母出现0的情况  但后面SIGMA为加了增量的应力 绝对不该为0哦  向版主求教 另外我发现要是在分母处理了算过去的话为什么里面的F0和F1算出来相等呢?SIGMA明明是在前一步应力STRESS加了增量的呀?

本帖子中包含更多资源

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

×
回复 不支持

使用道具 举报

发表于 2012-1-15 13:05:28 | 显示全部楼层 来自 江苏南京
感谢楼主的提示,我也遇到了144的问题,我把除数都加了小量,然后把开根号的项先取了绝对值,结果终于算出来了。我用的是6.10版本。原先在6.5和6.8都能通过,导师说可能6.10太过于敏感了,不够robust,anyway,我是新手,先做出就好,期待大牛给予解决!
回复 不支持

使用道具 举报

发表于 2012-1-26 13:17:47 | 显示全部楼层 来自 甘肃兰州
你遇到的上述问题我也遇到过,确实是由于“被0除”的缘故,个人认为主要是迭代过程中应变增量为零!
尽管上述问题有了眉目,现在我的问题是:umat在单个单元中能运算通过,但是在整个拉伸模型中却算不过去,即只算到屈服然后就不行了,不知何故?
  若您能帮帮我,将不甚感激,谢谢!
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 17:49 , Processed in 0.039094 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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