找回密码
 注册
Simdroid-非首页
查看: 1334|回复: 24

[二次开发] ANSYS 15.0以上版本在64位win10系统下的UPFs编译连接测试

[复制链接]
发表于 2017-3-1 22:17:37 | 显示全部楼层 |阅读模式 来自 福建厦门
本帖最后由 zyw33 于 2018-1-7 15:24 编辑

##---结合网上经验及个人实践精心制作--##
一、UPFs 软件安装
1ANSYS 15.0安装
在安装ANSYS 15.0时,默认的情况下是不安装UPFs二次开发相关文件,用户需要点选“ANSYS Customization Files”选项才能利用UPFs进行二次开发。

安装好了后,用于二次开发的Fortran文件存放在D:\Ansys15.0\ANSYSInc\v150\ansys\customize\user文件夹下,用户可以从中找到自己所需要的Fortran程序文件对其进行修改,然后编译连接,即可生成自定义版本的ANSYS。

提醒一下,安装成功需要在设置-鼠标和触摸板中,把“当我悬停在非活动窗口上方对其进行滚动”的按钮关闭,如果没有关闭,在Ansys经典界面滚动鼠标转轮,会出现闪退的现象。

2Fortran编译器安装
根据Intel Visual Fortran和Visual Studio的兼容关系,选择合适的VS和IVF版本进行安装。

选择Visual Studio 2010和 Intel VisualFortran12.0(XE2011)进行安装。采用默认安装方式直接安装在C盘,无需进行系统环境变量设置,即可进行接下来的编译链接过程。
更新:2017.7.9
ANSYS 15.0:链接:http://pan.baidu.com/s/1nvHTiVR 密码:95pa
Intel Visual Fortran12.0(XE2011):链接:http://pan.baidu.com/s/1gfkVzxh 密码:l3hw
Visual Studio 2010:链接:http://pan.baidu.com/s/1c1Z6nWO 密码:dguj

更新:2017.7.9
3、ANSYS16.0~ANSYS18.0版本的VS和IVF
不同于ANSYS15.0,ANSYS16.0等更高版本需要根据帮助文件说明,在Intel官网下载对应的VS版本和IVF版本,一般是向下支持的。本人走通了17.0版本ANSYS的UPFs编译链接测试,方法同以下15.0版本,只不过开发环境用的Microsoft Visual Studio 2012和编译器用的是Intel®Intel Parallel Studio XE 2015 Update2 Complser Editor for Fortran Windows,有兴趣的筒子们可以去试试(18.0版本也可以用这两个开发环境)

ANSYS16.0:链接:http://pan.baidu.com/s/1dFhBGBJ 密码:214j
ANSYS17.0:链接:http://pan.baidu.com/s/1eS8DVlo 密码:rdzd
ANSYS18.0:链接:http://pan.baidu.com/s/1kViLvSF 密码:0c8p
Visual Studio 2012:链接:http://pan.baidu.com/s/1qYuM1K4 密码:cx2q(序列号:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC,如需用到的话)
Intel®Intel Parallel Studio XE 2015 Update2 Complser Editor for Fortran Windows:链接:http://pan.baidu.com/s/1ctTe6y 密码:gsmt(提供许可证文件)
二、UPFs 编译链接
以Fortran子程序 user02.F 为进行说明:
1、备份编译链接文件
编译链接的原始文件放在D:\Ansys15.0\ANSYS Inc\v150\ansys\custom\user\winx64目录下,将所有文件备份任意磁盘分区的任意目录下,本文备份至E:\ansys\ANSYS UPFs Initial file


2、修改Fortran用户子程序user02.F
Fortran用户子程序存放在安装目录D:\Ansys15.0\ANSYSInc\v150\ansys\customize\user文件夹下,user02.F的功能是实现所选节点的移动,程序中的主要代码不做改动,只是在输出代码上增加自己的Logo,即将原程序中的代码进行修改,修改的过程如下:
原程序代码如下:
c ***** write to GUI window *****
call erhandler ('user02',3000,
x 2,'NODEOFFSET COMPLETE',0.0d0,' ')
将上述原程序代码修改成如下所示:
c ***** write to GUI window *****
call erhandler ('user02',3000,
x 2,'oxyzNODEOFFSET COMPLETE',0.0d0,' ')
修改完成后进行保存。
3UPFs二次开发编译链接设置
在Ansys的工作目录新建一用于测试的文件夹UPFs_1,然后将E:\ansys\ANSYS UPFs Initial file里面的文件和修改好用户子程序user02.F的一起拷贝至该文件夹下E:\ansys\UPFs_1(路径名不能有中文)

