第10章 ABAQUS用户材料子程序二次开发及应用

合集下载

ABAQUS前_后处理模块二次开发的应用

ABAQUS前_后处理模块二次开发的应用
图 2 内核程序和 GU I程序的通信
ABAQUS有限元程序通过集成 Python语言向二次 开发者提供了很多库函数 , 通过 ABAQUS 脚本接口 (ABAQUS Scrip ting In2terface) , Python语言调用这些库 函数来增强 ABAQUS的交互式操作功能 。它允许用户 绕过 ABAQUS /CAE的 GU I( graphical user interfaces)直 接与内核交互 , 可以大大提高工作效率或完成 ABAQUS /CAE没有提供的功能 。但是因为它没有通 过 GU I,显的不那么直观 ,而且如想改变某些参数就不 得不修改脚本程序 ,这些对一般用户来说就显的比较 麻烦 。因此 , 对 ABAQUS 二次开发一般应先开发 出 GU I后 ,让 用 户 输 入 或 选 择 有 关 参 数 后 , 然 后 生 成 ABAQUS的脚本语言来自动处理 。ABAQUS的 GU I是 用 ABAQUS GU I Toolkit来编 写 , 它 也是 对 FOX GU I
chongyaDB 模块的作用是应用 ABAQUS GU I Tool2 kit来完成对图 4 的界面的排序功能 ,并调用 Icons模
·32·
块或相关图片 。本例中在此使用是调用图片 ,如果 ,要 使用调用 Icons模块的方法则要用 XPM 图片数据作为 Python的字符列表来定义 icon,这样比较麻烦 ,尤其对 于复杂的图形 。 (注 : ABAQUS GU I Toolkit支持以下几 种格式来创建 icon: ①XPM 格式 ; ②BM P 格式 ; ③GIF 格式 ; ④PNG格式 ,而后三种格式是一般的绘图软件就 支持的格式 ,如 w indow s自带的画图软件就支持后三
2 应用举例

Python在ABAQUS二次开发中的应用实例.ppt

Python在ABAQUS二次开发中的应用实例.ppt
➢ 编写完成的脚本文件,可以直接在ABAQUS运行:
File → Run Script,打开相应的.py文件,即可执行; 刚打开ABAQUS界面,直接选择Run Script也可; 可以在GUI界面下部的命令行接口输入脚本语句执行。
ABAQUS 脚本概述
创建ABAQUS脚本
➢ 创建脚本有3种常用方法: ➢ ①在GUI建模时录制宏(macro)
Python在ABAQUS二次开发中 的应用实例
主要内容
• 一、ABAQUS 脚本概述 • 二、Python 语言简介 • 三、ABAQUS脚本编写
一、ABAQUS 脚本概述
ABAQUS 脚本概述
ABAQUS软件简介
➢ ABAQUS是国际著名的CAE软件,它以解决实际工业问题能力和强大 的非线性功能赢得广泛声誉。航空工业是ABAQUS最重要的应用领域 之一,波音、空中客车、洛克希德•马丁等是其长期合作的用户。
句,需要用分号分开。如:x=1;y=2;z=3。如果一个逻辑语句太长需要分行写, 需要用反斜杠“\”进行连接(有括号括起来的内容就不用)。 不同代码块之间要注意用冒号和缩进来区分代码块之间的层次关系,如:
for i in range(0,b3): if (iAnglelowfg[i]=='/'): for l in range(0,i-j-1): c3[k]=c3[k]+iAnglelowfg[j+l+1] j=i elif (iAnglelowfg[i]==']'):
优点:界面直观,简单易懂; 缺点:操作步骤繁琐,不利于修改,缺乏通用性。
➢ ②通过inp文件建模
优点:可以直接在ABAQUS中提交; 缺点:只包含模型节点信息,代码较多,修改不便;

Abaqus二次开发

Abaqus二次开发

Abaqus二次开发——Abaqus/python入门体会入门实例#===========================================================自己的论文要用到有限元进行数值模拟分析,以前都用ansys计算,可ansys中岩土的本构模型只有D-P模型,无法准确的反映土的硬化/软化性质,模拟计算出的结果因此也和实际差别很大。

Abaqus有着丰富的材料模型,超强的非线性分析能力,岩土的模型也很多,因此才转学Abaqus。

Abaqus的cae建模功能还是很好的,但科研课题一般都要进行参数分析,采用cae的建模方法有些不切实际,学了没几天就放弃cae开始学习inp,也是学了一阵子才知道inp不能建立实体模型,只能直接建节点和单元。

复杂的模型inp也无法建立,但采用Python建模就可以解决这个问题。

由于Abaqus的学习资料不多,过了好些日子才知道Abaqus也可以采用Python语言进行建模计算,只是比Ansys的Apdl语言复杂得多,并且除了手册上的Script资料之外,没有较为系统的教程,刚一接触真是让人头痛。

通过查看Simwe论坛上关于Python的帖子,和论坛朋友的帮助,自己在慢慢积累,现在对Python有了一点点了解,算是入了个门。

接触Abaqus也没多久,对python更是一知半解,绝大多数地方根本都不清楚,抽空写一点认识体会主要是给像自己一样刚学习Abqus Python的朋友,能少走一些弯路,节约一些时间。

同时希望大家批评指正、共同讨论、补充。

#--------------------------------------------------------------------------------------------------学习Abaqus/Python基础:Abaqus的cae建模有比较全面的认识;了解一些Python语法知识(大家都不会有太多时间单独学习Python语言本身,只需要有概念了解即可,不懂的地方可以随时查询Python script手册)Abaqus/Python学会使用不太难,可要精通应用还是要付出一定的劳动。

Abaqus二次开发介绍

Abaqus二次开发介绍

Abaqus⼆次开发介绍ABAQUS提供了两种⼆次开发的接⼝,⼀是⼦程序接⼝(user subroutine),⼀种是脚本接⼝(Abaqus scripting interface),Abaqus的脚本语⾔是在python语⾔的基础上进⾏的定制开发,它扩充了python的对象模型和数据类型,使Abaqus脚本接⼝的功能更加强⼤,⼀般来说,Abaqus脚本接⼝可以实现以下功能①创建、修改ABAQUS模型中的属性,如部件、材料、荷载和分析步等②创建、修改和提交分析作业③读取和写⼊ABAQUS输出数据⽂件④查看分析结果Abaqus中python脚本的通信关系如下图所⽰从图中可以看出,ABAQUS可以通过三种⽅式运⾏脚本⽂件(1)GUI。

Abaqus在采⽤GUI进⾏建模的同时,会⽣成⼀个rpy格式的脚本⽂件。

当然,也可以通过macro管理器录制⼀段宏命令(2)命令⾏。

在abaqus CAE界⾯底端的命令⾏键⼊python命令,点击回车后即可⾃动运⾏。

(3)编辑脚本⽂件。

预先编辑好脚本⽂件,在start session 对话框或者file按钮⾥选择run script运⾏脚本。

也可以在ABAQUS command窗⼝中键⼊命令运⾏脚本Abaqus cae script=myscript.pyAbaqus cae startup=myscript.py启动CAE界⾯并运⾏脚本Abaqus viewer script=myscript.pyAbaqus viewer startup=myscript.py启动Viewer并运⾏脚本Abaqus cae noGUI=myscript.pyAbaqus viewer noGUI=myscript.py不启动CAE或者Viewer运⾏脚本此外,ABAQUS也提供了⼀个python编译器,可以通过file→abaqus pde运⾏详细的python命令,⼤家可以通过帮助⽂件中的Abaqus Scripting Reference Guide进⾏查看。

abaqus-python二次开发方法

abaqus-python二次开发方法

abaqus-python二次开发方法(超实用)基于的二次开发对于很多新手来说都是一个神秘的,感觉是高难度的问题,致使很多新手对二次开发的研究都处于初级了解阶段,或完全不感冒阶段。

其实二次开发很简单,某种意义上讲,常用的ABAQUS二次开发方式有两种,(1)直接修改inp文件,这种方式需要对inp文件中大量的节点和单元进行操作,一般不建议采用inp文件进行二次开发(除非有特殊的关键字或标识符,其实关键字也可以用python语言来进行二次开发,笔者亲证)。

采用inp文件进行二次开发数据量大,行数多,一旦发生问题难以检测错误原因(2)采用abaqus语言,自编脚本,简单容易,非常适合初学者。

这里主要介绍python入门python语言的开发远没有想象中的难,其实基于abaqus语言的二次开发更像是word或excel里的VBA,我们只要通过录制一段宏文件,就可以简单迅速的完成一个模型的建立,当我们人为的对这段宏文件进行修改,就可以完成对该模型的修改,非常适合有大量相同或类似模型的建立,防止用户一遍又一遍繁琐的建模操作。

简单的步骤如下:1.在建模前先打开file--Macro Manager,然后新建一个宏文件(在Home或Work都行,只要你最终能找到这个文件),此时会弹出Record Macro对话框,托至不碍事的地方2.进行正常的cae建模就行,至到建模完成3.点击Record Macro对话框的Stop Mecording,此时命令栏会显示“Macro "Macroname" has been added to "E:\Temp\Macroname.py"”,前期任务搞定4.此时用文本编辑器打开此py文件,py文件中有些文字是没有用的,把“def Macro1 ...import connectorBehavior”都可以删掉,每行字前的空格都要去掉(文本编辑器里一般有列模式,用列模式可以对整个文本的进行操作)5.复制你新生成的python文件,并对该文件中的参数进行修改,在提交给abaqus--cae就可以完成重复建模了,如此可以无限重复,其实python语言都是大白话,你能看懂的需要指出的是:1.可以结合其它编程语言如VB、VC 配合修改参数并生成py文件,使用更为灵活2.生成py文件可以直接在cae中选择file-run script,选择你生成的python文件3.可以用python文件直接生成cae模型文件,可在py文件最后添加"mdb.saveAs(pathName='" *** "')"4.可以通过cmd命令直接将py文件提交个abaqus内核,让abaqus进行运算,cmd命令为“Shell"C:\Windows\SysWOW64\cmd.exe /k abaqus cae noGUI=" **** ".py ", vbHide等待abaqus运算的py语言"myJob.submit(consistencyChecking=OFF, datacheckJob=True)"。

ABAQUS二次开发基础

ABAQUS二次开发基础

ABAQUS二次开发基础第9章知识要点:ABAQUS 二次开发基础; ; ; ;ABAQUS 二次开发概述 ABAQUS 用户子程序接口 ABAQUS 用户子程序介绍应用举例本章导读:本章主要介绍了大型有限元软件 ABAQUS 二次开发的基本情况,主要包括:ABAQUS 二次开发概述、ABAQUS 用户子程序接口、ABAQUS 用户子程序介绍等,最后给出两个算例,介绍采用ABAQUS 进行二次开发以及建立ABAQUS 主程序与用户子程序之间口的基本过程。

9.1 ABAQUS 二次开发概述随着计算技术和计算机的快速发展,有限元软件的发展速度迅速,功能日渐强大。

目前国际上被广泛采用的通用有限元软件有 ANSYS、MSC、ABAQUS 等。

利用商业软件进行计算现在已是科学研究中的一项重要手段。

由于工程问题的千差万别,不同的用户有不同的专业背景和发展方向,通用软件不免在具体的专业方面有所欠缺,针对这些不足,大部分的通用软件都提供了二次开发功能,以帮助用户减少重复性的编程工作、提高开发起点、缩短研发周期、降低开发成本,并能简化后期维护工作,给用户带来很多方便。

基于通用软件平台进行开发,是目前研究的一个重要发展方向。

ABAQUS 也提供了若干用户子程序(User Subroutines)接口,它是一个功能非常强大且适用的分析工具,与命令行的程序格式相比,用户子程序的限制少得多,从而使用更加灵活方便。

ABAQUS 不仅提供标准的有限元分析程序,而且具有良好的开放性,可利用它提供的用户子程序接口生成非标准的分析程序来满足用户的需要,在实际工程中得到广泛应用。

ABAQUS 允许用户通过子程序以代码的形式来扩展主程序的功能,并给用户提供了强大而又灵活的用户子程序接口和应用程序接口(Utility Routine),ABAQUS 共有 42 个用户子程序接口,15 个应用程序接口,用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进行数值交换等等。

ABAQUS二次开发教程

ABAQUS二次开发教程

ABAQUS (Python语言)二次开发人生苦短,我用Python作者:Fan Shengbaot-F-li-tM 曲I,t I t Muh till■Motlcliuunc';:'ipoFlBI BldbNbxlel丄宙倉皆p汕』P ytho n2.72017年12月精选文库Python 语法结构1.8.1 for 循环 1.8.2 while 循环1.12.1目录操作 1.12.2文件操作Python 异常处理 ..第二章ABAQUS/Python 二次开发2.6.1 Part 模块常用函数第一章Python 程序基本语法1.2 Python 元组 1.3 Python 列表 1.4 Python 字典 1.5 Python 集合 1.6 Python 字符串 1.7 Python 分支语句 1.8Pytho n 循环语句1.9 Python 定义函数 1.10 Python 模块 1.11 Python 包 1.12Python 文件和目录 1.132.1 ABAQUS 执行Python 程序2.2 编写 ABAQUS/Python 程序10 2.3 ABAQUS 录制Python 程序 10 2.4ABAQUS/Python 对象介绍 11 2.5 2.62.4.1 session 对象 2.4.2 mdb 对象 2.4.3 odb 对象ABAQUS 完整二次开发示例 ABAQUS 二次开发常用函数 11 11 13 14 16 16精选文库第一章Python程序基本语法1.1 Py thon语法结构Python语言以缩进来约束每个程序块,编写程序时要特别注意每一行的缩进量,同一层次的语句应具有相同的缩进量。

下面是一段Python程序示例:#-*- codi ng:utf-8 -*-for i in range ( 1, 10):for j in range ( 1, i +1):print str (j )+ 'x' +str (i )+ ' = ' +str (i *j ), print该段程序主要功能是实现乘法口诀表输出打印,其中“#-*- codi ng:utf-8 -*-"是约定文档的编码方式。

ABAQUS二次开发教程(2021年整理精品文档)

ABAQUS二次开发教程(2021年整理精品文档)

(完整word版)ABAQUS二次开发教程编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)ABAQUS二次开发教程)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)ABAQUS二次开发教程的全部内容。

