本文摘要(由AI生成):
本文主要介绍了如何使用iSIGHT集成商业软件ANSYS进行过程集成,并介绍了iSIGHT提供的三种确定性优化方法:优化、试验设计和回归建模。文章还详细说明了如何生成APDL文件,以及如何对电池部分进行加固支约束和施加面荷载。最后,文章还介绍了如何在iSIGHT中设置参数和进行优化分析。
掌握iSIGHT如何过程集成商业软件(ANSYS)
了解iSIGHT提供的优化,试验设计,回归建模这三种确定性优化方法。
前提
能够使用ANSYS做简单的静力和模态分析。不了解APDL(ANSYS Parameter Design Language)不影响完成此教程,但如果能够有些许APDL知识则更好。
结构模型:如图1
优化目标:
Minimize Mass=F(x1,x2)
x1 = LCD Thickness(液晶屏厚度)
x2 = Battery Thickness(电池厚度)
Maximum Stress ≤ 40.0
1st Frequency ≥ 30.0
Constraints on Design Variables:
4.2 ≤ X1 ≤ 8.0,初始值7.0
3.0 ≤ X2 ≤ 9.0,初始值7.0
ANSYS参数化设计
ANSYS软件提供了两种工作模式,即人机交互方式(GUI方式)和命令流输入方式(BATCH方式)。ANSYS通过命令流方式(BATCH)可以自动完成有限元常规分析操作,即ANSYS参数化设计语言(APDL)。它能够利用第1次分析时的LOG文件,对其进行修改,用户就可以完成任意多次的分析,从而大大减少了修改模型后重新分析时所需时间。
生成APDL文件的方法:
在完成第一次分析后,GUI:File->Write DB log file, 保存为*.lgw文件。ANSYS可以通过 File->Read Input From来自动完成重复的分析。iSIGHT进行优化过程中,ANSYS将直接读取*.lgw文件(为打开方便,也可以另存为txt文档)进行分析。需注意的一点是,最好在*.lgw文件末尾应加入 / EXIT,ALL 以保证每个迭代步ANSYS分析完成后退出程序。
关于ANSYS的OUTPUT文件的技巧:
ANSYS会把所有的中间结果输出到一个文件中,里面包含的内容繁杂,而iSIGHT只需要其中很少的部分。所以推荐使用/output命令(GUI操作 Files>Switch output to)来输出想要的量,并保存到一个文件以备iSIGHT解析。这在后面的例子中有详细说明。
操作步骤
如果您对APDL比较熟悉,就可以直接阅读PHONE_static.txt和PHONE_modal.txt文件。下面的步骤是通过GUI操作完成第一次分析,然后再生成PHONE_static.lgw和PHONE_modal.lgw。可以与APDL文件互相参照。
ANSYS建立实体模型
ANSYS静态分析
ANSYS模态分析
iSIGHT集成ANSYS
定义优化过程
优化结果
注意:如果对ANSYS如何生成它的input文件*.lgw不感兴趣,可以跳过前三步,直接进入iSIGHT集成这一步。
注意:代码的可移植性问题。批处理文件Staticexec.bat和modalexec.bat里面的批处理命令参数是绝对路径设置。也就是要求您的ANAYS需安装在C盘的Program Files下面,如果不是如此,请修改batch命令的参数。
ANSYS建立实体模型
你这一部分的目标是利用ANSYS的实体建模功能完成如下所示的结构。
1. 输入参数
为方便起见,在Scalar Parameters里面输入以下参数。
2. 生成各个体
(1) 生成体1(图5)
生成8个关键点,并通过8个关键点生成体1(图5),8个关键点坐标为:
关键点 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
坐标 | 0.00 , 0.850E-01, 0.600E-02 | 0.00, 0.00, 0.600E-02 | 0.450E-01 , 0.850E-01 , 0.600E-02 | 0.450E-01 , 0.00, 0.600E-02 | 0.00 , 0.00 , 0.120E-01 | .450E-01 , 0.00 , 0.120E-01 | 0.450E-01 , 0.850E-01 , 0.120E-01 | 0.00 , 0.850E-01 , 0.120E-01 |
(2) 生成体2(图6)
以与5,6,7,8关键点相同的坐标生成4个关键点(9,10,11,12),并重复这一步骤生成4个关键点(13,14,15,16)以备后用。
另外生成四个关键点,坐标为:
关键点 | 17 | 18 | 19 | 20 |
坐标 | 0.00 , 0.00 , lcd_z | 0.450E-01 , 0.00 , lcd_z | 0.450E-01 , 0.850E-01 , lcd_z | 0.00 , 0.850E-01 , lcd_z |
以9,10,11,12,17,18,19,20为角点生成体2,完成后如图6所示。
(3) 生成体3(图7)
生成4个关键点,坐标如下所示:
关键点 | 21 | 22 | 23 | 24 |
坐标 | 0.00 , 0.850E-01 , bat_z | 0.00 , 0.00 , bat_ | 0.450E-01 , 0.850E-01 , bat_z | 0.450E-01 , 0.00 , bat_z |
以关键点1,2,3,4,21,22,23,24作为角点生成体3,完成后如图7所示。
(4) 将3个体分割(Divide)为6个体(图8)
用以下操作来移动workplane到想要的地方
偏移工作平面(0.04,0,0):WorkPlane>Offset WP by Increments : 在X,Y, Z Offsets处输入(0.04,0,0)。
旋转工作平面(0,0,-90):WorkPlane->OffSet WP by Increments:在 XY,YZ,ZX Angles处输入(0,0,-90)
用布尔(Booleans)运算中的工作面分割(Divide)技术Divide Volume by Workplane把三个体分割为六个体。
分割完毕后如图8所示。
(5) 再将这6个体分割(Divide)为12个体(图9)
移动工作平面workplane:
用(4)中同样的操作workplane (0,0,0.08),并旋转工作平面(0,0,-90)。
用布尔(Booleans)运算中的工作面分割(Divide)技术Divide Volume by Workplane把六个体分割为12个体。
操作完毕后如图8所示。
(6)生成PHONE的天线(体)(图10)
将右上角的面(编号41)沿法线方面偏移生成一个体,如图10所示。
此操作GUI命令为:Main Menu>Proprocessor>Modeling>Operate>Extrude>Area>Along Normal,弹出对话框后,NAera输入41(编号为41的面),DIST输入-0.025。操作完毕后如图10所示。
(7)将部分体粘接(GLUE)在一起
选择要粘结的体。此操作命令Utility Menu>SELECT>Entities>Volume (2,10), (12,14),(11,13)。
用布尔(Booleans)运算中的粘接技术(GLUE)将选中的这些体粘接起来。使得他们在交接面上共面。
完成后如图11所示。如果您的图并不如此所示,那是因为并没有选中所有的体来显示,请先选择Utility Menu>SELECT>Everyting显示。因为GLUE命令并不把粘接的体合为一个新的体(参阅ANSYS文档,区分OVERLAP),因此此时显示共有13个体。
恭喜你,用ANSYS建立PHONE的实体模型工作已经结束。
ANSYS静力分析
这一部分将对上面我们建立的手机模型进行静力分析。目标是从中求得最大应力,并获得手机的质量大小为下一步iSIGHT集成做准备。
(1) 设置材料性质
在Preprocessor>Materials Props>Material Models里分别定义三种材料
第一种(编号1),用于LCD,即液晶屏:弹模lcd_Young,密度lcd_den,泊松比0.3。
第二种(编号2),用于BATTERY(电池):弹模:bat_Young,密度bat_den,泊松比0.3。
第三种(编号三),用于塑胶体:弹模3,2e3,密度1.0e-6,泊松比0.3。
(2) 划分网格
【1】 选用SOLID45单元,单元大小设置为3e-3 (在mesh tool>global set输入),材料选为材料1,对LCD即体6,7(图12)自动划分网格。
【2】 单元,单元大小设置不变,材料选为材料2,对Battery,即体15,17(图13)自动划分网格。
【3】 单元,单元大小设置不变,材料选为材料2,对塑胶部分,即体1~5,8,10,16,18(图13)自动划分网格。
划分完网格之后,如图15所示。
(3) 加约束和边界条件
【1】 耦合重合节点
将LCD(体6,7)和塑胶体之间(体1,3)在重合的节点(Tolerance=0.0001)在z方向的自由度耦合在一起,即这些节点(如图16)取得相同的uz值(未知量)。操作为GUI:Proprecessor>Coupling/Ceqn>CoincidentNodes,Lab DOF for coupled nodes(耦合的自由度)选择UZ,TOLER Tolerance for coincidence(公差值)输入0.0001。
如果您对这个操作的意义不熟悉的话,请参阅ANSYS的书籍或者帮助。
为了清楚显示,可以用GUI>Utility Menu>Plot Ctrls>Numbering> Elem/Attri numbering 选择Material Numbers设置,让不同材料显示不同的单元颜色(图17),当然这一步并不是必须的。
【2】 放大实体
对实体放大1000倍。命令为Main Menu>Precessor>Modeling>Operate>Scale>Volumes。弹出选择对话框中选择ALL,即缩放所有体。在继续弹出的Scale Volumes对话框中设置如图18所示。即三个笛卡尔坐标方向都放大1000倍,并删除原来的实体(IMOVE设置为Moved)。
【3】 设置Inertia Relief。
GUI操作:Main Menu>Preprocessor>Loads>Define Loads>Apply>Structural>Inertia>Inertia Relief,设置为第三项 Mass Sum Only。
只有设置了Iniertial Relief为第一项或者第三项,才能在后面用*GET命令读取所有单元的质量。
对于此操作的意义如果不甚明了,可以参阅ANSYS的HELP帮助。
【4】 在BATTERY背面加位移约束(图19)
对电池部分(BATTERY)的后表面加固支约束,即面67,72(由于操作不尽相同,你的面有可能不是此编号),如图19所示。
【5】 在LCD上表面上施加面荷载(图20)
选中在LCD的上表面(面59)的部分节点,即x=[ 0.57143E+01,1000],y=[0.6E+01,0.7E+02]范围内的节点。在这些节点上加面荷载:Apply>Structual>Pressure>On Nodes,大小输入为10。
如果您对ANSYS能够熟练使用,对怎么选中这些节点就会感到很容易,可以直接掠。对于那些不太熟悉的学习者,下面是简略的操作步骤供参考。
1. 用SELECT>Entities>Area,by Num/Pick,选中Surface59。
2. 用SELECT>Entities>Nodes,Attached to Area ALL, From Full,选中Surface59上的所有节点。
3. 用SELECT>Entities>Nodes,By Location,X coordinates,Min,Max=0.57143E+01,1000(图21),
4. SELECT>Entities>Nodes,By Location,Y coordinates,Min,Max=0.6E+01,0.7E+02。
这样就可以选中所需要的节点了。
(4) 求解
(5) 后处理
(6) 输出结果文件
【1】 生成输出文件
操作:FILE>Switch Output to>File。输入response_s,txt作为文件名。
【2】 从数据库中读取最大SEQV和最大Z向位移写到输出文件response_s.txr中。
A 先按EQV大小对节点进行排序,GUI操作为:Main Menu>General Postproc>List Results>Sorted Listing>Sort Nodes,弹出对话框(图24),选取SEQV,其他按默认设置,如降序,用代数值而非绝对值进行排序等等。
B 读取最大SEQV。
操作为:Parameters>Get Scalar Data 选择 Results data| Other Operations,在弹出的对话框(图25)中,Name of parameter输入**ax,表示最大SEQV。在下面的复选框中选择From sort oper’n, Maximum。**ax将被写入到response_s.txt里面。
C 读取最大Z向位移
用(1)(2)同样的操作读取最大Z向位移到变量dmax。注意:由于UZ是负值,所以其实读取的是最小值。如果计算没错,
可以在Parameters>Scalar parameters里面查看我们读取的最大SEQV和最大UZ,分别为SMAX = 46.6444849, DMAX = -2.073784663E-02。
D读取实体质量
确认在求解前设置了Inertia Relief,在宏命令窗口输入*get,t_mass,elem,0,mtot,x。
此命令可以参阅ANSYS帮助。只有前面设置了Inertia Relief,这里*get的参数才能选择0,即全部单元。此命令将全部单元的质量相加得到一个量保存到t_mass中。
(7) 输出APDL文件
FILE>Write DB Log File,输入PHONE_Static.lgw。这个文件将被作为iSIGHT中ANSYS静态分析Simcode的输入文件。LCD和Battery的厚度和密度将被解析,被iSIGHT修改。
打开response_s.txt可以检查输出文件(图26)。这个文件将会被ANSYS静态分析模拟代码作为输出文件,最大SEQV **ax,最大位移dmax,实体模型质量t_mass将被iSIGHT解析。
建议:最迅速地应用ANSYS进行分析的方法是结合命令流模式和GUI模式使用。上面的步骤几乎全部用GUI模式操作,是为了使未曾接触过APDL的读者能够迅速完成教程。但这里笔者仍然推荐两者能够结合使用。例如节点,排序从数据库SEQV最大值,UZ最大值等操作用APDL就方便许多。
ANSYS模态分析
这一部分对相同的Cell Phone实体模型进行模态分析,生成PHONE_m.lgw文件,并从结果文件中读取前三阶模态输出到结果文件中。
由于数据模型都在上一部分,CELL PHONE静态分析中给出,模态分析只是ANSYS的很基本的操作,因此这一部分只简略地描述一下步骤,具体操作由学员自主完成。
(1)建立实体模型。
由于与静态分析相同,把PHONE_s.lgw的建模部分直接拷贝到新建的文件PHONE_m.txt中,再由ANSYS Files>Read Input Files From读入即可。
(2)模态分析
【1】Analysis Type选择modal,Analysis Options,模态提取方法选用Block Lanczos,提取模态阶数6,扩展6阶模态。FREQB=0.1,FREQE=100000(图27)。
【2】设置initial Relielf。
跟静态分析一样,此项选为第三项。
【3】进行模态分析。
(3)后处理
【1】参看CELL PHONE的6阶模态变形和应力。图28为一阶模态。图29为三阶模态。
【2】指定输出文件:Switch Output File to:response_m.txt。
【3】读取三阶模态保存在三个parameter中:freq_1,freq_2,freq_3。
读取CELL PHONE实体模型的质量到parameter:t_mass。
【4】检查一遍输出文件response.m.txt。
至此,我们CAD,CAE的工作已经准备就绪,下一步就可以进行iSIGHT的集成工作了。
iSIGHT集成ANSYS
我们依据图2在iSIGHT中做过程集成。
(1)过程集成
【1】在Task1中加入两个Simcode,一个命名为Static,一个命名为Modal,分别用来仿真静力分析和模态分析(图29)。
【2】生成批处理文件
可以用DOS批处理命令的方式使ANSYS后台运行而不出现其GUI界面。我们采用外部编辑批处理文件。
首先打开文本编辑器输入
“C:\Program Files\Ansys Inc\v110\ANSYS\bin\intel\ansys110.exe" -b -p ANSYS -i PHONE_static.TXT -o temp_s.txt
保存后改为bat为后缀的文件staticexec.bat。
同样操作,打开文本编辑器输入:
“C:\Program Files\Ansys Inc\v110\ANSYS\bin\intel\ansys110.exe" –b -i PHONE_static.TXT -o temp_s.txt
保存后改为bat为后缀的文件modalexec.bat
注意:ANSYS输出文件是temp_s.txt,而非response_s.txt,而后者才是iSIGHT需要的文件。如果-o的参数改为response_s.txt会出现什么情况?iSIGHT解析response_s.txt还那么方便吗?
由于temp_s.txt作为一个中间结果文件,在优化过程中会越来越大,所以在每次运行完毕后最好把它删掉,在staticexec.bat和modalexec.dat中加入批处理命令del temp_s.txt和deltemp_m.dat。
同样的方法生成modalexec.bat。
注意:很重要的一点就是需要注意参数路径。-i,-o的参数,即输入输出文件名必须和bat同一文件夹。
现在已经万事具备了,我们有了static模拟代码所需要的输入输出和执行文件:PHONE_s.txt,response_s.txt,staticexec.bat,也有了modal模拟代码所需要的文件PHONE_m.txt,response_m.txt,modalexec.bat。这一步就可以集成了。
【3】将static和modal simcode所需要的输入输出,执行文件加入(并对输入输出文件进行解析。
双击static simcode组件,出现下图:选择相应的输入输出文件
modal Simcode的输入输出文件解析可以参阅源代码ansysphone.zmf。
集成完毕后,应该如图3所示。
(2)检查参数设置
对input和output文件都解析完毕,退出simcode窗口。点击iSIGHT- FD主窗口的Parameter,出现参数设置的界面(图35)。
设计变量有LCD的厚度和弹性模量LcdTchikness,LcdYoung,Battery的厚度和弹性模量BatThickness,BatYoung;静力分析得到的最大SEQV: MaxStress,和模态分析得到的一阶模态Freq1st作为约束,他们必须满足Maximum Stress ≤ 40.0,1st Frequency ≥ 38.0的约束要求;优化目标是最小化CELL PHONE的质量 Mass。
注意:由于质量比较小,所以为了防止优化任务在不收敛的时候误认为会收敛而使优化过程提前退出,所以需在obj scl Factor中输入比例因子,这个因子默认为1.0。这样目标函数的贡献就成为Weight*Mass/Scalar=1.0*Mass/0.01,也就是说Mass被放大了100倍。其中Weight是权函数,在多目标优化中用到,默认值也是1.0。
至此,集成已经完毕,下一步可以进行优化了。
定义优化过程
进行优化分析,选择优化组件,按照下图所示,将optimization组件拖拽到task组件上,如图36 ,然后双击optimization组件,因为参数较少,问题比较简单,因此采用数值优化算法-序列二次规划法NLPQL作为优化方‘案。设置见图37。
优化结果
【1】优化过程监视。
用iSIGHT的Monitor来监控优化过程。优化过程中约束MaxSEQV,FirstFreq,目标函数Mass曲线如图38,39,40
【2】优化结果
再次进入Parameter,则发现设计参数变为优化后的结果(图41)。Cell Phone的质量由原来的0.02655减少为0.02602,减少了2.02%,而同时满足强度和模态的约束要求。
后记:如果有兴趣的话,可以同时优化LCD和Battery部分的厚度,弹性模量,密度,看看质量是不是减少更多。