




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ANSYS优化设计1. 认识ANSY筑化模块1.1 什么时候我需要它的帮忙?什么是ANSYS优化?我想说明一个例子要比我在这里对你絮叨半天容易理解的多。注意过普通的水杯吗?底面圆圆的,上面加盖的哪一种。仔细观察一下,你会发现比较老式的此类水杯有一个共同特点:底面直径=水杯高度。图1水杯的简化模型为什么是这样呢?因为只有满足这个条件,才能在原料耗费最少的情况下使杯子的容积最大。在材料一定的情况下,如果水杯的底面积大,其高度必然就要小;如果高度变大了,底面积又大不了,如何调和这两者之间的矛盾?其实这恰恰就反应了一个完整的优化过程。在这里,一个水杯的材料是一定的,所要优化的变量就是杯子底面的半径r和
2、杯子的高度h,在ANSYS的优化模块里面把这些需要优化的变量叫做设计变量(DV);优化的目标是要使整个水杯的容积最大,这个目标在ANSYS的优化过程里叫目标函数(OBJ);再者,对设计变量的优化有一定的限制条件,比如说整个杯子的材料不变,这些限制条件在ANSYS的优化模块中用状态变量(SV)来控制。下面我们就来看看ANSYS中怎么通过设定DV、SV、OBJ,利用优化模块求解以上问题。首先参数化的建立一个分析文件(假设叫volu.inp),水杯初始半径为R=1,高度为H=1(DV),由于水杯材料直接喝水杯的表面积有关系,这里假设水杯表面积不能大于100,这样就有S=2兀RH+2兀R2<10
3、0(SV),水杯的容积为V=兀F2H(OBJ)。File:volu.inp(用参数直接定义也可或者在命令栏内直接写)R=1H=1S=2*3.14*R*H+2*3.14*R*RV=10000/(3.14*R*R*H)然后再建一个优化分析文件(假设叫optvolu.inp),设定优化变量,并求解。/clear,nostart/input,volu,inp/optopanl,volu,inpopvar,R,dv,1,10,1e-2opvar,H,dv,1,10,1e-2opvar,S,sv,100,1e-2opvar,V,obj,1e-2opkeep,onoptype,subpopsave,optv
4、olu,opt0opexec最后,在命令输入框中键入“/input,optvolu,inp:整个优化过程就开始了。图2ANSYS优化过程图几秒钟的优化过程结束后,让我们来看一下优化的结果:/optoptlist,all图3优化结果上图中左右带*的SET22是最优解,由此可以看出,要想在表面积一定的情况下使水杯容积最大,的确有这样一个规律H=D=2*R。有兴趣的同志可以用求极值的方法演算一下,一定会得到相同的答案。ANSYS勺优化模块是用来求解工程分析中的优化例子的,但上面一个例子说明即使这样于工程毫无关系纯数学极值问题,也能够轻松求解。不过在细节处会有一些技巧,后面再仔细分析。(其实用ANSY
5、S勺优化模块完全能解决数学上比较负责的极值问题,不过现在有了Matlab、Mathematica,大概也没有人愿意来用ANSYSM丑了)。1.2 ANSYS优化设计基础前面写了一个例子,来说明ANSYS的基本优化过程。在这一节中,我们结合这个例子来说明一下优化模块中的一些概念。1.2.1 优化模块中的三大变量:设计变量(DV):即自变量。例子中的opvar,R,dv,1,10,1e-2就是用来定义一个设计变量R,其上限为10,下限为1,公差为10-2(公差和优化过程的收敛有关)。ANSYS优化模块中允许定义不超过60个设计变量。状态变量(SV):用来体现优化的边界条件,是设计变量的函数。例子里
6、面opvar,S,sv,100,1e-2就是定义了一个状态变量S,它的上限为100,无下限,公差为10-2。从文件volu.inp中可以看到,S=2*3.14*R*H+2*3.14*R*R。可见,定义这样一个状态变量,即是限制水杯的表面积(可以认为表示材料的多少)不大于100。在ANSYS优化模块中用户可以定义不超过100个状态变量。目标函数(OBJ):最终的优化目的。它必须是设计变量的函数,而且只能求其最小值。看到volu.inp里面目标函数的定义了吧V=10000/(3.14*R*R*H),为了把求最大体积转化为求最小值,只好对它求倒数了;如果知道目标函数的上限,还可以用一个大数减目标函数
7、的方法来转换。例子中opvar,V,obj,1e-2就是定义了一个目标函数V,它的公差是10-2。1.2.2 ANSYS优化模块中的两种求解模式ANSY玳化模块的求解有两种运行模式,一种是在GUI方式下运行,即已经打开ANSYS的分析界面后进行分析;另一种是Batch模式,无需打开ANSY砌析界面,后台运行求解。前面例子的运行过程其实就是一个典型的GUI方式体现,它涉及到两个重要的文件:一个就是类似volu.inp的ANSY分析文件,如果是一个工程问题,该文件中应该有参数定义、参数建模、求解、结果提取、目标函数赋值的一个全过程(由于优化求解是一个不断跌代的过程,ANSYS分析文件其实是包涵了一
8、个完整的循环)。另一个文件是类似optvolu.inp的优化控制文件,基本语句就那么几条,无非是定义三大变量、优化方式、优化控制等几条,用户拿过去稍稍替换下就可以用在不同的问题上。(注:细心的读者可能会提问,既然ANSYS分析文件包涵了一个完整的循环,但是整个优化过程中是要求设计变量不断改变的,每次循环都有一个参数重定义的过程,不会使设计变量恢复初始值吗?这一点勿用担心,正是由于有了另一个优化控制文件,优化过程只在第一次进行完全的参数定义工作,在后续循环中,优化控制文件中声明的设计变量定义将被忽略)。有了这样两个文件,简单的在命令窗口把优化控制文件输入进去(其中的opanl命令会自动调用指定的
9、ANSYS分析文件),就可以完成整个优化过程。以上说明的是完全使用命令流的GUI方式,至于如何在菜单中进行优化过程的定制,窃以为没有命令流方式快捷,这里就不再赘述了。另一种方式是后台运行的Batch方式,它只需要一个输入命令流文件(batch文件)。该文件可以简单的把GUI方式下ANSYS分析文件和优化控制文件合并得到。不过有几个注意点:1、需要把optanl语句去掉,因为在batch文件中,不需要提供ANSYS分析文件名字,系统默认batch文件中/opt语句以前的所有部分为ANSYS分析文件内容。2、以前为防止在GUI方式下的重新定义错误而引入的一些语句,如/cle,nostart需要去除
10、。上述例子经过合并、处理,就可以得到Batch方式下需要的batch文件batch.inpFile:batch.inpR=1H=1S=2*3.14*R*H+2*3.14*R*RV=10000/(3.14*R*R*H)/optopvar,R,DV,1,10,1e-2!指定设计变量Ropvar,H,DV,1,10,1e-2!指定设计变量Hopvar,S,SV,100,1e-2!指定状态变量Sopvar,V,obj,1e-2!指定优化目标Vopkeep,on!optype,subp!指定优化方法子问题逼近法(零阶法)opsave,optvolu,opt0opexe假定batch.inp在目录bvol
11、u下,在cmd命令行方式下,进入bvolu目录,执行命令:ansys-b-jbvolu-pane3flds-ibatch.inp-ooutput.txt命令中-b参数指定用batch模式求解;- jbvolu参数指定该求解默认工作名字为bvolu(不指定就,默认为file)- pane3flds参数指定使用ANSYS/Multiphysics/LS-DYNA求解器- ibatch.inp参数指定输入batch文件为batch.inp- ooutput.txt参数指定把输出导向到output.txt中,便于查看过程纠错运行结束后,可以从output.txt文件中看到最有解是多少:文件output
12、.txt中的一部分数据:SOLUTIONHASCONVERGEDTOPOSSIBLEOPTIMUM(BASEDONDVTOLERANCESBETWEENFINALTWODESIGNS)FINALVARIABLESARESET22(FEASIBLE)S(SV)99.997R(DV)2.2851H(DV)4.6830V(OBJ)130.23其结果与用GUI方式求解完全一样,生成的bvolu.opt文件中也有最优解的信息,同时还能看到求解整个参数迭代求解过程。1.2.3ANSYS的优化方法和收敛准则例子中优化控制文件里面的优化命令,还有opkeep,on(用来要求保留最优解的DB),opexec(执
13、行优化),剩下重要的命令就只有optype了,这个命令指定ANSYS优化中使用的优化方法。优化方法发展到今天可说是形形色色,比较完善了。ANSYS的优化模块中只支持两种优化方法,不能不说是一大遗憾。但ANSYS的这两种优化方法对绝大多数的工程问题已经足够,更何况ANSYS还留下了用户话优化接口,方便用户写出适合于自己问题的优化方法来使用。看看例子中的命令"optype,subp,”这里指定的是第一种通用的函数逼进优化方法。改种方法的本质是采用最小二乘逼进,求取一个函数面来拟和解空间,然后再对该函数面求极值。无疑这是一种普适的优化方法,不容易陷入局部极值点,但优化精度一般不是很高,因此
14、多用来做粗优化的手段。另外一种是针对第一种优化方法缺点的改进方法,叫做梯度寻优。如果说第一种方法是C0阶、大范围普适的粗优化方法;第二种方法就是C1阶、局部寻优的精优化方法。一般来说,一个比较负责的问题都需要同时采用两种优化方法,先用函数逼进的第一类方法初步求得最优解基本位置,然后再采用梯度寻优的对最优解的位置进行更精确的确定。(注:但用第二类梯度寻优进行优化,不仅时间消耗长,还可能陷入局部最小点,因此通常的问题都建议使用0阶函数逼进优化subp)前面讨论了ANSYS的两种优化方法,但光了解优化进行的方式是不够的。ANSYS进行优化计算,都是一个不断迭代的过程。有时候,了解优化过程什么时候结束
15、比了解优化过程本身更加重要。下面我们就来谈谈决定优化过程什么时候结束的条件:优化准则。假设Fj、Xj和Fj-1、Xj-1分别为目标函数、设计变量第j次迭代和第j-1次迭代的结果(为为矢量),Fb和Xb分别是当前的最优目标函数和其相应的设计变量值。如果满足或者,为目标函数的公差,那么认为迭代收敛,于是迭代停止。假设或者,那么也认为设计变量的搜索已经趋于收敛,于是迭代停止。当然,为了防止优化过程在某些问题中不收敛,ANSYS还提供了循环数量控制。比如说,如果你使用的是。阶函数逼进优化,你可以用opsubp命令设定最多循环多少次退出,已经当不可行解连续出现多少次就认为优化过程发散,强行退出等。(注:
16、在0阶函数逼进优化中,默认的最大循环次数为30;默认当连续出现7次不可行解,就认为优化过程发散)在上面的描述中,可能只有公差和不可行解这两个概念在ANSYS中的意义我们不甚了解了。可行解与不可行解的定义将在下一小节中详细定义,这里说明一下公差。从例子里面可以看出,我对设计变量、状态变量、目标函数都给出了公差限制。从上面一段的的分析可以得知,设计变量、目标函数的公差可以控制优化过程的收敛性。其实设计变量也一样,如果前后两次设计变量之间的误差小于设计变量的公差时,优化过程也会自动停止,不过对它的限制主要是来控制可行性(下一节介绍可行性),三大变量的公差都有一个默认值:对于设计变量,默认公差就是0.
17、01X(上限-下限),如果只有上限,默认公差为0.01X上限绝对值。(设计变量定义时必须指定上限)。对于目标函数,由于定义时不指定上下限,默认公差为0.01X当前目标函数值。对于状态变量,如果指定了上下限,默认公差为0.01X(上限-下限),如果只有上限或者下限,默认公差为0.01X上限或者下限的绝对值。上述默认公差的定义都能在ANSYS的随机帮助中查到,这里为什么如此冗余的详细介绍它呢?因为大多数情况下你不能得到最优解都是这个东西在作怪。为什么例子中要每个变量都详细定义公差呢?我们可以把这些公差都去掉,看看是什么结果:图4优化结果2由此可见,不带任何公差的最优化分析得不到我们所要求的最有解(
18、151.62显然比带公差后得到的结果130.23要大许多),而且优化过程才做了6步就停止了,查看下ANSYS的输出窗口,显示:>>>>>>SOLUTIONHASCONVERGEDTOPOSSIBLEOPTIMUM<<<<<<(BASEDONOBJTOLERANCEBETWEENBESTANDFINALDESIGNS)可见是因为导致循环提前结束。(注:细观上图,Fj=157.20,Fb=151.62,默认公差似乎此处应该是1.5720,似乎还没有满足这个收敛准则,为什么ANSYS却认为满足了,这里就不得而知,可能ANSYS内
19、部对默认公差里面的当前值另有解释;如果你强行规定目标函数公差为1,可以看到循环多进行一步后也会提前结束,不过这时彳g当前解151.65和最优解151.62倒的确相差小于公差1了)。此时,大家一定可以理解例子中为什么要对公差的限制如此严谨了(0.01)。因为程序的取样,迭代都有随机性,只有这样,才能保证程序不会因为上述公差太大的缘故自动停止而得不到最优解。有兴趣的同学还可以改变一下其他参数的公差大小,甚至用opsubp命令改变默认循环的次数等,这些实验将会更加加深你对优化过程、收敛准则的理解,便于提高你都负责优化问题的驾驭能力。拓扑优化实例/clear/TITLE,A2-D,multipleco
20、mplianceminimizationproblemsubjectedtovolumeconstraint/PREP7BLC4,0,0,3,1!Createsolidmodel(3x1rectangle)ET,1,82!Use2-Dsolids.Type1isoptimizedET,2,82!Type2isnotoptimized.MP,EX,1,118E9!Linearisotropic,materialMP,NUXY,1,0.3ESIZE,0.05!UsearelativelyfinemeshdensityTYPE,1AMESH,ALL!Free,rectangular-elementm
21、eshingNSEL,S,LOC,X,0,0.4!SelectregionnottobeoptimizedESLNTYPE,2EMODIF,ALL!Definetype2elementsALLSELNSEL,S,LOC,X,0D,ALL,ALL,0!FixedatX=0NSEL,S,LOC,X,3D,ALL,ALL,0!FixedatX=3FORCE=1000!ValueforappliedloadNSEL,S,LOC,X,1NSEL,R,LOC,Y,1F,ALL,FY,FORCE!DefinefirstloadcaseALLSELLSWRITE,1!WritefirstloadcaseFDE
22、L,ALLNSEL,S,LOC,X,2NSEL,R,LOC,Y,0F,ALL,FY,-FORCE!DefinesecondloadcaseALLSELLSWRITE,2!WritesecondloadcaseFDEL,ALLTOCOMP,MCOMP,MULTIPLE,2!Definemultiplecompliancefunction!"MCOMP"fortopologicaloptimizationTOVAR,MCOMP,OBJ!Define"MCOMP"astopologicalobjectiveTOVAR,VOLUME,CON,50!Define&
23、quot;VOLUME"astopologicalconstraint;50percentvolumereductionTOTYPE,OC!SpecifysolutionapproachTODEF!Initializetopologicalopt./SHOW,topo,grph!Putgraphicsinafile(removeifinteractive)/DSCALE,OFF/CONTOUR,2TOLOOP,12,1!Performnomorethan12iterationsFINISHTOGRAPH,OBJ!Graphfinalobjective(compliance)histo
24、ryTOGRAPH,CON!Graphfinalconstraint(volume)historyTOPRINT,OBJ!Printfinalobjective(compliance)historyTOPRINT,CON!Printfinalconstraint(volume)history*GET,TITER,TOPO,ITER!Getiterationcounter*GET,OCMP,TOPO,TITER-1,TOHO!Getfinalcompliancevalue第七章APDL综合实例7.1 问题说明本章在阐明APDLM术时本想也采取实例的方式,把APDL的各个细节都用一个个详细的实例说
25、清楚,无奈APDL细节内容比较繁复,而且不和UIDL那样各成体系,APDL的应用很多情况下都是和UIDL、UPF结合在一起应用的,它甚至渗透到基础分析中的各个环节中,可以说也是ANSYS勺脚本基础。考虑到大家都不会有兴趣来聆听枯燥的数组构建法,宏函数的参元特性等罗嗦的APDL语法,这里我们打算用一个比较大的综合实例来想大家描述一部分APDL的功能,从这里你将能看到我们能用APDL干些什么。还记得UIDL实例解析二中的一个例子吧,这里我们有必要重温一下:如图1(a)所示,一带孔薄板,长4000mm,宽2000mm,顶部中心部分1800mm处承受42MP的压力,左右两个长圆孔中心分别距四周1000
26、mm,长圆孔的具体形式如图1(b)所示,上下分别为半圆,中部用直线衔接。这里假设长圆长轴与水平方向夹角为“。为了使得孔边缘应力集中最小,这里拟调整a的大小(aC-兀/2,兀/2),以便在固定的H情况下达到长圆孔周围应力集中最小。在UIDL实例二的部分我们只是在GUI界面下实现了它的参数化建模,这部分工作在本章的综合实例中仍然有效,下面我们将一步步完全实现这一问题。7.2 解题思想本问题是在用户给定H的情况下求得a角的最优解,使得孔边最大拉应力最小(这是因为材料抗拉性能比较弱)。这里我们的想法是:把a取每一个角度时候得到的孔边最大拉应力都求出,比较它们,得到孔边拉应力最小情况下对应的a取值。现在
27、的问题是,我们只能够对每一离散的a值求取其孔边最大拉应力,让a在0°360°之间连续取值不仅是无法做到的,而且在工程中也没有必要,这里我们拟每隔一定角度计算一下孔边最大拉应力,最终在这些有限的角度中求取出最佳的a值。因此我们还需要用户自定义求解的精度参数,即我们每隔多少角度来计算一次(决定了结果精确到什么程度)。比方说我们定义每隔5°计算一次的话,整个优化过程需要进行180/5=36次求解运算。7.3 构建步骤下面说明一下在构建过程中的一些全局参数:My_H:用户输入的H参数值My_sita:每次计算对应的a参数值My_dsita:每两次计算之间间隔的角度值(用户
28、输入的参数)My_N:总共需要分析计算的次数。My_N=180/My_dsitaMy_sita0:初始“值,这里统一定义为0°My_MinS1:最优化位置处的最大拉应力值。(计算完以后才是)My_smin中最大值。My_Msita:最优化位置处对应的a值。My_smin:每次分析计算得到对应特定a角时的孔边最大拉应力。(一般都是孔边产生应力集中,所以也是整个板料内部的最大拉应力处)即_s1中最大值。_s1数组:对应特定a时求解得到各个节点上的最大拉应力值。1 .首先我们重新构建一比较完善的参数化建模脚本,取名为Modaling.mac,该脚本针对固定的My_H和My_sita将构建整
29、个几何模型,加好载荷和约束,具体细节请参看附录。2 .构建脚本mysolve.mac:My_sita0=0My_N=180/My_dsita*do,I,0,My_N-1parsav,all,myparfinish/clear,startparres,new,myparMy_sita=My_sita0+My_dsita*IModaling!宏程序/solusolve/post1ar11=ndinqr(0,14)_s1=*dim,_s1,ar11*vget,_s1(1),node,1,s,1*vscfun,My_smin,max,_s1(1)*if,I,eq,0,thenMy_MinS1=My_s
30、minMy_Msita=My_sita*ELSE*IF,My_smin,lt,My_MinS1,thenMy_MinS1=My_sminMy_Msita=My_sita*ENDIF*ENDIFparsav,all,mypar*enddo下面是几点说明:程序整个框架是先根据用户输入的参数定制好一些解题环境,比方说求出需要重复计算的次数My_N,然后用APDL的*do循环结构繁复执行My_N次,每次求得对应角度的孔边最大拉应力值,不断积累出这些对应角度孔边最大拉应力值的最小结果。完成了My_N次结果后,最优结果My_MinS1和对应的角度My_Msita也就求出来了。不同次分析计算过程前必须对AN
31、SYS环境中的现有模型清零,用到/clear命令,但该命令会使用户参数同时清零,这里用到parsav和parres技术,在每次清零过程前先把当前工作区的参数保存起来,清模型结束后再调入工作区,这样就实现了只清模型、不清参数的效果。解题结束后,我们先用ndinqr(0,14)这一UPF命令求取模型中的节点总数。然后用*vget命令把所有节点上的最大拉应力都保存到_s1数组中,最后用*vscfun函数得到_s1数组中的最大值。注意每次求解完提取数据时都要重新定义_s1数组的大小(因为每次划分单元后总节点数不同),这时候每次ANSYS都回出现让你确认是否把已经存在的_s1数组结构改变的对话框,这将导
32、致自动化求解中断,这里我们采用的一个技巧是每次重新定义_s1数组前先清掉_s1数组(用_s1=命令行)。这样救避免了Ansys的询问。同样解决/clear命令的Ansys询问方法就是写全/clear命令:/clear,start。注意这里我们是必须要用start参数的,它表面我们在新建模型时读入start55.ans文件,我们必须在工作目录中构建一个我们自己的start55.ans文件,里面添加上PI参数的说明(因为modaling.mac宏文件中将利用这一参数,如果系统环境中没有这一参数的说明,将产生建模错误)。解决完一次运算,保存完数据后记得用parsav函数保存环境参数。3 .完善GUI
33、参数化界面这里我们要比上次UIDL实例二中多增加一个参数My_dsita,为此我们修改UIFUNC2.GRN函数中DoProject函数::NFnc_DoProject:S0,0,0:TCommand:AOptimizemyProject:DPleaseInputCustomInformation:C)*Set,My_H,150:C)*Set,My_dsita,90:HHlp_0_ContentsInp_NoApplyCmd_)*Cset,1,2Fld_0Typ_LabPrm_CustomtheGeographicInformationFld_2Prm_PleaseInputtheDsitaf
34、orAnalysis(190)Typ_INTDef_*PAR(My_dsita)Fld_3Prm_PleaseInputtheHforAnalysis(100200)Typ_INTDef_*PAR(My_H)Cmd_)/GoCmd_)*GET,My_H,CPAR,2Cmd_)*GET,My_dsita,CPAR,1Cmd_)mysolve:EEND:!这里可以看到和UIDL篇中的实例相比,多加了参数My_ds1a的用户化输入。最后的命令修改成直接用文件名调用(这是因为我们把文件名后缀改为了.mac,它标志着标准的宏文件)。最后的对话框显示如下:用户定制好分析精度和H值后,点击OK就开始了完整的
35、分析过程。4 .求解结果最后求解完毕后得到了一些最优化结果:用*status命令可以看到所有参数结果(这里我用每隔5度进行一次分析求解):My_Msita=40°,用该最优化建模图形为:|«ANSYSGraphics岫知$5,5,1JimI2Q010“A-B-L-KHP«u<erfir>fhi<;fKFAEIT=1这里由于实常数对应力集中的效应没有影响,我们就不再给出具体计算结果来了。有效的仅是在同样的载荷条件下不同角度的孔上最大拉应力的情况。7.4 几点说明APDL中的参数化建模、优化涉及是十分复杂有效的,这里我们只是给出了一个小小的例子,用来
36、举一反三。套用同样的方法和机制,我们可以完成更加复杂的问题。这里我们仅仅用到了APDL功能中的一小部分,我们完全可以想象一下UIDL+APDL+UPF能够完成什么样复杂程度的功能一几乎是任何功能!7.5结束语这里结合APDL,UIDL和UPF讲述了一个比较综合的例子,在以后描述了UPF功能后,大家将更加为UPF功能的强大而神往不已。附录:modaling.mac:!Thisisascriptwhichcancreatethemodalwithaparametersita.!ParameterSettingPI=3.14159sita=My_sita/180*PI!角度维弧度r=0.2H=My_
37、H/1000CustomizetheEnvironmentkeyw,pr_struc,1/prep7et,1,shell63r,1,0.12,0.12,0.12,0.12uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375ModelingCreateplatek,1,0,0k,2,2,0k,3,2,2k,4,0,2k,5,0.9,2k,6,1,1l,1,2l,2,3l,3,5l,5,4l,4,1al,1,2,3,4,5CreateholeCreatemycoordinatek,7,1+H*cos(sita),1+H*sin(sita)k,10,1+H*cos(sita),1+
38、H*sin(sita),100k,8,1+r*cos(sita+PI/2),1+r*sin(sita+PI/2)cskp,11,0,6,7,8csys,11!CreateHolek,9,H,rl,7,9l,7,6adrag,6,7arotat,6,7,10,-90arsys,y,2,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba,1,10csys,0arsym,x,2,0,0nummer,all,lowaadd,1,2/auto,1gplot!Meshingtheplanesmrt,6amesh,all!AddDOFDK,2,UX,0,UYDK,14,UX,0
39、,UY!AddPressureSFL,4,PRES,42SFL,11,PRES,42我修改的程序:L7_YouHua.mac计算结果为45度FINISH/CLEAR,NOSTART/FILNAME,shell_rigid_beam,1/TITLE,TheShell_BeamRigid_LinkModelSystemMy_H=150My_sita0=0My_dsita=5My_N=180/My_dsita*do,I,0,My_N-1!步长默认为1parsav,all,myparfinish/clear,startparres,new,myparMy_sita=My_sita0+My_dsita注
40、:ansys有多行响应命令:MULTIPRO,'START',4*cset,1,3,a,'beamwidth',20*cset,4,6,b,'height',10*cset,61,62,'TheMYOFSETmacrooffsetsthe','selectednodesalongeachcset,63,64,'ofthethreeaxes.Fillinthe','fieldsaccordingly.'MULTIPRO,'END'IModaling!宏程序/solusolve/
41、post1!*ar11=ndinqr(0,14)!*UPF命令求取模型中的节点总数*GET,ar11,NODE,0,COUNT!获得节点总数目_s1=*dim,_s1,ar11*vget,_s1(1),node,1,s,1*vscfun,My_smin,max,_s1(1)*if,I,eq,0,thenMy_MinS1=My_sminMy_Msita=My_sita*ELSE*IF,My_smin,lt,My_MinS1,thenMy_MinS1=My_sminMy_Msita=My_sita*ENDIF*ENDIF!*parsav,all,mypar!该行多余*enddoModaling.m
42、ac!Thisisascriptwhichcancreatethemodalwithaparametersita.!ParameterSettingPI=3.14159sita=My_sita/180*PI!角度维弧度r=0.2H=My_H/1000CustomizetheEnvironmentkeyw,pr_struc,1/prep7et,1,shell63r,1,0.12,0.12,0.12,0.12uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375ModelingCreateplatek,1,0,0k,2,2,0k,3,2,2k,4,0,2k,5,0.9,2k,6,1
43、,1l,1,2l,2,3l,3,5l,5,4l,4,1al,1,2,3,4,5CreateholeCreatemycoordinatek,7,1+H*cos(sita),1+H*sin(sita)k,10,1+H*cos(sita),1+H*sin(sita),100k,8,1+r*cos(sita+PI/2),1+r*sin(sita+PI/2)cskp,11,0,6,7,8csys,11CreateHolek,9,H,rl,7,9l,7,6adrag,6,7arotat,6,7,10,-90arsys,y,2,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba
44、,1,10csys,0arsym,x,2,0,0nummer,all,lowaadd,1,2/auto,1gplot!Meshingtheplanesmrt,6amesh,all!AddDOFDK,2,UX,0,UYDK,14,UX,0,UY!AddPressureSFL,4,PRES,42SFL,11,PRES,42基于APDL语言的优化设计及其应用本文介绍了基于APDL(ANSYSParametricDesignLanguage)语言参数化优化设计的概念和实现过程,以实际中应用最为广泛的梁结构为原型的简化梁为例,利用APDL参数化设计语言和宏命令对其尺寸进行优化,实现了参数化建模、施加参数
45、化载荷和求解的过程。结果表明:在用户交互给定的条件下,程序能根据给定的不同条件得出相应的优化结果,便于用户从给定的条件与得出的结果中找到一组合适的优化数据,从而实现一般梁在尺寸方面的优化。1. ANSYSX次开发概述ANSYS是世界上著名的大型通用有限元分析软件,它具有强大的求解器和前、后处理功能,能为我们解决复杂、庞大的工程实际问题。但是作为通用有限元软件,ANSYS在具体的专业深度上有所欠缺,对用户的力学、有限元知识以及工程经验有较高的要求,因而,该软件的学习周期较长、掌握起来的难度较大。对于各个专业的工程师来说,驾御ANSYS并不是一件容易的事情,因为ANSYS不是针对具体行业的专业软件
46、,其灵活的设计分析和大量的选项使初级用户不知如何着手。工程师们更渴望使用像ANSYS那样具有强大前后处理且操作简单的专业软件。因此对这种通用性强的软件进行二次开发就显的非常必要了。1.1 ANSYS二次开发的途径ANSYS程序是一个功能强大、通用性好的有限元分析程序,同时它还具有良好的开放性,用户可以根据自身的需要在标准ANSYS版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的用户版本的ANSYS程序。这是对其进行二次开发的基础。开发功能包括由三个部分:参数化程序设计语言(APDL)、用户界面设计语言(UIDL)、用户程序特性(UPFs)。1.1.1 参数化设计语言APDLA
47、NSYS参数化设计语言APDL用建立智能分析的手段为用户提供了自动循环的功能,也就是说,程序的输入可设定为根据指定的函数、变量以及选出的分析标准决定输入的形式。APDL允许复杂的数据输入,使用户实际上对任何设计或分析有控制权。例如尺寸、材料、载荷、约束位置和网格密度等。APDL扩展了传统有限元分析之外的能力,并扩展了更高级运算,包括灵敏度研究、零件库参数化建模,设计修改和设计优化。APDL是一种为ANSYS二次开发专门设计开发的解释性文本语言,其内容包括参数、数组参数、表达式和函数、分支和循环、重复功能和缩写以及宏和用户程序等。1.1.2 用户界面工具UIDL用户图形界面设计语言UIDL就是编
48、写或改造ANSYS的图形界面的专用语言,主要完成以下三种图形界面的设计:1 .主菜单系统及菜单项2 .对话框和拾取对话框3 .帮助系统用户界面语言UIDL,用户可以在扩充ANSYS功能的同时建立起对应的图形驱动界面。实际上,ANSYS软件程序结构分内核与界面两部分,二者之间通过功能检索号联系,只要检索号正确,界面是何种形式无关紧要,因此,界面的变化不会对程序内核造成任何改变。根据该原理,用户可以实现对ANSYS界面的汉化,当然,也可以以汉化界面驱动用户自己的程序。1.1.3用户可编程特征UPFs用户可编程特性(UPFs)向用户提供丰富的FORTRAN77用户子程序和函数。用户利用它们从开发程序
49、源代码的级别上扩充ANSYS功能。使用这些子程序和函数,编写用户功能的源程序,在与ANSYS版本要求匹配的FORTRAN或C+编译器上重新编译和连接,生成用户版本的ANSYS程序。另外,还提供了外部命令,允许用户创建ANSYS可以利用的共享库。1.2ANSYS二次开发工具比较APDL所能实现的功能通俗的说来应该是次于UPFs而强与UIDL,但实际上是由于三者具体侧重点不同造成的:UIDL主要控制GUI界面的各类二次开发方法,涉及的分析部分就要少一些,APDL可以称其为和分析部分频繁打交道的一组小型工具,功能强大,但不和UIDL一样能够非常具体的针对某一两方面的二次开发处理,通常情况下的他融合在
50、分析的角角落落中。UPFs是三者之间的最强者,他能完成最复杂的二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但UPFs在很多情况下也借助了APDL命令来完全实现其功能。同样我们也能在UIDL中嵌入APDL命令,来构建比较复杂的GUI二次开发工作。2 .基于APDL有限元优化技术的一般步骤基于APDL的参数化设计的方法采用ANSYS的批处理方法进行优化的,其主要的优化设计过程通常包括以下几个步骤,这些步骤根据用户所选用优化方法的不同(批处理GUI方式)而有细微的差别。2.1 生成分析文件生成分析文件与通常的ANSYS分析并没有很大的不同,唯一的区别就是:优化的分析文件必须是参数
51、化的。也就是说,必须定义一些参量,至少要把所有的设计变量,状态变量和目标变量定义为参量形式。而且,用于优化的参量只能是标量数值参量,而不是数组或者字符参量。2.2 建立优化过程中的参数在GUI方式下,优化过程中的参数一般在ANSYS数据库中用分析文件来建立,这样做的好处是初始参数值可以作为一阶方法的起点,然而,对于各种优化过程来说,在数据库中的参数可以在GUI下进行操作,便于定义优化变量。2.3 进入OPT指定分析文件首次进入优化处理器时,ANSYS数据库中的所有数据会自动作为设计序列1,这些参数值假定是一个设计序列。在GUI方式下,用户必须指定分析文件名,这个文件用于生成优化循环文件Jobn
52、ame.LOOP,在ANSYS优化处理器中,分析文件名无缺省值,用户必须指定一个分析文件名,否则将出错。并且在分析文件中,/PREP7或/OPT命令必须出现在行的第一个非空字符处。在批处理方式中,分析文件通常是批处理命令流的第一部分,从文件的第一行命令到命令/OPT第一次出现时,其缺省的分析文件名是Jobname.BAT,因此在批处理方式下不需要指定分析文件名。2.4 指定优化变量即要求用户指定哪些是设计变量、哪些是状态变量和目标函数,对于设计变量和状态变量,用户可以指定其最大和最小值,同时每一个变量都有一个公差值,这个公差值可以用户输入,也可以由程序自动选取。用户可以在任何时间简单地通过重新
53、定义参数来改变已经定义过的参数,也可以删除一个优化变量,即该变量将不再作为优化变量使用,但该参数还存在。2.5 选择优化工具或优化方法优化方法是使单个函数在控制条件下达到最小值的传统优化方法。它由零阶法、一阶法和用户自定义方法。但在使用任何一种方法之前,用户必须指定一个目标函数。一般来说,一阶法精度较高,但是耗费机时;零阶方法速度较快,其精度较低,但对大多数工程问题而言,零阶分析方法足够了。2.6 指定优化循环控制方式每一种优化方法和优化工具都有相应的循环控制参数,因此在指定好优化优化方法和优化工具后,用户还要选择与此工具和方法相对应的循环控制参数。2.7 进行优化分析在进行优化分析时,优化循环文件Jobname.LOOP会根据分析文件生成,循环在满足下列情况下终止:收敛、中断、分析完成。所有优化变量和其他参数在每次迭代后将存储在优化数据文件Jobname.OPT中,最多可以存储130组这样的序列,如果已经达到了130个序列,那么其中数据最不好”的序列将被删除。2.8 察看设计序列结果在优化设计完成后,用户可以列出指定序列号的参数值,或列出所有参数的值;也可以用图形的方式显示指定的参数随迭代次数的变化,可以看出变量是如何随迭代过程变化的。同时也可以在P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网红营销策略与品牌社会责任的结合考核试卷
- 卫生陶瓷生产质量管理团队建设与管理培训考核试卷
- 窗帘与遮阳设计在提高居住舒适度中的应用考核试卷
- 医用橡胶制品生产质量控制效果评价考核试卷
- 家电配件耐候性测试中的光照老化试验分析考核试卷
- 质量管理体系与市场竞争力提升路径分析考核试卷
- 天使综合征课件
- 工厂仓管笔试题及答案
- 稻谷落雨测试题及答案
- 便利店数字化供应链合作伙伴关系管理考核试卷
- Unit 2 Home Sweet Home 第3课时(Section A 3a-3c) 2025-2026学年人教版英语八年级下册
- 安全生产月题库-安全生产知识竞赛题库(1800道)
- 2025年计划生育与妇幼健康考试试题及答案
- 2025至2030中国废铜行业发展现状及发展趋势与投资风险报告
- 血管内导管相关性血流感染预防与诊治2025
- 【高二下期末】广东省东莞市2021-2022学年高二下学期期末教学质量监测英语试题(解析版)
- 2025年普通高等学校招生全国统一考试数学试题(全国二卷)(有解析)
- 无人飞机农业植保应用技术 课件17、极飞P40农业无人飞机作业-3
- 呼吸病区进修管理制度
- 足浴转让合同协议书
- 2022-2023学年山东省济宁市兖州区人教版四年级下册期末考试数学试卷(原卷版)
评论
0/150
提交评论