不看不知道,一看乐一跳!MAPDL的*DMAT命令生成稠密矩阵的手段十分强大,能够访问ANSYS内部很多文件或数据库,如FULL、EMAT、RST、SUB、MODE等文件,提取单元或结构的刚度矩阵、质量矩阵、阻尼矩阵、荷载向量等等易如反掌,较早期提取方法容易百倍。不仅如此,可轻松转换APDL数组或外部矩阵数据等进入APDLMath箱,以便后续操作应用。
创建稠密矩阵命令*DMAT格式如下(具体解释如图1,原因你懂的)。
从*DMAT命令可知,可创建三种数据类型的稠密矩阵,多用双精度实型类型。主要创建方法有复 制既有矩阵和从数据文件导入两种,而导入方法可轻松访问ANSYS数据库或数据文件,或者从APDL数组或外部矩阵数据转换等。使用该命令要注意问题如下:
(1)使用MAPDL时,用户无需定义矩阵维数和行列界限,ANSYS自动设置。
(2)使用*DMAT命令时,从文件导入时,注意文件名一定要用包含扩展名的全名,否则出错。
(3)APDLMath箱内的矩阵无法直接查询,必须转换为APDL数组查看。转换时,也无需先定义数组。
为了说明该命令的使用方法,以图2所示例题进行对比,命令流如下:
FINISH$/CLEAR
/FILNAME,MYDMAT$/PREP7
ET,1,BEAM3$MP,EX,1,2E5
R,1,1E-2,32E-5,0.5
N,1$N,2,0,4$N,3,4,4
N,4,4,0$EN,1,2,3
EN,2,1,2$EN,3,4,3
F,2,FX,5
SFBEAM,1,1,PRES,10,,,,2,-1
SFBEAM,2,1,PRES,3
SAVE!为提取原始刚度矩阵准备
D,1,ALL$D,4,ALL
/SOLU$SOLVE$FINISH
/POST1
!提取单元刚度矩阵并转为数组
*DO,I,1,3
*DMAT,ESTIF%I%_M,D,IMPORT,EMAT,MYDMAT.EMAT,STIFF,I
*EXPORT,ESTIF%I%_M,APDL,ESTIF%I%
*ENDDO
*VEDIT,ESTIF3!查看3号单元刚度矩阵,式6-6
!提取结构刚度矩阵并转为数组
*DMAT,SSTIF_M,D,IMPORT,FULL,MYDMAT.FULL,STIFF
*EXPORT,SSTIF_M,APDL,SSTIF
*VEDIT,SSTIF!式6-8
!提取荷载列阵并转为数组
*DMAT,RHS_M,D,IMPORT,FULL,MYDMAT.FULL,RHS
*EXPLORT,RHS_M,APDL,RHS
*VEDIT,RHS!式6-9
!顺便求解方程A*X=B!!!!!!!!!!!!
*lsengine,,engine1,sstif_m
*lsfactor,engine1
*ls bac,engine1,rhs_m,x_m
*export,x_m,apdl,x
*vedit,x
!如要获得原始结构刚度矩阵(无约束,式6-7)
FINISH$RESUME$/SOLU
WRFULL,1$SOLVE$FINISH$/POST1
!提取原始结构刚度矩阵并转为数组
*DMAT,SSTIF0_M,D,IMPORT,FULL,MYDMAT.FULL,STIFF
*EXPORT,SSTIF0_M,APDL,SSTIF0
*VEDIT,SSTIF0!式6-7
!上述命令流中的*VEDIT均为截图,读者可自行对比。
总之,虽然*DMAT可以轻松转换数组或数据到箱内矩阵,但主要功能是访问ANSYS数据文件导入矩阵,不仅可轻松提取各种矩阵,且为之后的矩阵运算或调试算法提供了接口,另文会继续给出实际应用。