APDL输入与输出

2020年04月23日 星期四

Mechanical APDL 在ANSYS帮助文件中是这样称呼我们习以为常的采用APDL来操作也就是那个黑乎乎的程序的。因此后续都用这个来称呼。工欲善其事必先利其器,关于APDL的编辑器,目前来看PSPAD还基本可以。ANSYS看起来并没有设置很好的接口,因为APDL看起来并不是一种很利于编程的语言,无论是数据格式还是流程都相当不友好。网上也有采用Python去做接口,但是仔细一看就是换了……

​ Mechanical APDL 在ANSYS帮助文件中是这样称呼我们习以为常的采用APDL来操作也就是那个黑乎乎的程序的。因此后续都用这个来称呼。工欲善其事必先利其器,关于APDL的编辑器,目前来看PSPAD还基本可以。

ANSYS看起来并没有设置很好的接口,因为APDL看起来并不是一种很利于编程的语言,无论是数据格式还是流程都相当不友好。网上也有采用Python去做接口,但是仔细一看就是换了种方式写APDL而已。

​ 在一开头首先谈的内容与有限元并没有什么关系,而是如何实现输入输出的更加的人性化。

1 输入

​ 采用/input命令,将不同功能的命令进行封装,实现输入的模块化。对于这一点,也是收受到了网上一个人写的资料的启发。

/INPUT, Fname, Ext, Dir, LINE, LOG

例如在main.inp文件内:

/INPUT,CanShu,inp,'F:\New-St\Qiao' !读入前处理参数和坐标控制代码
/INPUT,JiHe,inp,'F:\New-St\Qiao'  !读入几何编辑代码
/INPUT,WangGe3,inp,'F:\New-St\Qiao' !读网格划分代码
/INPUT,'Modal3',inp,'F:\New-St\Qiao' !读入计算控制代码
/INPUT,'HouChuLi-Modal',inp,'F:\New-St\Qiao' !读入后处理代码

上述将整个APDL命令流分成了五个部分,从而可以依次分段检查各个代码的正确性。

2 输出

​ Mechanical APDL尽管也能进行如出图等后处理,但是如果不能把数据取出,总觉得受限(特别是作图时的背景问题),这里尝试采用输出json格式的数据,一段示例代码如下所示:

*cfopen,file_name,json !输出

*VWRITE,'{'
(A8)

*VWRITE,'"','计算内容', '":','"nonbuck','" ,'
(A1,A8,A2,A8,A8)

*VWRITE,'"','计算日期', '":',chrval(date),','
(A1,A8,A2,A8,A8)

*VWRITE,'"','墙高', '":',h,','
(A1,A4,A2,F8.2,A8)

*VWRITE,'"','墙宽', '":',w,','
(A1,A4,A2,F8.2,A8)

*VWRITE,'"','分段数', '":',n,','
(A1,A6,A2,F8.2,A8)

*VWRITE,'"','间隔', '":',d,','
(A1,A4,A2,F8.2,A8)

*VWRITE,'"','腹板厚度', '":',t,','
(A1,A8,A2,F8.2,A8)

!中部翼缘厚度
*VWRITE,'"','中翼厚度', '":',tf,',' 
(A1,A8,A2,F8.2,A8)

!端部翼缘厚度
*VWRITE,'"','端翼厚度', '":',tend,',' 
(A1,A8,A2,F8.2,A8)

*VWRITE,'"','边界条件', '":',chrval(yueshu),','
(A1,A4,A2,A2,,A8)


*VWRITE,'"','荷载步', '":','['
(A1,A6,A2,A8)
*DO,i,1,fnum,1
     aa =   out1(i,1)
     *If,i ,EQ, fnum, Then
     *VWRITE,aa
     (F20.3)
    *ELSE 
     *VWRITE,aa,','
    (F20.3,A8)
    *endif
*enddo

*VWRITE,']',','
(A8,A8)

这里归纳起来就是用了*vwrite语句,然后结合json的数据格式进行输出。不过上述语句显然过于复杂,特别是对于输出数组时,此时代码段就变得过长,为此尝试采用宏,并把宏写在库testmac.inp中(如果是直接写mac扩展名的文件,还要考虑添加系统变量,比较繁琐,直接采用宏库比较合适)。

test
*VWRITE,'"','荷载步', '":','['
(A1,A6,A2,A8)
*DO,i,1,arg2,1
     arg20 =   arg1(i,1)
     *If,i ,EQ, arg2, Then
     *VWRITE, arg20
     (F20.3)
    *ELSE 
     *VWRITE, arg20,','
    (F20.3,A8)
    *endif
*enddo
/EOF

并在主程序中添加:

*ULIB, 'testmac', inp
*use,test,out1,fnum

但是宏有一个问题是无法传递数组,最多只能传递19个数值或文字,所以不能一次性利用宏将数组输出完毕,所以说APDL缺陷还是很明显。


更新于2020年4月23日 星期四 天气晴

精选博客

组合杆件的长细比

本文主要讲一下对于由两种材料构成的组合杆件换算长细比的事。……

继 续 阅 读

楼板抗剪和锚固长度等问题

一个一直困扰着的问题是为什么会出现锚固长度这一概念,以及其如何计算。事实上连钢混书里都没有讲清楚这一问题。如舒士霖版的书里只讲了“为了使钢筋和混凝土能够可靠地共同工作,钢筋在混凝土中必须要有可靠的锚固。”这句话基本可以视作一句废话吧。没有把锚固为什么能使共同工作讲清楚。……

继 续 阅 读

博士论文序言

貌似在大论文里序言部分并不是必须的,然而我却以为这就像块自留地一样,可以相对自由的漫无目的说开去。先讲两个小故事。博士论文说到头其实就是求特征值实部的问题,事实上开始从这方面着手是相对较晚的。某日(在大论文已经写作很久之时)翻看本科时常微分方程教材时,说实话有些吃惊。这门课是本科生涯中考得最高分的一门课,然而当时教学范围只有前三章,而全书共有四章。那么最后一章是什么呢?其大标题是“稳定性与……

继 续 阅 读