附代码基于C 的ANSYS二次开发
基于C__NET的ANSYS二次开发优化设计技术及应用_李淇阳
![基于C__NET的ANSYS二次开发优化设计技术及应用_李淇阳](https://img.taocdn.com/s3/m/82b4d2fa5ef7ba0d4a733b39.png)
1 基 于 C#.NET 的 ANSYS二 次 开 发 技 术 路线
[10] 何良汉.5 万 t/a丙 烯 腈 装 置 废 物 焚 烧 炉 炉 膛 衬 里 改 造 [J].化 工 建 设 工 程 ,2001(3):26-27. (HE Liang-han.The Re-Equipment of the Trash In- cinerator Liner of a 50 000t/a Acrylonitrile Apparatus [J].Chemical Engineering Construction,2001(3): 26-27.) (许 编 )
基于微软.NET 框架的面向对象程序语 言 C# 已经成 为 当 今 主 流 开 发 语 言,可 用 集 成 开 发 环 境 Visual studio来开 发 专 用 分 析 系 统。ANSYS 二 次 开发的 优 化 设 计 主 要 涉 及 有 面 向 对 象 编 程 语 言 .NET Framework 技 术、ANSYS 二 次 开 发 接 口 技 术、ANSYS 的 优 化 分 析 技 术、ANSYS 的 数 据 库 和 文件系统数据库访问封装技术以及 ANSYS二次开 发的专用系统集成 技 术,专 用 分 析 系 统 的 总 体 技 术 框 架 见 图 1。
Techniques and Applications on Optimal Design
Based on C# .NET for the Redevelopment of ANSYS
ANSYS的二次开发技术
![ANSYS的二次开发技术](https://img.taocdn.com/s3/m/92ba5bf9bb4cf7ec4afed0c2.png)
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++的支持。
附代码基于C 的ANSYS二次开发
![附代码基于C 的ANSYS二次开发](https://img.taocdn.com/s3/m/6175a60f55270722192ef78c.png)
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二次开发概述](https://img.taocdn.com/s3/m/d11371ddcfc789eb162dc80e.png)
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二次开发概述](https://img.taocdn.com/s3/m/0943c8930b1c59eef9c7b45b.png)
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的结构拓扑优化及其二次开发](https://img.taocdn.com/s3/m/5bd00f6525c52cc58bd6bebf.png)
基于ANSYS的结构拓扑优化及其二次开发摘要:本文吸收了“基结构法”和“均匀化法”的思想,提出了“通过力传递的路径来构造拓扑”和“逐次去劣、两极分化”的拓扑优化新思路和方法,对有限元软件ANSYS的拓扑优化功能作了二次开发,拓展了ANSYS拓扑优化结构单元的适用种类,且不仅可以求解连续结构的拓扑优化问题,还可以求解桁架结构的拓扑优化问题,编制了相应程序考证了连续体和桁架两种类型的典型算例,最后将此方法应用于一个船舶板架结构优化中,得到了预期的结果。
关键词:结构分析;拓扑优化;APDL中图法分类号:U661.43;O189.1 文献标志码:A1、引言结构优化设计大致可以分为三类,即尺寸优化,形状优化,和拓扑优化。
相对于前两种优化,拓扑优化能从根本上改变结构的拓扑,更能体现真正意义上的最优设计。
虽然拓扑优化的价值很可观,但是拓扑优化设计被公认为结构优化领域中比较困难的课题。
这是由于在优化过程中,结构分析和优化模型以及设计空间、可行域都在不断变化,而且拓扑变量(逻辑性变量)的0—1特性造成了问题的不连续性和不可微性。
结构拓扑优化研究可以认为是从1904年Michell提出的Michell桁架理论开始的[1]。
其后人们又陆续提出了一些优化方法,Dorn等人[2]提出了基结构法,他们建立由结构节点、荷载作用点和支撑点组成的节点集合,集合中所有节点之间用杆件相连,形成所谓“基结构”。
在单工况下考虑应力约束,以内力为设计变量,构造线性规划求解。
此外,程耿东等人[3]在弹性板的最优厚度分布研究中将最优拓扑问题转化为尺寸优化问题。
而Bendsoe、Kikuchi[4]提出了“均匀化法”,用带有孔洞的微结构构造设计区域,微结构孔洞大小作为设计变量,将拓扑优化问题转化为材料最优分布问题。
隋允康[5]对拓扑变量进行了重新思考与定义,从拓扑变量的“独立性”和“光滑性”出发,按“关系映射反演”原则去解决问题。
本文介绍了ANSYS拓扑优化,并在此基础上通过APDL(ANSYS参数化设计语言)作了二次开发。
ANSYS二次开发与应用简介
![ANSYS二次开发与应用简介](https://img.taocdn.com/s3/m/7c848639eefdc8d376ee32ab.png)
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二次开发](https://img.taocdn.com/s3/m/9d98551b227916888486d741.png)
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命令流、二次开发与HELP文档
![ANSYS命令流、二次开发与HELP文档](https://img.taocdn.com/s3/m/ad217382ec3a87c24028c436.png)
ANSYS命令流、二次开发与HELP文档(一)简介ANSYS在操作时有两种途径,一种是GUI途径,即通过ANSYS可视化的操作菜单来实现对分析过程的操作,而另外一种就是所谓的命令流,这更像是一种后台操作,操作者分析的过程即是将一条条ANSYS命令按照自己的分析思路组织起来,而ANSYS通过调用这些命令完成分析。
初学ANSYS的人,对命令流充满了迷惑,因为当拿出一个分析过程自动形成的.log文件之后发现一行一行犹如天书,但这些正是ANSYS命令的真实面目,而我们常使用的菜单操作只不过是把这些命令的本来面目给遮盖起来了,在学习ANSYS的过程中,随着学习过程的深入,加之以对命令流本身有个追本溯源的原动力驱使,命令流本身也不是很难。
命令流与菜单操作相比各有其优缺点,学习ANSYS一般从菜单操作开始,因为菜单操作能够做到于使用者直接对话,简洁和可视化,但其缺点是如果一直按照菜单操作的方式进行便不能窥视到ANSYS的工作过程,尤其是在进行同个问题变换其中一个或几个参数进行分析时,其重复操作的工作太多,大大减小了分析的趣味性,把精力放在了没有技术含量的操作上。
ANSYS命令流则弥补了这一缺陷,虽然难以理解,但当使用命令流进行分析时,能够大大的缩短分析的手工工作量,尤其是配合一定APDL语句,能够使分析过程自动进行,而操作者要做的仅仅是调用已经编制好的命令流文件而已,这时操作者的精力将会是放在对整个分析过程的分析和研究上,因为一旦分析过程研究及其实现机理研究透彻,那随之而来的所谓分析只是计算机自己的问题,操作者可以调用完命令之后随心所欲的做其他事情,而且学习命令流可以更好的理解ANSYS的工作过程和分析机理,这是菜单操作方式所没有的,我们在学习ANSYS过程中,菜单操作仅仅是对ANSYS使用环境熟悉的一个过程。
谈到命令流的种种优点,便引起这样一个问题,如何学习ANSYS命令流?更确切的说如何入门命令流?学习ANSYS的人会发现,初学ANSYS命令流会感到无从下手,不知道该如何去进入这个世界,好像是ANSYS命令流的世界只有一个很小的门,大多数人都钻不过去,只有少数人钻了过去看到了里面的美妙景象,其实来说命令流的世界没有想象的这么难以进入。
基于数据文件的ANSYS二次开发_p
![基于数据文件的ANSYS二次开发_p](https://img.taocdn.com/s3/m/169d07d976eeaeaad1f3306e.png)
2.4 数据存储
通过读取数据文件,我们往往希望提取大量的数据,而且这些数据的多少也可能并不知 道,没有办法给数组提前分配空间。因此,采用 MFC 中定义的一组数组类,能够极大的方便 数据的存储和调用。这些数组类分为不基于模板类和基于模板类两种[3]。可以方便的定义整 数类数组,无符号整数变量数组,CString 数组,double 类型数组及其该类型的指针数组等。 这些数组类还具有许多成员函数如:InsertAt(),Add(),GetSize()等,能够方便实 现插入,在数组末端增加数组元素,获得数组元素的个数等功能,简化了对获取数据的操作。
标准值
-3-
最大值
86.78
115.68
114.63
106.47
117.5
误差
26.1%
1.5%
2.4%
9.4%
-
最小值
-69.65
-93.58
-101.55
-107.93
-117.5
误差
40.7%
20.4%
13.6%
8.1%
从图表可以看出后两种网格细分得到了比较精确的残余应力分布,但从图 3(c)(d) 对比中可以看出,自定义网格细分的网格数更少,减少了数据的处理量。图 3(d)的截面 自定义网格细分文件是通过在 ANSYS 中调用带参数的外部可执行程序来实现的,由此进一 步看出,通过外部程序可以改进和增强 ANSYS 处理问题的能力。
-2-
加了注释语句的情况。ReadDouble(),AbsReadDouble()函数类似于整数读取函数,用 于读取一个浮点数。FindKeyWordPo(s )函数采用函数重载,分别从文件开头或者 iCurCharPos 指针处,查找关键字。SkipNRow()函数可以跳过 n 行,指针指向新行行首。SkipNewRow ()函数实现结束本行读取,将指针指向新行行首。后四个成员函数可以以不同方式,有效 地将指针定位需要提取的数据处,通过整数或浮点数读取函数获得需要的数据。
基于VB语言的EXCEL和CST以及AutoCAD与ANSYS等的二次开发
![基于VB语言的EXCEL和CST以及AutoCAD与ANSYS等的二次开发](https://img.taocdn.com/s3/m/17ab0d2f7375a417866f8fa5.png)
基于VB语言的EXCEL、CST以及HFSS等的二次开发代码1:vb创建xls表,并写入内容Set ExcelApp = CreateObject("Excel.Application") '创建EXCEL对象Set ExcelBook = ExcelApp.Workbooks.AddSet ExcelSheet = ExcelBook.Worksheets(1) '添加工作页ExcelSheet.Activate '激活工作页ExcelApp.DisplayAlerts = False="sheet1"ExcelSheet.Range("A1").Value = 100 '设置A1的值为100ExcelBook.SaveAs "d:\test.xls" '保存工作表msgbox "d:\test.xls创建成功!"ExcelBook.closeset excelApp=nothingset ExcelBook=nothingset ExcelSheet=nothing将以上代码copy到记事本存为"writexls.vbs"文件,可运行测试代码2:读execel文件Set ExcelApp = CreateObject("Excel.Application") '创建EXCEL对象Set ExcelBook = ExcelApp.Workbooks.open("d:\test.xls")Set ExcelSheet = ExcelBook.Worksheets(1)msgbox ExcelSheet.Range("A1").Value将以上代码copy到记事本存为"readxls.vbs"文件,可运行测试代码3:上述代码联合调试Dim ExcelApp,ExcelBook,ExcelSheetSet ExcelApp = CreateObject("Excel.Application") '创建EXCEL对象Set ExcelBook = ExcelApp.Workbooks.AddSet ExcelSheet = ExcelBook.Worksheets(1) '添加工作页ExcelSheet.Activate '激活工作页ExcelApp.DisplayAlerts = False="sheet1"ExcelSheet.Range("A1").Value = 100 '设置A1的值为100ExcelBook.SaveAs "D:\Study\VBS\Book1.xls" '保存工作表msgbox "d:\Book1.xls创建成功!"ExcelBook.closeset excelApp=nothingset ExcelBook=nothingset ExcelSheet=nothing'ExcelApp.WorkBooks.Close'ExcelApp.QuitSet ExcelApp = CreateObject("Excel.Application")ExcelApp.Visible = True'创建EXCEL对象Set ExcelBook = ExcelApp.Workbooks.open("D:\Study\VBS\Book1.xls")Set ExcelSheet = ExcelBook.Worksheets(1)msgbox ExcelSheet.Range("A1").ValueExcelApp.WorkBooks.CloseExcelApp.Quit若对支持VB脚本的软件进行二次开发,上述描述有借鉴意义。
ANSYS二次开发概述
![ANSYS二次开发概述](https://img.taocdn.com/s3/m/352ccc740b1c59eef8c7b41d.png)
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多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。
附代码基于C++的ansys二次开发
![附代码基于C++的ansys二次开发](https://img.taocdn.com/s3/m/d9263204a6c30c2259019e3a.png)
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 进行二次开发 [精华]](https://img.taocdn.com/s3/m/eaeddf0502020740be1e9bd1.png)
标准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程序的接口 及 二次开发经验](https://img.taocdn.com/s3/m/edd8bac30c22590102029ddd.png)
将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程序的二次开发
![ANSYS程序的二次开发](https://img.taocdn.com/s3/m/43b68a2e5901020207409c87.png)
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二次开发及应用
![ANSYS二次开发及应用](https://img.taocdn.com/s3/m/feac006daf1ffc4ffe47ac9f.png)
如何定制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步,直到获得合适数量的区格和节点。
ANSYS二次开发概述
![ANSYS二次开发概述](https://img.taocdn.com/s3/m/25f4747f8762caaedc33d473.png)
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多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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软件的二次开发功能,以VC++6.0为工具,运用APDL语言,对ANSYS进行二次开发,编制框筒结构-桩筏基础-土相互作用体系与地震反应分析程序。
2程序设计目标针对某一实际工程问题,ANSYS所提供的APDL语言可对ANSYS软件进行封装。
APDL语言即ANSYS软件提供的参数化设计语言,它的全称是ANSYS ParametricDesign Language。
使用APDL语言可以更加有效地进行分析计算,可以轻松地进行自动化工作(循环、分支、宏等结构),而且,它是一种高效的参数化建模手段。
使用APDL语言进行封装的系统可以只要求操作人员输入前处理参数,然后自动运行ANSYS进行求解。
但完全用APDL编写的宏还存在弱点。
比如用APDL 语言较难控制程序的进程,虽然它提供了循环语句和条件判断语句,但总的来说还是难以用来编写结构清晰的程序。
它虽然提供了参数的界面输入,但功能还不是太强,交互性不够流畅。
针对这种情况,本文用VC++6.0开发框筒结构-桩筏基础-土相互作用有限元分析程序(简称LWS程序)。
本程序设计目标是利用VC++6.0对ANSYS进行封装。
用VC++6.0对ANSYS模拟框筒结构-桩筏基础-土相互作用进行二次开发,用户只需输入诸如地震波、计算时间步长、阻尼比等物理性能参数等,系统就能自动调用ANSYS计算程序,自动进行网格划分、地震动加载以及自动求解。
该系统由于前台开发友好、方便、易用的人机交互界面,对复杂的、难于理解和掌握的ANSYS命令流进行后台封装,因此,程序设计可让即使从未认真学习过ANSYS软件的工程设计人员也能很好地借助本系统进行结构抗震性能有限元分析,具有较强的处理实际问题能力。
用户输入计算参数,即可调用后台的ANSYS命令进行计算,ANSYS把计算结果返回给用户,进行后处理。
程序设计的主要原则和功能如下:(1)方便原则,即程序模块应具有良好的用户界面和易用性。
程序前台设计采用Windows提供的标准图形用户界面(GUI),用户无须接受专门训练即可使用。
同时,程序应具有良好的容错和纠错能力,避免用户操作不当造成损失。
(2)程序系统能够提供用户以下功能:①允许用户可以根据实际计算工况,输入特定的计算参数,包括地震波选择、计算时间步长、地震波调幅与否等。
②用户在输入各种参数以后、进行计算之前可以对输入的数据进行修改、添加和删除操作,以保证输入正确的参数。
③用户通过界面调用后台的ANSYS命令流进行计算,能够得到最后的计算结果文件,供用户进行后处理和结果分析。
④用户可以添加新的功能或新的二次开发以实现程序升级。
(3)程序应具有良好的可移植性,不依赖于特定的硬件设备,只要能安装ANSYS 和VC++6.0的硬件环境都能使用本系统,保证程序使用的广泛性。
(4)程序代码应具有开放性和可重用性。
这样,在进一步的设计中,能保证设计者可以方便地对代码进行修改扩充;同时,提供一定的设计接口,新的设计者可以根据接口,无须对程序进行大幅度的修改,就可以进行新的开发,以适应新的特殊要求。
程序的开发平台是Microsoft VC++6.0、ANSYS6.1,基于WindowsXP编程。
程序实现是利用微软提供的Windows编程接口MFC和ANSYS公司的ANSYS/Multiphysics产品,采用面向对象的程序设计方法。
3程序的主要模块和设计如图3-2所示,程序的主要模块有:用户界面模块、ANSYS计算模块、VC调用接口模块和VC后处理模块,分别论述如下:3.1ANSYS模块ANSYS为了满足用户的特殊需求,建立了开放的体系结构,提供了二次开发接口APDL、UIDL和UPFs(User Programming Features,用户编程特性)等。
其中,ANSYS接口允许用户将自己的VC代码连到ANSYS中去,或将ANSYS作为子程序调用,从而使ANSYS具备特殊的功能。
本文的ANSYS模块是使用APDL语言进行二次开发的。
在上面的二次开发中用到了参数化设计方法。
参数是APDL的变量(它们更象FORTRAN变量,而不像FORTRAN 参数),不必明确声明参数类型,所有数值变量都以双精度数存储。
被使用但未声明的参数都被赋予接近0的“极小值”。
在二次开发中使用参数化设计方法,增强了程序的易读性和可移植性。
用户无须了解程序的具体结构只需改变参数值就可自动调用ANSYS模块。
3.2VC调用模块VC调用模块在该系统中起着接受用户界面的输入、创建进程调用ANSYS模块进行计算的重要作用。
有两项工作是在实现在VC程序中调用ANSYS必须做的,一是要使接口程序能够修改ANSYSB的命令流文件路径及文件名称,这可通过注册表编程实现;二是要能在接口程序中运行ANSYSB应用程序,这涉及到创建进程的编程,下面分别介绍它们的具体实现。
1.注册表编程在Windows(98/NT/2000/XP)系统上运行ANSYS安装程序后,便在Windows系统的注册表里记录了一些信息,如初始工作路径,文件名等。
利用VC平台调用ANSYS 计算模块的程序必须指定ANSYS软件的运行目录以及用APDL语言开发的ANSYS 模块程序路径,这样,ANSYS软件的批处理程序才能从给定的路径下读取命令流文件。
在接口程序中修改这些注册表信息,可以使用Windows提供的注册表编辑API(Application Programming Interface)函数[30,31],具体实现如下:HKEY hSubKey;//定义子键LONG lRet;char RegPath[200]="SoftWare\\ANSYS,Inc.\\ANSYS\\ANSYS6.1\\0";lRet=RegOpenKeyEx(HKEY_CURRENT_USER,RegPath,0,KEY_ALL_ACCESS,&hSubKey) ;//打开子键if(lRet!=ERROR_SUCCESS)return;lRet=RegSetValueEx(hSubKey,"Extension",0,REG_SZ,(LPBYTE)"txt",3);//设置ANSYS批处理程序读取的文件扩展名if(lRet!=ERROR_SUCCESS)return;lRet=RegSetValueEx(hSubKey,"Jobname",0,REG_SZ,(LPBYTE)"ZHY");//指定ANSYS模块文件名if(lRet!=ERROR_SUCCESS)return;lRet=RegSetValueEx(hSubKey,"WorkingDirectory",0,REG_SZ,(LPBYTE)"E:\\L WS\\Workspace",16);if(lRet!=ERROR_SUCCESS)return;//键值出错返回RegCloseKey(hSubKey);//关闭子键通过以上的设置后运行ANSYS批处理程序,界面变成如图3-3所示。
从图中可看出ANSYS模块工作路径E:\\LWS\\Workspace、初始文件名ZHY、ANSYS 程序文件名ZHY.txt文件、计算结果输出文件名ZHY.out都已经自动出现在ANSYS批处理程序的输入框,往下ANSYS就可以自动从ZHY.txt读取命令流进行计算并将结果输出到ZHY.out文件中。
若想改ANSYS模块路径或文件名只需对上面程序稍加修改即可。
2.多进程编程本文在VC平台上对ANSYS进行封装,希望前台处理系统和用户的交互,而后台进行ANSYS的计算。