中华钢结构论坛 China Structure Forum                                              XinY structural consultants ltd

 
ANSYS中整体、单元刚度和质量矩阵的提取
abaya






积分 391
帖子 215
2002-6-29 08:02    顶部


1、整体刚度和质量矩阵的提取。
该功能需要进行二次开发,由ansys形成
的二进制文件.full提取整体刚度和质量
矩阵。
  
基于ansys的一个用户开发程序例子编
了一个程序(附件中)。
  
开发环境:compaq fortran 6.5
运行环境:win2000。
一个主文件:self.for,
另一个文件matrixout.f90用于矩阵输出
binlib.lib为ansys提供的库文件,将其
引入项目中(也可直接扔进debug目录)
  
.full文件由子空间迭代模态分析获得。
运行编译后的可执行文件.exe
  
2、单元刚度和质量矩阵的提取。
/DEBUG命令。详细说明可由以下转载文章
获得:
发信人: tomath1 (雨天), 信区: FEA        
标  题: Re: ANSYS中命令/DEBUG那儿有
发信站: BBS 水木清华站 (Thu Jun 27 14:28:51 2002)
  
finish  
/clear  
  
PI=3.1415926  
  
w1=3  
w2=10  
w3=6  
w4=1.2  
r=.8  
t=0.08  
  
/PREP7  
!*  
ET,1,SHELL63  
R,1,t  
  
ET,2,MASS21  
R,2,500,500,500,2000,2000,2000,  
!*  
UIMP,1,EX, , ,2e11  
UIMP,1,NUXY, , ,0.3,  
UIMP,1,DAMP, , ,0.2,  
UIMP,1,DENS, , ,7800,  
  
BLC4,0,0,w2,w1  
ESIZE,1.5,0,  
AMESH,all  
  
NSEL,S,LOC,X,0.0  
D,all, , , , , ,ALL, , , , ,  
  
allsel,all  
SFA,all,1,PRES,12  
FINISH  
  
/OUTPUT,cp,out,, ! 将输出信息送到cp.out文件  
/debug,-1,,,1 ! 指定输出单元矩阵  
  
/SOLU  
SOLVE  
finish  
  
/OUTPUT, TERM ! 将输出信息送到output windows中  
  
! 这时用编辑器打开cp.out文件,可以看到按单元写出的质量、刚度等矩
  
formoon






积分 136
帖子 90
2002-7-2 14:20    顶部


连接的的时候有7个错误:
--------------------Configuration: SELF - Win32 Debug--------------------
Linking...
SELF.OBJ : error LNK2001: unresolved external symbol _BINIQR@8
SELF.OBJ : error LNK2001: unresolved external symbol _BININI@4
SELF.OBJ : error LNK2001: unresolved external symbol _BINTFO@24
SELF.OBJ : error LNK2001: unresolved external symbol _BINSET@44
SELF.OBJ : error LNK2001: unresolved external symbol _BINRD@24
SELF.OBJ : error LNK2001: unresolved external symbol _BINCLO@16
Debug/SELF.exe : fatal error LNK1120: 6 unresolved externals
Error executing link.exe.
  
SELF.exe - 7 error(s), 0 warning(s)
我想可能和binlib.lib文件有关,当我确实是把他放进了debug文件夹中了,abaya大侠麻烦再看看!
我用的版本为:compaq visual fortran professional edition 6.5.0
abaya






积分 391
帖子 215
2002-7-4 07:54    顶部


试试如下方法:
Project->settings->link->Object/library modules: kernel32.lib binlib.lib
abaya






积分 391
帖子 215
2002-9-2 18:01    顶部


很想知道您指的限制是什么。如果真的
是某种限制,你是否能考虑修改一下我
提供的源代码,取除这些限制呢?我本
人没有故意施加任何限制。
  
另外在使用这个程序的时候有一点我想
指出:
  
由于输出的整体矩阵包含满存储的内容,
而当自由度数目较大时(>2000),满
存储格式的矩阵大小可能会超过1G,所
以你的内存和硬盘容量将受到严峻考验,
此时,建议去除源代码中形成满存储矩
阵的代码(与SMATRIX和MMATRIX相关
的内容),而只输出压缩存储格式的文
件。
  
