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

精选博客

推导单层带支撑框架水平位移

推导时需要基于的近似是: 不考虑柱,梁的轴向变形 柱不承受剪力 记水平位移为r,水平荷载F,则抗侧刚度可以表示为: k=F/r 在上述近似下,斜撑内力N为: N=\frac{F}{\cos\alpha}……

继 续 阅 读

关于三级连接对接焊缝不用验算问题

在《钢结构连接节点设计手册》中,对于对接接头的全熔透焊缝,提到如果轴力与焊缝夹角满足tan⁡θ≤1.5\tan\theta\leq 1.5,则采用三级焊缝也满足要求。但书里并没有提到这一点。……

继 续 阅 读

买房记

到底为什么要买房: 大抵是给自己一种安全感,可以买好多大件,不用想着会频繁搬家,父母可以来常住。……

继 续 阅 读