ANSYS|数据格式化读写技术总结

技术背景

利用ANSYS进行有限元建模的工作可以分为两部分:

  • 在专业知识层面,对实际结构的有限元模型抽象;
  • 在编程技术层面,通过ANSYS的APDL语言建立模型,分析求解,后处理;

正确区分两类关系有助于抓住重点,以更清晰的思路解决问题。

而在APDL编程的问题又可以分为以下几个部分:

  1. 模型建立,包括材料定义,几何模型,有限元模型(/PREP7)
  2. 边界条件与荷载施加,模型求解(/SOLU)
  3. 后处理,位移内力提取,变形图、振型绘制(/POST1,/POST26)
  4. 数据的格式化读取和输出(I/O)

在实际工作中,对于小型问题求解,数据的读写操作可以通过手动处理解决;然而对于复杂问题,如复杂模型建立,迭代循环计算等等,数据的格式化批处理成为解决问题的控制性环节,因此有必要对数据读写技术数量掌握。

本文仅对数组化数据的读写进行总结,涉及*VREAD*VWRITE函数。

数据读取

数据类型及操作步骤

常用数据类型是指*VREAD支持的数组数据,在实际操作中往往三种形式使用:

  • 行向量
  • 列向量
  • 矩阵

一般的小批量参数输入更常用行列向量,即一维数组,因而调用*VREAD一维简化形式,减小了操作的复杂性。

数据读取需要三个步骤:

  • 定义数据文件
  • 定义数组变量
  • 文件数据,变量赋值

向量数据读取

读取数据前首先要定义txt数据文件,txt中行列数据的格式为:行数据以逗号分隔(英文),列数据以断行分隔,如图 1。为了方便,一般一类数据放在一个文件最佳。非标准格式的数据读取可能出错。

行类数据在txt文件的格式标准示例
行类数据在txt文件的格式标准示例

有了数据文件,在读取前还需定义数组变量用于存储数据。读取以上行向量的一维数组如表 1所示。

表 1 一维数组定义

*DIM,Par,Type,IMAX,JMAX,KMAX,Var1,Var2,Var3,CSYSID
    ! Defines an array parameter and its dimensions.
        Par - parameter
        Type - Array type : ARRAY(default),ARR4,CHAR,TABLE,TAB4,STRING
        IMAX - Extent of first dimension (row)
*DIM,MYDATA,,1,5  ! 1行5列数组

下一步通过VREAD函数将txt文件的数据赋值到数组变量,如表 2。VREAD具体用法可以很复杂,在此处我们仅需要考虑的参数有:

  • MYDATA(1,1) - 数组变量及赋值起点
  • DATA,TXT – 数据文件及扩展名
  • JIK – 读取顺序,此处表示先行后列,对于列数据为IJK
  • 5,1 – 数组赋值范围(J:1-5,I:1-1),此处需谨慎,具体参考help文件
  • (5F10.0) – 每行读取的格式,5个数值,10个字符宽度,小数点取0位

表 2 一维数组读取

*VREAD,MYDATA(1,1),DATA,TXT,,JIK,5,1
 (5F10.0)

矩阵数据读取

矩阵数据读取的规范实际上就是行类数据规范的综合,需要注意的数据读取顺序和赋值范围的参数定义,读取方向的定义错误可能导致读入原始数据的转置矩阵。

矩阵数据格式
矩阵数据格式

表 3 矩阵读取

*DIM,MYDATA,,4,3
*VREAD,MYDATA(1,1),DATA3,TXT,,JIK,3,3
(3F10.0)

数据输出

数据输出操作步骤

数据的输出格式实质上只有一种表格化的txt文件,可以任意指定文件扩展名,以便后续处理的便利。

基本操作步骤有:

  • 指定输出数据文件(filename.ext)并打开
  • 指定要输出的数据变量,定义一行的数据输出格式
  • 关闭数据文件

以上步骤需要注意两点,

  • 3成对出现,在编程性的文件I/O操作及数据库操作中,这是一种最基本的处理流程,保证内存的正确操作,不熟悉数据库概念的朋友需格外注意;
  • 数据的输出是以“一行数据”为基准的,故列数据及矩阵数据的输出本质上只是多行数据的连续输出,故下一节仅探讨行数据的输出。

行数据的输出

行数据的输出示例如表 4,在*VWRITE后列出第一行输出的数据,即MYDATA在第一行的五个元素,在其后的格式定义中给出各数据的格式及空格定义,没有空格和间距的数据文件是难以阅读的。

表 4 行数据的输出

*CFOPEN,RESULT,TXT
*VWRITE,MYDATA(1,1),MYDATA(1,2),MYDATA(1,3),MYDATA(1,4),MYDATA(1,5)
(F10.0,'    'F10.0,'    'F10.0,'    'F10.0,'    'F10.0)
*CFCLOS

总结

数据的I/O操作是一个相对规程化又琐碎的工作,在学习的初期并不显得重要,但其控制性作用随着处理问题的复杂性而相应提升。对于这样的常规而又琐碎的处理过程,如果每次遇到就诉诸度娘或help不失为一种临时解决方案,但长期下来耗费的精力和时间是不可忽视的。

我的心得的是,要掌握数据I/O操作技术为我所用,必须在练习中掌握,而且应该从最简单示例——行向量数据的读写做起。简化问题,分解步骤,才能专注于关键环节,或说“天下大事必成于细,天下难事必成于易”。

此外,最好将典型的数据读写代码写成标准化模板如,以便随时套用。本文代码详见附件DataTest。

数据读写标准模块
数据读写标准模块
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容