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

精选博客

加权残值法与变分法

应用有限元方法的时候时常困扰着问题:一般推导刚度矩阵的时候采用的都是虚功原理或虚位移原理,那么为什么大部分书里一上来就会讲的是加权残值方法。假如说直接撇开加权残值方法岂不是更直接。本篇就来讲讲这个问题。对于一般的问题,如果是以微分方程形式给出,相应的可以采用加权残值法进行求解;如果问题能以变分原理给出,如最小势能原理(即真实变形是使势能最小,如何求出变形),则可采用变分法。……

继 续 阅 读

五帝本纪

黄帝者,少典之子,姓公孙,名曰轩辕。生而神灵,弱而能言,幼而徇齐,长而敦敏,成而聪明。轩辕之时,神农氏世衰。诸侯相侵伐,暴虐百姓,而神农氏弗能征。於是轩辕乃习用干戈,以征不享,诸侯咸来宾从。而蚩尤最为暴,莫能伐。炎帝欲侵陵诸侯,诸侯咸归轩辕。轩辕乃修德振兵,治五气,艺五种,抚万民,度四方,教熊罴貔貅貙虎,以与炎帝战于阪泉之野。三战,然后得其志。蚩尤作乱,不用帝命。于是黄帝乃征师诸侯,与蚩尤战于涿……

继 续 阅 读

关于孙杨禁赛的一点疑惑

国际体育仲裁法庭的判决书里写着WADA要求的是2到8年的禁赛,然后说是根据国际泳联禁药控制条例(FINA DOPING CONTROL RULES)10.7.1条做出八年处罚。Considering that, in June 2014, the Athlete was found guilty of a first anti-doping rule violation (ADRV), the……

继 续 阅 读