由于工程问题的复杂度,Abaqus通用有限元软件在求解某些专业问题上有所欠缺。针对此问题,Abaqus提供了二次开发的功能。 Abaqus的二次开发可以拓展Abaqus的应用范围,提高对问题求解的复杂度和精确度。
Abaqus提供了两种二次开发的接口:一种是子程序接口(User Subroutine),一种是脚本接口(Abaqus Scripting Interface)。脚本语言是在Python语言的基础上进行的定制开发,它扩充了Python的对象模型和数据类型,使Abaqus脚本接口的功能更加强大。子程序接口开发是在Fortran语言的基础上进行的定制开发,可以根据需要开发新的材料模型,单元模型以及与其他应用软件的数值交换。本文主要讲述利用Fortran语言对Abaqus进行子程序开发的软件配置。
Abaqus子程序的二次开发需要配置IVF和VS。做好相关设置后可通过本文提供的案例进行验证以证明软件的配置是否正确。
一、Abaqus/IVF/VS的兼容性介绍
[1] Abaqus/IVF/VS的兼容关系
Abaqus 版本 | Intel Fortran | Visual Studio |
6.8 | v9.1, v10.0, v10.1及以上 | 2005 |
6.9 | v9.1, v10.0, v10.1及以上 | 2005, 2008 |
6.10 | v10.1, v11.0, v11.1及以上 | 2008, 2010 |
6.11 | v10.1, v11.0, v11.1及以上 | 2008, 2010 |
6.12 | v10.1, v11.0, v11.1及以上 | 2008, 2010 |
6.13 | v10.1, v11.0, v11.1及以上 | 2008,2010,2012 |
[2] IVF/VS的兼容关系
Intel Fortran版本 | 兼容的Visual Studio |
v10.0 | 2003, 2005 |
v10.1(10.1.019之后) | 2003, 2005, 2008 |
v11.0, v11.1 | 2003, 2005, 2008 |
v12.0, v12.1 (XE2011) | 2005, 2008, 2010 |
v13.0 (XE2013) | 2008, 2010, 2012 |
本文采用的配搭:
Abaqus 2016+VS2010+IVF2011
可使用的配搭:
Abaqus 2016+VS2012+IVF2013
二、Abaqus/IVF/VS的安装顺序及安装方法
[1] 软件下载地址
Abaqus2016
https://yun.baidu.com/s/1mj17Esg
密码:nmwb
Visual Studio2010
http://pan.baidu.com/s/1c1Z6nWO
密码:dguj
IntelFortran12.0(XE2011)
http://pan.baidu.com/s/1gfkVzxh
密码:l3hw
[2] 安装顺序
a) 安装VS(必须在Intel Fortran 软件安装之前)
一般而言安装VS没有任何难度,需要注意的一点是对于64位系统需要安装64位支持,而在有些版本中该模块在默认安装中是没有选中的。为了避免漏装,在安装时需要选择完全安装(complete)。此外,为了避免由于非英文版本VS产生的各种不可预料的整合问题,建议使用英文版VS。
b) step 2安装IVF
为了实现IVF和VS的整合,step2需要在step1之后进行。一般情况下,IVF会在安装时自动检测支持的VS版本并进行整合。对于64位系统同样需要安装64位系统支持,推荐完全安装(ForAdvanced User)。整合成功的话可以在已安装组件列表中找到“Intel(R)Fortran Compiler Integration”。
c) step3安装 Abaqus
step3 相对前两步相对独立,甚至可以先于1、2进行
注意:MicrosoftVisual Studio软件必须安装在IntelFortran软件之前。否则IntelVisual Fortran无法集成到MicrosoftVisual Studio软件之中。
[3] 软件安装方法
软件安装中主要涉及软件的破解,破解方法在软件程序的文件夹中。
三、Abaqus2016 /IVF2011/VS2010的关联设置
[1] IVF2011软件的设置
打开:开始(所有程序)->IntelParallel Studio XE 2010->运行Intel 64 Visual Studio 2010 。在界面处输入:
%comspec%/k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat""x86_amd64,Enter运行。如下图所示。
[2] Abaqus2016的设置
记事本打开批处理文件:launcher.bat 和abq2016.bat(或者右键编辑)
默认位置为:
C:\SIMULIA\Abaqus\Commands\abq2016.bat
C:\SIMULIA\CAE\2016\win_b64\resources\install\cae\launcher.bat
将abq2016.bat 和launcher.bat中的内容由
@echo off
"C:\SIMULIA\CAE\2016\win_b64\code\bin\ABQLauncher.exe"%*
修改为
call "C:\Program Files (x86)\Microsoft Visual Studio11.0\VC\vcvarsall.bat" x86_amd64
call "C:\Program Files (x86)\Intel\Composer XE2013\bin\ifortvars.bat" intel64 vs2012
@echo off
"D:\SIMULIA\CAE\2016\win_b64\code\bin\ABQLauncher.exe"%*
上述主要是添加vcvarsall.bat和ifortvars.bat的位置,更改地址由这两个软件的位置确定,如果VS和IVF安装在D盘,则修改为
call "D:\Program Files (x86)\Microsoft Visual Studio11.0\VC\vcvarsall.bat" x86_amd64
call "D:\Program Files (x86)\Intel\Composer XE2013\bin\ifortvars.bat" intel64 vs2012
@echo off
"D:\SIMULIA\CAE\2016\win_b64\code\bin\ABQLauncher.exe"%*
关联成功之后,运行cmd,在界面输入abaqus information=system,界面信息中出现了匹配的Intel Fortran compiler。同时打开Abaqus软件,界面中多出了Intel Fortran 和Visual Studio 软件的相关信息。
三、简单案例
[1] Abaqus模型
模型为一根悬臂梁模型。物理尺寸为:
长1m,截面0.03m×0.03m,壁厚0.003m
载荷为一端固支,另一端施加位移载荷,载荷数值为:
U1=0.03m,U2=0.04m,U3=0.05m
UR1=0.1,UR2=0.15,UR3=0.2
在Abaqus中的Inp文件中不施加梁的载荷,载荷的施加通过Abaqus中的DISP子程序进行施加。Inp文件如下:
*Heading
**Job name: Job-1 Model name: Job-1
**Generated by: Abaqus/CAE 2016
*Preprint,echo=NO, model=NO, history=NO, contact=NO
**
**PARTS
**
*Part,name=PART-1
*Node
1, 0., 0., 0.
2, 0.100000001, 0., 0.
3, 0.200000003, 0., 0.
4, 0.300000012, 0., 0.
5, 0.400000006, 0., 0.
6, 0.5, 0., 0.
7, 0.600000024, 0., 0.
8, 0.699999988, 0., 0.
9, 0.800000012, 0., 0.
10, 0.899999976, 0., 0.
11, 1., 0., 0.
12, 0.0500000007, 0., 0.
13, 0.150000006, 0., 0.
14, 0.25, 0., 0.
15, 0.350000024, 0., 0.
16, 0.449999988, 0., 0.
17, 0.550000012, 0., 0.
18, 0.649999976, 0., 0.
19, 0.75, 0., 0.
20, 0.850000024, 0., 0.
21, 0.949999988, 0., 0.
*Element,type=B32
1, 1,12, 2
2, 2,13, 3
3, 3,14, 4
4, 4,15, 5
5, 5,16, 6
6, 6,17, 7
7, 7,18, 8
8, 8,19, 9
9, 9,20, 10
10,10, 21, 11
*Nset,nset=SET-1, generate
1, 21, 1
*Elset,elset=SET-1, generate
1, 10, 1
*Nset,nset=SET-2, generate
1, 21, 1
*Elset,elset=SET-2, generate
1, 10, 1
**Section: Section-1-SET-1 Profile:Profile-1
*BeamSection, elset=SET-1, material=MATERIAL-1, temperature=GRADIENTS, section=BOX
0.03,0.03, 0.003, 0.003, 0.003, 0.003
0.,0.,-1.
*EndPart
**
**
**ASSEMBLY
**
*Assembly,name=Assembly
**
*Instance,name=PART-1-1, part=PART-1
*EndInstance
**
*Nset,nset=SET-1, instance=PART-1-1
1,
*Nset,nset=SET-2, instance=PART-1-1
11,
*Nset,nset=Set-3, instance=PART-1-1
11,
*Nset,nset=Set-4, instance=PART-1-1
11,
*EndAssembly
**
**MATERIALS
**
*Material,name=MATERIAL-1
*Elastic
1.92e+11, 0.3
**
**BOUNDARY CONDITIONS
**
**Name: Disp-BC-1 Type: Symmetry/Antisymmetry/Encastre
*Boundary
SET-1,ENCASTRE
**----------------------------------------------------------------
**
**STEP: Step-1
**
*Step,name=Step-1, nlgeom=NO
*Static
1.,1., 1e-05, 1.
**
**BOUNDARY CONDITIONS
**
**Name: BC-2 Type: Displacement/Rotation
*Boundary,user
Set-4,1, 1
Set-4,2, 2
Set-4,3, 3
Set-4,4, 4
Set-4,5, 5
Set-4,6, 6
**
**OUTPUT REQUESTS
**
*Restart,write, frequency=0
**
**FIELD OUTPUT: F-Output-1
**
*Output,field
*NodeOutput
CF,RF, U, UR, UT
*ElementOutput, directions=YES
LE,PE, PEEQ, PEMAG, S
*ContactOutput
CDISP,CSTRESS
**
**HISTORY OUTPUT: H-Output-1
**
*Output,history, variable=PRESELECT
*EndStep
[2] 子程序编写
子程序编写->开始菜单打开vs2010->新建项目
保存名为u.for的文件,供后续子程序的加载使用。
[3] 子程序调用
建立求解计算的工作之后,对工作进行编辑,如下图所示,添加子程序。
[4] 结果显示
四、结论
本文阐述了Abaqus子程序二次开发的软件设置方法,并提供了一个简单案例以验证Abaqus二次开发的软件配置是否正确,为Abaqus的二次开发学习奠定了坚实的基础。在进行软件配置的时候,如果出现错误,我们要根据相应的错误提示找出问题所在,进而解决。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删