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

巧用fgetl提取单元节点信息

[复制链接]
发表于 2011-2-21 20:39:44 | 显示全部楼层 |阅读模式 来自 江苏南京
[1]背景:用Patran画网格结点,只要有限元模型中的结点网格单元信息,从BDF文件中提取出来存到另一TXT文本中。(本人用于剖面刚度分析)
[2]先贴一点BDF中信息:
==============================================
$ NASTRAN input file created by the Patran 2008r2 (MD Enabled) input
$ file translator on January   13, 2011 at 20:25:29.
$
$ Direct Text Input for Bulk Data
$ Elements and Element Properties for region : pro
PSHELL   1       1      1.       1               1
$ Pset: "pro" will be imported as: "pshell.1"
CQUAD8   1       1       1       3       11      9       2       7
         10      6
CQUAD8   2       1       3       5       13      11      4       8
         12      7
CQUAD8   3       1       9       11      19      17      10      15
         18      14
CQUAD8   4       1       11      13      21      19      12      16
         20      15
CQUAD8   5       1       17      19      27      25      18      23
         26      22
...
GRID     39             -.831   1.695    0.
GRID     40             -.838   1.765    0.
GRID     41              0.     1.625    0.
GRID     42              0.     1.66     0.
GRID     43              0.     1.695    0.
GRID     44              0.     1.73     0.
GRID*    45                             -4.99487-7      1.765
*        0.
GRID     46             .824    1.625    0.
GRID     47             .831    1.695    0.
GRID     48             .838    1.765    0.
GRID     49             1.648   1.625    0.
GRID     50             1.655   1.66     0.
...
====================================================
[3]解决方法:
while ~feof(fp1)
    tline=fgetl(fp1);
    if strncmp(tline,'CQUAD8',6)
        tline2=fgetl(fp1);
        tline=strcat(tline,tline2);
        fprintf(fp2,'%s\r\n',tline);
        continue
    end
    if strncmp(tline,'GRID ',5)
        fprintf(fp2,'%s\r\n',tline);
        continue
    end
end
[4]效果展示:
=====================================
CQUAD8   1       1       1       3       11      9       2       7         10      6
CQUAD8   2       1       3       5       13      11      4       8         12      7
CQUAD8   3       1       9       11      19      17      10      15         18      14
CQUAD8   4       1       11      13      21      19      12      16         20      15
CQUAD8   5       1       17      19      27      25      18      23         26      22
...
CQUAD8   360     1       1550    1552    506     508     1551    1555         507     1554
GRID     1              -8.24   1.625    0.
GRID     2              -8.275  1.66     0.
GRID     3              -8.31   1.695    0.
GRID     4              -8.345  1.73     0.
GRID     5              -8.38   1.765    0.
GRID     6              -7.416  1.625    0.
GRID     7              -7.479  1.695    0.
GRID     8              -7.542  1.765    0.
GRID     9              -6.592  1.625    0.
GRID     10             -6.62   1.66     0.
...
====================================================
[5]总结:
1)去掉了Patran中的大段解释说明字符;
2)将CQUAD8 及其下一行 续接到了一起;
3)将Equivalence产生的{GRID*    45                             -4.99487-7      1.765
*        0.}行滤掉了;
4)fgetl对文件一行一行处理,理论上可以处理任何大的任一行任一列。希望抛砖引玉,灵活运用实现对
格式化和非格式数据混合、字符和数字混合的大文件进行各种操作处理。

评分

1

查看全部评分

发表于 2011-2-22 10:02:00 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
1、请教lz如果有上万甚至几十万个节点和单元的话,使用fgetl的效率是否考虑过?
2、既然使用Patran的划分网格,照理可以输出成多种不同的格式,譬如bdf、inp文件等等,读取这些文件的现成代码是相当丰富的,见过某老外写的,读取inp信息的matlab程序,直接利用正则表达式与textscan,效率很高,lz不妨找来参考一下;
3、lz有空闲的话,不妨尝试一下读取二进制的CAE软件结果文件,对于深入了解CAE软件和将来找工作挺有帮助的

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-2-22 10:16:04 | 显示全部楼层 来自 天津
确实!单纯读取ascii码文件时,有可能出现不可见错误(比如原ascii码文件中含有不可见字符,或者字符与占位不等时).而读取二进制方式,或者按写出文件的接口方式来读取,则能避免不可预见的错误问题!

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-22 12:07:48 | 显示全部楼层 来自 江苏南京
2# pasuka

小弟软件使用上比较肤浅,非常感谢您的宝贵建议!
向前辈多多学习。

我在C或MATLAB 函数大全中 略知testscan的功用,正则那个没听说过,确实是书看少了。

我用VABS 做刚度分析,要求单元节点要逆时针,后来把CQUAD中节点序按要求置了,可以算刚度了。

我想用Isight做优化,Isight里面能够解析文本,老外就是厉害。

要想深入有限元,确实要多看书,文本、二进制都不能恐惧。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-22 12:17:12 | 显示全部楼层 来自 江苏南京
3# liushuangq05

说的太好了!
处理后期文件 总感觉不够完美,始终在 下游做些小动作。方法再华丽,始终是小技法

如何在源头上做文章,确实是真功夫。

二楼说的很对,商用软件是工作中的武器,而工程结果文件则是 工程技术人员的生命!
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-10-5 01:24 , Processed in 0.032200 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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