ANSYS中对结果进行文本输出以便进一步进行数据处理是有限元分析的一个重要步骤,这对于进行结果判断或者导入第三方软件中进行论文图片输出都是非常重要的。
本文概述并梳理了ANSYS中可用于生成文本数据的一些重要步骤。
(1)使用/format 语句和PR####系列命令;(该部分内同大部分使用者了解即可,实际使用都可以选择默认,可以直接跳到(2)阅读)
(2)使用*VWRITE创建自定义输出结果;
1.PRxxxx 命令输出:
在/POST1中,PRxxxx系列命令(如,PRNSOL, PRESOL, PRETAB, PRRSOL, PRPATH)与绘图命令PLOT等价,。其相应输出格式和内容都可以通过/FORMAT, /HEADER和/PAGE命令控制,大部分使用者默认即可。
PRxxxx系列命令会在ANSYS输出的Dos黑窗口输出一些默认的内容。比如(1)页头,提供ANSYS版本、许可、平台时间日期及分析的标题等。(2)加载步骤,列出了正在生成的打印输出类型以及加载步骤/时间信息。(3)注释部分,指定结果坐标系统(RSYS)。(4)总结部分,提供PR####命令的最大/最小及总值。
/HEADER命令可以修改默认输出设置,以省略省略多余的信息。默认行为是输出所有内容信息。
/FORMAT命令可以指定如何列出数字。/FORMAT命令的第二个参数控制数字是否以科学记数法(" E ")、十进制格式(" F ")或通用格式(" G ")显示。一般是在科学格式或十进制格式之间切换。
通用/混合格式:/FORMAT,,G
十进制:/FORMAT,,F

科学计数法:/FORMAT,,E

对于一些高阶单元,中间节点的结果对PR####系列命令默认是不输出的,这里可以通过使用 /GRAPH,POWER和/EFACET,2对中间节点结果输出.
2. 使用*VWRITE创建自定义输出结果;
虽然从PRxxxx命令可以输出一定结果列表,但是生成自定义结果以进行数据处理是更有必要的。这可以通过创建数组(*DIM)、获取后处理数据(*VGET)和将结果写入文件(*VWRITE)来实现。
*VWRITE例子输出节点位置及位移:
*get,NCOUNT,node,,count ! 获取节点数*dim,NARRAY,array,NCOUNT,3 ! 创建 NCOUNT x 3 矩阵/post1set,last*cfopen,temp,txt ! Create file called “temp.txt”*vwrite ! 写入文件列标题('x-dist',8x,'y-disp',10x,'z-disp')*vget,NARRAY(1,1),node,1,loc,x ! 第1列写入节点位置*vget,NARRAY(1,2),node,1,u,y ! 第2列写入y向位移*vget,NARRAY(1,3),node,1,u,z ! 第3列写入z向位移*vwrite,NARRAY(1,1),NARRAY(1,2),NARRAY(1,3) ! 将3列数据写入文件(F6.2,2X,E13.5,2X,E13.5) ! 10进制和科学计算法输出设置finish
如上所述,可以以任何方式定制该输出,包括数字格式和内容。
/SOLUANTYPE,STATIC ! STATIC ANALYSISNLGEOM,ON ! LARGE DEFLECTION TURNED ONOUTRES,ALL,1 ! WRITE SOLUTION ON RESULTS FILE FOR EVERY SUBSTEP!boundaryNSEL,S,LOC,Y,-P3-P4D,ALL,UY,0D,ALL,UX,0NSEL,S,LOC,Y,H+T+TT+BB1,D,ALL,UY,-2.5e-3!D,ALL,UY,-H*2!D,ALL,UX,0ALLS!!设置载荷步数目,方便提取AUTOTS,0STPS = 60NSUBST,STPSSOLVEFINISH/POST1*DIM,OTPT,ARRAY,1,2*CFOPEN,PRECURVED BEAM,DATSET,FIRST*DO,II,1,STPSNSEL,S,LOC,Y,H+T+TT+BB1CM,CMN,NODE !建立组元*GET,NUMN,NODE,0,COUNT !取出数目UUY = 0FFY = 0*DO,JJ,1,NUMN*GET,NUMIN,NODE,0,NUM,MINNSEL,,,,NUMIN !提取1点*GET,PIC_UY,NODE,NUMIN,U,Y*GET,PIC_FY,NODE,NUMIN,RF,FYUUY = PIC_UY + UUYFFY = PIC_FY + FFYCMSEL,,CMN,NODENSEL,U,,,NUMIN !排除1点CM,CMN,NODE*ENDDOOTPT(1,1) = -UUY/NUMN*1000 !单位为mmOTPT(1,2) = -FFY/NUMN!OTPT(1,2) = -FFY*VWRITE,OTPT(1,1),OTPT(1,2)(F21.12,F21.12)SET,NEXT*ENDDO*CFCLOS
/SOLUANTYPE,HARMONIC !谐波响应OUTRES,ALL,ALLHROPT,FULLFFF0=0 !扫频起始频率FFF1=0.6 !扫频结束频率HARFRQ,FFF0,FFF1NNNN=600 !计算步NSUBS,NNNNKBC,1D,1,UX,1ALLSOUTRES,all,allSOLVEFINISH/POST1*DIM, RES, ARRAY, NNNN,2FSTP=(FFF1-FFF0)/NNNNPICknode = Nd-2*Nd_cell+1nsel,s,node,,PICknode*DO,I,1,NNNNFFFC=FFF0+I*FSTPRES(I,1)=FFFC*2*PI !以圆频率输出SET,,, ,,, ,I*2-1*GET,UUU1,NODE,PICknode,U,XRES(I,2)=UUU1*ENDDO*MWRITE,RES,dynamicin,DAT,,JIK,2,NNNN(2F32.4)