- 积分
- 1
- 注册时间
- 2010-4-5
- 仿真币
-
- 最后登录
- 1970-1-1
|
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 !形成上三角矩阵,从而得到满矩阵 |
|