ABAQUS(Python语言)二次开发人生苦短,我用Python作者:Fan ShengbaoPython2。

72017年12月目录第一章Python程序基本语法................................................................................1。

1 ....................................................................................... P ython语法结构1。

2 ............................................................................................... P ython元组1.3Python列表 ................................................................................................1.4Python字典 ................................................................................................1。

《2024年ABAQUS用户材料子程序开发及应用》范文

《2024年ABAQUS用户材料子程序开发及应用》范文

《ABAQUS用户材料子程序开发及应用》篇一一、引言ABAQUS是一款功能强大的工程仿真软件,广泛应用于各种工程领域。

其中,用户材料子程序(User-Defined Material Subroutines)的开发是ABAQUS使用中的一个重要环节。

通过用户材料子程序,用户可以根据自己的需求定义材料的本构关系、失效准则等,以更准确地模拟材料的力学行为。

本文将介绍ABAQUS用户材料子程序的开发过程及其应用。

二、ABAQUS用户材料子程序开发1. 需求分析在开发ABAQUS用户材料子程序之前,首先需要进行需求分析。

这包括明确模拟的目的、材料的性质以及所需的本构关系和失效准则等。

通过需求分析,可以确定需要编写的用户材料子程序的类型和功能。

2. 编写用户材料子程序根据需求分析的结果,编写相应的用户材料子程序。

ABAQUS提供了多种编程语言接口,如Fortran、C++等,用户可以根据自己的编程习惯选择合适的编程语言。

在编写用户材料子程序时,需要遵循ABAQUS的编程规范和语法要求。

3. 测试与验证编写完用户材料子程序后,需要进行测试与验证。

这包括对子程序的编译、链接以及在ABAQUS中的加载和运行。

通过对比模拟结果与实际实验数据,验证子程序的正确性和准确性。

如果发现错误或偏差,需要对子程序进行修改和优化。

三、ABAQUS用户材料子程序的应用1. 金属材料的模拟ABAQUS用户材料子程序可以用于模拟金属材料的力学行为。

例如,通过定义金属的本构关系和失效准则,可以模拟金属在拉伸、压缩、弯曲等不同条件下的力学行为。

