nuaalyc 发表于 2010-4-4 15:18:32

关于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:31:25

本帖最后由 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

hjdwg 发表于 2010-4-30 14:09:06

路过。干嘛不下载个RBio,效率高得多
http://www.cise.ufl.edu/research/sparse/RBio/

>> K=RBread('stf.txt');whos K
Name       Size            BytesClass   Attributes

K         24x24             3844double    sparse

zhq198466 发表于 2010-12-23 17:49:46

谢谢楼主,另外我觉得right hand sides 是载荷项

zhq198466 发表于 2010-12-23 17:52:54

3# hjdwg

之前下了个读full文件的fortran编的,不过语言版本很早,不认识,编译也不对

zhq198466 发表于 2010-12-23 22:23:16

啊,为什么一个9节点的板结构,生成的HARWELL-BOEING 格式文件的指明列数为14?

xtdtm 发表于 2011-5-5 11:23:58

谢谢楼主啦...

zk120958049 发表于 2011-5-10 15:44:31

3# hjdwg 你好 RBio怎么用的

datoucong 发表于 2011-5-23 23:50:32

4#说的好像对,right hand sides应该是载荷项。

hellolqy 发表于 2011-6-19 20:58:18

请问一下第3类数据中的如 -0.356662087912088D+08 的D+08是什么意思,和E+08一样吗?

weiwenming 发表于 2011-10-7 16:31:50

D和E都可以用来表示FORTRAN中的实型数据。区别在于E和D分别表示单、双精度的实型常量。

windtj 发表于 2011-11-28 21:09:49

hjdwg 发表于 2010-4-30 14:09 static/image/common/back.gif
路过。干嘛不下载个RBio,效率高得多
http://www.cise.ufl.edu/research/sparse/RBio/



RBio怎么用,谢谢。

hjdwg 发表于 2011-12-11 14:20:14

windtj 发表于 2011-11-28 21:09 static/image/common/back.gif
RBio怎么用,谢谢。

编译,然后就用呗

benbenhainiao 发表于 2011-12-20 11:02:00

楼主 我问问 我现在需要的是完整的整体刚度矩阵 是不是只要把以上程序分析好的那个矩阵做下对称啊??

benbenhainiao 发表于 2011-12-20 11:03:39

对了 RHS项就是运动微分方程右边的载荷项,http://www.chinavib.com/thread-101485-1-1.html,上头说的挺清楚地 有空看看吧

张扬天下下 发表于 2011-12-27 21:28:31

zhq198466 发表于 2010-12-23 17:52 static/image/common/back.gif
3# hjdwg

之前下了个读full文件的fortran编的,不过语言版本很早,不认识,编译也不对 ...

请问 怎么读取full文件?最近我刚学习ANSYS提取刚度质量矩阵,那个文件里好像是整体矩阵,但是不会读取,谢谢帮忙!

jervis830521 发表于 2012-2-8 21:19:51

谢谢楼主 受益很大啊

benbenhainiao 发表于 2012-5-3 11:47:14

试问楼主 我的hb文件的第二类数据中出现许多0这可能是啥情况知道卜?

yun34666 发表于 2012-5-4 16:40:34

不错哦。。。。。。。。。。

yxs199503 发表于 2020-6-3 09:48:06

大佬我问下,我用这个HB to MM程序转换HBMAT导出的质量矩阵,为什么里面有负数?,而且最后取主对角元素发现有的xyz三个方向的质量居然不相等,您方便交流一下么,十分感谢
页: [1]
查看完整版本: 关于ANSYS(质量、刚度、阻尼)矩阵Harwell-boeing格式数据的说明