本文摘要(由AI生成):
本文介绍了在ANSYS中如何将数组数据输出到文件的方法,特别强调了*MWRITE和*VWRITE命令的使用。*MWRITE命令允许用户直接指定输出到文件的数组、文件名、扩展名、输出顺序标示符和控制值,适用于大型数组的输出。*VWRITE命令则提供了多种输出控制方式,如按列输出、按矩阵元素输出和使用$字符续航格式等。文中通过示例展示了这两种命令的具体应用,并指出*VWRITE对于具有编程经验的用户可能更加顺手和灵活。
ANSYS数组数据输出到文件中(学会ANSYS数组的定义与使用,提高参数化建模与分析水平),虽然也可打开文件用*VWRITE输出,但用命令*MWRITE直接输出到文件也很方便。*MWRITE命令格式为:
*MWRITE,ParR,Fname,Ext,--,Label,n1,n2,n3
其中:ParP为数组名。Fname为可带路径的文件名,Ext为扩展名。Label为输出顺序标示符,可采用IJK、IKJ、JIK、JKI、KIJ、KJI、或空 (JIK)。n1、n2、n3为输出控制值,如(((ParR(i,j,k),k=1,n1),i=1,n2),j=1,n3)f且Label=KIJ时。
当然此命令后也紧跟输出数据格式,与*VWRITE的输出数据格式相同(ANSYS将数据输出到文件的命令*VWRITE,简单易用)。
数组输出控制却有很多种形式,记住ANSYS按列输出数组。
当采用*VWRITE输出数组时,有如下几种控制方式:
(1)与矩阵写法类同的按列输出:利用ANSYS的输出特点,分别写出各列表示符即可,而行则从1到最终行号。
(2)同上格式,但按矩阵元素输出用一对()将矩阵表达式括起来变为矩阵元素,用循环输出。
(3)当列很多时不可能写出每列字符表达式,此时可采用$字符续航格式,当一行写完后,增加一个非$格式语句即可。但这里增加了一个临时数组,以存储某行的数据。
当采用*MWRITE输出数组时,向命令本身打开的文件中输出,需给出输出顺序符和上限值。该命令在输出数组时极为方便,尤其是大型数组,因为此时无论如何也不能输出成矩阵形式了,例如1行的元素太多输出到文件时,只能按有限元素输出。
设有数组AXX(5,4)和BXX(50,30)如图1所示。
输出命令流如下,输出结果如图2所示。
*DIM,AXX,,5,4
!数组赋值
*DO,I,1,5
*DO,J,1,4
AXX(I,J)=I J/10
*ENDDO
*ENDDO!!!
*CREAT,OUT,MAC
!VWRITE数组输出
*CFOPEN,AXXFILE,TXT
!(1)格式1-按列-行输出(列不变,行数从1~最终的5)
*VWRITE
(/'格式(1)----')
*VWRITE,AXX(1,1),AXX(1,2),AXX(1,3),AXX(1,4)
(4F6.1)
!(2)格式2-按矩阵元素输出
*VWRITE!
(/'格式(2)----')
*DO,I,1,5,1
*VWRITE,(AXX(I,1)),(AXX(I,2)),(AXX(I,3)),(AXX(I,4))
(4F6.2)
*ENDDO!!
!(3)格式3-多列时按行列输出
*VWRITE!!
(/'格式(3)----')
*DIM,TELS,,4
*DO,I,1,5!
*DO,J,1,4!
TELS(J)=AXX(I,J)
*ENDDO!!!!
*VWRITE,TELS(1)
(F6.3,$)
*VWRITE!!!!
(' ')
*ENDDO!!!!!
*CFCLOSE
!(4)MWRITE输出数组
*DIM,BXX,,50,30
!数组赋值,按已知数据
*DO,I,1,50
*DO,J,1,30
BXX(I,J)=I J/100
*ENDDO!!!!!!
*ENDDO!!!!!!!!
!按JIK,即列、行、面顺序输出
*MWRITE,BXX,BXXFILE,TXT,,JIK,30,50
(30F6.2)
*END
OUT
上述命令流中的BXX数组输出到TXT文件后,再用EXCEL打开,则成为行列数据表,如图3所示。
因此,*VWRITE和*MWRITE均可输出数组到文件,可根据习惯或用途选择其中之一。如有编程经历,可能*VWRITE方式更顺手更灵活。