这有助于研究金属的塑性变形、断裂等行为,为金属材料的性能评估和优化提供依据。

2. 复合材料的模拟ABAQUS用户材料子程序还可以用于模拟复合材料的力学行为。

复合材料由多种材料组成,具有复杂的力学性质。

通过定义复合材料的本构关系和失效准则,可以更准确地模拟复合材料在各种条件下的力学行为。

这有助于研究复合材料的性能优化和应用。

ABAQUS的二次开发及在土石坝静_动力分析中的应用_费康

ABAQUS的二次开发及在土石坝静_动力分析中的应用_费康

1 引 言
有限元在土石坝工程中已得到广泛应用。我国 土石坝规范
[1-2]
一些专业程序存在以下几个弱点: (1)前后处理功 能不甚理想,数据处理工作烦琐; (2)非线性求解 的程序语言不够优化,效率较低,计算费时;(3) 处理复杂边界、荷载条件的能力较弱。要解决这些 问题,需要对这些专业程序进行长期的持之以恒的 维护和进一步开发,难度较大。 大型商业通用有限元软件 ABAQUS[3] 是目前 国际上功能最强的有限元软件之一,具有灵活和功 能强大的二次开发平台,能够模拟非常复杂的工况 已规定,高土石坝应采用静力非线
882




