




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、APDL与优化培训,刘晓宁,本次培训分为两大部分内容关于ANSYSAPDL语言的全面介绍关于设计优化和拓扑优化及其相关内容的全面介绍在进阶培训中对这两部分内容有简介本次我们利用专门的培训课程对这两部分内容做更加仔细和深入的介绍.,开场白,November1,2002,培训安排,第一天参数使用,矢量/矩阵运算,读写数据文件,访问数据库,流程控制第二天宏编程技术,参数化建模,函数,缩写/工具条,定制简单用户界面第三天ANSYS优化概念,设计优化一般过程第四天设计工具,优化方法,健壮设计概念第五天拓扑优化,概率分析简介,November1,2002,APDL概念,November1,2002,什么是
2、APDL?,APDL即ANSYSParametricDesignLanguage专用解释性语言,用于自动实现通常性的任务,某种程度上类似FORTRAN实现FEM的参数化建模、加载、求解和后处理用参数而不是用数值输入模型尺寸,材料类型等从ANSYS数据库中获取信息,比如节点位置或最大应力是设计优化和自适应网格划分等高级特性的基础为日常分析提供了很多便利在参数中进行数学运算,包括矢量和矩阵运算把常用的命令或宏定义成缩写形式建立一个宏使用if-then-else分支和do循环等来执行一系列任务定制人机数据和信息交互界面开发特殊分析功能有限元专用分析系统,November1,2002,APDL建模实例
3、,利用APDL实现壳单元的变厚度及复杂三维实体建模,November1,2002,APDL建模实例,利用APDL实现复杂实体建模,November1,2002,APDLGUI应用实例,典型的多行提示对话框:,参数输入窗口:,November1,2002,APDL应用系统实例,November1,2002,参数的使用,November1,2002,内容:,参数说明参数命名规则参数相关操作参数的使用,November1,2002,参数的概念,参数是APDL的变量不必明确声明参数类型,所有数值变量都以双精度数储存被使用但未声明的参数都被赋一个接近0的值ANSYS包含两种类型的参数:标量和数组数组下节
4、介绍标量和数组元素可以是数值或字符型的,November1,2002,参数的命名规则,参数名不超过32个字符,并以字母开头。参数名中只能出现字母,数字和下划线。参数名不分大小写,如“RAD”和“Rad”是一样的。避免使用ANSYS标识,如STAT,DEFA,和ALL。记住,名称为从ARG1到ARG9和从AR10到AR99的参数被保留为局部参数。通常,局部参数用于宏中。参数名不能与用*ABBR命令定义的缩写相同。常规应用中参数名不要以下划线开头。这类参数名通常用于GUI和应用于ANSYS的专用宏中。,有效参数名:ABCPIX_OR_Y,无效参数名:MY_PARAMETER_NAME_LONGER
5、_THAN_32_CHARACTERS(超过32个字符)2CF3(以数值开头)M!otherwisetoXYZ=B+Y2INC=A1+(31.4/9)M=(X2-X1)*2-(Y2-Y1)*2)/2,参考:APDLProgrammersGuide-UsingParameters-ParametricFunctions,November1,2002,保存、恢复和写出参数,在其他ANSYS任务中使用当前定义的参数把参数写入文件PARSAV(UtilityMenuParametersSaveParameters)参数文件是ASCII文件,主要由APDL*SET命令组成把参数动文件中恢复PARRES(
6、UtilityMenuParametersRestoreParameters)恢复参数的选项ReplacedMerged,November1,2002,数组参数,ANSYS的数组可以是一维(一列)二维(行和列)三维(行、列和面)ANSYS提供了三种数组类型:ARRAY缺省的数值数组类型下标从1开始的连续整数数组元素为整型或实型数TABLE一种特殊的数值数组类型可以实现定义元素间的线性插值每一行、列和面定义数组下标,下标为实数,CHAR字符数组类型元素不超过8个字符下标从1开始的连续整数注意:下标范围最大为231-1行、255列和7面,November1,2002,数组参数,17.1-47.6-
7、5.225.0107.9,814173861057-477041033-52348714125-66622107111,5x1数组,5x3数组,mxnx3数组,AA=,BB=,CC=,AA(2)=-47.6BB(3,3)=348CC(I,J,K)=.FILNAM(5)=JOB5,字符数组,November1,2002,交互式定义数组,1,2,3,4,5,6,7,8,10,9,November1,2002,命令方式定义数组,Abc(5,6,1)def(5,6,1)hig(3,6,1),*DIM,abc,ARRAY,5,6,1*DIM,def,TABLE,5,6,1*DIM,hig,CHAR,3,
8、6,1,对应结果,定义命令,其他举例:*DIM,AA,4!ARRAY为缺省类型,维数为4x1x1*DIM,XYZ,ARRAY,12!ARRAY类型数组,维数为12x1x1*DIM,FORCE,TABLE,5!TTABLE类型数组,维数为5x1x1*DIM,CPARR1,CHAR,5!CHAR类型数组,维数为5x1x1,November1,2002,关于TABLE型数组,数据表类型与数值数组类似,但行、列、面号可以是实数,允许插值第零行、零列、零面必须填充数字。对定义随时间,或空间变化的载荷和其他类似的情况非常有用。基本变量包括X,Y,Z,温度,速度,压力和时间。例如,数据表FORCE可以表示力
9、随时间的变化关系,第零列表示时间值。FORCE(0.4)=279.9996FORCE(6.5)=560.0FORCE(8.9)=119.25等,November1,2002,给数组元素赋值,通过*SET命令或“=”给单独的数组元素赋值*DIM,XYZ,ARRAY,12XYZ(1)=59.5,42.494,-9.01,-8.98,-8.98,9.01,-30.6,51XYZ(9)=-51.9,14.88,10.8,-10.8注意数组元素的起始位置通过参数的行下标进行指定*DIM,T2,4,3T2(1,1)=.6,2,-1.8,4!定义(1,1),(2,1),(3,1),(4,1)T2(1,2)=
10、7,5,9.1,62.5!定义(1,2),(2,2),(3,2),(4,2)T2(1,3)=2E-4,-3.5,22,.01!定义(1,3),(2,3),(3,3),(4,3)给TABLE型数组赋值*DIM,FORCE,TALBE,5FORCE(1)=0,560,560,238.5,0FORCE(1,0)=1E-6,.8,7.2,8.5,9.3通过*VEDIT对话框交互地给元素赋值对字符数组,不能以GUI方式填充字符串*dim,dofs,char,6dofs(1)=ux,uy,uz,rotx,roty,rotz*stat,dofs,November1,2002,填充数组,用指定的或计算出的值来
11、填充数组中的某列(*VFILL)*DIM,DTAB,ARRAY,4,3!定义维数为4*3的数字数组*VFILL,DTAB(1,1),DATA,-3,8,-12,57!四个数值被赋给矢量1(列1)*VFILL,DTAB(1,2),RAMP,2.54,2.54!用起始值为2.54,增量为2.54的数来!填充矢量2(列2)*VFILL,DTAB(1,3),RAND,1.5,10!用1.5和10之间的随机数来填充矢量3!结果依赖于随机数的产生,November1,2002,读取数组,从某个ASCII文件中读取值(*VREAD或*TREAD命令)必须指定起始元素(如(1,1)或(2,2)等),(i,j)
12、表示从第i行、第j列开始填充数据。格式说明紧随读入命令后面,为FORTRAN实型数据格式(nF*.*)若格式为nF*.*,则从数据文件中每一行读入n个数据从起始元素开始按JIK指定的顺序给数组赋值例:文件dataval:1.57.812.315.6-45.642.5*DIM,EXAMPLE,2,3*VREAD,EXAMPLE(1,1),dataval,JIK,3,2(3F6.1)EXAMPLE=1.57.812.315.6-45.642.5,November1,2002,*VREAD将文本文件读入数值数组,例:文件data1.txt:123456789101112131415161718192
13、02122232425*DIM,arr1,4,4*VREAD,arr1(1,1),data1,txt,IJK,4,4(4F3.0)*DIM,arr2,4,4*VREAD,arr2(1,1),data1,txt,JIK,4,4(4F3.0)*DIM,arr3,4,4*VREAD,arr3(2,2),data1,txt,JIK,3,3(3F3.0)*DIM,arr4,4,4*VREAD,arr4(2,2),data1,txt,JIK,3,3(5F3.0),November1,2002,*VREAD将文本文件读入数值数组,答案:arr1=161116271217381318491419arr2=12
14、3467891112131416171819arr3=0000012306780111213arr4=0000012304560789,November1,2002,TREAD读入TABLE型数组数据,不需输入起始下标,只须数据表名,不需格式控制命令数据文件中数字可用空格或逗号分开,最好用Tab。从数据文件中逐行读入数据,并逐行填充数据表最好保证数据文件与数据表格式的一致性,datatalbe01timetemp020130270475,datatable02timex-Coordinate00.3.5.7.9010152025301152025354022025355560430407090
15、100,*DIM,Tt,table,4,1,1,TIME,TEMP*TREAD,Tt,tdata,txt,2,*DIM,Ttx,table,4,5,time,X*TREAD,Ttx,t2data,txt,2,November1,2002,TABLE数组的插值,访问表数组时,ANSYS可在已定义的数据之间进行插值。A(1.5)=20.0PQ(1.5,1)=-3.4(2.8和-9.6的中值)PQ(1,1.5)=3.5(2.8和4.2的中值)PQ(3.5,1.3)=14.88可利用该特性来描述分段线性函数,November1,2002,从数据库中提取一组数据(*VGET),必须为*VGET命令生成的
16、数组参数确定起始位置当KLOOP=0,循环将按顺序处理实体元*VGET,ParR,Entity,ENTNUM,Item1,IT1NUM,Item2,IT2NUM,KLOOP*VGET,A(1),ELEM,5,CENT,X返回单元5的质心的x坐标值,并储存在数组A的第一个值中,然后继续获取单元6,7,直到填满数组。如果KLOOP=4,那么就会返回质心的x、y和z坐标值,November1,2002,写出数据文件*VWRITE,*VWRITE按一定的格式把矢量中包含的数据写入当前打开的文件(*CFOPEN)中写入的格式由*VWRITE命令后紧接的FORTRAN77数据描述符确定因此不能从ANSYS
17、输入窗口执行该命令命令的每一个参数都要带有一个描述符一行的所有描述符要用括号括起来,不要包含FORMAT这个词可以使用实数格式或字符格式描述符,不能使用整型或直接列表描述符数组矢量要指定起始元素位置关键字SEQU将从1开始写一个连续的整数列,x=25*cfopen,vector*vwrite,SEQU,mydata(1,1,1),mydata(1,2,1),mydata(1,3,1),10.2,x,mydata(1,1,1)+3(F3.0,F8.4,F8.1,F8.6,F4.1,F4.0,F8.1)*cfclos,November1,2002,写出数据文件*VWRITE,1.2.15223.9
18、5.28637010.225.5.22.2.30494.05.40919610.225.5.23.2.01053.45.93663810.225.5.24.2.36833.35.63220310.225.5.25.2.84914.85.97802410.225.5.26.2.22803.55.54685110.225.5.2,写入vector文件的内容,*vwrite,SEQU,mydata(1,1),mydata(1,2),(mydata1(1,1)+mydata1(1,2)(Row,F3.0,contains,2F7.3,.Istheirsum,F7.3,?),Row1.contains1
19、0.00050.000.Istheirsum60.000?Row2.contains20.00060.000.Istheirsum60.000?Row3.contains30.00070.000.Istheirsum60.000?,November1,2002,数组参数之间的运算,对矢量的运算就是按某种顺序对数组元素进行一系列的诸如加、减、求正弦、求余弦、点积、叉乘等运算。前面已介绍过一些矢量操作*VFILL、*VREAD、*VGET、*VWRITE和*DIM等本部分讨论:*VOPER(UtilityMenuParametersArrayOperationsVectorOperations)对
20、两个输入数组矢量进行运算,输出一个数组矢量*VFUN(UtilityMenuParametersArrayOperationsVectorFunctions)对一个输入数组矢量执行某函数运算,输出一个数组矢量*VSCFUN(UtilityMenuParametersArrayOperationsVector-ScalarFunc)确定单个输入数组矢量属性,并将结果存放到指定的标量参数中*VITRP(UtilityMenuParametersArrayOperationsVectorInterpolate)通过在指定的表下标位置插入一个数组参数(TABLE类型)来生成一个数组参数(ARRAY类型
21、),November1,2002,数组参数之间的运算,*DIM,Z1,ARRAY,4*VOPER,Z1(1),X(1,2),ADD,Y(1,1),*DIM,Z2,ARRAY,3*VOPER,Z2(1),X(2,1),MULT,Y(1,4),*DIM,Z4,ARRAY,4,3*VOPER,Z4(1,1),X(1,1),CROSS,Y(1,2),November1,2002,数组参数之间的运算,*DIM,A3,ARRAY,4*VFUN,A3(1),PWR,X(1,2),2,*DIM,A4,ARRAY,7,3*AFUN,DEG*VFUN,A4(1,1),COS,THETA(1)*VFUN,A4(1,
22、2),SIN,THETA(1)A4(1,3)=2,2,2,2,2,2,2,November1,2002,数组参数之间的运算,*DIM,A5,ARRAY,7,3*VFUN,A5(1,1),TANG,A4(1,1),*DIM,B1,4*DIM,B2,3*DIM,B3,4B1(1)=10,20,30,40B2(1)=2,4,1*VOPER,B3(1),B1(1),GATH,B2(1),November1,2002,矩阵运算,矩阵运算是一种数值数组参数之间的数学运算矩阵相乘;求解联立方程组;对矩阵中的某个指定矢量排序(按上升顺序);计算两个矢量之间的协方差;计算两个矢量之间的相关性;,November
23、1,2002,矩阵运算排序,*dim,oldorder,5*moper,oldorder(1),sortdata(1,1),sort,sortdata(1,1),若要恢复SORTDATA数组为初始顺序,那么就要执行下面的命令:*moper,oldorder(1),sortdata(1,1),sort,oldorder(1,1),November1,2002,矩阵运算-求解联立方程组,*DIM,C,4*MOPER,C(1),A(1,1),SOLV,B(1),November1,2002,矩阵运算-转置,*DIM,DATATRAN,2,3*MFUN,DATATRAN(1,1),TRAN,DATA(
24、1,1),November1,2002,矩阵运算,*MFOURI(UtilityMenuParametersArrayOperationsMatrixFourier)计算傅立叶级数的系数或求傅立叶级数。,November1,2002,用于矢量和矩阵运算的命令,所有矢量和矩阵运算都受到某些命令的影响*VCUM、*VABS、*VFACT、*VLEN、*VCOL和*VMASK只有*VLEN和*VMASK与*VREAD或*VWRITE连用时,对字符数组参数有效可以通过*VSTAT命令来查看这些命令的状态菜单UtilityMenuParametersArrayOperationsOperationSet
25、tings,November1,2002,用于矢量和矩阵运算的命令,*VCUM指定结果累加或不累加(覆盖已有结果)。ParR为矢量运算的结果,要么被加入一个已存在的同名参数中,要么被覆盖。缺省为不累积结果,即ParR覆盖掉已存在的同名参数ParR=ParR+ParR(Previous)*VABS使矢量运算中的某个或所有参数取绝对值,缺省为实数值*VFACT对矢量运算中的某个或所有参数乘以一个比例因子,比例因子缺省为1.0*VCOL指定矩阵运算中列的数目,缺省为从指定起始处填满结果数组的所有位置*VLEN指定数组参数运算中被用到的行的数目*VMASK指定某个数组作为屏蔽矢量,November1,
26、2002,命令的相互影响,November1,2002,矢量操作设置例子,*DIM,CMPR,ARRAY,4,4*VLEN,4,2!每四行执行下一个*V-运算,每次跳过一行*VFUN,CMPR(1,2),COMP,Y(1,1)*VMASK,X(1,3)!使用X的列3作为下一个*V-运算的屏蔽矢量。*VFUN,CMPR(1,3),COMP,Y(1,2),*VLEN,NROW,NINC*VMASK,Par*VFUN的COMP操作:根据*VMASK和*VLEN的设置压缩数组,November1,2002,矢量操作设置例子,numdp=2*vfact,10*numdp*vfun,numdata(1),
27、copy,numdata(1)*vfun,numdata(1),nint,numdata(1)*vfact,10*(-numdp)*vfun,numdata(1),copy,numdata(1),numdp=2*vfact,10*numdp*vfun,numdata(1),copy,numdata(1)*vfact,10*(-numdp)*vfun,numdata(1),nint,numdata(1),更简洁,直接取整,并按VFACT的设置缩放,截断一位小数,November1,2002,矢量操作设置例子,*dim,maskvect,100*vfill,maskvect(2),ramp,1*d
28、o,factor,2,10,1*vlen,factor*vfill,maskvect(factor*2),ramp,0*enddo*vmask,maskvect(1)*dim,numbers,100*vfill,numbers(1),ramp,1,1*status,numbers(1),1,10,PARAMETERSTATUS-NUMBERS(5PARAMETERSDEFINED)(INCLUDING2INTERNALPARAMETERS)LOCATIONVALUE1110.000000000E+002112.000000003113.000000004110.000000000E+005115.000000006110.000000000E+007117.000000008110.000000000E+009110.000000000E+0010110.000000000E+00,输出结果可以由*STATUS命令显示出来,NUMBERS中的前10个元素为:,找出100以内的素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理学导论:健康管理与实践
- 鼻咽癌病例分享
- 2025版消防设施设备租赁与安装服务合同
- 二零二五年煤炭开采车间承包经营协议范本
- 二零二五年度七星级酒店客房清洁服务合作协议
- 二零二五年度汽车维修厂车辆运输合作协议书
- 2025版厂区历史文化景观保护与施工合同
- 二零二五年度白糖产品研发企业原料采购合同
- 二零二五年度电商专用场商铺租赁协议
- 二零二五年度移动应用开发与销售合同模板
- 质量指标护理课件
- 2024年度医院医疗设备维修保养情况报告课件
- 民兵护路知识讲座
- 古城墙修复专项施工方案
- 工程监理大纲监理方案服务方案
- GB/T 3372-2010拖拉机和农业、林业机械用轮辋系列
- GB/T 2007.1-1987散装矿产品取样、制样通则手工取样方法
- 一例糖尿病合并脑梗死-护理查房概要
- 2023年宝应县(中小学、幼儿园)教师招聘笔试题库及答案解析
- 公司制成检验记录表
- 全集举一反三课件奥数五年级(数学)
评论
0/150
提交评论