双击其目录下的“ANSCUST.bat”Windows 批处理文件进行编译连接,弹出如下命令窗

按任意键继续,弹出“Do you want to linktheWind Turbine Aeroelastic library with Mechanical APDL?<Y orN>

输入Y,弹出如下命令窗。编译连接过程大概在3至5分钟左右,耐心等待一下,切莫关闭窗口。直至窗口显示“LINKWAS SUCCESSFUL”时,说明编译连接基本成功。此时提示“Do you want tocopy the runtime DLLs?<Y or N>”,为了避免输入N,导致可能在后面的激活UPFs时,弹出“缺少相应的***.dll”错误窗口,选择输入Y,会复制一些必要的DLLs文件,完毕后自动退出。

编译连接成功后,会在E:\ansys\UPFs_1下生成的自定义ANSYS.exe和其他一系列的文件。
更新:2017.4.22
(编译链接成功后,如果对用户子程序usermat.f做了些修改,需要重新编译链接,不过只需重新双击目录下的“ANSCUST.bat,照着流程再走一遍即可
三、UPFs的激活
运行Mechanical APDL Product Launcher 15.0,弹出 ANSYS 交互式启动的窗口。先在“FileManagement”设置好工作目录(不要在默认的C盘,随便选个E盘或者F盘),点击Customization Preferences”,在界面的“Custom ANSYS Executable”框的右边点击“Browse...”,选中刚才编译成功生成的ANSYS.exe。
更新:2017.4.22
(如需启动软件自带ANSYS.exe,只需把“Customization Preferences”界面的“Custom ANSYS Executable”框的路径删除即可

点击下方的“Run”按钮,弹出 ANSYS 经典界面,并且在 ANSYS 输出窗口“OutputWindows”中显示了“This ANSYS version was linked by Licensee”,说明二次开发编译成功。



四、UPFs 测试验证
运行如下命令:
/prep7
n,1
usr2,1,2,3
可实现节点的移动,并弹出“Oxyz NODE OFFSET COMPLETE”提示窗口。如果将上述命令流输入到没有进行ANSYSUPFs二次开发的ANSYS界面,弹出的是“NODE OFFSET COMPLETE”提示窗口。通过上述两者的比较,可判断ANSYSUPFs 编译连接成功,ANSYS可以成功调用用户子程序user02.F。

因此,之后用户只需通过上述方式,在自定义目录进行UPFs编译链接和激活过程,即可调用自己开发的用户子程序,实现问题的计算和分析。


       目前,win10逐渐趋于成熟和稳定,装机量也逐渐攀升,虽然负面评价还是蛮多的,但个人觉得win10操作界面要比win7友好,流畅性和安全性也要高于win7,所以这也是本人不想装回win7,坚持把win10用到底的原因。

更新:2017.7.7
       ANSYS在15.0版本之前,在非线性力学问题的计算上便饱受诟病。事实上,ANSYS非线性问题计算的不足,除了限制于有限元法的一些固有特点外,还在于其材料非线性的不足。拿岩土工程来说,作为典型的非线性问题,特定的工程问题一般都需要采用特定的土体本构模型进行分析,如果不结合工程实际只是简单套用软件内置材料模型,必然得到不理想的结果。在岩土工程问题的分析中,研究者通常采用ABAQUS通用有限元计算软件及FLAC3D有限差分计算软件,主要原因是它们提供了岩土工程中常用的土体本构模型,如修正剑桥模型等,而不是其算法比ANSYS要好,所谓算法其实经过几十年的摩擦摩擦,早就炉火纯青,ANSYS内功还是很深厚的。

更新:2017.7.7

       不过,ANSYS在16.0版本之后,陆续推出了一些岩土工程计算领域常用的模型

       在16.0版本,推出了3种Drucker-Prager模型,分别是:
       1、Classic Drucker-Prager Model
       2、Extended Drucker-Prager Model
       3、Extended Drucker-Prager Cap Model

       在17.0版本,在非线性力学模型这块专门推出了一个Geomechannics(地质力学)系列模型,包括:   

       1、Cam-clay(剑桥模型)
       2、Mohr-Coulomb
       3、Jonited Rock
       4、Drucker-Prager  Concrete

      18.0版本在17.0版本Geomechannics(地质力学)系列模型的基础上,增加了个 Menetrey-Willam  模型
       1、Cam-clay(剑桥模型)
       2、Mohr-Coulomb
       3、Jonited Rock
       4、Drucker-Prager  Concrete
       5、Menetrey-Willam
       所以,如果需要用到这方面的功能,把ANSYS版本装到17.0就好了(也可试试装到18.0),估计计算结果与ABAQUS相当,还有就是要针对岩土弹塑性模型这方面想做些开发的同志们可以省省力气了...

       扯回正题...

       当然,UPFs开发不仅仅局限于岩土,也涉及各个热门领域,如复合材料模型开发、新型单元开发等。要想利用ANSYS强大的前处理功能(只能说对某些人来说)和求解功能,进行典型的非线性问题分析,那么就需要根据相关理论,编制合适子程序,供ANSYS迭代求解时调用,优化非线性计算,进而得到相对合理的结果。

       相对于APDL,用于高级分析的UPFs的参考资料非常少,最权威的ANSYS软件帮助文档仅仅作了一些简单的陈述,没有相关案例分析介绍。国内关于这方面的唯一教材《ANSYS二次开发及应用实例详解_第一版_师仿》在ANSYS软件帮助文档基础上进行了一些补充和完善,介绍了一些简单的二次开发算例,对于入门来说是非常有帮助的。但真正用于复杂非线性问题,仍然需要各用户进行深挖掘。

五、usermat简单介绍(更新:2017.4.22)
      对材料本构子程序usermat的开发,一方面,除了要对Fortran语言有基本了解,还要理清usermat.f的程序结构和软件对它的调用机制;另一方面,除了要参透相关理论,对材料模型有本质的了解(一般简单的模型不需要用户进行开发,软件基本都有提供)外,也要有足够的耐心去调试程序,fortran语言比较娇羞精贵,经不起像matlab那样的摩擦。相信,做到了这几点,用户都可以做到二次开发进行高级分析。
      在所有用于本构模型开发的子程序中,usermat是使用范围最广的子程序,单元的每个积分点在每个载荷子步的每次迭代均会调用usermatusermat支持所有最新技术单元Current-technology Elements),最新技术单元区别于传统单元(Legacy Elements),usermat不支持传统单元。常用最新技术单元包括:LINK180BEAM188PIPE288PLANE182/183/233SHELL131/181MPC184SOLID185/186/187/226/227/236/272/273等。
1、usermat子程序的的任务
材料的本构行为体现为应力-应变关系,usermat子程序的主要任务是定义材料的应力-应变关系,具体分为两个方面。首先由给定的应变增量 (由ANSYS主程序传入usermat)计算得到应力增量,从而得到新的应力,称做应力更新过程。其次还要求usermat给出Jacobian Matrix,即雅可比矩阵,学名是一致切线算子矩阵。
具体内容不详述,有需要emai联系,发PDF。或者翻阅《ANSYS二次开发及应用实例详解》
2、usermat子程序的的结构
     usermat有其固定的题头、变量参数和类型指定,用户仅允许在用户定义部分对usermat子程序进行修改。
     usermat与ANSYS主程序间存在数据交换,有三种变量:
     (1)输入变量:ANSYS主程序传入usermat的相关变量;
     (2)输出变量:usermat计算传递给ANSYS主程序的变量;
     (3)输入输出变量:一般是usermat需要对其进行更新并返回给求解器的变量;
具体内容不详述,有需要emai联系,发PDF。或者翻阅《ANSYS二次开发及应用实例详解》
3、通过APDL调用usermat
通过APDL命令很容易调用自定义材料模型,只需在前处理部分使用下列语句即可
TB, user, matId, ntemps, npts
关键字USER表示使用用户定义材料模型;关键字matId表示材料号;NTEMPS为温度点的个数,即可定义不同温度下的多组材料常数;NPTS 表示每一温度下材料常数个数;举一简单例子:
TB,USER,1,2,4              !使用用户自定义材料,材料号为1,温度点个数为2,每个温度点有4个材料常数
TBTEMP,1                   !第一个温度点
TBDATA,1,19E5,0.3,1E3,100  !第一个温度点下的4个材料常数,分别传入PROP(1)~ PROP(4)
TBTEMP,2                   !第二个温度点
TBDATA,1,20E5,0.5,2E3,200  !第二个温度点下的4个材料常数,分别传入PROP(1)~ PROP(4)
TBDATE命令的用法:
TBDATE,STLOC,C1,C2,C3,C4,C5,C6
该命令为数据表赋值,STLOC是数据表赋值的起始位置。若STLOC=2,则C1传入数据表的第二个位置,即C1= PROP(2);同理,若STLOC=3,则C1= PROP(3)
由TBDATE命令的用法 ,TBDATE命令每次最多只能传入6个材料常数,如材料常数超过6个,则需要用多行TBDATE命令进行赋值,如下所示:
TBDATE,1,C1,C2,C3,C4,C5,C6
TBDATE,7,C7,C8,C9,C10,C11,C12
若采用如下方式赋值:
TBDATE,1,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10
C7,C8,C9,C10将被直接忽略,你懂得!!!

六、usermat的编写注意事项(更新:2017.4.26)
    usermat.f的扩展名是.f,说明它是按照FORTRAN77的固定格式写的,意识到这个很非常重要。对于这种原始代码的编写,它有很多限制,比如说:
1、程序的每一行的前5个字符只能是空格或者数字,数字用来表示当前程序的行号;
2、每行的第6个字符只能是空格或者除“0”以外的字符。如果是“0”以外的字符,表示本行是上一行的续写。一行后面最多只能有19个连续行。
3、程序的第7-72个字符所在列是可以进行程序书写的。从第73个字符开始,相应的程序代码不会被编译。所以该断就断,不要超编。
4、空格除了在字符常量里以外,都是没有意义的。
5、某一行的开始如果为字符C或*,表示整行都是程序的注释内容,不会被系统编译。
6、某一行的多余语句可以用一个或多个分号“;”分隔
7、字符“!”只要不是出现在第6格,也不是属于字符文本,则从它开始一直到该行第72个字符都属于注释内容,超过影响编译,但超出内容会高亮显示。
8、END语句不能被连续,也不能被视为初始行
   
    ANSYS的材料子程序usermat.f不同于ABAQUS的材料子程序umat.f。虽然两者的程序结构和调用机理是一样的,但程序头并入的库文件不一样,ANSYS是“INCLUDE"impcon.inc"”,而ABAQUS是“INCLUDE"ABA_PAPAM.INC"”,因此存在变量声明和类型指定的差异,在umat里面的子例行子程序subroutine中,形参可以直接作为变量,不需要额外声明和指定类型,而在usermat.f里面的子例行子程序subroutine中必须一板一眼进行变量定义和类型指定,因此直接将umat移植编译是无法运行的。
    usermat作为子程序,是供ANSYS子程序调用的,没办法通过编译器进行调试,所以对于新编写的usermat.f,在编译连接并运行生成的ANSYS.exe后,用一些尽可能简单的算例去验证,一个载荷步20个子步即可。如果可以收敛说明基本完成一大半,然后再慢慢检查验证。所以,要编写自定义本构模型时很困难的,必须要求编写者有足够的耐心。
   usermat也可以采用FORTRAN90/95的自由格式进行编写,有兴趣可以自己探索...







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2017-4-17 13:00:10 | 显示全部楼层 来自 北京
我走通了 ANSYS 18在64位win10系统下的UPFs编译连接测试
回复 不支持

使用道具 举报

 楼主| 发表于 2017-4-17 14:05:48 | 显示全部楼层 来自 福建厦门
rainerun 发表于 2017-4-17 13:00
我走通了 ANSYS 18在64位win10系统下的UPFs编译连接测试

nice
回复 不支持

使用道具 举报

发表于 2017-4-17 21:57:05 | 显示全部楼层 来自 北京
不知本构你有东西可分享,有qq没?
回复 不支持

使用道具 举报

 楼主| 发表于 2017-4-22 12:12:54 | 显示全部楼层 来自 福建厦门
本帖最后由 zyw33 于 2017-4-22 12:27 编辑
rainerun 发表于 2017-4-17 21:57
不知本构你有东西可分享,有qq没?

有,但是不能分享,涉及知识产权,导师不会允许的,请见谅。
如果遇到什么小问题,可以在帖子里写出来或者发邮件604864648@qq.com,一起解决。
你也可以去师老师的帖子http://forum.simwe.com/thread-1021888-1-1.html里看下,里面可能有你需要的东西。
回复 不支持

使用道具 举报

发表于 2017-4-26 12:02:11 | 显示全部楼层 来自 北京
请问楼主和有大神知道 我按帖子的过程编译连接 最后生成不了ANSYS.exe是怎么回事么?
我用的是win7 64位,Ansys17.0,vs2010和Intel Visual Fortran12.0(XE2011)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2017-4-26 21:28:14 | 显示全部楼层 来自 福建厦门
littleTTan 发表于 2017-4-26 12:02
请问楼主和有大神知道 我按帖子的过程编译连接 最后生成不了ANSYS.exe是怎么回事么?
我用的是win7 64位,A ...

IVF和VS要安装在C盘,这是其一;然后文件夹,没看到有fortran程序,不知道你有没按照流程来操作
回复 不支持

使用道具 举报

发表于 2017-4-26 21:35:03 | 显示全部楼层 来自 北京
zyw33 发表于 2017-4-26 21:28
IVF和VS要安装在C盘,这是其一;然后文件夹,没看到有fortran程序,不知道你有没按照流程来操作 ...

楼主,你好。我是按照流程来的,文件夹里有usermat.f的文件在下面截图没截到。我用的ansys版本和系统不同有关系?
回复 不支持

使用道具 举报

 楼主| 发表于 2017-4-26 22:10:15 | 显示全部楼层 来自 福建厦门
本帖最后由 zyw33 于 2017-7-9 15:16 编辑
littleTTan 发表于 2017-4-26 21:35
楼主,你好。我是按照流程来的,文件夹里有usermat.f的文件在下面截图没截到。我用的ansys版本和系统不同 ...

应该跟系统没有关系,此贴内容也是根据已有的WIN7教程改进的。对于你遇到的问题,我也表示很困惑,按我目前的认知范围,可能没办法回答你,不好意思
回复 不支持

使用道具 举报

发表于 2017-4-26 22:24:21 | 显示全部楼层 来自 北京
zyw33 发表于 2017-4-26 22:10
应该跟系统没有关系,此贴内容也是根据已有的WIN7教程改进的。对于你遇到的问题,我也表示很困惑,按我目 ...

:lol还是要谢谢楼主  
回复 不支持

使用道具 举报

发表于 2017-4-27 20:16:51 | 显示全部楼层 来自 贵州贵阳
请问楼主,我在连接的时候忽略了四个文件,会不会有问题啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2017-4-27 21:31:25 | 显示全部楼层 来自 福建厦门
chen520117ying 发表于 2017-4-27 20:16
请问楼主,我在连接的时候忽略了四个文件,会不会有问题啊?

目前我拿来测试或者调试的usermat,好像还没遇到因为这个问题而计算不了的情况,后面usermat要是复杂了,会不会因为这个出问题,就不清楚了
回复 不支持

使用道具 举报

发表于 2017-4-27 22:55:53 | 显示全部楼层 来自 贵州贵阳
zyw33 发表于 2017-4-27 21:31
目前我拿来测试或者调试的usermat,好像还没遇到因为这个问题而计算不了的情况,后面usermat要是复杂了, ...

哦,好吧,我是才开始学这个,课题要用一个钢材的损伤累积本构模型,我这感觉是零基础啊,是不是要先把fortran编程语言看一下,再看师老师那本书?
回复 不支持

使用道具 举报

 楼主| 发表于 2017-4-28 14:47:28 | 显示全部楼层 来自 福建厦门
chen520117ying 发表于 2017-4-27 22:55
哦,好吧,我是才开始学这个,课题要用一个钢材的损伤累积本构模型,我这感觉是零基础啊,是不是要先把fo ...

去师老师的帖子http://forum.simwe.com/thread-1021888-1-1.html里看下,里面可能有你需要的东西,下载几个简单usermat练练手,熟悉熟悉。不用专门去学fortran,没有必要浪费这个时间。遇到问题再去翻阅相关资料
回复 不支持

使用道具 举报

发表于 2017-4-28 19:08:26 | 显示全部楼层 来自 贵州贵阳
zyw33 发表于 2017-4-28 14:47
去师老师的帖子http://forum.simwe.com/thread-1021888-1-1.html里看下,里面可能有你需要的东西,下载几 ...

好的,谢谢楼主。
回复 不支持

使用道具 举报

发表于 2017-5-13 00:19:13 来自手机 | 显示全部楼层 来自 北京
有qq吗相互学习
回复 不支持

使用道具 举报

发表于 2017-6-27 21:40:56 | 显示全部楼层 来自 广东东莞
请问楼主  win10系统装了好几遍ansys15.0不成功,是不是因为电脑64位?求解答
回复 不支持

使用道具 举报

 楼主| 发表于 2017-7-9 10:03:28 | 显示全部楼层 来自 福建厦门
0+0sheshidu 发表于 2017-6-27 21:40
请问楼主  win10系统装了好几遍ansys15.0不成功,是不是因为电脑64位?求解答

不是,可能是你安装包的问题
回复 不支持

使用道具 举报

 楼主| 发表于 2017-7-9 15:54:24 | 显示全部楼层 来自 福建厦门
littleTTan 发表于 2017-4-26 12:02
请问楼主和有大神知道 我按帖子的过程编译连接 最后生成不了ANSYS.exe是怎么回事么?
我用的是win7 64位,A ...

17.0版本的开发环境要换成 VS2012 和 IPS XE 2015
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-16 16:42 , Processed in 0.056140 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表