2010 年
和处理高度非线性问题,其计算可靠性已得到广泛 认可。但其在土石坝工程中的应用还存在这样一些 问题: (1)不包含邓肯非线性弹性模型和等效线性 模型等国内外常用的土石料本构模型; (2)不能直 接考虑土石坝分析中的一些特定问题,比如填方分 层施工时新填土层的位移修正、土石坝蓄水后的湿 化变形、坝体材料的液化判别、地震永久变形计算 等。因此,ABAQUS 不能直接用于土石坝的计算。 本文利用 ABAQUS 提供的二次开发平台,将 邓肯模型和等效线性模型编入 ABAQUS 中,并针 对土石坝分析中的特定问题,提出了相应的解决方 案。从而可望充分利用 ABAQUS 前后处理方便、 计算精度高和模拟复杂问题能力强的优点,扩展 ABAQUS 软件的应用范围, 为土石坝分析提供可供 选择的方便、实用的途径。
∂Δσ ∂Δε ;(3)更新与求解结果相关的状态变量。
开发过程中涉及到的关键变量为: (1)由接口传入的变量 STRAN(NTENS) :增量步开始时刻的应变矩 阵, NTENS 是应力分量或应变分量的个数, 三维情 况下为 6; DSTRAN(NTENS):应变增量矩阵; PROPS(NPROPS) :用户自定义的材料参数数 组,NPROPS 是材料参数的个数,由 ABAQUS 的 输入文件(inp 文件)中的*USER MATERIAL 中的 关键词 CONSTANTS 确定; (2)用户需更新的变量 DDSDDE(NTENS, NTENS):雅可比矩阵,三 维情况下为 6×6 矩阵。雅可比矩阵对求解收敛速度 有很重要的影响,但若求解收敛,DDSDDE 并不影 响求解的最终结果。 STRESS(NT步结束时需由用户更新;

ABAQUS软件二次开发及在结构分析中的应用_蒋雨升

ABAQUS软件二次开发及在结构分析中的应用_蒋雨升

ABAQUS软件二次开发及在结构分析中的应用蒋雨升 史治宇(南京航空航天大学航空宇航学院,南京,210016)摘要:本文介绍了A BA Q U S二次开发的四种形式以及图形用户界面的工作原理,具体阐述了定制界面的设计思路和整个分析流程,并将定制界面集成到ABA QU S插件菜单下,更突显了二次开发的便捷性、优越性,为A BA Q U S后处理二次开发做好了准备。

管路系统纷繁复杂,设计时几经修改,重复计算量很大。

本文针对这一特殊问题,基于A BA Q U S,利用其二次开发接口语言Py thon开发出定制的用户图形界面,从而很好地完成了结构分析任务,并且减轻了设计人员的工作量,缩短了管路系统设计周期。

关键词:A BA QU S;二次开发;G U I;Py thon语言引 言ABAQ US是国际上最先进的大型通用有限元计算分析软件之一[1]。

作为一套功能强大的工程模拟有限元软件,ABAQU S可以完成系统级的分析和研究,特别是能够驾驭非常庞大复杂的问题和模拟高度非线性问题,而其丰富的单元库也为特殊系统提供了特别的单元以更好的模拟实际结构。

同时,软件本身提供了二次开发接口,采用十分简捷,清晰,成熟的可扩充性语言Python作为GUI界面前处理二次开发工具,使设计人员可以更好的利用软件资源进行二次开发。

管路系统在飞机、导弹和运载火箭中应用广泛,管路系统的静动特性分析对管路系统设计具有重要意义,管路系统纷繁复杂,计算量很大,设计人员在设计阶段要针对不同的情况进行大量的计算并不断修改。

本文使用ABAQUS软件模拟优化管路系统。

运用接口语言程序对这类大型有限元软件进行二次开发、简化步骤已成为研究这类问题的重要方法和手段。

开发一个能够实现对不同原始输入参数下管路系统的分析及计算结果处理的管路系统静动特性分析界面,具有非常重要的实用价值,也大大减轻设计人员的工作量,促进管路系统设计的程序化,缩短管路系统设计的周期。

ABAQUS前处理程序二次开发在蜂窝材料中的应用_鲍荣浩

ABAQUS前处理程序二次开发在蜂窝材料中的应用_鲍荣浩

第10卷第6期2003年12月工程设计学报Journal of Engineering DesignVol.10No.6Dec.2003收稿日期:2003-07-24.作者简介:鲍荣浩(1969-),男,副教授,博士,从事结构冲击动力学、多胞材料、智能交通系统等研究,E -mail :w enhao -lu @ho tmail .co m ;ABAQUS 前处理程序二次开发在蜂窝材料中的应用鲍荣浩,卢文浩(浙江大学力学系,浙江杭州310027)摘 要:蜂窝材料具有独特的力学性质,其工程应用日益广泛.使用ABA QU S 脚本语言开发了一系列程序,用于建立蜂窝材料的几何模型,从而大大提高建模效率,解决了包含大量单元、几何模型很复杂的蜂窝材料建模时的繁琐重复的问题.关键词:蜂窝材料;A BA Q U S;P yt ho n中图分类号:O 313;T P 311 文献标识码:A 文章编号:1006-754X (2003)06-0330-04Application of second -developed ABAQUS /Pre on honeycombBAO Rong-hao,LU Wen-hao(D epar tment o f M echa nics,Zhejiang U niv ersit y,Hang zho u 310027,China )Abstract :With special mechanical properties,honey com b is applied to mor e and m ore areas.U s-ing ABAQU S script inter face ,sev eral prog rams w ere developed to build geom etrical m odel of cel-lular mater ial.The modeling efficiency is im pro ved and the difficulty in the m odeling fo r the com-plicated honeycomb is solved.Key words :honey com b ;ABAQUS ;Python 蜂窝是由许多平行六棱柱形单元构成的.而蜂窝材料含义比较广,其蜂窝单元可以是三棱柱形、四棱柱形等形状.它们一般相对密度都比较小,是理想的轻质结构材料,可做夹层板的芯层材料,用于航空器械、体育运动器材等.蜂窝材料横向抗压强度比较低,变形能力大,是很好的能量吸收材料,广泛用于各种防撞缓冲的包装盒衬垫.此外,蜂窝材料还具有好的隔热性能,因而也有其他的广泛用途[1,2].随着对蜂窝材料性能研究的深入和蜂窝结构制作工艺的进步,蜂窝材料在工程中的应用日益广泛.研究蜂窝材料经常需要使用ABAQU S 等有限元软件进行各种数值模拟,然而在用有限元对蜂窝材料进行各种数值模拟,特别是对结构的参数进行优化时,经常会遇到一些困难:由于蜂窝材料包含大量单元,几何模型很复杂,对于前处理功能比较差的ABA QUS /CAE GU I 来说,用手工建立有限元几何模型会花费很多的精力.本文要做的就是利用蜂窝材料中单元几何形状的相似性,对ABAUQS 前处理程序进行二次开发,用ABAU QS 脚本语言开发一段程序.有了这样一段程序,用户只需输入单元和材料的几何参数,即可自动生成所需蜂窝材料的几何模型,不必再一个一个单元手工去画了,能节省大量时间和精力,提高工作效率.1 ABAQUS ,Python 简介ABAQUS 是国际上最先进的大型通用有限元计算分析软件之一,具有很好的模拟性能.它拥有大量不同种类的单元模型、材料模型等[3].ABAQUS /CAE 模块是一个完整的ABAQUS 环境,提供一个简单一致的接口,可以用来创建、提交、监视和评价ABAQUS 模拟所得到的结果.Python 是一种面向对象的程序设计语言,ABAQU S 的脚本接口是Python 语言的一个扩展,可以利用ABAQUS 脚本接口,绕过ABAQU S/CAE GUI,直接对ABAQU S 内核进行操作.可以用Py thon 语言编制ABAQUS 脚本接口可以执行的程序[4,5].ABAQUS 脚本接口即是一个基于对象(object )的程序库.脚本接口中的每个对象都拥有相应的数据成员(data )和函数,对象中的函数专门用来处理对象中的数据成员.在Py thon 中,这些函数被称为相应对象的方法(method),用来生成对象的方法被称为构造函数(constructo r).在对象被创建后,可以使用该对象提供的方法来处理对象中的数据成员.特别地,还可以使用setValues ()方法来修改对象中的数据成员.ABAQ US 对象模型是指ABAQUS 脚本接口中的各种对象类型之间的层次结构和相互关系.ABA QUS 脚本接口对Py thon 语言的扩展,主要体现在一系列的ABAQUS 对象类型,以及基于这些对象的方法(method)上.A BAQU S 大约定义了500个对象类型,这些对象类型之间的关系比较复杂.一般将这些对象类型分为3类,如图1所示.其中,Session 对象用来定义viewport 、远程队列、用户定义的视图等.Mdb 对象是保存在模型空间中的对象.声明语句fr om abaqus import *创建了一个名为mdb 的Mdb 对象.Mdb 对象包括model 对象和job 对象.而model 对象又包含part 对象、section 对象、m aterial 对象、step 对象等等.m odel 对象类型几乎包含了建模编程所需要的所有对象类型,是要主要考虑的对象类型[4].图1 ABAQUS 对象模型Fig.1 A BAQ U S o bject's model2 ABAQUS 前处理程序的二次开发2.1 蜂窝材料模型的自动生成本文要研究的是六边形的蜂窝材料模型,需用参数a ,b 和H 来确定单元的形状和大小,如图2和图3所示.使用ABAQUS 脚本进行蜂窝材料建模的基本框架大致是:先做一些准备工作(引入模块、创建模型空间、用户输入),然后创建并绘制sketch,最后图2 典型蜂窝材料的剖面图Fig.2 T y pical ho ney combs'section图3 单元的形状和参数Fig.3 Cell's shape and par ameter生成part 并以图形窗口的形式显示结果.在程序的开始处引入几个模块,对于使用频繁的模块abaqus,abaqusCo nstants,将它引入全局名子空间,在程序中这些模块中的变量名可直接引用,abaqus 模块引入了一些基本的ABAQUS 对象,也提供了一个名为mdb 的缺省的模型空间.abaqus-Constants 引入了ABAQU S 定义的一系列符号常量;对于使用不频繁的模块part,sketch,random ,仍将其变量名限于模块名子空间,在程序中引用这些模块中的变量,需要以模块名为前缀.并创建一个名为Mo del -1的模型,同时专门定义了变量m y-M odel 为它的别名.在程序中,需要用户输入的参数有:模型的长度、宽度及深度.对此ABAQUS 提供了函数g et-Input()用来和用户进行交互.根据用户输入的材料大小,来计算合适的图纸大小.这需要创建一个sketch,并专门定义了一个变量my Sketch 作为它的别名.计算单元的数量及确定画图的起始坐标时,基本的思想就是用单元尽量填满指定的模型范围.蜂窝单元必须是整数,所以这里计算的单元数最后用强制类型转换将其变成整型.为了保证模型图形位于图纸的中央,由于图纸中央的坐标是(0,0),令起始坐标为模型大小的1/2.接下来绘制sketch .图4给出了蜂窝材料模型的结构,其中w ,h 都是根据用户输入可计算出来·331· 第6期鲍荣浩,等:ABA Q U S 前处理程序二次开发在蜂窝材料中的应用的辅助参数.图4 蜂窝模型sketch 的绘制F ig.4 Pr otr act of ho ney comb mo del'sketch蜂窝材料模型在结构上有两大特点.首先,必须一一指定每个六边形的每个角点,将相应的角点连起来作为边.其次,蜂窝材料模型的角点和边大都不只属于一个单元,不能以单元为单位来绘图,否则可能会把角点和边画多次,这在ABAQ US /CAE 中是不允许的.本研究中主要以边的绘制来组织程序.先绘制边.如图5所示,程序先定义一个数组,依图中的序号顺序把各点的坐标放到数组中,之后用sketch 模块的Line ()函数把相邻序号的点连起来.图5 边的绘制F ig .5 Pr otr act of t he ledge绘制单行单元时,可以定义两个数组listBot-to m,listT op,分别表示顶端的角点和底端的角点,如图6所示.然后将listBo ttom 和listTop 相应的偶数点用Line()函数连起来即得竖边.图6 单行单元的绘制Fig .6 Pr ot ract o f a ro w of cells绘制多行单元时,将模型按y 方向分层.如图4所示,每一层虽然并不是完整的单元,但总层数与总行数yNum 仍然是一致的,所以外层循环仍可用yNum 控制.在绘制每一层时,只需绘制顶端的边和竖边.顶端边的绘制非常简单,因为相应的点都是在本层中计算得到的.此外,蜂窝材料模型每一行并不完全一致,奇数行与偶数行的起始坐标相差w /2,这个问题可以在外层循环中解决.在外层循环中,程序先判断是奇数行还是偶数行,之后把相应的起始坐标值赋给x line.竖边的绘制需要用到listBo tto m ,而listBot-tom 就是前一层中的listT op.对于相邻行的错位,在奇数行,错位是向左的,必须在listBottom 的最前端插上一点,这时还少一条底端的边,用Line ()函数就可以画上相应的底边.同理,在偶数行,错位是向右的,在listBottom 的末尾插上一点,然后画上相应的底边.然后,通过给出索引信息(idx )来处理这个加出来的点.做好了sketch,再做par t.程序先定义一个名为Part A 的part,并专门定义了一个变量my Part 作为它的别名.之后调用函数将绘制好的sketch 伸展(ex trude )成一定深度(由用户定义)的三维图形.最后,创建一个名为View port:1的v iew port,用来显示这个part,并设置了显示参数,以便于观察.2.2 自接触的实现在A BAQU S 中,自接触用来描述一个surface 的不同区域的互相接触,这将避免在实际模拟中可能会出现的一个面穿过另一个面的情况.在自接触的定义中,要用到face,side 和surface 几个概念:face 是ABAQU S/CAE 图形中“面”的一种内部表示;surface 是用户定义的区域,用来表示图形刚体上的某些face 的集合;surface 的定义可以指定方向(side):SIDE1(正面),SIDE2(负面),或者SIDE12(两面都要).在ABAQUS 里,part 不可以直接定义接触.在这里,先把part 实例化,程序创建了一个名为In-stance A 的实例,并且专门定义了一个变量my In-stance 作为它的别名.之后程序定义一个名为Int-Prop-1的交互(interaction)属性,用来描述自接触的性质.接下来程序开始一个单元一个单元地定义自接触.如图7所示的蜂窝材料模型,在ABAQU S /CAE 内部一个单元被分成了6个face 即单元的6条边.要把这6条边组成一个surface.可以通过函数findAt ()来实现.findAt ()只需face 上一点即可找到该face .如图7,在6条边上分别选了一个点,即点1、点2、点3、点4、点5、点6.另外,如图所·332·工 程 设 计 学 报第10卷示点1、点2、点6缺省的面方向(SIDE 1)是向内的,直接赋值即可;而点3、点4、点5缺省的面方向(SIDE1)是向外的,应指定面方向为SIDE2.有了surface 的定义,就可以定义自接触.按单元的行列号来命名生成的自接触.最后将定义好自接触的蜂窝材料模型在v iew port 中显示出来.图7 蜂窝材料模型自接触的定义F ig .7 Definit ion o f ho neycombs'self -co ntact3 应用实例应用上述的二次开发程序,对蜂窝材料进行了实体造型,再进行有限元网格划分,网格大小都取为3.0mm ,获得了良好的结果(图8).图8 带网格的蜂窝材料模型效果图(a =10.0,b =10.0,H =60,材料大小150m m ×100mm ×20mm )Fig.8 M eshed ho ney comb's model effective char t(a =10.0,b =10.0,H =60,m aterial size:150m m ×100mm ×20m m )4 结 论本文所提出的对于ABAQU S 系统的二次开发,利用了ABAQUS 脚本接口及Py thon 语言,可以有效实施对程序的控制和文件的管理.既充分利用了ABAQUS 提供的开发模块,深入到ABAQUS 系统内部,实现了系统功能的要求,又利用了系统资源,从而大大提高开发效率.在分析包含大量单元、几何模型很复杂的蜂窝材料的力学性能时,解决了繁琐重复的建模问题.参考文献:[1]HU A Yun-long ,YU T ong -x i(华云龙,余同希).M e-chanical behavior o f cellular so lids [J ].A dvances I n M echanics (力学进展),1991,21(4):457-469.(in Chi-nese)[2]HON IG A ,ST RO N GE W J .Dy namic buckling of animper fect elastic ,visco -plastic plate [J ].I nter nationalJ our nal of I mp act E ngineering .2000,24(9):907-923.[3]Hibbitt ,K ar lsson ,So rensen .A BA QU S S cr ip tingU ser 's M anual .V ersion 6.3[M ].Paw tucket ,U SA :HK S.2002.[4]Hibbit t,K arlsso n,Sor ensen.A B A Q US S cr ip ting Com -mand Ref er ence .V er sion 6.3[M ].P aw tucket ,U SA :HK S,2002.[5]WESL EY J Chun.Cor e Python Pr ogr amming [M ].U SA :Pr ent ice Hall PT R,2001.·333· 第6期鲍荣浩,等:ABA Q U S 前处理程序二次开发在蜂窝材料中的应用。

Abaqus中的二次开发

Abaqus中的二次开发

Abaqus中的二次开发Abaqus中的二次开发可以分为两大类:1)基于FORTRAN语言的用户子程序开发;2)基于Python的脚本开发。

