ANSYS APDL循环建模时的一些注意事项

7 篇文章 4 订阅
5 篇文章 0 订阅

应用场景:

当我们需要改变有限元模型的某一个或者几个变量进行重复建模时,手动更改变量,将代码复制粘贴到运行框中十分费时费力,而且随着重复计算次数的增加,ANSYS将会越来越卡顿,解决办法只能是关闭ANSYS后重新打开。这时候自然而然就会想到利用DO循环让ANSYS一次性计算完,在编写*DO循环时会遇到许多技术问题,下面总结了部分技术难题,希望对读者有所帮助。

ANSYS APDL代码编写循环体时注意事项:

1.
ANSYS中数组的定义必须在DO循环之前,定义好所需的数组以及变量,在DO循环里面定义数组将会重复定义数组导致数据不能正确存入数组中;
2.
使用DO循环重复建模时,必须删除在每次循环中建立模型的面、线和点。注意:一定要先删除面,再删除线,最后删除点。 命令流如下:

/prep7
lclear, all     ! 表示清除线单元网格
aclear,all
kclear,all
adele, all, 1
ldele, all, 1   ! 1表示删除线及线上的关键点
kdele, all, 1

3.
多维数组的输出格式

*create, datawrite, mac
*MWRITE,modal,Modal_Output,TXT,,JIK,6,2  ! 2表示的是输出响应的样本个数
(6F30.20)     ! 6表示的是输出响应的维度
*cfclose
*end
Datawrite

举个例子:
定一个30行20列的数组,将其按照3020的矩阵形式写入到FILE.txt中。这样做的好处是使用MATLAB加载FILE.txt到工作空间时,赋值变量也是3020的矩阵形式,方便后续数据分析。

*DIM,ABCD,,30,20                     ! 定义一个30行20列的数组ABCD
*create, datawrite, mac
!数组赋值
*DO,I,1,30
*DO,J,1,20
ABCD(I,J)=j+i/100
*ENDDO
*ENDDO
*MWRITE,ABCD,FILE,TXT,,JIK,20,30     ! 将数组ABCD写入到FILE文件中
(20F9.4)
*cfclose
*end
Datawrite

运行结果如下:
在这里插入图片描述
可以看出,FILE.txt中的数据按照ANSYS数组ABCD的形式排列,即30*20的矩阵。

4.
根据经验所得,在MATLAB生成数据以及ANSYS读入数据使用科学计数法能够准确进行数据的传递。
MATLAB写出数据代码如下:

fid = fopen('samples.txt', 'wt');                                % -t模式按照文本而非二进制模式读写 
fprintf(fid,[repmat('  %.20e  ', 1, size(a,2)), '\n'], a');      % 以科学计数法写出数据,%.20e前后个两个空格键
fclose(fid);

相应的ANSYS读入数据代码如下:

NumSample = 10              !样本点个数
NumDimmension = 12          !样本的维度
! 文件写入
*Create, dataread, mac           !创建一个宏文件          
*DIM, jacket, array, NumSample, NumDimmension        ! 创建样本数据存储的数组(1 x 12)
*VREAD, jacket(1,1), F:\MATLAB_ANSYS\jacket_platform\P\samples, TXT, , JIK, NumDimmension, NumSample   !读入jacket_samples.txt文件中的数据
(12f30.20)        ! 12表示样本的维度,也就是NumDimmension,30就表示每个数据加上前后两个空格键共占字符30个                 
*End                             ! 结束宏文件的创建
Dataread  

5.
在设置读入和写出数据的txt文件路径时,使用“_”(下划线)代替“ ”(空格)。如:“F:\MATLAB ANSYS\jacket platform\P\samples”应该为“F:\MATLAB_ANSYS\jacket_platform\P\samples”。
6.
下面这两行代码之间不能有空行或注释文字占有的一行,要连着。

*VREAD, jacket(1,1), F:\MATLAB_ANSYS\jacket_platform\P\samples, TXT, , JIK, NumDimmension, NumSample   !读入jacket_samples.txt文件中的数据
(12f30.20)        ! 12表示样本的维度,也就是NumDimmension,30就表示每个数据加上前后两个空格键共占字符30个      

上述代码更详细介绍参见:“学习笔记(3)——(改进)使用ANSYS调用MATLAB解决大量不同几何参数和荷载样本下连续求解结点位移.”

P.S. 使用MATLAB生成样本数据,后台调用ANSYS进行计算会比打开ANSYS软件计算要快很多,详细实现步骤参考:MATLAB调用ANSYS进行有限元分析.”

参考博客:
1、https://www.freesion.com/article/54981095963/#_14
2、http://blog.sina.com.cn/s/blog_98f2c97d0102y9g0.html

  • 10
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值