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