其中第二大类基于Python的脚本开发又可以细分为如下三大类:1)通过Python脚本实现Abaqus参数化建模;2)通过Python脚本实现用户定制化后处理;3)应用Python语言通过FoxGUI Toolkit编写GUI(可视化用户界面)。

今天首先对Abaqus子程序二次开发进行一个概括性的介绍。

虽然Abaqus为用户提供了大量的单元库和求解模型,使用户能够利用这些模型处理绝大多数的问题,但是实际问题毕竟非常复杂,Abaqus不可能求解所有可能出现的问题,所以Abaqus提供了大量的用户自定义子程序(UserSubroutine),允许用户再找不到合适模型的情况下自定义符合自己问题的模型。

这些用户子程序涵盖了建模、载荷到单元的几乎各个部分。

用户子程序具有以下功能和特点:1、如果Abaqus的一些固有模块功能有限,用户子程序可以提高和扩展Abaqus中相应的功能;2、通常用户子程序是用FORTRAN语言的代码写成(Abaqus也提供C++接口);3、它可以以不同的方式运行在模型的不同计算步骤和位置;4、可以在一次计算中包含多个用户子程序。

常用的Abaqus用户子程序举例:DLOAD:用户自定义载荷,例如在复杂工况下,载荷随时间和温度变化;FILM:用户自定义film coefficient,例如定义复杂热交换界面上的热交换系数;UEL:用户自定义单元,是Abaqus用户子程序中功能最强大的,理论上可以实现任意类型的有限元单元定义,通过用户自定义单元和Abaqus的高效求解器,实现任意类型的偏微分方程问题的数值求解;UMAT:用户自定义材料属性,可以用来定义复杂材料的连续模型,用以补充Abaqus材料定义模块功能,例如:自定义复杂特殊塑性模型,自定义复杂特殊损伤模型。

abaqus二次开发

abaqus二次开发

abaqus二次开发Abaqus 使用FQA:Q: abaqus的图形如何copy?A: file>print>file格式为png,可以用Acdsee打开。

Q: 用Abaqus能否计算[Dep]不对称的问题?A: 可以,并且在step里面的edit step对话框other里面的matrix solver有个选项。

Q: 弹塑性矩阵【D】与ddsdde有何联系?A: stress=D*stran;d(stress)=ddsdde*d(stran)。

Q: 在abaqus中,如果采用umat,利用自己的本构,如何让abaqus明白这种材料的弹塑性应变,也就是说,如何让程序返回弹性应变与塑性应变,好在output中输出,我曾想用最笨地方法,在uvarm中定义输出,利用getvrm获取材料点的值,但无法获取增量应力,材料常数等,研究了帮助中的例子,umatmst3.inp,umatmst3.for,他采用mises J2 流动理论,我在output history 显示他已进入塑性状态,但他的PE仍然为0!!?A: 用uvar( )勉强成功。

Q: 本人在用umat作本构模型时,*static,1,500,0.000001,0.1 此时要求的增量步很多,即每次增量要很小,*static1,500 时,在弹性向塑性过度时,出现错误,增量过大,出现尖点.?A: YOU CAN TRY AS FOLLOWS:*STEP,EXTRAPOLATION=NO,INC=2000000*STATIC0.001,500.0,0.00001,0.1。

Q: 模型中存在两个物体的接触,计算过程中报错,怎么回事?A: 接触问题不收敛有两个方面不妨试试:一、在*CONTACT PAIR 里调试ADJUST参数;二、调一些模型参数,比如FRICTION等。

Q: 在边界条件和加载时,总是有initial这个步,然后是我们自己定义的加载步,请问这个initial步,主要作用是什么?能不能去掉?A: 不能去掉,所有的分析都有,是默认的步。

abaqus 二次开发详解

abaqus 二次开发详解

