将ansys作为子程序调用
- 格式:docx
- 大小:13.75 KB
- 文档页数:2
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多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。
第八章UPFs用法用户可编程特性(UPFs)ANSYS程序的开放结构允许用户连接自己的FORTRAN程序和子过程。
实际上,现在用户看到的许多ANSYS“标准”用法都是由以前用户过程引进的。
什么是UPFs?用户可编程特性是ANSYS的功能允许用户使用自己的FORTRAN程序。
UPFs适用于ANSYS/Multiphysics, ANSYS/Mechanical, ANSYS/Structural, ANSYS/PrepPost和ANSYS/University(研究版和大学版)产品系列。
UPFs允许用户根据需要定制ANSYS程序,如用户定义的材料性质,用户单元类型,用户定义的失效准则等。
用户还可以编写自己的优化设计算法将整个ANSYS程序作为子过程来调用。
注——用户使用UPFs必须十分小心仔细。
通过连接自己的FORTRAN程序,用户生成了一个针对用户特定计算机的ANSYS程序版本。
在并行系统中使用ANSYS时不允许使用用户可编程特性。
另外,UPFs是一种非标准的使用方法,ANSYS公司质量保证的测试程序没有包括这部分内容。
用户必须负责保证用户子程序结果正确并不影响别的标准功能的运行。
如何使用UPFs?UPFs可以从简单的单元输出功能到很复杂的用户单元或用户优化算法。
因此,不进行特定的程序细节描述是很难完成这些子程序功能的。
在ANSYS Programmer's Manual中有详细的解释。
一个典型的UPF包括下列步骤:1.在FORTRAN77中编制用户程序。
在ANSYS中所有的用户程序源代码都是公开的。
大部分完成至少一个简单的功能,因此在编制程序前应列出一份完整的可用程序表。
2.编译并将用户程序连接到ANSYS程序中。
在ANSYS Installation and Configuration Guide中有这方面的详细描述。
3.用户可能要验证自己做的改动是否影响其他ANSYS标准功能的使用。
模型简化及网格划分模型简化及网格划分使在建立仿真模型时,经验是非常有助于用户决定哪些部件应该考虑因而必须建立在模型中,哪些部件不应该考虑因而不需建立到模型中,这就是所谓的模型简化。
此外,网格划分也是影响分析精度的另外一个因素。
本文将集中讨论如何简化模型以获得有效的仿真模型以及网格划分需要注意的一些问题。
理想情况下,用户都希望建立尽可能详细的仿真模型,而让仿真软件自己来决定哪些是主要的物理现象。
然而,由于有限的计算机资源或算法限制,用户应该简化电磁仿真的模型。
模型简化模型简化主要取决于结果参数及结构的电尺寸。
例如,如果用户希望分析安装在某电大尺寸载体上的天线的远场方向图,那么模型上距离源区超过一个波长的一些小特征和孔径(最大尺度小于 /50)就可以不考虑。
另一方面,如果用户希望分析从源到用带有小孔的屏蔽面屏蔽的导线之间的耦合,那么必须对小孔、靠近源的屏蔽面以及导线进行精确建模。
另外一个常用的简化是用无限薄的面来模拟有限厚度的导体面。
一般而言,厚度小于/100的金属面都可以近似为无限薄的金属面。
有限导电性和有限厚度的影响可以在SK卡中设置。
对于比较厚的导体面,如果这种影响是次要的,那么用户仍然可以采取这种近似。
例如,当建立大反射面天线的馈源喇叭模型时,喇叭壁的有限厚度对于反射面天线主波束的影响就是次要的。
然而,如果喇叭天线用于校准标准时,那么喇叭壁的有限厚度就不能忽略。
网格划分一般而言,网格划分的密度设置为最短波长的十分之一。
然而,在电流或电荷梯度变化剧烈的区域,如源所在区域、曲面上的缝隙和曲面的棱边等,必须划分得更密。
一个实用的指导原则是网格大小应该与结构间的间隔距离(d)相比拟(<=2d)。
同样地,如果需要计算近场分布,那么网格大小应该同场点到源点间距离(d)相比拟。
总之,用户建立的几何模型应该抓住主要的物理现象,而网格划分则需要权衡输出结果相对于网格大小的收敛性。
二次开发调试技术二次开发调试技术(摘自ANSYS用户专区)- -在调试用户子程序过程中,可以利用非《ANSYS命令参考手册》某些命令和其它特性帮助用户提供许多有用的信息。
ANSYS与ADAMS接口示例adams和ansys联合仿真的方法浅析adams可以进行柔性体仿真,但是用adams自带的插件做柔性体效果不佳,推荐的方法是,用ansys建立有限元模型,制作中性文件导入adams,这样既能在adams中进行柔性体仿真,还可以将仿真过程中该构件所承受的动态载荷导入ansys进行有限元分析。
我用ansys制作柔性体中性文件方法如下:1.preprocessor>add/edit/delete 弹出对话框中单击add,增加两个单元类型:3D mass 21、solid 452.导入或建立三维模型,创建用于外联的关键点3.用3D mass 21划分外联关键点,用solid45划分三维模型。
4.创建刚性区,实际上就是某外联关键点和一部分表面节点建立耦合方程。
preprocessor>coupling/ceqn>rigid region5.保存模型,创建中性文件。
solution>adams connection>export在ADAMS软件中生成ANSYS所需要的载荷文件(.lod文件)进入ADAMS程序,建立机械系统的刚性部件,读入模态中性文件.mnf以建立柔性体的模型,指定柔性体与刚性体的连结方式,按实际情况定义载荷和边界条件进行机械系统的运动学分析。
在分析完成后输出ANSYS软件所需要的载荷文件(.lod 文件)。
此文件包含了对应于运动过程中不同时刻点柔性体的运动状态和所承受的载荷等信息(例如力,力矩,加速度,角速度及角加速度)。
在ANSYS程序中进行应力应变分析进入ANSYS程序,恢复在步骤一中所建立的柔性体模型,选择所有节点,从载荷文件(.lod文件)中找到相应时刻的载荷并输入ANSYS,对柔性体进行应力应变分析。
在分析完成后即可得到柔性体的应力应变分布和其它感兴趣的结果数据。
分析示例此模型为摩托车发动机活塞曲柄连杆机构。
活塞上施加5Kn的力。
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二次开发与应用简介目录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 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 UPFs二次开发教程师访pomato157300@中国矿业大学力学与建筑工程学院力学系三、9、访问ANSYS数据库的子程序(1)选择或获得节点及单元的子程序● ndnext:获得下一个已被选择的节点的节点号。
● ndprev:获得前一个选择的节点的节点号。
● ndnxdf:获得下一个已定义节点的节点号。
● ndsel:选择节点、反选节点、删除节点或反转节点的选择状态。
● elnext:获得前一个已被选择的单元的单元号。
● elprev:获得前一个已被选择的单元的单元号。
● elnxdf:获得下一个已定义单元的单元号。
● elsel:选择单元、反选单元、删除单元或反转单元的选择状态。
(2)节点信息相关子程序● ndinqr:获得节点相关的信息。
● getnod:输入节点号,返回节点的坐标及转角。
● putnod:给定节点的坐标及转角坐标,以给定的节点号存储该节点。
● ndgall:输入节点号,函数返回该节点的x,y,z坐标及转角坐标,还可返回节点状态信息(是否已被定义,是否已被选择)。
● ndspgt:获得单元某一节点的节点求解结果。
(3)单元特征相关子程序● elmiqr:获得单元相关的信息。
● elmget:获得单元特征和单元的节点。
● elmput:存储单元特征和节点数。
● etyiqr:获得某一单元类型的数据项。
● etyget:获得单元类型信息。
● etyput:存储单元类型数据。
● echrtr:获得单元特征信息。
● etysel:选择单元类型、反选单元类型、删除单元类型或反转单元类型的选择状态。
● mpinqr:获得材料特性信息。
● mpget:获得材料特性表。
● mpput:存储材料特性表。
● mpdel:删除材料特性表。
● rlinqr:获得实常数集的相关信息。
● rlget:获得实常数数据。
● rlsel:选择或删除实常数集。
● csyiqr:获得坐标系相关信息。
● csyget:获得坐标系数据。
将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中调用ANSYS
LOGICAL(4) result
RESULT=SYSTEMQQ('d:\ANSYS57\BIN\INTEL\ANSYS57 -b -p
ansys_product_feature -i input_file -o output_file')
3.说明
1和2中,input_file为用APDL语言编写的ANSYS输入文件。
ansys_product_feature为你的ANSYS产品特征代码。
需要注意的是,在VC中调用ANSYS时,需要加一条判断语句,以确定ANSYS
已经执行完毕。
在FORTRAN中不需要判断,FORTRAN会等ANSYS执行完毕才继续执行下一条语句。
在VC中,我没有找到与FORTRAN类似的函数,只好加一条循环判断语句。
如果谁能找着这样的函数,请告诉我,谢谢!
判断方法很简单,只需判断错误文件file.err是否可写就可以了。
因为当ANSYS在运行时,file.err是不可写的,只有当它运行完毕,此文件才可写。
数据文件(假设输出的数据文件名为opt.out):
*dim,out1,,2,1
out1(1)=dmax !目标函数
out1(2)=1-eymax !约束条件1
*cfopen,opt,out
*vwrite,out1(1),out1(2)
(2f10.6)
*cfclos
在VC中相应的显示数据文件命令为:
result=system("notepad opt.out");
图形文件(假设ANSYS工作文件名为test,输出jpg图形文件,具体信息请参考命令/show):/SHOW,JPEG
JPEG,QUAL,75,
JPEG,ORIENT,HORIZ
JPEG,COLOR,2
JPEG,TMOD,1
/GFILE,600,
!*
plns,uy
/SHOW,TERM
在VC中相应的显示图形文件命令为:
result=system("mspaint test001.jpg");
******************************************************************************* *******
VC调用ANSYS的示例程序。
//Test.cpp
#include "stdio.h"
#include"process.h"
void main()
{
int result;
printf("Solving...");
result=system("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ansysul -i test.txt -o test.out");
//不用::WinExec,就用不着等待语句,可以实现用FORTRAN调用一样的效果。
printf("Solution finished...");
}
怎么还不知道?那个特征表找着没有?ANSYS帮助->ANSYS,INC.Licensing Guide->License files->What are License files->Product feature Table
以第一行为例:ANSYS/MULTIPHYSICS ane3fl
ANSYS/MULTIPHYSICS是产品特征名称,ane3fl是与其对应的产品特征代码,把这个代码填到下面的语句中:
result=system("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ane3fl -i test.txt -o test.out");
VC中的变量与APDL语言中的变量可以进行数据交换,否则怎么实现参数化或优化设计?
不过不能直接互换.我采用的办法是,在VC中将变量结果写到一个文件中,然后再在ANSYS的APDL语言文件中读入这个文件的数据,再由ANSYS进行新的计算,计算结束之后,再由后处理处理结果,并将结果数据输出到一个文件中,然后用VC读入此文件中的数据,进行下一步处理.。