首页/文章/ 详情

ANSYS计算结果还在用第三方软件做傅里叶变换?试试APDL本身的函数*FFT

1年前浏览1897

FFT称为快速傅立叶变换(Fast Fourier Transformation),是时域-频率变换分析方法之一。FFT的理论要想完全弄清楚需要花一点时间,本文不再详细说明,如果有同学需要了解FFT,大家可去知乎搜索话题傅里叶变换,看里面的精华文章,看完后会对FFT有一个非常清晰的认识,有兴趣的同学可去知乎搜下。

我们如果要做时域和频域的转换,一般是利用第三方软件来做,也即将ANSYS的计算结果导出,然后在导入到三方软件中处理,这里的三方软件一般可用matlab或者orgin,甚至Python也是可以的,然而单从数据处理这块来讲,导入导出的操作稍显麻烦,其实在ANSYS的数据工具箱中也是提供了傅里叶变换的函数 *FFT,水哥今日就详细介绍下这个函数,方便大家使用。

*FFT的帮助如下:

该命令有如下参数,下面分别说明:

Type: 确定变化类型,分为正变换和逆变换

InputData:输入的要进行FFT变换的向量或者矩阵,其中矩阵需要为用*DMAT命令创建的稠密矩阵,向量为*VEC创建的向量。输入数据可以是实序列,也可为复序列。

OutputData:FFT变换后保存的矩阵或向量名,其数据类型与输入数据一致,并且必须在*FFT之前定义。在复域,无论正变换或逆变换,输入数据和输出数据均为复序列。在实域,正变换输入实序列,而输出则为复序列;逆变换输入复序列,输出为实序列。

DM1:向量项数或矩阵行数,缺省为输入向量项数或输入矩阵的行数。

DM2:矩阵列数,缺省为输入矩阵的列数。

ResultFormat:结果格式,FULL—保存全部结果,由DM1和DM2确定(当然可采用缺省值);PART—保存部分结果(仅对实序列),对输入的实序列,FFT结果的实数部分对称而虚部共轭,如此可节省计算时间和储存空间。

这里水哥便以我们的老朋友EL-Centro N-S波的为例,来进行*FFT的操作演示,当然实际中同学们可直接以ANSYS求解完后提取的数据作为输入数据处理。

EL-CENTRO-NS地震波如下:

第一步:读取El-Centro波,指定采样频率及采样点数

    finish/clear/post26!数据点数NN=2688!采样间隔DT=0.02*Create,dataread,mac*DIM,Elcentro,array,NN*Vread,Elcentro(1,1),Elcentro,txt,,jik,1,NN(F10.5)*Enddataread

    第二步:将变量导入到APDL数学工具箱中,并进行傅里叶变换

      !导入APDLMATH箱,进行FFT正变换*VEC,EL_Input,D,IMPORT,APDL,Elcentro!定义输出数据*VEC,EL_Output,Z,ALLOC,NN!进行FFT变换*FFT,Forw,EL_Input,EL_output,,,FULL

      第三步:获取输出复数向量的实部和虚部,进行幅值计算

        !输出实部和虚部!获取输出数据的实部和虚部结果*VEC,EL_Output_R,D,COPY,EL_output,REAL*VEC,EL_Output_I,D,COPY,EL_output,IMAG!获取向量的维度size=EL_Output_R_ROWDIM/2size=nint(size)!计算输出结果的幅值*VEC,EL_Output_DISP,D,ALLOC,size*do,i,1,sizeIR=EL_Output_R(i)II=EL_Output_I(i)EL_Output_DISP(i)=SQRT(IR**2+II**2)*enddo

        第四步:对幅值进行调幅,这点大家要注意了,APDL默认的FFT是没有经过调幅处理的,这样绘制出来的幅值远远大于时域的幅值,这点是不合实际的。

          !调幅处理EL_Output_DISP(1)=EL_Output_DISP(1)/NNEL_Output_DISP(size)=EL_Output_DISP(1)/NN*do,i,2,size-1EL_Output_DISP(i)=EL_Output_DISP(i)/NN*2*enddo

          第五步:绘制幅值-频率图

            !绘制幅-频图*EXPORT,EL_Output_DISP,APDL,EL_Output_AMP*dim,EL_AMP,table,NN/2*dim,EL_Pha,table,NN/2*dim,EL_Pha2,,NN/2*do,i,1,NN/2EL_AMP(i)=EL_Output_AMP(i)EL_Pha2(i)=(i-1)/NN/DTEL_Pha(i)=EL_Pha2(i)*enddo/show,png/AXLAB,X,Frequency/AXLAB,Y,Amplitude*vplot,EL_Pha,EL_AMP/show,close

            第六步:查看与对比

            在ANSYS工作目录下,找到生成的频率-幅值图,如下所示:

            为了对比上述操作的准确性,水哥分别采用了Matlab和Orginlab这两种常见的数据处理软件对相同的地震波进行了FFT,截图如下所示:

            Matlab:

            OrginLab:

            从上面对比可见,三者形状和幅值基本一致。

            另外值得说明的是,在matlab和orginlab中窗函数均采用的默认矩形窗函数,如果选用其他的,幅值会有一定的影响,也即从侧面说明APDL中FFT采用的默认窗函数为矩形窗函数,且没有提供可更改的窗口,如果有同学需要用其他窗函数,水哥建议还是用三方软件做吧。

            来源:上海安世亚太
            理论Fourier TransformANSYS
            著作权归作者所有,欢迎分享,未经许可,不得转载
            首次发布时间:2023-05-25
            最近编辑:1年前
            上海安世汇智
            正向设计,智慧研发。
            获赞 459粉丝 98文章 56课程 0
            点赞
            收藏
            未登录
            还没有评论
            课程
            培训
            服务
            行家
            VIP会员 学习 福利任务 兑换礼品
            下载APP
            联系我们
            帮助与反馈