#开头的为注释行.第一步, 建立建模环境, 这一步中py将从abaqus中导入建模所需的所有程序模块.from part import *接下来定义草图环境mdb.models['Model A'].Sketch(name='__profile__', sheetSize=200.0)mdb.models['ModelA'].sketches['__profile__'].sketchOptions.setValues(constructionGeometry=ON, decimalPlaces=2, dimensionTextHeight=5.0, grid=ON,gridFrequency=2, gridSpacing=5.0, sheetSize=200.0, viewStyle=AXISYM)上面的设定为大小200*200, 格栅间距为5, 文字标注高度为5.mdb.models['Model A'].sketches['__profile__'].ObliqueConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0))本句语句设定轴对称模型的对称轴线位置mdb.models['Model A'].sketches['__profile__'].rectangle(point1=(0.0, 0.0),point2=(40.0, -40.0))该语句绘制矩形, 从点0,0 至点40,-40mdb.models['Model A'].Part(dimensionality=AXISYMMETRIC, name='Boden',type=DEFORMABLE_BODY)定义模型为轴对称, 名字为boden,为可变形体mdb.models['Model A'].parts['Boden'].BaseShell(sketch=mdb.models['ModelA'].sketches['__profile__'])del mdb.models['Model A'].sketches['__profile__']绘图完成不要忘记收回建模环境所占的内存第二节: 材料定义 -------------------- 2楼第三节: 装配 -------------------- 3楼第四节: 分析步定义 -------------------- 4楼第五节: 接触定义 -------------------- 5楼第六节: 荷载边界定义 ----------------- 6楼第七节: 网格划分控制 ------------------ 7楼第八节, 任务提交及杂项功能 -------- 8楼关于如何在python中提交多个任务的问题 9楼第二节, 材料定义from material import *from section import *从ABAQUS提供的接口中导入材料库和组件库mdb.models['Model-A'].Material(name='Boden')定义材料名mdb.models['Model A'].materials['Boden'].Density(table=((2000.0, ), ))定义材料密度mdb.models['Model A'].materials['Boden'].Elastic(table=((210546.3, 0.3333), ))定义材料线弹性模量和泊松比, 其它的材料, 如弹塑性, 粘弹性材料均对应不同的对象函数. mdb.models['Model A'].HomogeneousSolidSection(material='Boden',name='boden',thickness=1.0)mdb.models['ModelA'].parts['Boden'].assignSection(region=Region(faces=mdb.models['ModelA'].parts['Boden'].faces[0:1]), sectionName='boden')设定组件为坐标无关性材料,厚度为单位厚度, 并将属性附给所用的组件第三节, 装配from assembly import *首先, 导入装配所用到的对象mdb.models['ModelA'].rootAssembly.DatumCsysByThreePoints(coordSysType=CYLINDRICAL, origin=(0.0, 0.0, 0.0), point1=(1.0, 0.0, 0.0), point2=(0.0,0.0, -1.0))定义坐标类型为柱坐标, 原点0,0,0,另外两个为单位向量, 确定该坐标轴的方向.mdb.models['Model A'].rootAssembly.Instance(name='Boden-1',part=mdb.models['Model A'].parts['Boden'])生成草图对像boden的实体, 名字叫Boden-1. 无偏移插入第四节, 定义分析步from step import *象其它步一样, 先导入分析步要用到的模块mdb.models['Model A'].ImplicitDynamicsStep(initialInc=0.005,maxNumInc=1024,name='Step-1', noStop=OFF, nohaf=OFF,previous='Initial',timeIncrementationMethod=FIXED, timePeriod=5.12)定义对动力隐式分析, 时长为0.005*1024=5.12个时间单位, 前一步为Initialmdb.models['Model A'].fieldOutputRequests['F-Output-1'].setValues(variables=('U',))定义输出到ODB文件的数据, 这里只定义了位移输出mdb.models['Model A'].fieldOutputRequests['F-Output-1'].setValues(frequency=1)定义位移输出的频率为每步都输出mdb.models['Model A'].steps['Step-1'].Restart(frequency=1, overlay=ON)定义重启动析, 每一步记录, 只记录最后一次的正确状态第五节, 定义接触from interaction import *依然是先导入所用的模块mdb.models['Model A'].rootAssembly.PartitionEdgeByParam(edges=(mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[3], ), parameter=0.975)在上部即第3面的97.5%的地方设定一个点, 用于定义接触mdb.models['Model A'].ContactProperty('IntProp-1')定义接触属性名mdb.models['Model A'].interactionProperties['IntProp-1'].TangentialBehavior(formulation=FRICTIONLESS)mdb.models['Model A'].interactionProperties['IntProp-1'].NormalBehavior(allowSeparation=OFF, augmentedLagrange=OFF, pressureOverclosure=HARD)定义接触特性,为无摩擦硬接触不允许分开mdb.models['Model A'].SurfaceToSurfaceContactStd(adjustMethod=NONE,createStepName='Initial', interactionProperty='IntProp-1', master=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[0:1]), name='Int-1', slave=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[4:5]), sliding=FINITE)这一句是建立接触对, 分别为两个面上的一条边, 这里边的定义由ABAQUS内定, 具体可以查阅参考手册第六节, 荷载边界定义from load import *mdb.models['Model A'].PeriodicAmplitude(a_0=1.0, data=((3.0, 1.1), (3.2, 1.7)), frequency=2.454, name='Fourier',start=0.0, timeSpan=STEP)定义fourier级数表示的荷载mdb.models['Model A'].Pressure(amplitude='Fourier', createStepName='Step-1', distribution=UNIFORM, magnitude=50.0, name='Load-1', region=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[2:3]))定义压强, 设定加载的分析步,区域及放大系数mdb.models['Model A'].DisplacementBC(amplitude=UNSET,createStepName='Initial',distribution=UNIFORM, localCsys=None, name='BC-1', region=Region(edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[0:1]+\mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[2:3]+\mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[3:4]),u1=SET,u2=UNSET, ur3=UNSET)mdb.models['Model A'].DisplacementBC(amplitude=UNSET, createStepName='Initial', distribution=UNIFORM, localCsys=None, name='BC-2', region=Region(edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[1:2]),u1=UNSET, u2=SET, ur3=UNSET)设定边界位移为0的边界条件, 注意语法中对象相加的方法.第七节, 网格划分控制from mesh import *import mesh导入网格划分模块elemType1 = mesh.ElemType(elemCode=CAX8,elemLibrary=STANDARD,secondOrderAccuracy=OFF, hourglassControl=STIFFNESS, distortionControl=OFF)elemType2 = mesh.ElemType(elemCode=CAX6M, elemLibrary=STANDARD)a1 = mdb.models['Model A'].rootAssemblyf1 = a1.instances['Boden-1'].facesfaces1 = f1[0:1]regions =(faces1, )a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))定义其中一个物体的网格为二次8结点单元, 如果其中有无法划分成四边形单元的情况, 则用三角形二次6结点单元.elemType1 = mesh.ElemType(elemCode=CAX4, elemLibrary=STANDARD)elemType2 = mesh.ElemType(elemCode=CAX3, elemLibrary=STANDARD)a1 = mdb.models['Model A'].rootAssemblyf1 = a1.instances['fun-1'].facesfaces1 = f1[0:1]regions =(faces1, )a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))定义其中一个物体的网格为一次4结点单元,如果其中有无法划分成四边形单元的情况, 则用三角形一次3结点单元.mdb.models['Model A'].rootAssembly.seedPartInstance(regions=(mdb.models['Model A'].rootAssembly.instances['fun-1'], ), size=0.5)mdb.models['Model A'].rootAssembly.seedPartInstance(regions=(mdb.models['Model A'].rootAssembly.instances['Boden-1'], ), size=1)定义网格划分全局单元大小.mdb.models['Model A'].rootAssembly.generateMesh(regions=(mdb.models['ModelA'].rootAssembly.instances['Boden-1'],mdb.models['ModelA'].rootAssembly.instances['fun-1']))按照定义划分单元第八节, 任务提交及杂项功能mdb.models.changeKey(fromName='Model A', toName='Fall-Muster')修改模型名称mdb.Model(name='Fall-015', objectToCopy=mdb.models['Fall-Muster'])拷贝模型mdb.models['Fall-015'].materials['Boden'].elastic.setValues(table=((210546.3, 0.15),))修改模型中的材料属性mdb.Job(contactPrint=OFF, description='', echoPrint=OFF, explicitPrecision=SINGLE, historyPrint=OFF, model='Fall-015', modelPrint=OFF,multiprocessingMode=THREADS, name='Job-015', nodalOutputPrecision=SINGLE, numCpus=1, numDomains=1, parallelizationMethodExplicit=LOOP,parallelizationMethodStandard=TREE, preMemory=1024.0, scratch='',standardMemory=2048.0, standardMemoryPolicy=MODERATE, type=ANALYSIS,userSubroutine='')生成任务mdb.saveAs(pathName='D:/temp/FundamentSchwingungStudie')保存模型mdb.jobs['Job-015'].submit()提交任务关于如何在python中提交多个任务的问题:如果您使用下面这样的命令做的提交mdb.jobs['Job-01'].submit()mdb.jobs['Job-02'].submit()mdb.jobs['Job-03'].submit()你就会看到, 所有的任务是一次性提交的, 多个任务在一起运行, 这肯定不是你想看到的结果, 如何完成一个接着一个的提交呢, 其实很简单, 在每个任务后面加上一句mdb.jobs['Job-01'].waitForCompletion()就可以了.那么上面的语句就改为mdb.jobs['Job-01'].submit()mdb.jobs['Job-01'].waitForCompletion()mdb.jobs['Job-02'].submit()mdb.jobs['Job-02'].waitForCompletion()mdb.jobs['Job-03'].submit()mdb.jobs['Job-03'].waitForCompletion()......就一切OK了。

第10章 ABAQUS用户材料子程序二次开发及应用

