ANSYS二次开发
[2]ansys的upfs二次开发概述与算例
*** 用户可编程特性 (UPFs) ***ANSYS程序的开放结构允许用户连接自己的FORTRAN程序和子过程。
实际上,现在用户看到的许多ANSYS“标准”用法都是由以前用户过程引进的。
1.1 什么是UPFs?用户可编程特性是ANSYS的功能允许用户使用自己的FORTRAN程序。
UPFs适用于ANSYS/Multiphysics, ANSYS/Mechanical, ANSYS/Structural, ANSYS/PrepPost和ANSYS/University(研究版和大学版)产品系列。
UPFs允许用户根据需要定制ANSYS程序,如用户定义的材料性质,用户单元类型,用户定义的失效准则等。
用户还可以编写自己的优化设计算法将整个ANSYS程序作为子过程来调用。
注意:用户使用UPFs必须十分小心仔细。
通过连接自己的FORTRAN程序,用户生成了一个针对用户特定计算机的ANSYS程序版本。
在并行系统中使用ANSYS时不允许使用用户可编程特性。
另外,UPFs是一种非标准的使用方法,ANSYS公司质量保证的测试程序没有包括这部分内容。
用户必须负责保证用户子程序结果正确并不影响别的标准功能的运行。
1.2 如何使用UPFs?UPFs可以从简单的单元输出功能到很复杂的用户单元或用户优化算法。
因此,不进行特定的程序细节描述是很难完成这些子程序功能的。
在Programmer's Manual for ANSYS中有详细的解释。
一个典型的UPF包括下列步骤:1). 在FORTRAN77中编制用户程序。
在ANSYS中所有的用户程序源代码都是公开的。
大部分完成至少一个简单的功能,因此在编制程序前应列出一份完整的可用程序表。
2). 编译并将用户程序连接到ANSYS程序中,生成新版本的ANSYS。
3). 用户可能要验证自己做的改动是否影响其他ANSYS标准功能的使用。
可以通过做几个ANSYS Verification Manual中的例题来验证。
ANSYS的二次开发技术
ANSYS的二次开发技术ANSYS 的二次开发技术ANSYS 提供的二次开发工具有三个:参数化设计语言(ANSYS Parametric Design Language,APDL),用户界面设计语言(User Interface Design Language,UIDL)以及用户可编程特性(User Programmable Features,UPFs)。
其中,前两种可归类为标准使用特性,后一种为非标准使用特性。
ANSYS 参数化设计语言(APDL)APDL 扩展了传统有限元分析范围之外的能力,提供了建立标准化零件库、序列化分析、设计修改、设计优化以及更高级的数据分析处理能力,包括灵敏度研究等。
ANSYS 用户可编程特性(UPFs)利用UPFs,用户可以开发下列方面的功能程序:(1) 开发用户子程序实现从ANSYS 数据库中提取数据或将数据写入ANSYS 数据库。
该种子程序可以编译连接到ANSYS 中,此时ANSYS 提供了10 个数据库操作命令;如果作为外部命令处理,可以在ANSYS 的任何模块中运行;(2) 利用ANSYS 提供的子程序定义各种类型的载荷,其中包括BF 或BFE 载荷、压力载荷、对流载荷、热通量和电荷密度等;(3) 利用ANSYS 提供的子程序定义各种材料特性,包括塑性、蠕变、膨胀、粘塑性、超弹、层单元失效准则等;(4) 利用ANSYS 提供的子程序定义新单元和调整节点方向矩阵,ANSYS 最多可以有6 个独立的新单元USER100-USER105;( 5) 利用ANSYS 提供的子程序修改或控制ANSYS 单元库中的单元;(6) 利用UEROP 创建用户优化程序,可以用自己的算法和中断准则替换ANSYS 优化过程。
(7) ANSYS 程序作为子程序在用户程序中调用,如用户自定义的优化算法。
ANSYS 软件本身是通过FORTRAN 和C 语言开发的。
使用UPFs 进行二次开发,在安装ANSYS 的基础上,还需要Compaq Visual FORTRAN 和MS Visual C++的支持。
ansys项目二次开发思路
ANSYS二次开发思路一、基于VC++和ANSYS组合的开发:1.整体思路:利用VC++ 6.0设计界面,设计人员在界面上输入相应的参数。
设置提前已经建好的命令流文件中的对应参数。
将命令流文件提交给ANSYS软件进行批处理操作,分析计算后生成各种结果。
通过点击界面的按钮来查看输出的图形等结果。
2.设计中的关键点:2.1 修改命令流相应的参数:ANSYS软件自带一种批处理语言APDL语言,APDL命令流文件中包含了设置参数的命令,因此可以将修改的参数输入到命令流文件中。
2.2 调用ANSYS软件进行分析:通过VC++ 6.0自带的调用其他应用程序的函数,启动ANSYS运行命令流文件。
2.3 结果的显示:如何实现图形结果的显示是设计的一个关键和难点,在这个软件设计中,通过对后处理部分的封装,实现了用户点击界面的按钮就可以在对话框中显示结果的功能。
二、基于VC++和ANSYS相对分离的开发:1.整体思路:用VC++设计一个文本框,可以输入需要修改的参数,修改之后点击按钮,就可以在ANSYS的工作目录下生成与输入参数相关的建模分析和显示相关的命令流清单的宏文件。
然后当再点击结束按钮时,自动退出上面的界面。
进入ANSYS7.0的主界面,这时在ANSYS7.0的toolbar栏中应包括可以调用相应宏的按钮,当点击相关的按钮后,就可以达到自动调用前面生成的宏,自动完成建模加载分析,自动显示的目的。
2.特点:这种思路由于利用了VC++和ANSYS相对独立的开发,比第一种思路完成起来简单。
三、利用ANSYS的二次开发技术直接在ANSYS软件上进行开发:1.整体思路:ANSYS为用户进行程序界面设计提供了一种专用语言即UIDL。
UIDL是一种程序化的语言,它允许用户改变ANSYS的图形用户界面(GUI)中的一些组项。
UIDL提供了一种允许用户灵活使用、按个人喜好来组织设计ANSYS图形用户界面的强有力工具。
在修改参数方面ANSYS提供参数设计语言APDL,以更方便的方式进行程序编辑。
附代码基于C 的ANSYS二次开发
ansys二次开发1概述ANSYS是一套功能十分强大的有限元分析软件,能实现多场及多场耦合分析;是实现前后处理、求解及多场分析统一数据库的一体化大型FEA软件;支持异种、异构平台的网络浮动,在异种、异构平台上用户界面统一、数据文件全部兼容,强大的并行计算功能支持分布式并行及共享内存式并行。
该软件具有如下特点:(1)完备的前处理功能ANSYS不仅提供了强大的实体建模及网格划分工具,可以方便地构造数学模型,而且还专门设有用户所熟悉的一些大型通用有限元软件的数据接口(如MSC/NSSTRAN,ALGOR,ABAQUS等),并允许从这些程序中读取有限元模型数据,甚至材料特性和边界条件,完成ANSYS中的初步建模工作。
此外,ANSYS还具有近200种单元类型,这些丰富的单元特性能使用户方便而准确地构建出反映实际结构的仿真计算模型。
(2)强大的求解器ANSYS提供了对各种物理场量的分析,是目前唯一能融结构、热、电磁、流体、声学等为一体的有限元软件。
除了常规的线性、非线性结构静力、动力分析外,还可以解决高度非线性结构的动力分析、结构非线性及非线性屈曲分析。
提供的多种求解器分别适用于不同的问题及不同的硬件配置。
(3)方便的后处理器ANSYS的后处理分为通用后处理模块(POST1)和时间历程后处理模块(POST26)两部分。
后处理结果可能包括位移、温度、应力、应变、速度以及热流等,输出形式可以有图形显示和数据列表两种。
(4)多种实用的二次开发工具ANSYS除了具有较为完善的分析功能外,同时还为用户进行二次开发提供了多种实用工具。
如宏(Marco)、参数设计语言(APDL)、用户界面设计语言(UIDL)及用户编程特性(UPFs),其中APDL(ANSYS Parametric Design Language)是一种非常类似于Fortran77的参数化设计解释性语言,其核心内容为宏、参数、循环命令和条件语句,可以通过建立参数化模型来自动完成一些通用性强的任务;UIDL(User Interface Design Language)是ANSYS为用户提供专门进行程序界面设计的语言,允许用户改变ANSYS的图形用户界面(GUI)中的一些组项,提供了一种允许用户灵活使用、按个人喜好来组织设计ANSYS图形用户界面的强有力工具;UPFs(User Programmable Features)提供了一套Fortran77函数和例程以扩展或修改程序的功能,该项技术充分显示了ANSYS的开放体系,用户不仅可以采用它将ANSYS程序剪裁成符合自己所需的任何组织形式(如可以定义一种新的材料,一个新的单元或者给出一种新的屈服准则),而且还可以编写自己的优化算法,通过将整个ANSYS作为一个子程序调用的方式实现。
ansys二次开发
ANSYS 软件及其二次开发工具
ANSYS 作为有限元领域的大型通用程序,在工业应用领域及科研方面均有深入的应用。 其广泛而有效的分析工具能解决各类问题,如结构、流体、热、电磁问题等,同时 ANSYS 还 为高级用户提供了多种二次开发工具,利用这些工具,用户可以高效地扩充 ANSYS 的功能。 本章对 ANSYS 软件和其他商业软件,以及开源软件进行了简单介绍,然后分别对 ANSYS 的 4 个二次开发工具 APDL、UPFs、UIDL 及 Tck\Tk 进行了介绍。 本章要点:
3
1 Chapter
ANSYS 二次开发及应用实例详解
图 13 ANSYS 12.0 经典 ANSYS 交互界面
1.1.3 其他有限元软件 有限元是一套博大精深的科学方法,在其多年来的发展过程中诞生了许多有限元软件,
除了众所周知的 ANSYS 之外,还有许多其他商业的及开源的软件,在这些有限元软件中很多 都为用户提供了强大的二次开发接口,对于科研人员及工程技术人员而言,对这些软件有个大 致了解是很有益处的。
近年来,随着 ANSYS 公司实力的增强,不断收购其他 CAE 软件公司,进一步扩充了 ANSYS 软件的功能。例如,ANSYS 公司于 2006 年收购了在流体领域处于领先地位的美国 Fluent 公司,于 2008 年收购了在电路和电磁仿真领域处于领导地位的美国 Ansoft 公司。通过 整合,ANSYS 公司日渐成为全球最大的仿真软件公司。目前,ANSYS 整个产品线包括结构 分析(ANSYS Mechanical)系列,流体动力学(ANSYS CFD(FLUENT/CFX))系列,电子 设计(ANSYS Ansoft)系列以及 ANSYS Workbench 和 EKM 等。本书以 Windows XP 32 位操 作系统、ANSYS 12.0 为平台编写。 1.1.2 ANSYS 12.0 的组成
ANSYS二次开发
ANSYS二次开发手册UIDL解析APDL解析目录第二章解析UIDL篇 (1)2.1结识UIDL (1)2.2看看UIDL的模样 (1)2.3 Ansys调用UIDL的过程 (4)第三章UIDL实例解析一 (6)3.1问题描述: (6)3.2环境准备: (6)3.3添加菜单: (7)3.4结束语 (9)第四章UIDL实例解析二 (10)4.1问题描述: (10)4.2环境准备及构建对话框: (10)4.3参数提取杂谈 (12)4.4结束语 (13)附录 (13)第五章UIDL实例解析三 (15)5.1问题描述 (15)5.2环境准备及构建联机帮助: (15)5.3几点说明 (18)5.4 结束语 (19)第六章解析APDL (20)6.1 熟悉新朋友—APDL (20)6.2 二次开发工具之间的比较 (20)6.3 结束语 (20)第七章APDL综合实例 (21)7.1 问题说明 (21)7.2 解题思想 (22)7.3 构建步骤 (22)7.4 几点说明 (26)7.5 结束语 (26)第二章解析UIDL篇2.1结识UIDLUIDL是什么?Ansys二次开放语言的一种。
OK,那么它能带给我们什么?很多很多,如果你想让你在Ansys中制作的用户界面具有专业水准的话,请来结识一下我们的UIDL把。
●全称:UIDL的全名是User Interface Design Language,是Ansys中二次开发工具方面的三大金刚之一。
GUI方面几乎全部的二次开发功能都将由它运筹帷幄。
●功用:⏹组织我们自己强大的菜单系统。
想象一下我们在Ansys中也能轻松做出可以和VC,VB之类主流GUI开发工具媲美的菜单响应效果,Ansys的世界将是多么的亲切、友好。
⏹构建功能繁复的对话框。
Ansys中美观易用的ContactWizard对话框级联界面一定让你印象很深把,有了它,即使是最菜鸟的门外汉也能构建一流的工程算例,Ansys5.7中的DesignSpace应该就是无可争辩的例证之一。
ANSYS2次开发-实例-chm
ANSYS2次开发-实例-chm问:⼆次开发的例题_chmUPFE. 使⽤ANSYS列表命令列出ANSYS某⼀结果⽂件的内容;编译并连接ANSYS⼆进制⽂件读写程序BINTST.F,读写⼆进制⽂件并与列表⽅式相⽐较。
1. 建⽴⼀个⾃⼰所熟悉的有限元模型,单元数3~5即可,加载、设置边界条件并求解6. 使⽤ANSYS列表命令Utility Menu->File->List->Binary File7. 在弹出的对话框中[DUMP] Records to be list中选ALL Records[FORM] Amt of output per record中选Entire Records[FILEAUX2] binary file to list中选择要显⽰的.rst⽂件按OK键确认后,可以得到.rst⽂件的列表窗⼝使⽤列表窗⼝的菜单保存列表窗⼝中的输出结果到⽂件list.txtFile->Save As8. 拷贝以下⽂件到⼯作⽬录D:\user>copy c:\ansys55\custom\misc\intel\bintst.f D:\user>copyc:\ansys55\custom\misc\intel\bintrd.f D:\user>copyc:\ansys55\custom\misc\intel\bintwr.f D:\user>copyc:\ansys55\custom\misc\intel\Custom.bat D:\user>copyc:\ansys55\custom\misc\intel\Makefile D:\user>copyc:\ansys55\custom\misc\intel\binlib.a9. 运⾏Custom.bat,编译并连接D:\user>custom在⼯作⽬录中可⽣成⼀个运⾏程序bintst.exe10. 运⾏bintst.exeD:\user>bintst > out.txt将bintst的运⾏结果转存到⽂件out.txt中⽐较out.txt 与list.txt⽂件中的结果,并参考⼿册Guide to interfacing to ANSYS中Format of Binary Data Files的Format of the Results File分析⽂件结构。
ANSYS二次开发与应用简介
ANSYS二次开发与应用简介目录1 ANSYS经典界面的二次开发简介 (2)1.1 利用ANSYS参数化设计语言(APDL)进行开发 (2)1.2 利用ANSYS用户界面设计语言(UIDL)进行开发 (3)1.3 利用ANSYS提供的接口软件与ANSYS进行实时交流 (3)1.4 ANSYS的用户可编程特征(UPFs) (3)2 ANSYS新一代协同仿真平台WORKBENCH二次开发简介 (4)3 ANSYS二次开发的典型案例 (5)4 一个ANSYS二次开发方案详细介绍(国内) (7)4.1 CCSS的构成 (7)4.2 ANSYS for CCSS与规范设计模块的关系 (7)4.3 ANSYS for CCSS的开发方案: (8)4.3.1 FEA模块将包含如下功能: (8)4.3.2 评估模块 (9)4.3.3 部件方法: (10)5 一个ANSYS二次开发成果详细介绍(国外) (11)5.1 前 言 (11)5.2 ANSYS体系结构的优势 (11)5.3 BladePro程序概览 (12)5.4 BladePro分析功能概述 (15)5.5 涡轮机械专用的后处理工具 (15)5.6 某算例的分析结果 (16)5.7 总结 (17)1ANSYS经典界面的二次开发简介1.1利用ANSYS参数化设计语言(APDL)进行开发ANSYS参数化设计语言是一种类似于FORTRAN语言的解释执行语言,它主要由两部分构成,其一为ANSYS的命令、内部函数,可以执行ANSYS的所有操作;其二为FORTRAN语言的几乎所有语法和函数,如DO循环、IF-THEN-ELSE结构、SIN和COS等所有三角函数、带参数子程序、“=”赋值语句、SQRT平方开方等运算、取绝对值、乘方等等。
因此,可以利用这种APDL语言进行各种参数化建模分析工作,当需要对模型做改动时,只需变化几个参数即可。
优点:可以用于参数化设计;与ANSYS的数据库直接通讯;可以充分利用ANSYS命令所具有的强大功能;编程容易,直管,易于调试;易于修改和扩展。
ansys二次开发
ANSYS的二次开发技术ANSYS提供的二次开发工具共有三个:参数化设计语言(ANSYS Parametric Design Language,APDL),用户界面设计语言(User Interface Design Language,UIDL)以及用户可编程特性(User Programmable Features,UPFs)。
其中,前两种可归类为标准使用特性,后一种为非标准使用特性。
ANSYS参数化设计语言(APDL)APDL扩展了传统有限元分析范围之外的能力,提供了建立标准化零件库、序列化分析、设计修改、设计优化以及更高级的数据分析处理能力,包括灵敏度研究等。
ANSYS用户可编程特性(UPFs)利用UPFs,用户可以开发下列方面的功能程序:(1)开发用户子程序实现从ANSYS数据库中提取数据或将数据写入ANSYS数据库。
该种子程序可以编译连接到ANSYS中,此时ANSYS提供了10个数据库操作命令;如果作为外部命令处理,可以在ANSYS的任何模块中运行;(2)利用ANSYS提供的子程序定义各种类型的载荷,其中包括BF或BFE载荷、压力载荷、对流载荷、热通量和电荷密度等;(3)利用ANSYS提供的子程序定义各种材料特性,包括塑性、蠕变、膨胀、粘塑性、超弹、层单元失效准则等;(4)利用ANSYS提供的子程序定义新单元和调整节点方向矩阵,ANSYS最多可以有6个独立的新单元USER100-USER105;(5)利用ANSYS提供的子程序修改或控制ANSYS单元库中的单元;(6)利用UEROP创建用户优化程序,可以用自己的算法和中断准则替换ANSYS优化过程。
(7)ANSYS程序作为子程序在用户程序中调用,如用户自定义的优化算法。
ANSYS软件本身是通过FORTRAN和C语言开发的。
使用UPFs进行二次开发,在安装ANSYS的基础上,还需要Compaq Visual FORTRAN和MS Visual C++的支持。
ANSYS 二次开发 APDL语言
参数化程序设计语言(APDL)参数化程序设计语言(APDL:ANSYS Parametric Design Language)实质上由类似于FORTRAN77的程序设计语言部分和1000多条ANSYS命令组成。
其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏以及用户程序等。
标准的AN SYS程序运行是由1000多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。
从ANSYS命令的功能上讲,它们分别对应ANSYS分析过程中的定义几何模型、划分单元网格、材料定义、添加载荷和边界条件、控制和执行求解和后处理计算结果等指令。
用户可以利用程序设计语言将ANSYS命令组织起来,编写出参数化的用户程序,从而实现有限元分析的全过程,即建立参数化的CAD模型、参数化的网格划分与控制、参数化的材料定义、参数化的载荷和边界条件定义、参数化的分析控制和求解以及参数化的后处理。
宏是具有某种特殊功能的命令组合,实质上是参数化的用户小程序,可以当作ANSY S的命令处理,可以有输入参数或没有输入参数。
缩写是某条命令或宏的替代名称,它与被替代命令或宏存在一一对应的关系,在AN SYS中二者是完全等同的,但缩写更符合用户习惯,更易于记忆,减少敲击键盘的次数。
ANSYS工具条就是一个很好的缩写例子。
用户界面设计语言(UIDL)标准ANSYS交互图形界面可以驱动ANSYS命令,提供命令的各类输入参数接口和控制开关,用户在图形驱动的级别上进行有限元分析,整个过程变得直观轻松。
用户图形界面设计语言(UIDL)就是编写或改造ANSYS图形界面的专用设计语言,主要完成以下三种图形界面的设计:主菜单系统及菜单项对话框和拾取对话框帮助系统通过用户界面设计语言(UIDL),用户可以在扩充ANSYS功能的同时建立起对应的图形驱动界面,如在主菜单的某位置增加菜单项,设计对应的对话框、拾取对话框,实现参数的输入和其它程序运行的控制,同时提供相应的联机帮助,使操作者能方便地获取系统帮助。
ANSYS命令流、二次开发与HELP文档
ANSYS命令流、二次开发与HELP文档(一)简介ANSYS在操作时有两种途径,一种是GUI途径,即通过ANSYS可视化的操作菜单来实现对分析过程的操作,而另外一种就是所谓的命令流,这更像是一种后台操作,操作者分析的过程即是将一条条ANSYS命令按照自己的分析思路组织起来,而ANSYS通过调用这些命令完成分析。
初学ANSYS的人,对命令流充满了迷惑,因为当拿出一个分析过程自动形成的.log文件之后发现一行一行犹如天书,但这些正是ANSYS命令的真实面目,而我们常使用的菜单操作只不过是把这些命令的本来面目给遮盖起来了,在学习ANSYS的过程中,随着学习过程的深入,加之以对命令流本身有个追本溯源的原动力驱使,命令流本身也不是很难。
命令流与菜单操作相比各有其优缺点,学习ANSYS一般从菜单操作开始,因为菜单操作能够做到于使用者直接对话,简洁和可视化,但其缺点是如果一直按照菜单操作的方式进行便不能窥视到ANSYS的工作过程,尤其是在进行同个问题变换其中一个或几个参数进行分析时,其重复操作的工作太多,大大减小了分析的趣味性,把精力放在了没有技术含量的操作上。
ANSYS命令流则弥补了这一缺陷,虽然难以理解,但当使用命令流进行分析时,能够大大的缩短分析的手工工作量,尤其是配合一定APDL语句,能够使分析过程自动进行,而操作者要做的仅仅是调用已经编制好的命令流文件而已,这时操作者的精力将会是放在对整个分析过程的分析和研究上,因为一旦分析过程研究及其实现机理研究透彻,那随之而来的所谓分析只是计算机自己的问题,操作者可以调用完命令之后随心所欲的做其他事情,而且学习命令流可以更好的理解ANSYS的工作过程和分析机理,这是菜单操作方式所没有的,我们在学习ANSYS过程中,菜单操作仅仅是对ANSYS使用环境熟悉的一个过程。
谈到命令流的种种优点,便引起这样一个问题,如何学习ANSYS命令流?更确切的说如何入门命令流?学习ANSYS的人会发现,初学ANSYS命令流会感到无从下手,不知道该如何去进入这个世界,好像是ANSYS命令流的世界只有一个很小的门,大多数人都钻不过去,只有少数人钻了过去看到了里面的美妙景象,其实来说命令流的世界没有想象的这么难以进入。
ANSYS二次开发概述
ANSYS二次开发概述标准ANSYS程序就是一个功能强大、通用性好的有限元分析程序,同时它还具有良好的开放性,用户可以根据自身的需要在标准ANSYS版本上进行功能扩充与系统集成,生成具有行业分析特点与符合用户需要的用户版本的ANSYS程序。
开发功能包括四个组成部分:⑴.参数化程序设计语言(APDL)⑵.用户界面设计语言(UIDL)⑶.用户程序特性(UPFs)⑷.ANSYS数据接口APDL所能实现的功能通俗的说来应该就是次于UPF而强与UIDL,但实际上就是由于三者具体侧重点不同造成的:UIDL主要控制GUI界面的各类二次开发方法,涉及的分析部分就要少一些,APDL可以称其为与分析部分频繁打交道的一组小型工具,功能强大,但不与UIDL一样能够非常具体的针对某一两方面的二次开发处理,通常情况下融合在分析的角角落落中。
UPF就是三者之间的最强者,能完成最复杂的二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但UPF在很多情况下也借助了APDL命令来完全实现其功能。
同样也能在UIDL中嵌入APDL命令,来构建比较复杂的GUI二次开发工作。
UIDL、APDL与UPF三者各有所长,密不可分。
结合使用三者,就能够实现任何强大的分析功能。
5、2 Ansys的开发功能组成部分Ansys的开发功能由三个部分组成:参数化程序设计语言(APDL)、用户界面设计语言(UIDL)、用户程序特性(UPFs)5、2、1 参数化程序设计语言(APDL)参数化程序设计语言(APDL-ANSYS Parametric Design Language)实质上由类似于FORTRAN77的程序设计语言部分与1000多条ANSYS命令组成。
其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏以及用户程序等。
标准的ANSYS程序运行就是由1000多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。
ANSYS二次开发概述
ANSYS二次开发概述标准ANSYS程序就是一个功能强大、通用性好得有限元分析程序,同时它还具有良好得开放性,用户可以根据自身得需要在标准ANSYS版本上进行功能扩充与系统集成,生成具有行业分析特点与符合用户需要得用户版本得ANSYS 程序.开发功能包括四个组成部分:⑴。
参数化程序设计语言(APDL)⑵.用户界面设计语言(UIDL)⑶.用户程序特性(UPFs)⑷。
ANSYS数据接口APDL所能实现得功能通俗得说来应该就是次于UPF而强与UIDL,但实际上就是由于三者具体侧重点不同造成得:UIDL主要控制GUI界面得各类二次开发方法,涉及得分析部分就要少一些,APDL可以称其为与分析部分频繁打交道得一组小型工具,功能强大,但不与UIDL一样能够非常具体得针对某一两方面得二次开发处理,通常情况下融合在分析得角角落落中。
UPF就是三者之间得最强者,能完成最复杂得二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但UPF在很多情况下也借助了APDL命令来完全实现其功能.同样也能在UIDL中嵌入APDL命令,来构建比较复杂得GUI二次开发工作。
UIDL、APDL与UPF三者各有所长,密不可分。
结合使用三者,就能够实现任何强大得分析功能.5、2 Ansys得开发功能组成部分Ansys得开发功能由三个部分组成:参数化程序设计语言(APDL)、用户界面设计语言(UIDL)、用户程序特性(UPFs)5、2、1 参数化程序设计语言(APDL)参数化程序设计语言(APDL-ANSYS Parametric Design Language)实质上由类似于FORTRAN77得程序设计语言部分与1000多条ANSYS命令组成。
其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏以及用户程序等。
标准得ANSYS程序运行就是由1000多条命令驱动得,这些命令可以写进程序设计语言编写得程序,命令得参数可以赋确定值,也可以通过表达式得结果或参数得方式进行赋值。
对ansys 进行二次开发 [精华]
标准ANSYS程序是一个功能强大、通用性好的有限元分析程序,同时它还具有良好的开放性,用户可以根据自身的需要在标准ANSYS版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的用户版本的ANSYS程序。
开发功能包括四个组成部分:参数化程序设计语言(APDL)用户界面设计语言(UIDL)用户程序特性(UPFs)ANSYS数据接口参数化程序设计语言(APDL)参数化程序设计语言实质上由类似于FORTRAN77的程序设计语言部分和1000多条ANSYS 命令组成。
其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏以及用户程序等。
标准的ANSYS程序运行是由1000多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。
从ANSYS命令的功能上讲,它们分别对应ANSYS分析过程中的定义几何模型、划分单元网格、材料定义、添加载荷和边界条件、控制和执行求解和后处理计算结果等指令。
用户可以利用程序设计语言将ANSYS命令组织起来,编写出参数化的用户程序,从而实现有限元分析的全过程,即建立参数化的CAD模型、参数化的网格划分与控制、参数化的材料定义、参数化的载荷和边界条件定义、参数化的分析控制和求解以及参数化的后处理。
宏是具有某种特殊功能的命令组合,实质上是参数化的用户小程序,可以当作ANSYS的命令处理,可以有输入参数或没有输入参数。
缩写是某条命令或宏的替代名称,它与被替代命令或宏存在一一对应的关系,在ANSYS 中二者是完全等同的,但缩写更符合用户习惯,更易于记忆,减少敲击键盘的次数。
ANSYS工具条就是一个很好的缩写例子。
用户界面设计语言(UIDL)标准ANSYS交互图形界面可以驱动ANSYS命令,提供命令的各类输入参数接口和控制开关,用户在图形驱动的级别上进行有限元分析,整个过程变得直观轻松。
ansys与VC&Fortran程序的接口 及 二次开发经验
将ANSYS作为子程序调用对于优化或参数化设计,可以在VC或FORTRAN中将ANSYS作为子程序调用。
具体调用方法如下:1.在VC中调用ANSYS::WinExec("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ansys_product_feature -i input_file -o output_file",SW_SHOWNORMAL);2.在FORTRAN中调用ANSYSLOGICAL(4) resultRESULT=SYSTEMQQ('d:\ANSYS57\BIN\INTEL\ANSYS57 -b -pansys_product_feature -i input_file -o output_file')3.说明1和2中,input_file为用APDL语言编写的ANSYS输入文件。
ansys_product_feature为你的ANSYS产品特征代码。
需要注意的是,在VC中调用ANSYS时,需要加一条判断语句,以确定ANSYS已经执行完毕。
在ANSYS中当然也可以以VC或FORTRAN作为子程序调用。
可以参看有关ANSYS二次开发方面的资料。
这个方法应该是与系统无关的。
在FORTRAN中不需要判断,FORTRAN会等ANSYS执行完毕才继续执行下一条语句。
在VC中,我没有找到与FORTRAN类似的函数,只好加一条循环判断语句。
如果谁能找着这样的函数,请告诉我,谢谢!判断方法很简单,只需判断错误文件file.err是否可写就可以了。
因为当ANSYS在运行时,file.err是不可写的,只有当它运行完毕,此文件才可写。
User Programmable FeaturesUPFs: What Are They?One of ANSYS’ strengths is that its toolbox will handle anything from a textbook plate with hole, all the way up to allowing you to recompile the code with FORTRAN scripts that you develop yourself. The User Programmable Feature (UPF) capability allows users to create their own subroutines and link them into ANSYS.What Are UPFs Used For?There are a variety of common uses for UPFs:• Material models• User-developed elements• User commands• Element orientation•User beam definition• Heat generation•Defining real constants “on the fly”How Hard Is It to Implement a UPF?Implementing a UPF is definitely more work than simply programming the action using APDL. However, if you have existing FORTRAN code you want to include or run externally, or have any of the above-mentioned challenges, then APDL will not suffice.To learn for yourself, you will want to surround your self with resources:• This article!•ANSYS Programmer’s Guide: User Programmable Featureso A must-have!!!!o All the needed subroutines are documented here•The hundreds of documented template scripts found within the installation directory in /custom/user•XANSYS. Submit your questions to the XANSYS community.•PADT. Submit your questions to us.What is the Process?1. Copy a sample routine from the ANSYS directories2. Modify it to do what you want3. Use the ANSYS batch compile script to compile and link4. Locate the new executable for use5. In your model, activate user features by applicable methoda. Define user elementb. Define user material modelc. Turn on user feature in element real constantsd. Define user command with /UCMDe. Setup in USRCAL command6. DebugDo I have to use FORTRAN?•All of these routines are called as FORTRAN and use FORTRAN calls to utility functions.•You could use FORTRAN wrappers to call C routines, but that is usually not worth the effort.•ANSYS provides you with a compile script to help with the process.•Don’t freak out. FORTRAN is very easy to use, and creating UPFs and recompiling ANSYS is actually very easy.You Want to Learn by Example?!?So before opening the ANSYS Programmer’s Guide, you want to take a look at what you’re getting into? Well then, buckle up...UPFs Example1, USER02.F•USER02.F contains code to offset nodes by supplied x,y,z values•Good example of structure of routines•Shows how other routines are calledTypical Header Information. Includes source control data (*deck), copyright information, confidentiality, and pointer to more information. Also function statement.*deck,user02 userANSYS,INCfunction user02 (initin,dpin,ch4in,ch8in)c *** primary function: user routine number 02c This demonstration offsets selected nodes with the command:c usr2,dx,dy,dzc *** ansys (r) copyright(c) 2000c *** ansys, inc.c *** Notice - This file contains ANSYS Confidential informationc /*************************************************************\c | see user01 for additional information on user routines |c\*************************************************************/ <snip>Arguments Section. Describes input and output arguments, what type they are, and what they are used for. Also, additional examples and help are put in this section. Externally passed and local variables are also defined here. Finally, the standard include statements are placed here.<snip>c input arguments:c variable (typ,siz,intent) descriptionc intin (int,ar(12),in) - integers from command linec dpin (dp,ar(12),in) - double precision from cmnd linec ch4in (ch*4,ar(12),in) - upper case 4 characters from cmndc ch8in (ch*8,ar(12),in) - as input 8 characters from cmndc output arguments: nonec user02 (int,sc,out) - result code (should be zero)c (which is ignored for now)c **************************************************************c intin(2), dpin(2), ch4in(2), & ch8in are all representationsc of the contents of the second field on the command linec (the field after the command label)c **************************************************************external wrinqr,ndinqr,ndgxyz,ndpxyz,erhandlerinteger wrinqr,ndinqr,ndgxyzinteger usr02,intin(12),iott,maxnp,i,kseldouble precision dpin(12),xyz(3)character*4 ch4in(12)character*8 ch8in(12)#include "ansysdef.inc"<snip>Calculations. Use ndinqr() to get max node number. This code snippet loops on all possible node numbers, checks to see if the node is selected, and gets its x, y, and z values. Then it does the offset and updates the x,y,z position with ndpxyz().<snip>maxnp = ndinqr (0,DB_MAXDEFINED)do i = 1,maxnpksel = ndgxyz (i,xyz(i))if (ksel .eq. 1) thenxyz(1) = xyz(1) + dpin(2)xyz(2) = xyz(2) + dpin(3)xyz(3) = xyz(3) + dpin(4)call ndpxyz (i,xyz(i))endifenddo<snip>Clean Up and Exit. This code snippet is used to figure out the standard ouput unit, and then write a message to it. It will also write a message to a GUI pop-up box. It will then set the return value and leave.<snip>c ***** write to output file *****iott = wrinqr(WR_OUTPUT)write (iott,2000)2000 format (/' NODE OFFSET COMPLETE '/)c ***** write to GUI window *****call erhandler ('user02',3000,x 2,'NODE OFFSET COMPLETE',0.0d0,' ')c ***** required return value *****user02 = 0returnend<snip>UPFs: Example 2, USERCR.FCreep strain due to constant applied stress:subroutine usercr (elem,intpt,mat,ncomp,kfirst,kfsteq,e,posn,d, x proptb,timval,timinc,tem,dtem,toffst,fluen,dfluen,epel, x epcrp,statev,usvr,delcr)c#include "impcom.inc"external erhandlercc user-defined fortran parametersc --- size of usvr datainteger nuval,nintpparameter (nuval=1,nintp=1)cc external subroutines and functionsexternal egendouble precision egenexternal vapb1,vamb1,vmultcc integer variablesinteger elem,intpt,mat,ncomp,kfirst,kfsteqcc double precision variablesdouble precisionx e,posn,d(ncomp,ncomp),proptb(72),timval,timinc,tem,dtem, x toffst,fluen,dfluen,epel(ncomp),epcrp(ncomp),x statev(ncomp*5+2),usvr(nuval,nintp),delcr,temabs,con,x del(6),epet,sigen,eptot,ept(6),c -PADT--- PADT added variablesx qovrk,c1,alpha,dbln,crprt,vrbflg,x aaaa,bbbb,cccc,dddd<snip>cc --- initial checksc --- author should remove the warning below when making changes if (intpt.eq.1 .and. kfirst.eq.1)cx call erhandler('usercr',5000,2,x 'ANSYS,INC.-supplied version of coding for USERCRx has been used.'x ,0.0d0,' ')cif (nuval*nintp.gt.840)x call erhandler('usercr',5010,4,x 'Maximum storage allowed by USVR has been exceeded.'x ,0.0d0,' ')cc --- initialize creep strain increment in case on creepdelcr = 0.0d0c --- no creep if time is not movingif (timinc .le. 0.0d0 .and timval .le. 0.0d0) fo to 999c --- no creep if temperature is not definedtemabs = tem + toffstif (temabs .le. 0.0d0) thenccall erhandler('usercr',5020,3,x 'Temperature= %G must be greater than zero for creep.'x ,temabs,' '_cgo to 999endif<snip>cc ***** define the equivalent strain and stress *****c --- define the equivalent strain using the function egenepet = egen (nocomp,epel(1),posn)c --- no cree if the strain is zeroif (epet .eq. 0.0d0) go to 999c --- define the stresssigen = e*epetcc ***** define the creep strain rate *****c ***** normal beginning of user changescc -PADT--- Put table values in constants for claritycc1 = proptb(1)alpha = proptb(2)dbin = proptb(3)vrbflg = proptb(5)cc -PADT--- If table item 4 (Q/k) is 0, set default of 8110if (proptb(4) .eq. 0) thenqovrk = 8110elseqovrk = proptb(4)endif<snip><snip>cc --- define the creep strain ratecrprt = c1*(sinh(alpha*sigen)**dbln)*dexp(-1*qovrk/temabs)c ***** end of sample creep lawc ***** normal end of user changescc ***** compute creep strain increments for each component ***** cc --- define the creep strain increment from the ratedelcr = crprt*timinccc --- use prandtl-reuss relations to compute increments for each if (ncomp .eq. 1) thendel(1) = delcr*epel(1)/epetelsecon = delcr/epetcon = con/(2.0d0*(1.0d0+posn))call vmult (epel(4),del(4),ncomp-3,3.0d0*con)del(1) = con*(2.0d0*epel(1) - epel(2) - epel(3))del(2) = con*(2.0d0*epel(2) - epel(3) - epel(1))del(3) = con*(2.0d0*epel(3) - epel(1) - epel(2))endifcc --- update the strainscall vapb1 (epcrp(1),del(1),ncomp)call vamb1 (epel(1),del(1),ncomp)<snip><snip>c -PADT--- Do Verbose I/O, if vrbflg eq 1if (intpt.eq.1 .and. vrbflg .eq. 1) theniott=6write (iott,*) 'element number = ',elem,' gauss point 1' write (iott,1) 'time=',timval,' stress=',sigen,' temp=',tem write (iott,2) 'delcr=',delcr,' del=',del(1)endifc -PADT--- Do Summary I/O, if vrbflr eq 2if (intpt.eq.1 .and. vrbflg .eq. 2) theniott = 34if (elem .eq. 1) thenepet = egen (ncomp,epel(1),posn)write (iott,3) elem,timval,sigen,temabs,crprt,delcr,epet endifendifc999 return1 format(2x,3(a,d15.8))2 format(2x,2(a,d15.8))3 format(2x,i6,6(',',g16.9))endANSYS Input File for USERCR!ANSYS Input File for USERCR! The ANSYS TB values are as follows:! 1 C1! 2 alpha-sub-1! 3 n! 4 Q/k (defaults to 8110)! 5 Verbose output flag (1 = verbose output, 0 = standard output) !c1 = 9.62e4a1 = 6e-4n1 = 3.3qovrk = 8110vrbs = 2TB,CREEP, 1tbdata,6,100 !use user creeptbdata,1,c1tbdata,2,a1tbdata,3,n1tbdata,4,qovrktbdata,5,vrbsUPFs: Lessons to Consider•Always try APDL macros first•Consider external commands to avoid custom versions of ANSYS•You must have the proper FORTRAN compilero See installation guide• KISS•Start by replicating the existing ANSYS functionalityo Add your changes slowly•Write and debug on simple models•Don’t be afraid of write(*,*)。
ANSYS命令流、二次开发与HELP文档之-APDL细节
对于一个打算要进入ANSYS-APDL领域的初学者来说,在使用APDL完成一个作品之前,首先要了解APDL在使用时其本身定义的语法规则和在使用该工具时的一些容易不被引起重视但容易出错而导致初学者一头雾水和郁闷的地方,这一篇从APDL的语法特点、注意细节和如何完成第一个简单的APDL模块三个方面讲述如何使用APDL来完成自己的开发过程。
1 APDL的语法特点如任何一门编程语言有自己的语法规则一样,基于ANSYS的APDL语言也有自己的语法特点和语法规则,以解释问题的方式对该篇第一部分进行描述。
可进行APDL编程的适用平台?APDL可以有三种编辑形式,第一种是ANSYS自带的宏命令编辑器,但只能编写简单的宏命令,因为行数限制无法编辑大型的宏程序;第二种是PSPAD编辑器,该编辑器的特点是和ANSYS命令连接,输入命令的前几个字母能够显示出所有以这些字母开头的命令,写命令流时比较方便,能够从网上下载到这个软件;第三种也是最简单的一种就是建一个记事本文件将其扩展名.txt改为.mac之后直接在里面编写程序语句,编写完成之后直接在ANSYS平台下就能够运行刚刚写好的APDL程序了。
APDL编程的程序行组成?APDL语言与大多数的编程语言一样都有条件语句(IF..ENDIF)、循环语句(DO…)、跳转语句(GOTO)等,这些功能语句在ANSYS的help文档ANSYS Parametric Design Language Guide部分有详细的介绍,这里仅是抛砖引玉,而非具体解释。
如何快速搭建APDL程序模块?基于ANSYS平台的APDL程序模块是绝大分得ANSYS命令和小部分的APDL功能语句组成,而ANSYS本身具有分析过程命令纪录的功能,即在分析过程中,生成的.log记事本文件就是它在分析时用到的所有命令。
当拿到一个问题进行分析,并且想要使用APDL工具进行开发最终形成自动分析模块时,最简捷和快速的方法是先摸清一次分析的全部过程,然后拿自动生成的.log文件进行修改形成自己的程序代码,并在此基础上添加进APDL功能语句,最后将.log文件改成.mac文件形成完成的宏文件。
ANSYS二次开发 [精华]
ansys具有多种实用的二次开发工具:ANSYS除了具有较为完善的分析功能外,同时还为用户进行二次开发提供了多种实用工具。
如宏(Marco)、参数设计语言(APDL)、用户界面设计语言(UIDL)及用户编程特性(UPFs),其中APDL(ANSYS Parametric Design Language)是一种非常类似于Fortran77的参数化设计解释性语言,其核心内容为宏、参数、循环命令和条件语句,可以通过建立参数化模型来自动完成一些通用性强的任务;UIDL(User Interface Design Language)是ANSYS为用户提供专门进行程序界面设计的语言,允许用户改变ANSYS的图形用户界面(GUI)中的一些组项,提供了一种允许用户灵活使用、按个人喜好来组织设计ANSYS图形用户界面的强有力工具;UPFs(User Programmable Features)提供了一套Fortran77函数和例程以扩展或修改程序的功能,该项技术充分显示了ANSYS的开放体系,用户不仅可以采用它将ANSYS程序剪裁成符合自己所需的任何组织形式(如可以定义一种新的材料,一个新的单元或者给出一种新的屈服准则),而且还可以编写自己的优化算法,通过将整个ANSYS作为一个子程序调用的方式实现。
程序设计的主要原则和功能如下:(1)方便原则,即程序模块应具有良好的用户界面和易用性。
程序前台设计采用Windows提供的标准图形用户界面(GUI),用户无须接受专门训练即可使用。
同时,程序应具有良好的容错和纠错能力,避免用户操作不当造成损失。
(2)程序系统能够提供用户以下功能:①允许用户可以根据实际计算工况,输入特定的计算参数,包括地震波选择、计算时间步长、地震波调幅与否等。
②用户在输入各种参数以后、进行计算之前可以对输入的数据进行修改、添加和删除操作,以保证输入正确的参数。
③用户通过界面调用后台的ANSYS 命令流进行计算,能够得到最后的计算结果文件,供用户进行后处理和结果分析。
ANSYS二次开发及应用
如何定制Beam188/189单元的用户化截面ANSYS提供了几种通用截面供用户选用,但有时不能满足用户的特殊需求。
为此,ANSYS提供了用户创建截面(库)的方法。
如果你需要创建一个非通用横截面,必须创建一个用户网格文件。
具体方法是,首先创建一个2-D实体模型,然后利用SECWRITE命令将其保存(MainMenu>Preprocessor>Sections> -Beam-Write Sec Mesh)。
该过程的细节如下:1.创建截面的几何模型(二维面模型)。
2.对所有线设置单元份数或者单元最大尺寸 (Main Menu>Preprocessor> -Meshing-Size Cntrls>-Lines-Picked Lines或使用MeshTool)。
记住:保证模型中的区格(cell)数目不能超过250个。
3.选择菜单Main Menu>Preprocessor>Sections>-Beam-Write Sec Mesh,弹出一个拾取窗口,单击Pick All拾取包含区格的所有面。
4.ANSYS自动在所有面上创建区格。
在划分网格时,ANSYS可能显示单元形状差的消息,也可以被忽略不显示,但是总能看到一条消息“Unable to mesh area....”。
如果已经完成上述工作,你清除所有面上的单元(Main Menu>Preprocessor>-Meshing-Clear> Areas),并重复第2、3、4步,即必须重新控制网格密度。
5.如果第4步成功则弹出Write Section Library File对话框,File Name域填入一个未用过SECT文件名,Drives域指定一个截面文件存放驱动器,Directories域指定一个截面文件存放目录,然后单击按钮OK,完成用户截面文件建立。
如果在第3步中给线指定太多单元份数,区格和节点的数目可能超过限制范围,必须清除所有面上的单元2~4步,直到获得合适数量的区格和节点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章 APDL 综合实例7.1 问题说明本章在阐明APDL 技术时本想也采取实例的方式,把APDL 的各个细节都用一个个详细的实例说清楚,无奈APDL 细节内容比较繁复,而且不和UIDL 那样各成体系,APDL 的应用很多情况下都是和UIDL 、UPF 结合在一起应用的,它甚至渗透到基础分析中的各个环节中,可以说也是ANSYS 的脚本基础。
考虑到大家都不会有兴趣来聆听枯燥的数组构建法,宏函数的参元特性等罗嗦的APDL 语法,这里我们打算用一个比较大的综合实例来想大家描述一部分APDL 的功能,从这里你将能看到我们能用APDL 干些什么。
还记得UIDL 实例解析二中的一个例子巴,这里我们有必要重温一下:如图1(a)一所示,一带孔薄板,长4000mm ,宽2000mm ,顶部中心部分1800mm 处承受42MP 的压力,左右两个长圆孔中心分别踞四周1000mm ,长圆孔的具体形式如图1(b)所示,上下分别为半圆,中部用直线衔接。
这里假设长圆长轴与水平方向夹角为α。
为了使得孔边缘应力集中最小,这里拟调整α的大小(α∈[-π/2,π/2]),以便在固定的H 情况下达到长圆孔周围应力集中最小。
在UIDL 实例二的部分我们只是在GUI 界面下实现了它的参数化建模,这部分工作在本章的综合实例中仍然有效,下面我们将一步步完全实现这一问题。
7.2 解题思想本问题是在用户给定H 的情况下求得α角的最优解,使得孔边最大拉应力最小(这是因为材料抗拉性能比较弱)。
这里我们的想法是把α取每一个角度时候得到的孔边最大拉应力都求出,比较一下,得到孔边拉应力最小情况下对应的α取值。
现在的问题是,我们只能够对每一离散的α值求取其孔图1 (b)H r边最大拉应力,让α在[0°~360°]之间连续取值不仅是无法做到的,而且在工程中也没有必要,这里我们拟每隔一定角度计算一下孔边最大拉应力,最终在这些有限的角度中求取出最佳的α值。
因此我们还需要用户自定义求解的精度参数,即我们每隔多少角度来计算一次(决定了结果精确到什么程度)。
比方说我们定义每隔5°计算一次的话,整个优化过程需要进行180/5=36次求解运算。
7.3 构建步骤下面说明一下在构建过程中的一些全局参数:My_H:用户输入的H参数值My_sita:每次计算对应的α参数值My_dsita:每两次计算之间间隔的角度值(用户输入的参数)。
My_N:总共需要分析计算的次数。
My_N=180/My_dsitaMy_sita0:初始α值,这里统一定义为0°。
My_MinS1:最优化位置处的最大拉应力值。
(计算完以后才是)My_Msita:最优化位置处对应的α值。
Mysmin:每次分析计算得到对应特定α角时的孔边最大拉应力。
(一般都是孔边产生应力集中,所以也是整个板料内部的最大拉应力处)_s1数组:对应特定α时求解得到各个节点上的最大拉应力值。
1.首先我们重新构建一比较完善的参数话建模脚本,取名为modaling.mac,该脚本针对固定的My_H和My_sita将构建整个几何模型,加好载荷和约束,具体细节请参看附录。
2.构建脚本mysolve.mac:――――――――――――――――――――――My_sita0=0My_N=180/My_dsita*do,I,0,My_N-1parsav,all,myparfini/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,mysmin,max,_s1(1)*if,I,eq,0,thenMy_MinS1=mysminMy_Msita=My_sita*ELSE*IF,mysmin,lt,My_MinS1,thenMy_MinS1=mysminMy_Msita=My_sita*ENDIF*ENDIFparsav,all,mypar*enddo―――――――――――――――――――――――――下面是几点说明:◆程序整个框架是先根据用户输入的参数定制好一些解题环境,比方说求出需要重复计算的次数My_N,然后用APDL的*do循环结构繁复执行My_N次,每次求得对应角度的孔边最大拉应力值,不断积累出这些对应角度孔边最大拉应力值的最小结果。
完成了My_N次结果后,最优结果My_MinS1和对应的角度My_Msita也就求出来了。
◆不同次分析计算过程前必须对ANSYS环境中的现有模型清零,用到/clear命令,但该命令会使用户参数同时清零,这里用到parsav和parres技术,在每次清零过程前先把当前工作区的参数保存起来,清模型结束后再调入工作区,这样就实现了只清模型、不清参数的效果。
◆解题结束后,我们先用ndinqr(0,14)这一UPF命令求取模型中的节点总数。
然后用*vget命令把所有节点上的最大拉应力都保存到_s1数组中,最后用*vscfun函数得到_s1数组中的最大值。
◆注意每次求解完提取数据时都要重新定义_s1数组的大小(因为每次划分单元后总节点数不同),这时候每次ANSYS都回出现让你确认是否把已经存在的_s1数组结构改变的对话框,这将导致自动化求解中断,这里我们采用的一个技巧是每次重新定义_s1数组前先清掉_s1数组(用_s1=命令行)。
这样救避免了Ansys的询问。
同样解决/clear命令的Ansys询问方法就是写全/clear命令:/clear,start。
注意这里我们是必须要用start参数的,它表面我们在新建模型时读入start55.ans文件,我们必须在工作目录中构建一个我们自己的start55.ans文件,里面添加上PI参数的说明(因为modaling.mac宏文件中将利用这一参数,如果系统环境中没有这一参数的说明,将产生建模错误)。
◆解决完一次运算,保存完数据后记得用parsav函数保存环境参数。
3.完善GUI参数化界面这里我们要比上次UIDL实例二中多增加一个参数My_dsita,为此我们修改UIFUNC2.GRN函数中DoProject函数:―――――――――――――――――――:N Fnc_DoProject:S 0, 0, 0:T Command:A Optimize my Project:D Please Input Custom Information:C )*Set,My_H,150:C )*Set,My_dsita,90:H Hlp_0_ContentsInp_NoApplyCmd_)*Cset,1,2Fld_0Typ_LabPrm_Custom the Geographic InformationFld_2Prm_ Please Input the Dsita for Analysis(1~90)Typ_INTDef_*PAR(My_dsita)Fld_3Prm_ Please Input the H for Analysis(100~200)Typ_INTDef_*PAR(My_H)Cmd_)/GoCmd_)*GET,My_H,CPAR,2Cmd_)*GET,My_dsita,CPAR,1Cmd_)mysolve:E END:!――――――――――――――――――――――――这里可以看到和UIDL篇中的实例相比,多加了参数My_dsita的用户化输入。
最后的命令修改成直接用文件名调用(这是因为我们把文件名后缀改为了.mac,它标志着标准的宏文件)。
最后的对话框显示如下:用户定制好分析精度和H值后,点击OK就开始了完整的分析过程。
4.求解结果最后求解完毕后得到了一些最优化结果:用*status命令可以看到所有参数结果(这里我用每隔5度进行一次分析求解):My_Msita=40°,用该最优化建模图形为:这里由于实常数对应力集中的效应没有影响,我们就不再给出具体计算结果来了。
有效的仅是在同样的载荷条件下不同角度的孔上最大拉应力的情况。
7.4 几点说明APDL中的参数化建模、优化涉及是十分复杂有效的,这里我们只是给出了一个小小的例子,用来举一反三。
套用同样的方法和机制,我们可以完成更加复杂的问题。
这里我们仅仅用到了APDL功能中的一小部分,我们完全可以想象一下UIDL+APDL+UPF能够完成什么样复杂程度的功能—几乎是任何功能!7.5 结束语这里结合APDL,UIDL和UPF讲述了一个比较综合的例子,在以后描述了UPF功能后,大家将更加为UPF功能的强大而神往不已。
附录:modaling.mac:――――――――――――――――――――――――――――――!This is a script which can create the modal with a parameter sita.!Parameter Settingsita=My_sita/180*PIr=0.2H=My_H/1000!Customize the Environmentkeyw,pr_struc,1/prep7et,1,shell63r,1,0.12,0.12,0.12,0.12uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375!Modeling!Create platek,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,5!Create hole!Create my coordinatek,7,1+H*cos(sita),1+H*sin(sita)k,10,1+H*cos(sita),1+H*sin(sita),100 k,8,1+r*cos(sita+PI/2),1+r*sin(sita+PI/2) cskp,11,0,6,7,8csys,11!Create Holek,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!Meshing the planesmrt,6amesh,all!Add DOFDK,2,UX,0, ,,UYDK,14,UX,0,,,UY!Add PressureSFL,4,PRES,42SFL,11,PRES,42―――――――――――――――――――――――――――本人要分析一个小模型,需要不断改变其中某一个结构参数,然后重新建模,加载分析。