这也是为什么有限元分析要用压缩存储
的原因:满存储将消耗大量的计算资源,
而整体矩阵中又存在着大量的0元素,所
以使用压缩存储。
  
附件中提供了仅输出压缩存储的文件源码。
vhhw






积分 15
帖子 10
2002-9-26 09:49    顶部


不好意思,一个菜鸟级问题
本人在用此程序时,总是build不过去,在Use dflib处报错。
我实在不知道
  Use dflib
    USE NUMERICAL_LIBRARIES
    USE MATRIXOUT_
对应的模块在哪里?
该如何解决?
不胜感激!!!!!
vhhw






积分 15
帖子 10
2002-9-26 18:42    顶部


本人在link的时候总是报错:
--------------------Configuration: SELF - Win32 Debug--------------------
Linking...
LINK : fatal error LNK1104: cannot open file "binlib.lib"
Error executing link.exe.
  
SELF.exe - 1 error(s), 0 warning(s)
  
请教各位大侠该如何解决,谢谢!!!
vhhw






积分 15
帖子 10
2002-9-26 22:27    顶部


为什么我用ansys建模,分网完以后直接在命令行里输入:
/OUTPUT,cp,out,, ! 将输出信息送到cp.out文件  
/debug,-1,,,1 ! 指定输出单元矩阵
然后进行后处理,算完后用记事本打开cp.out,
竟然看到了刚度矩阵,那还用这个fortran程序干嘛?
这是怎么回事?
  
谢谢大家!!!!!!!!!!!!!  
  
:(   :)
STCC






积分 449
帖子 241
2002-10-5 09:00    顶部


我也有楼上这位兄弟相同的问题,就是,直接执行那个命令流文件和/debug命令就能生成cp/out文件了,但是在help文件里面找/debug命令却找不到,不知道是怎么回事。
abaya






积分 391
帖子 215
2002-10-6 14:00    顶部


1、如果需要获取结构整体的刚度和质量矩阵,
用附件中的FORTRAN程序。
  
2、如果获取某个单元的刚度和质量矩阵,用
\DEBUG命令,帖子中给出命令流文件以示例,
其实最关键的是如下命令:
/OUTPUT,cp,out,, ! 将输出信息送到cp.out文件  
/debug,-1,,,1 ! 指定输出单元矩阵  
  
3、\DEBUG命令是ANSYS的非公开命令,所以
在HELP中不会出现。如果要看详情,请去ANSYS
的非官方网站ANSYS.NET上去查询。
xiazhifan






积分 37
帖子 39
2002-10-10 09:27    顶部


前面有好几个问题还没解决,如vhhw提出的
  Use dflib  
  USE NUMERICAL_LIBRARIES  
  USE MATRIXOUT_  
对应的模块在哪里?  
该如何解决?  
我也不清楚,望高手们赐教,谢谢!!
vhhw






积分 15
帖子 10
2002-10-10 13:52    顶部


你用的是compaq fortran 6.5 吗?
如果是,那么就不存在这个问题了,我开始以为fortran90跟它是兼容的,
要是用fortran90的话,会出现这个问题,后来我装了compaq fortran 6.5 ,
就不存在这个问题了,具体情况我也不清楚。
:):)
xiazhifan






积分 37
帖子 39
2002-10-10 22:57    顶部


我用的还是visual fortran 5.0 版,你有compaq fortran 6.5 的安装程序吗?
如果有的话,请传给我好吗?我的e-mail地址xiazhifan96@163.com
yu






积分 28
帖子 19
2002-10-17 20:06    顶部


请问楼主,这个程序是否主要是从.full文件提取2进制数据然后变成10进制的?没有fortran.准备用matlab改写。请介绍一下编程思想,看程序就省事了:)
abaya






积分 391
帖子 215
2002-10-19 12:36    顶部


yu wrote:
请问楼主,这个程序是否主要是从.full文件提取2进制数据然后变成10进制的?没有fortran.准备用matlab改写。请介绍一下编程思想,看程序就省事了:)

恐怕不太好办,因为要用到ANSYS的库文件BINLIB.LIB和动态链接文件BINLIB.DLL。调用了BINLIB.LIB中的ANSYS提供的函数,这些函数专为
读取其二进制文件编写,好像是不公开的。
vhhw






