关于ANSYS(质量、刚度、阻尼)矩阵Harwell-boeing格式数据的说明
本帖最后由 nuaalyc 于 2010-4-4 15:44 编辑PS:主要针对ANSYS输出的HARWELL-BOEING 格式
头文件说明:
Stiffness matrix from ANSYS FULL file dumped into Harwell-Boeing format
361 25 156 156 24
RSA 24 24 156 0
(I14) (I14) (d25.15) (d25.15)
F 1 24
第一行:标题
第二行:
参数1,整个文件(除去头文件(header))的数据个数
参数2,列信息参数(pointers)个数
参数3,数据行标信息(row indices)参数个数
参数4,非零数据个数
参数5,right-hand sides(RHS)参数个数
第3行:
参数1,矩阵类型:
字符1:R(实矩阵)C(复数矩阵)P(非数值矩阵)
字符2:S(对称矩阵)U(非对称矩阵)H(Heritian矩阵)
Z(反对称矩阵)R(方阵)
字符3:A
参数2,系数矩阵的行数
参数3,系数矩阵的列数
参数4,单元矩阵(elemental matrix)的个数(0代表组装矩阵)
第4行:
参数1,列信息参数数据类型
参数2,行标信息参数数据类型
参数3,系数矩阵(coefficient matrix)数据类型
参数4,RHS数据的数据类型
第5行:Only present if there are right-hand sides present
参数1,字符1:Right-hand side类型:
F for full storage or
M for same format as matrix
字符2:G if a starting vector(s) (Guess) is supplied
字符3:X if an exact solution vector(s) is supplied
参数2,RHS个数
参数3,RHS数据行标信息(row indices)个数
文件数据说明:
思路:先确定稀疏矩阵各列的非零元素的个数,然后给出各非零元素的行标和数值。
Harwell-boeing 格式用一个一维数组确定稀疏矩阵,该数组数据可以分为三类:1,表示矩阵每一列包含
的非零数据的个数;
2,表示每列非零数据所在的行标;3,表示非零数据的值。这三类数依次排列。
第一类数据的个数由头文件中第2行参数2(设为n)给出,即一维数组前n个数据,通常有1开始。
这些数据前后两个数之差即是稀疏矩阵各列非零数据的个数。
例如:
1
13
24
36
47
57
67
76
84
93
101
108
115
121
126
132
137
141
145
148
150
153
155
156
157
由头文件可以知道,第一类数据有25个数,如上所示。则稀疏矩阵的第1列有13-1=12个非零数,第二列
有24-13=11个非零数,第三列有36-24=12个。依次类推,即可知道稀疏矩阵各个列所含非零数据的个数。
第一类数据后紧接着就是第二类数据,其个数由头文件中第2行参数3给出,可以确定每列非零数据所在的
行标。方法很简单,根据已知的每列的非零数据的个数,找出对应的行标即可。如,上例中第二类数据共156
个,稀疏矩阵第1列有12个元素,则第二类数据中前12个数据即是矩阵第一列的各非零数据的行标;接下来
的11个数据是第二列的行标。如此类推,即可以知道稀疏矩阵各列非零元素的位置。
每列非零元素的值从第三类数据中找到对应的数据即可,其位置与第二类数据一一对应,其方法与第二类数据
类似;
另,关于right-hand sides 的作用与原理尚不清楚,欢迎大家讨论!
关于harwell-boeing 格式可参考:http://math.nist.gov/MatrixMarket/formats.html
harwell-boeing 转化成稀疏矩阵的的MATLAB程序:http://people.sc.fsu.edu/~burkardt/m_src/hb_to_mm/hb_to_mm.html
注意: 该程序给出的稀疏矩阵不是对称矩阵
本帖最后由 nuaalyc 于 2010-4-4 15:45 编辑
%%头文件
Stiffness matrix from ANSYS FULL file dumped into Harwell-Boeing format
361 25 156 156 24
RSA 24 24 156 0
(I14) (I14) (d25.15) (d25.15)
F 1 24
%%第一类数据
1
13
24
36
47
57
67
76
84
93
101
108
115
121
126
132
137
141
145
148
150
153
155
156
157
%%第二类数据
1
2
6
7
8
12 %稀疏矩阵第1列各非零元素的行标
13
14
18
19
20
24
2
6
7
8
12 %第2列非零数据的行标
13
14
18
19
20
24
。。。。。。。。。。。。
.
%%第三类数据
0.908905677655663D+08
0.356662087912088D+08
-0.480769230769231D+05
-0.523328754578740D+08
-0.269917582417582D+07
-0.480769230769231D+05 %稀疏矩阵第1列各非零元素的值
-0.575572344322359D+08
-0.356662087912088D+08
-0.480769230769231D+05
0.189995421245436D+08
0.269917582417582D+07
-0.480769230769231D+05
0.908905677655663D+08
0.480769230769231D+05
0.269917582417582D+07
0.189995421245436D+08
0.480769230769231D+05
-0.356662087912088D+08
-0.575572344322359D+08
0.480769230769231D+05
-0.269917582417582D+07
-0.523328754578740D+08
0.480769230769231D+05
。。。。。。。。。。。。。。
%%right-hand sides 对应的数据
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00
0.000000000000000D+00 路过。干嘛不下载个RBio,效率高得多
http://www.cise.ufl.edu/research/sparse/RBio/
>> K=RBread('stf.txt');whos K
Name Size BytesClass Attributes
K 24x24 3844double sparse 谢谢楼主,另外我觉得right hand sides 是载荷项 3# hjdwg
之前下了个读full文件的fortran编的,不过语言版本很早,不认识,编译也不对 啊,为什么一个9节点的板结构,生成的HARWELL-BOEING 格式文件的指明列数为14? 谢谢楼主啦... 3# hjdwg 你好 RBio怎么用的 4#说的好像对,right hand sides应该是载荷项。 请问一下第3类数据中的如 -0.356662087912088D+08 的D+08是什么意思,和E+08一样吗? D和E都可以用来表示FORTRAN中的实型数据。区别在于E和D分别表示单、双精度的实型常量。 hjdwg 发表于 2010-4-30 14:09 static/image/common/back.gif
路过。干嘛不下载个RBio,效率高得多
http://www.cise.ufl.edu/research/sparse/RBio/
RBio怎么用,谢谢。 windtj 发表于 2011-11-28 21:09 static/image/common/back.gif
RBio怎么用,谢谢。
编译,然后就用呗 楼主 我问问 我现在需要的是完整的整体刚度矩阵 是不是只要把以上程序分析好的那个矩阵做下对称啊??
对了 RHS项就是运动微分方程右边的载荷项,http://www.chinavib.com/thread-101485-1-1.html,上头说的挺清楚地 有空看看吧 zhq198466 发表于 2010-12-23 17:52 static/image/common/back.gif
3# hjdwg
之前下了个读full文件的fortran编的,不过语言版本很早,不认识,编译也不对 ...
请问 怎么读取full文件?最近我刚学习ANSYS提取刚度质量矩阵,那个文件里好像是整体矩阵,但是不会读取,谢谢帮忙! 谢谢楼主 受益很大啊
试问楼主 我的hb文件的第二类数据中出现许多0这可能是啥情况知道卜? 不错哦。。。。。。。。。。 大佬我问下,我用这个HB to MM程序转换HBMAT导出的质量矩阵,为什么里面有负数?,而且最后取主对角元素发现有的xyz三个方向的质量居然不相等,您方便交流一下么,十分感谢
页:
[1]