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日 星期四 天气晴

精选博客

资治通鉴(摘录2)

卫鞅欲变法,秦人不悦。卫鞅言于秦孝公曰:“夫民不可与虑始,而可与乐成。论至德者不和于俗,成大功者不谋于众。是以圣人苟可以强国,不法其故。”甘龙曰:“不然。缘法而治者,吏习而民安之。”卫鞅曰:“常人安于故俗,学者溺于所闻,以此两者,居官守法可也,非所与论于法之外也。智者作法,愚者制焉;贤者更礼,不肖者拘焉。”公曰:“善。”以卫鞅为左庶长,卒定变法之令。令民为什伍而相收司、连坐,告奸者与斩敌首同赏,不……

继 续 阅 读

孔壁承压计算的错误

对于高强度承压型螺栓的计算,理论上规范就是有问题的。 (1)《钢结构设计标准》GB50017-2017中11.4.3条并没有规定孔壁承压到底该如何计算,只是在条文说明中提到: (2)从一些计算手册上来看按上述公式计算又有问题。……

继 续 阅 读

CAD与Visio

CAD中的文字在word中很难看,而且不容易控制文字大小。为了在word中更好的呈现图形,采用在CAD中先绘制,然后导入Visio,再插入文字的方式。……

继 续 阅 读