积分 15
帖子 10
2002-10-24 17:06    顶部


请问,我用ansys计算得到file.full文件,怎么对这个文件与附件中的程序进行操作才可得到总体刚度矩阵;
附件中也有一个.full文件,怎么处理?
hyperelastic






积分 884
帖子 356
2002-11-25 14:28    顶部


请问有没有高手对上面两种方法得出的总刚矩阵比较过,即:1.用abaya提供的程序得到;2.用/debug命令先得单刚,再集成总刚。
我对这个问题很感兴趣。
黄藤酒






积分 95
帖子 65
2003-1-4 16:25    ICQ 状态 顶部


楼上各位老兄,请问如何在计算过程中将刚度矩阵的主元找出来呢?
xiaolei






积分 44
帖子 33
2003-1-6 22:13    顶部


abaya老兄:
   我现在的课题急需用ANSYS提取整体刚度矩阵,和质量矩阵。但是我对COMPAQ FORTRAN 不太会用,我先compile了一下,提示有一个错误,
--------------------Configuration: SELF - Win32 Debug--------------------
C:\in\SELF.FOR(22): Could not find the file MATRIXOUT_.mod.
Compiling Fortran...
C:\in\SELF.FOR
C:\in\SELF.FOR(22) : Error: Error in opening the Library module file.   [MATRIXOUT_]
  USE MATRIXOUT_
------------^
Error executing df.exe.
  
SELF.OBJ - 1 error(s), 0 warning(s)
然后我又先compile了一下matrixout文件,结果提示有8个错误,和楼上那位formoon兄弟一样。
abaya老兄,您能不能再仔细的介绍一下操作过程,越详细越好,不胜感激!!!我的信箱xiaolei1105@163.com
wenwind_gary






积分 1
帖子 4
2003-1-8 10:27    QQ 顶部


本人为一ANSYS初学者,请教:若想将ANSYS生成的单元刚度矩阵分别乘
上一个系数(0到1之间),然后集成为整体刚度矩阵,接着求出对应的位移,应变,该如何处理。或者就是说,将某几个单元的弹性模量乘
上一个系数(0到1之间),然后求解!
懒骨头






积分 2168
帖子 885
2003-1-8 17:04    顶部


不必动单元刚度矩阵。那几个单元定义为另一种材料,将其弹性模量 E 乘上一个系数(0到1之间)即可。
wenwind_gary






积分 1
帖子 4
2003-1-11 12:29    QQ 顶部


我的意思是说如何把弹性模量当作一个变量,因为我需要不断修正E。
flutter






积分 359
帖子 206
2003-3-3 09:35    顶部


提取刚度、质量矩阵也可以通过
list binary file得到,选full文件即可了
zhy






积分 423
帖子 174
2003-5-17 20:40    顶部


好东东
但那儿能找到compaq fortran 6.5
shendq






积分 28
帖子 23
2003-5-18 16:17    QQ 顶部


我和vhhw 一样
--------------------Configuration: SELF - Win32 Debug--------------------  
Linking...  
LINK : fatal error LNK1104: cannot open file "binlib.lib"  
Error executing link.exe.  
  
SELF.exe - 1 error(s), 0 warning(s)  
我用的是visual fortran 90 professional Edition
请教各位大侠该如何解决,谢谢!!!
tsintsun






积分 100
帖子 85
2003-5-26 19:01    QQ 顶部


abaya老兄,在运行sele.for 时,提示“无法找到动态连接库binlib.dll于指定的路径:.......“ 不只是什么原因,怎么搞定?多谢指教!
shendq






积分 28
帖子 23
2003-6-1 22:30    QQ 顶部


编译后的文件
marianers






积分 29
帖子 35
2003-7-29 17:42    QQ ICQ 状态 顶部


真实太好了,我正在为如何提取刚度矩阵和质量矩阵发愁啦
xyni






积分 15
帖子 15
2003-8-26 18:34    顶部


