当前位置:   article > 正文

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

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

应用场景:

当我们需要改变有限元模型的某一个或者几个变量进行重复建模时,手动更改变量,将代码复制粘贴到运行框中十分费时费力,而且随着重复计算次数的增加,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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.
多维数组的输出格式

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

举个例子:
定一个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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

运行结果如下:
在这里插入图片描述
可以看出,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);
  • 1
  • 2
  • 3

相应的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  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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个      
  • 1
  • 2

上述代码更详细介绍参见:“学习笔记(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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号