关于ANSYS中数据有效位数和小数点位数的探讨

今天在运用ANSYS做“常规动作”时,突然发现过去一直忽略的一个问题,那就是ANSYS会对数据进行自动的“四舍五入”?回想起做桩土接触时,曾使用装配的方法,导致程序提示有渗透出现(其实渗透是难免的),这便更加深了我的质疑。经过在帮助文档和网络中的一再求证,总算是初步弄明白了,事实上,我误解了它。

在默认状态下,任意创建一个图素,例如k,1,1234,4321, 则klist之后显示的节点x坐标为0.123E+04,后面的数据都给“省略”了。这其实是个假象,其实数据是完整地输入进去了,只不过程序显示成这种小数点后保留三位的科学计数法而已。特别感谢纪同学,在他的启发下我们做了一个实验:k,1,1.2222$k,2,1.2224$l,1,2$llist。创建了两个关键点,如果程序会自动改变原始数据的话,那么二者连线的长度应被忽略,而事实上的结果依旧是0.2000E-03。这证明在数据输入的时候,并不存在所谓要保留多少位有效数字或小数点后留多少位的问题。

事实上,我们能遇到的格式问题,都是在后处理中遇到的。分为两种情况,一是显示一是输出。即有时会出现选不上截面,或者需要对所有输出的数据做格式上的统一。而此时,我们只需要对格式做一个设置即可。总体来讲,能用到的命令如下:

/GROPT, Lab, KEY

此命令可修改沿坐标方向图表的显示比例,或者定义坐标轴方向数据在小数点左侧有效数字的位数。需要注意的是,所有设置必须在运行/GROPT,VIEW,ON命令,通过/GROPT,STAT开启显示之后,开可以看到。当然,也可以通过/GROPT,DEFA将所有设置复位。

GUI操作路径:

Utility Menu>PlotCtrls>Style>Graphs>Modify Axes
Utility Menu>PlotCtrls>Style>Graphs>Modify Curve
Utility Menu>PlotCtrls>Style>Graphs>Modify Grid

/GFORMAT, Ftype, NWIDTH, DSIGNF

用来设置图形显示界面的数据显示格式,可根据fortran的格式定义方法,设置小数点右侧位数或整体的有效数字位数等等。同样地,也需要/GFORMAT,STAT开启,也可用/GFORMAT,DEFA复位。

GUI操作路径:

Utility Menu>PlotCtrls>Style>Floating Point Format

/FORMAT, NDIGIT, Ftype, NWIDTH, DSIGNF, LINE, CHAR

用来设置表参数(table)中的数据格式,此命令没有GUI对应的选项。其中每个项目的具体意义,请到Help系统中查询。

举个例子:/format,,f,8,5则表示选F格式下宽度为8的有效位数,小数点后保留5位

以上命令只对后处理中的PRNSOL, PRESOL, PRETAB, PRRSOL, and PRPATH 等列表数据有效,而在/prep7中的list命令中查询没有效果——实际上所定义的格式,仅针对图形界面中的数据显示而言,列表窗口中当然查不到啦。

除此之外,还可以使用*VWrite命令实现自定义格式的输出。*vwrite可以实现将数组中的数据写入到外部文件中,而且数据格式可用fortran77数据描述符来规定。流程大体如下:

*cfopen,文件名,后缀名
*vwrite,写入的内容
(数据格式描述符)
*cfclos

具体操作,请参考《APDL参数化有限元分析技术及其应用实例》博弈创作室,中国水利水电出版社,第六章(P36~P44)的相关内容。

总结一下:1、ANSYS不会自动的“四舍五入”,只是我们“看起来如此”;2、list中的数据并不十分准确,所以需要调用数据的时候还是将其输出成外部文件比较好

*欢迎转载,转载请标明来源:十千牛,文章地址: http://10kn.com/number-of-significant-digits-and-decimal-point/

欢迎关注十千牛微信公众号

不断加深对结构体系的理解,不断完善描述结构行为的理论与数学模型,不断探测结构真实的受力状态——以此为业,以此为生,以此为乐๑乛◡乛๑

24 条评论

  1. klist,all!会用ANSYS自己的固定方式列出,一般小数点后的数字较少。
    klist,all,,,coord !该选项也用固定方式列出,但增加了小数点后数字,一般够用了。

    !另外,“互相帮助”好像不能点啊,我想寻找“Finite Element Analysis of Composite Materials”一书,是Ever J. Barbero编的。

  2. 请问长河兄,如果是要输出一个surface或者一个path上所有node上的结果,如何操作呢。。我现在使用list的,确实只保留三位有效数字,明显达不到精度要求的说。。

    望赐教

    拜谢

Leave a Reply

Your email address will not be published. Required fields are marked *