第10章  ABAQUS用户材料子程序二次开发及应用
下面对 UMAT 中用到的一些变量进行说明:
DDSDDE (NTENS NTENS):一个 NTENS×NTENS 的矩阵,称作 Jacobian 矩阵,即 ∂σ ,Δσ ∂ε
是应力的增量, Δε 是应变的增量,DDSDDE(i,j)表示增量步结束时第 j 个应变分量的改变引起的
第 i 个应力分量的变化。通常 Jacobian 矩阵是一个对称矩阵,除非在“*USER MATERIAL”语句 中加入了“UNSYMM”参数。
STATEV (NSTATEV):用于存储与解有关的状态变量的数组,在增量步开始时将数值传递到 UMAT 中,也可在子程序 USDFLD 或 UEXPAN 中先更新数据,然后增量步开始时将更新后的资料 传递到 UMAT 中。在增量步的结束必须更新状态变量矩阵中的数据。和应力张量矩阵不同的是: 对于有限应变问题,除了材料本构行为引起的资料更新以外,与解有关的状态变量矩阵中的任何向 量或者张量都必须通过旋转来考虑材料的刚体运动。状态变量矩阵的维数通过 ABAQUS 输入文件 中的关键词“*DEPVAR”定义,关键词下面数据行的数值即为状态变量矩阵的维数。
10.1.1 ABAQUS 材料库
ABAQUS 具有完善的材料模型库可供选择,它定义了多种材料的本构关系及失效准则,包括: 1. 弹性 线弹性模型可以定义材料的模量、泊松比等弹性特征,具有多种典型失效理论,用于复合材料 结构分析多孔结构弹性模型;用于模拟土壤和可挤压泡沫的弹性行为亚弹性模型;可以考虑应变对 弹性的影响超弹性模型;模拟橡胶类材料的大变形影响粘弹性模型。 2. 塑性 符合 Mises 屈服准则的各向同性和遵循 Hill 屈服准则的各向异性塑性模型;拉伸为 Rankine 屈 服准则,压缩为 Mises 屈服准则的考虑时间硬化和应变硬化的各向同性和各向异性蠕变模型; Drucker-Prager 模型适合于土等粒状材料的模型;Capped Drucker-Prager 模型,适合于地质、隧道

使用python进行ABAQUS的二次开发的简要说明(byYoung2017.06.27)

使用python进行ABAQUS的二次开发的简要说明(byYoung2017.06.27)

使用python进行ABAQUS的二次开发的简要说明(byYoung2017.06.27)(所有用词以英文为准,翻译仅供参考)一、abaqus二次开发总述:首先最重要的知识点需要明确,abaqus在求解核心(Solver/ Kernel)和图形用户界面(GUI)之间使用的交互语言天然就是python,因此使用python进行abaqus二次开发是十分自然的选择(当然你也可以用C++,但是鉴于python所拥有的各类开源库函数的优势,python应当是二次开发的首选)。

abaqus已经使用python 写好了很多用于计算、建模、GUI等操作的模块,因此二次开发的重点在于灵活调用这些模块,完成自己的设计计算需求。

所以原则上,所有能通过abaqus/CAE交互完成的操作,使用脚本都可以实现。

并且由于Python提供的丰富的函数资源库,会使得很多复杂的建模的过程更加参数化,更加可控,有时候甚至更加简单。

其次二次开发的学习要点在于勤查手册,其中Abaqus Scripting User's Manual和Abaqus Scripting User's Reference Manual是查阅的重点,其中后者是abaqus中各个object内置方法,路径,输入参数等的详细说明。

