找回密码
 注册
Simdroid-非首页
查看: 99|回复: 1

[后处理] hbmat提取的矩阵后处理

[复制链接]
发表于 2010-4-29 08:56:09 | 显示全部楼层 |阅读模式 来自 山东济南
hbmat得到的文件是一列的,还需要扩充为一个矩阵,用ansys可以达到这个目的(王新敏教材):
/aux2 !进入aux2处理器
file,ex2,full !指定文件ex.full
hbmat,ex2,txt,,ascii,stiff,yes!转换刚度矩阵刚度矩阵为ex.txt
finish
!
*dim,contline,,5 !定义一维数组
*vread,contline(1),ex2,txt,,,5,,,1!跳过第一行后读入5个数据
(5f14.0)
ptrcrd=contline(2)!保存列指针总数
indcrd=contline(3)!保存行索引总数
valcrd=contline(4)!保存矩阵元素总行数
rhscrd=contline(5)!保存右边项总数
*vread,contline(1),ex2,txt,,,4,,,2 !跳过第二行读入四个数据
(a3,11x,4f14.0)
nrow=contline(2)
ncol=contline(3) !保存刚度矩阵的行列数
strline=$contline= !删除数组
*if,rhscrd,eq,0,then!如果没右边项取lso=4,否则取lso=5
lso=4
*else
    lso=5
*endif
*dim,pointr,,ptrcrd !定义列指针数组
*dim,rowind,,indcrd !定义行索引数组
*dim,values,,valcrd !定义矩阵元素数组
*dim,rhsval,,rhscrd !定义右边项数组

*vread,pointr(1),ex2,txt,,,ptrcrd,,,lso
(f14.0)  !读入列指针数组
*vread,rowind(1),ex2,txt,,,indcrd,,,lso+ptrcrd
(f14.0)  !读入行索引数组
*vread,values(1),ex2,txt,,,valcrd,,,lso+ptrcrd+indcrd
(d25.15) !读入矩阵元素数组
*vread,rhsval(1),ex2,txt,,,rhscrd,,,lso+ptrcrd+indcrd+valcrd
(d25.15) !读入右边项元素数组
*dim,smatr,,nrow,ncol !定义矩阵行列数
*do,icol,1,ncol !以列数循环
stacol=pointr(icol) !得到当前列指针(元素的序号)
endcol=pointr(icol+1)!得到下一列指针
*do,irow,stacol,endcol-1 !以当前列中的非零元素循环
   truerow=rowind(irow) !得到当前元素的行号
   smatr(truerow,icol)=values(irow) !按行列号将元素保存到矩阵中
*enddo
*enddo !结束两个循环
*do,irow,1,nrow
  *do,icol,1,ncol
   smatr(irow,icol)=smatr(icol,irow)
  *enddo
*enddo  !形成上三角矩阵,从而得到满矩阵

评分

1

查看全部评分

 楼主| 发表于 2010-4-29 08:57:45 | 显示全部楼层 来自 山东济南
Simdroid开发平台
不过,自由度数目过大时,就会出现假死的情况,这是因为ansys毕竟不是专业的数值处理软件,这时可以用matlab处理数据:
clear
a=importdata('exmass.txt');  %exmass.txt---hbmat得到的文件(去除文字行)
lie=a(1:668);      %668,列指针行数
hang=a((668+1)668+1891));      %%1891,行索引行数
yuansu=a((668+1891+1):(668+1891+1891));     %1891,矩阵元素行数
for i=1:667
d=lie(i);
b=lie(i+1);
for j=d:(b-1)
c=hang(j);
MassMatrix(c,i)=yuansu(j);
end
end
for j=1:667     
for i=1:667     %667,667  ,矩阵行列数
MassMatrix(j,i)=MassMatrix(i,j);
end
end
clear a
clear b
clear c
clear d
clear hang
clear i
clear j
clear lie
clear yuansu
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-17 06:35 , Processed in 0.041176 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表