对有限元来讲,在对一个结构进行分析时,应该能形成单元刚度矩阵和单元质量矩阵。用了楼上兄弟的程序,对有的file.full并不能得到mass和stiffness矩阵,不知道这是为啥?
如下一个最简单的例子,
/filnam,file
/prep7
n,1,1
n,2,2,
n,3,3
mp,dens,1,7.8e3
mp,nuxy,1,0.3
mp,ex,1,2e11
r,1,1e-2,1e-4/12,1e-4/12,1e-1,1e-1
et,1,link1
e,1,2
e,2,3
/solu
d,1,all
d,3,all
f,2,fy,1000
alls
solv
finish
得到的file.full,利用63941-rdrwrt.exe运行后
仅仅出现的是:
#  STIFFNESS.MATRIX
#
#  FROM ANSYS .FULL FILE
#

#  MASS.MATRIX
#
#  FROM ANSYS .FULL FILE
#
请问高手,这是为什么?
而且通过
/output,cp,out,,
/debug,-1,,,1
却能得到单元刚度矩阵和质量矩阵
xyni






积分 15
帖子 15
2003-8-26 19:16    顶部


还有一个问题,利用133924-martix生成的单元刚度矩阵和质量矩阵如何看懂,每一列代表什么意思啊?
abaya






积分 391
帖子 215
2003-8-30 21:05    顶部


以下转载自同济BBS有限元版:
bbs.tongji.edu.cn
  
发信人: ABAYA (ABAYA), 信区: FEA  
标  题: 关于稀疏矩阵的坐标存储方案  
发信站: BBS 同舟共济站 (Sat Aug 30 15:20:23 2003)  
  
有个弟兄给俺来信问俺以前在网上发布的一个程序的存储格式  
问题。虽然比较简单,但是可能会对一些新入门的弟兄们有用,  
所以贴出来玩玩:  
  
来信:  
  
---------------------------  
谢谢您的回复,但是我觉得有问题,当我用该程序从file.full中提取刚度矩阵和质量矩阵  
,  
格式是3列n行,我总觉得整体刚度矩阵和整体质量矩阵不应该是这种格式的。您可以看看  
这就  
是我提取出来的格式:  
  
#  MASS.MATRIX  
#  
#  FROM ANSYS .FULL FILE  
#  
       1      13  1.788500000000E-03  
       5      13  4.896018750000E-06  
       6      13 -9.366150937500E-06  
      13      17  5.875222500000E-05  
      13     241  3.577000000000E-03  
      13     245 -1.860487125000E-05  
      13     235  1.788500000000E-03  
      13     239 -9.302435625000E-06  
      13     240 -9.366150937500E-06  
      13      19  1.788500000000E-03  
      13      23  4.896018750000E-06  
      13      24  9.366150937500E-06  
      13     295  1.788500000000E-03  
......  
我本以为前列表示的矩阵元素在矩阵中的位置呢?麻烦您再给我解释一下吧。谢谢!  
---------------------------  
  
回信:  
  
----------------------------  
  
原来你用的是压缩存储版。(我在网上发布了两个版本,一个整体存储版,一个压缩存储版  
)。  
  
因为如果模型很大时,结果文件可能很大(大到撑暴你的硬盘),利用有限元整体矩阵的  
稀疏性,可以对结果进行稀疏存储。我这里用的是稀疏存储方法的一种:坐标存储方案(  
coordinate format)。用三列向量保留原矩阵中的非零元素信息。  
  
第一列:表示非零元素的行号  
第二列:表示非零元素的列号  
第三列:表示非零元素的大小。  
  
比如有如下稀疏矩阵:  
  
| 1.0  0    3.0   0   |  
| 0    6.0  0     7.0 |  
| 0    8.0  4.0   1.0 |  
| 0    0    0     9.0 |  
  
那么其坐标存储格式为:  
  行号  列号   值   
    1     1    1.0  
    1     3    3.0  
    2     2    6.0  
    2     4    7.0  
    3     2    8.0  
    3     3    4.0  
    3     4    1.0  
    4     4    9.0  
  
当然由我这个例子看不出坐标存储方案的好处,但是当维数数千的矩阵只包含几百个非零 元素时,对存储量的缩减是惊人的。  
  
----------------------------
 


上海市通信管理局
沪ICP备020910
联系我们 版权声明 发帖规则 论坛制度 关于我们
版权所有.中华钢结构论坛.永久保留所有权利

[Processing Time] User:0.28, System:0.03, Children of user:0, Children of system:0