最后关于调用脚本的几种用法说明:(1)直接在命令行调用调用脚本并打开cae界面: abaqus cae script=myscript.py调用用于可视化操作脚本,打开显示界面(注意:此时只有visualization模块被激活): abaqus cae viewer=myscript.py 调用脚本在命令行执行,同时不打开GUI界面,但会进入python 交互界面:abaqus cae noGUI=myscript.py(2)在abaqus的GUI界面调用按照Main Menu: File->Run Script,选择需要调用的脚本文件,abaqus会进行执行(3)在abaqus的命令行交互界面调用(command line interface,在abaqus的GUI界面打开之后,窗口的最下方会有命令输入的位置,在这里也可以调用python脚本,执行方法是键入命令:execfile('myscript.py')abaqus的python脚本其实和其他应用场景下的python脚本没有太多区别,只不过有很多abaqus已经开发好的对象库可供使用,其学习过程和学习任何其他python库都是一致的。

ABAQUS_Fortran二次开发

ABAQUS_Fortran二次开发

目录摘要............................................................... ABSTRACT .. (I)1.绪论 01.1.课题的研究背景 01。

2.............................................. 本文的研究内容和方法1 2。

基于ABAQUS软件的二次开发 (2)2。

1。

...................................................... ABAQUS介绍22.2。

................................................ ABAQUS各模块简介22。

3............................................. ABAQUS的二次开发平台4 2。

4。

........................................... ABAQUS的二次开发语言5 3。

用户材料子程序UMAT (7)3.1。

................................................ UMAT开发环境设置73.2.UMAT注意事项 (8)3。

3.................................................... UMAT接口的原理93.4。

................................................... UMAT的使用方法12 4。

材料非线性问题. (13)4。

1。

............................................ 材料的弹塑性本构关系144.2。

............................................. 非线性有限元算法理论174.3.增量理论常刚度法公式推导 (20)4.4.增量理论切线刚度法公式推导 (21)5.UMAT程序设计和编码 (25)5.1.本构关系描述 (25)5。

ABAQUS二次开发基础

ABAQUS二次开发基础

第9章 ABAQUS二次开发基础知识要点:;ABAQUS二次开发概述;ABAQUS用户子程序接口;ABAQUS用户子程序介绍;应用举例本章导读:本章主要介绍了大型有限元软件ABAQUS二次开发的基本情况,主要包括:ABAQUS二次开发概述、ABAQUS用户子程序接口、ABAQUS用户子程序介绍等,最后给出两个算例,介绍采用ABAQUS进行二次开发以及建立ABAQUS主程序与用户子程序之间口的基本过程。

9.1 ABAQUS二次开发概述随着计算技术和计算机的快速发展,有限元软件的发展速度迅速,功能日渐强大。

目前国际上被广泛采用的通用有限元软件有 ANSYS、MSC、ABAQUS 等。

利用商业软件进行计算现在已是科学研究中的一项重要手段。

由于工程问题的千差万别,不同的用户有不同的专业背景和发展方向,通用软件不免在具体的专业方面有所欠缺,针对这些不足,大部分的通用软件都提供了二次开发功能,以帮助用户减少重复性的编程工作、提高开发起点、缩短研发周期、降低开发成本,并能简化后期维护工作,给用户带来很多方便。

基于通用软件平台进行开发,是目前研究的一个重要发展方向。

ABAQUS 也提供了若干用户子程序(User Subroutines)接口,它是一个功能非常强大且适用的分析工具,与命令行的程序格式相比,用户子程序的限制少得多,从而使用更加灵活方便。

ABAQUS不仅提供标准的有限元分析程序,而且具有良好的开放性,可利用它提供的用户子程序接口生成非标准的分析程序来满足用户的需要,在实际工程中得到广泛应用。

ABAQUS 允许用户通过子程序以代码的形式来扩展主程序的功能,并给用户提供了强大而又灵活的用户子程序接口和应用程序接口(Utility Routine),ABAQUS共有42个用户子程序接口,15个应用程序接口,用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进行数值交换等等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT
RETURN END
UMAT 中的应力矩阵、应变矩阵以及矩阵 DDSDDE、DDSDDT、DRPLDE 等,都是直接分量 存储在前,剪切分量存储在后。直接分量有 NDI 个,剪切分量有 NSHR 个。各分量之间的顺序根 据单元自由度的不同有一些差异,所以编写 UMAT 时要考虑到所使用单元的类别。
10.1 ABAQUS 材料模型库和单元库简介
ABAQUS 被广泛地认为是功能最强的有限元软件之一,可以分析复杂的固体力学和结构力学系 统,特别是能够驾驭非常庞大复杂的问题和模拟高度非线性问题。岩土介质是一种具有非均匀、非 线性性状以及几何形状的任意性、不连续性等特性的特殊多孔介质,而 ABAQUS 的特长就是能够 计算各种不同的材料、复杂荷载加载过程以及变化接触条件的非线性组合问题,这使得已经成为国 内外岩土工程界使用最为普遍的有限元分析计算软件。
DSTRAN (NTENS):应变增量数组。
DTIME:增量步的时间增量。
NDI:直接应力分量的个数。
NSHR:剪切应力分量的个数。
NTENS:总应力分量的个数,NTENS=NDI+NSHR。
由于 UMAT 子程序在单元的积分点上调用,增量步开始时,主程序路径将通过 UMAT 的接口 进入 UMAT,单元当前积分点必要变量的初始值将随之传递给 UMAT 的相应变量。在 UMAT 结束 时,变量的更新值将通过接口返回主程序。ABAQUS 调用 UMAT 过程及次数如图 10-1 所示。
输入文件中,使用关键词“*USER MATERIAL”表示定义用户材料属性。 UMAT 子程序具有强大的功能,具体功能如下: 可以定义材料的本构关系,使用 ABAQUS 材料库中没有包含的材料进行计算,扩充程序 功能。 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予 ABAQUS 中 的任何单元。 必须在 UMAT 中提供材料本构的雅可比(Jacobian)矩阵,即应力增量对应变增量的变化 率。
PROPS (NPROPS):材料常数数组。材料常数的个数,等于关键词“*USER MATERIAL”中 “CONSTANTS”常数设定的值。矩阵中元素的数值对应于关键词“USER MATERIAL”下面的数 据行。
SSE,SPD,SCD:分别定义每一增量步的弹性应变能,塑性耗散和蠕变耗散。它们对计算结 果没有影响,仅仅作为能量输出。 STRAN (NTENS):应变数组。
1. ABAQUS 的通用单元介绍 ABAQUS 程序有一个庞大的单元库,每种单元都具有以下 5 个特征:单元族、自由度(和单 元族直接相关)、节点数目、数学描述、积分方式。 ① 单元族:单元族之间主要的区别是单元族各自假定的几何类型不同,ABAQUS 可以分成八 个大类,包括连续体单元、壳单元、梁单元、刚体单元、桁架单元、薄膜单元、无限元、弹簧粘壶 单元。 ② 自由度:自由度是计算中的基本变量。对于应力/位移模拟,自由度为平动,对于壳和梁单 元,还包括各节点的转动。例如,孔隙水压力单元用于模拟饱和、非饱和土体,自由度为位移和孔 隙水压力,所有孔隙水压力单元的名称都包括“P”,以示区别。 ③ 节点数:ABAQUS 只计算在节点处的位移、转角和温度,单元内任意点的这些变量是通过 节点插值得到,而插值的顺序要取决于单元节点的数目。 ④ 数学描述:单元的数学描述是指用来定义单元行为的数学理论,ABAQUS 所有的应力/位移 单元都是基于拉格朗日或材料行为的描述。为了适用于不同类型的行为,ABAQUS 中的一些单元族 包含具有几种不同数学描述的单元。 ⑤ 积分:在很多情况下,实际选取的高斯积分点数低于精确积分的要求。这种高斯积分级数低 于被积函数所有项精确积分所需要阶数的积分方案称为减缩积分。实际计算表明采用减缩积分常常 可以取得较完全积分更好的精度。 2. ABAQUS 中不同维数的单元 根据维数的不同,ABAQUS 中的单元可以分为 5 种:一维单元、二维单元、三维单元、轴对 称单元、不对称变形的非线性轴对称单元。 3. 用户自定义单元 ABAQUS 提供用户自定义开发单元的功能,用户可以应用 UEL 子程序来开发特殊类型材料的 单元。
本章导读:
本章主要介绍了 ABAQUS 材料模型库和单元库、用户子程序 UMAT 接口原理以及 ABAQUS 对于材料非线性问题的处理,然后就岩土介质弹塑性本构积分算法以及 Drucker-Prager 模型和 Mohr-Coulomb 模型参数之间的转换关系进行了推导。最后,以修正的 Mohr-Coulomb 模型为例, 对用户材料子程序 UMAT 二次开发进行了讲解,并给出算例验证所开发子程序的可靠性和精确性。
挖掘等领域;Cam-Clay 模型,适合于粘土类土壤材料模拟;Mohr-Coulomb 模型,这种模型与 Capped Drucker-Prager 模型相似,但可以考虑不光滑小表面情况;泡沫材料模型可以模拟高度挤压材料, 可用于消费品包装及车辆安全装置等领域;混凝土材料模型,体现混凝土弹塑性破坏理论;渗透性 材料模型,定义依赖孔隙比率、饱和度和流速的各向同性和各向异性的渗透性材料。
10.2 用户子程序 UMAT 接口原理
ABAQUS 不仅提供标准的有限元分析程序,而且具有良好的开放性,可利用它提供的用户子程 序接口生成非标准的分析程序来满足用户的需要,在实际工程中得到广泛应用。
用户材料子程序(User-defined Material Mechanical Behavior,简称 UMAT)是 ABAQUS 提供给 用户定义自己的材料属性的 Fortran 程序接口,使用户能使用 ABAQUS 材料库中没有定义的材料模 型。用户材料子程序 UMAT 交流。在
STRESS (NTENS):应力张量数组,对应 NDI 个直接分量和 NSHR 个剪切分量。在增量步的开
始,应力张量矩阵中的数值通过 UMAT 和主程序之间的接口传递到 UMAT 中,在增量步的结束 UMAT 将对应力张量矩阵更新。对于包含刚体转动的有限应变问题,一个增量步调用 UMAT 之前就 已经对应力张量进行了刚体转动,因此 UMAT 中只需处理应力张量的共旋部分。UMAT 中应力张 量的度量为柯西(真实)应力。
此外,ABAQUS 还提供 UMAT 功能,用户可以应用 UMAT 自定义特殊类型材料。
10.1.2 ABAQUS 单元库
ABAQUS 包括了内容极其丰富的单元库,单元种类多达 433 种,还包括其中针对特殊问题构建 的特殊单元如针对岩土工程的桩-土连接单元、针对海洋工程结构的土切管柱连接单元和锚杆单元 等,这些单元对解决各行业领域的具体问题非常有效。
10.1.1 ABAQUS 材料库
ABAQUS 具有完善的材料模型库可供选择,它定义了多种材料的本构关系及失效准则,包括: 1. 弹性 线弹性模型可以定义材料的模量、泊松比等弹性特征,具有多种典型失效理论,用于复合材料 结构分析多孔结构弹性模型;用于模拟土壤和可挤压泡沫的弹性行为亚弹性模型;可以考虑应变对 弹性的影响超弹性模型;模拟橡胶类材料的大变形影响粘弹性模型。 2. 塑性 符合 Mises 屈服准则的各向同性和遵循 Hill 屈服准则的各向异性塑性模型;拉伸为 Rankine 屈 服准则,压缩为 Mises 屈服准则的考虑时间硬化和应变硬化的各向同性和各向异性蠕变模型; Drucker-Prager 模型适合于土等粒状材料的模型;Capped Drucker-Prager 模型,适合于地质、隧道
C INCLUDE 'ABA_PARAM.INC'
C CHARACTER*80 CMNAME DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS), 2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1), 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)
在每一增量步或每次迭代,求得位移增量或其修正量 Δu 以后,决定新的弹塑性状态的基本步
骤如下: (1)利用几何关系计算应变增量(或其修正量)
{Δε} = [B]{Δδ}
(10-1)
主程序与 UMAT 之间存在数据传递,甚至共享一些变量,因此必须遵守有关 UMAT 的书写格 式,UMAT 中常用的变量在文件开头予以定义,通常格式为:
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT, 2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT, 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
图 10-1 ABAQUS 调用 UMAT 的过程示意图
10.3 本构积分算法
材料本构模型的有限元实现主要包括两方面的内容: 采用一定的方法对本构方程进行局部积分以得到在给定应变增量下的应力增量; 推导相应的一致性切线刚度矩阵。 当应力超出屈服面后,要进行应力调整,使之返回更新后的屈服面,采用的方法称为本构积分 算法。近年来,对金属材料本构模型各种积分算法的理论分析与研究取得重大进展,发现隐式积分 法具有精度好、效率高、无条件稳定等许多优点,且已越来越广泛地应用于非线性计算力学中,出 现了各种一致性切线刚度法。然而目前对岩土非线性本构模型的隐式积分算法的研究不如金属材料 这么成熟,其原因在于:一方面由于采用非相关联流动法则使切线刚度矩阵不对称,给有限元计算 与程序设计造成一些特殊困难;另一方面, 岩土本构模型的复杂性如“奇异角点”问题也使直接计 算岩土弹塑性本构矩阵和切线刚度矩阵遇到困难。
相关文档
最新文档