文档库 最新最全的文档下载
当前位置:文档库 › ABAQUS二次开发基础

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/CAE 和 INPUT 文件中是难以实现的,但在用户子程序 DLOAD 中就很 容易实现。同时,用户子程序也可被用来定义这些单元的线性和非线性特性。 通过用户材料子程序接口,用户可定义任何补充的材料模型,不但任意数量的材料常数都可以 作为资料被读取,而且 ABAQUS 对于任何数量的与解相关的状态变量在每一材料计数点都提供了 存储功能,以便在这些子程序中应用。

9.2 ABAQUS 用户子程序接口
ABAQUS 的用户子程序是根据 ABAQUS 提供的相应接口, 按照 Fortran 语法, 用户自己编写的 代码。它是一个独立的程序单元,可以独立的被存储和编译,也能被其它程序单元引用,因此,利 用它可带回大量数据供引用程序使用,也可以用它来完成各种特殊的功能。它的一般结构形式是: SUBROUTINE S (x1,x2,……,xn) INCLUDE ‘ABA_PARAM.INC’ (用于 ABAQUS/Standard 用户子程序中) OR INCLUDE ‘VABA_PARAM.INC’) (用于 ABAQUS/Explicit 用户子程序中) …… RETURN END 其中,x1,x2,……,xn 是 ABAQUS 提供的用户子程序的接口参数,有些参数是 ABAQUS 传到用户子程序中的,例如:SUBROUTINE DLOAD 中的 KSTEP、KINC、COORDS;有些是需 要用户自己定义的,例如 F。文件 aba_param.inc 和 vaba_param.inc 随着 ABAQUS 软件的安装而 包含在操作系统中,它们含有重要的参数,帮助 ABAQUS 主求解程序对用户子程序进行编译和链 接。当控制遇到 RETURN 语句时便返回到引用程序单元中去,END 语句是用户子程序结束的标志。 在一个算例中,用户可以用到多个用户子程序,但必须把它们放在一个以.for 为扩展名的文件 中。运行带有用户子程序的算例有两种方法:一是在 CAE 中运行,在 EDIT JOB 菜单中的 GENERAL 子菜单的 USER SUBROUTINE FILE 对话框中选择用户子程序所在的文件即可;另外 是在 https://www.wendangku.net/doc/f315199365.html,MAND 中运行,语法如下: abaqus job=job-name user={source-file | object-file} 编制用户子程序时应注意: (1) 用户子程序相互之间不能调用,但可以调用用户自己编写的 Fortran 子程序和 ABAQUS 应用程序。ABAQUS 应用程序必须由用户子程序调用。当用户编写 Fortran 子程序时,建议子程序 名以 K 开头,以免和 ABAQUS 内部程序冲突。 (2) 当用户在用户子程序中利用 OPEN 打开外部文件时,要注意以下两点:一是设备号的选择 是有限制的,只能取 15~18 和大于 100 的设备号,其余的都已被 ABAQUS 占用;二是用户需提 供外部文件的绝对路径而不是相对路径。 (3) 对于不同的用户子程序 ABAQUS 调用的时间是不同的,有的是在每个 STEP 的开始,有 的是 STEP 的结尾,有的是在每个 INCREMENT 的开始等等。当 ABAQUS 调用用户子程序时, 都会把当前的 STEP 和 INCREMENT 利用用户子程序的两个实参 KSTEP 和 KINC 传给用户子 程序,用户可把它们输出到外部文件中,这样就可清楚的知道 ABAQUS 何时调用该用户子程序。 为保证用户子程序的正确执行,子程序的书写必须遵循 ABAQUS 的相关规定。 此外,ABAQUS 的脚本语言接口非常友好,其自嵌的脚本语言是 Python 系国际上广泛使用、 功能强大、具有良好开放性的一种面向对象程序设计语言。所以,应用 Python 在 ABAQUS 中进行 二次开发也比较方便,且可移植性强。ABAQUS 以基于 Python 的语法规则向二次开发者提供了许 多库函数, 这些库函数主要是用来增强 ABAQUS 的交互式(GUI)操作功能。 用户可以通过 ABAQUS 的交互式(GUD 界面实现分析对象的特征造型、指定材料属性、完成网格剖分和控制、提交并监控 分析作业, 也可以使用 ABAQUS 脚本语言越过 ABAQUS 的交互式(GUI)界面直接高效地向 ABAQUS 内核提交任务。使用 Python 可以进行参数化建模,修改交互式建立的模型,还可以一次提交多个作 业。 在国外, 众多的有限元分析和研究者热衷于使用 ABAQUS, 一个很重要的原因就在于 ABAQUS

给用户提供了功能强大,使用方便的二次开发工具和接口,使得用户可以方便的进行富含个性化的 有限元建模、分析和后处理,满足特定工程问题的需要。
9.3 ABAQUS 用户子程序介绍
ABAQUS 程序具有良好的开放性, 可利用它提供的用户子程序接口生成非标准的分析程序来满 足用户的需要,在实际工程中得到广泛应用。
9.9.1 用户子程序分类
ABAQUS 用户子程序大致可以分为 7 类,下面为具体的分类及用户常用子程序。 1. 用户定义的初始条件 利用此类子程序可以在分析时定义初始条件,例如:初始应力场的定义,可以采用 SIGINI 用户 子程序来定义;在渗流场分析时定义初始孔隙水压力分析可采用 UPOREP 用户子程序;多孔介质初 始孔隙度分布的定义可采用 VOIDRI 用户子程序。 2. 用户定义的边界条件 利用此类子程序可以在结构分析或耦合分析时定义特殊类型的边界条件,如定义节点位移,定 义分布机械载荷,定义流体流速和流量等。例如:定义非均布的渗流流速和流量可采用 DFLOW 和 DFLUX 用户子程序,以及定义非均布的渗流系数可采用 FLOW 用户子程序;定义特殊类型的位移 边界可采用 DISP 用户子程序;定义特殊类型分布的面力载荷可采用 DLOAD 子程序;定义特殊分 布的牵引力可采用 UTRACLOAD 子程序;定义温度场边界的 UTEMP 子程序。 9. 用户定义的材料特性和本构关系 利用此类子程序可以定义各种本构模型,如各向异性或正交各向异性的弹性应力-应变关系,各 种非线性弹塑性本构关系、也可以定义蠕变应变率演化方程、定义非线性应力-应变关系,定义加工 硬化或应变硬化曲线等。例如:采用 UMAT 子程序可以定义各类本构模型,包括非线性弹性、弹塑 性以及蠕变等模型;例如采用 CREEP 子程序可以定义各类蠕变或膨胀演化方程;关于材料的热力 学特性可以采用 UMATHT 子程序;定义粘弹性材料或超弹性材料可以采用 UHYPEL 和 UHYPER 子程序;Mullins 材料模型的损伤特性定义可以采用 UMULLINS 用户子程序。 4. 用户定义的单元 对于特殊类型的单元,可采用 UEL 子程序进行定义。 5. 用户定义的状态变量 状态变量主要包括定义场变量、与求解过程相关的状态变量,以后重新定义材料点的状态变量,主 要有 UFIELD 子程序、 SDVINI 子程序和 USDFLD 子程序。 此外还包括定义摩擦接触属性的子程序, 如定义摩擦接触行为的 FRIC 子程序,以及接触面行为定义的 UINTER 子程序等。 6. 定义输出量的用户子程序 此类用户子程序可以定义提取单元结果,将单元量输出,写到后处理结果文件中,如 UVARM 子程序;此外,读取结果文件可采用 URDFIL 子程序。 7. 其他用户子程序 此外, 还包括特殊类型用途的子程序, 如定义多点约束的子程序 MPC, 定义局部坐标的 ORIENT 子程序等。上述子程序的分类仅限于在岩土工程领域,其他领域有不同的分类方法。

9.3.2 常用用户子程序简介
下面就选出几个常用的用户子程序和应用程序进行详细解释: 1. DLOAD 子程序 功能: ? ? 荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。 用户可以从其他程序的结果文件中进行相关操作来定义积分点 F 的大小。
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, JLTYP,SNAME) 主要参数: ? ? ? ? ? ? F 为用户定义的是每个积分点所作用的荷载的大小; KSTEP,KINC 为 ABAQUS 传到用户子程序当前的 STEP 和 INCREMENT 值; TIME(1),TIME(2)为当前 STEP TIME 和 INCREMENT TIME 的值; NOEL,NPT 为积分点所在单元的编号和积分点的编号; COORDS 为当前积分点的坐标; 除 F 外,所有参数的值都是 ABAQUS 传到用户子程序中的。
示例描述:在每个积分点施加的荷载不仅是坐标的函数,而且是随 STEP 变化而变化的。 SUBROUTINE DLOAD(P,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, 1 JLTYP,SNAME) C INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2),COORDS(3) CHARACTER*80 SNAME PARAMETER (PLOAD=100.E4) C IF (KSTEP.EQ.1) THEN !当 STEP=1 时的荷载大小 P=PLOAD ELSE IF (KSTEP.EQ.2) THEN !当 STEP=2 时的荷载大小 P=COORDS(1)*PLOAD !施加在积分点的荷载 P 是坐标的函数 ELSE IF (KSTEP.EQ.3) THEN !当 STEP=3 时的荷载大小 P=COORDS(1)**2*PLOAD ELSE IF (KSTEP.EQ.4) THEN !当 STEP=4 时的荷载大小 P=COORDS(1)**3*PLOAD ELSE IF (KSTEP.EQ.5) THEN !当 STEP=5 时的荷载大小 P=COORDS(1)**4*PLOAD END IF RETURN END 2. DISP 子程序

功能: 该用户子程序用于指定预定义边界条件强制边界条件或者又可称为第类边界条件, 它可 用于定义各种类型自由度的边界条件,可以是时间和坐标的函数。 SUBROUTINE 主要参数: ? 是当前节点上指定变量总的值。指定的变量可以是位移、旋转自由度、孔隙压力、温度等, 由用户在分析输入文件即中指定的自由度决定。U(1)表示位移,U(2)表示速度,U(3)表示 加速度。 ? ? ? ? ? KSTEP,KINC 为 ABAQUS 传到用户子程序当前的 STEP 和 INCREMENT 值; TIME(1),TIME(2)为当前 STEP TIME 和 INCREMENT TIME 的值; NODE,NOEL 为节点编号和单元编号; JDOF 为自由度; COORDS 为当前积分点的坐标; DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
示例描述:边界条件是时间和节点编号的函数,即
f ( x ) = 1.5sin ( 0.1π t ) + 0.5cos ( 0.1π t )
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS) C INCLUDE 'ABA_PARAM.INC' C DIMENSION U(3),TIME(2),COORDS(3) C C THE PRIMARY FUNCTION IS F(T)=1.5 SIN(OMEGA T) + .5 COS(OMEGA T) C WHERE OMEGA IS .1 PI AND T THE CURRENT TIME. C THE APPROPRIATE INTEGRALS AND DERIVATIVES ARE COMPUTED ACCORDINGLY. C OMEGA=.314159 AOMGT=OMEGA*TIME(2) CS=COS(AOMGT) SN=SIN(AOMGT) AN=.5 BN=1.5 IF(NODE.EQ.2.AND.JDOF.EQ.1) THEN C 在节点编号为 2 的点处定义位移边界 U(1)=AN*CS+BN*SN U(2)=OMEGA*(-AN*SN+BN*CS) U(3)=-OMEGA**2*(AN*CS+BN*SN) ELSE IF(NODE.EQ.3.AND.JDOF.EQ.1) THEN C 在节点编号为 3 的点处定义速度 U(1)=(AN*SN+BN*(1.0-CS))/OMEGA U(2)=AN*CS+BN*SN

U(3)=OMEGA*(-AN*SN+BN*CS) ELSE IF(NODE.EQ.4.AND.JDOF.EQ.1) THEN C 在节点编号为 4 的点处定义加速度 U(1)=(AN*(1.0-CS)+BN*(AOMGT-SN))/OMEGA**2 U(2)=(AN*SN+BN*(1.0-CS))/OMEGA U(3)=AN*CS+BN*SN ENDIF RETURN END 3. CREEP 子程序 功能:用于定义率相关塑性、Drucker-Prager、Cap model 等塑性材料的蠕变模型。此外,也可 以定义材料的膨胀。 SUBROUTINE CREEP(DECRA,DESWA,STATEV,SERD,EC,ESW,P,QTILD, 1 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,CMNAME,LEXIMP,LEND, 2 COORDS,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) 主要参数: ? ? ? ? ? ? ? ? ? ? ? DECRA 为等效蠕应变率,不同的塑性模型有不同的表达形式; DESWA 为等效膨胀体应变率,不同的塑性模型有不同的表达形式; STATEV 为状态变量,是与求解过程相关的变量; SERD 为应变能率密度; EC 为等效蠕应变; ESW 为等效膨胀应变; P 为围压,对于 Mises 模型和 Drucker-Prager 模型, p = ? (σ + σ + σ ) / 3 ; 1 2 3 QTILD 为等效蠕变应力,不同的塑性模型有不同的表达形式,对于金属材料,为 Mises 应 力; TEMP 为温度; TIME 为时间,TIME(1)为当前增量步的时间,TIME(2)为总的时间; DTIME 为时间增量。
示例描述:蠕变模型定义为如下形式的函数,即
q ? & = A? & sw = 0 ε ? sinh ? , ε σ0 ? ?
cr
n
式中, A 、 σ 0 和 n 为材料常数。 当采用隐式积分方法时,蠕变模型可以变换为:
q ? ?Δε cr nAΔt ? = ? sinh ? σ0 ? σ0 ? ?q
n ?1
cosh
q
σ0

子程序的定义如下: SUBROUTINE CREEP(DECRA,DESWA,STATEV,SERD,EC,ESW,P,QTILD, 1 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,CMNAME,LEXIMP,LEND, 2 COORDS,NSTATV,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) C INCLUDE 'ABA_PARAM.INC' C CHARACTER*80 CMNAME C DIMENSION DECRA(5),DESWA(5),STATEV(*),PREDEF(*),DPRED(*), 1 TIME(2),COORDS(*),EC(2),ESW(2) C C DEFINE CONSTANTS C A= SIG0= AN= C T1=EXP(QTILD/SIG0) T2=EXP(–QTILD/SIG0) DECRA(1) = A*(.5*(T1–T2))**AN*DTIME IF(LEXIMP.EQ.1) THEN DECRA(5) = AN*A*(.5*(T1–T2))**(AN–1.)*DTIME/ 1 END IF C RETURN END 4. FLOW 子程序 在流固耦合分析中,ABAQUS 允许用户提供渗透比例系数和渗透压(sink pore pressure)这两 个参数,这两个参数用于控制单元面上或面的法线方向上的孔隙流体流动,模拟流体渗入或渗出计 算区域的边界。该面条件假设孔隙流体流速与表面上的渗透压力和参考孔隙流体压力的压力差成正 比,可用下式来表示:
∞ vn = k s ( uw ? uw )
SIG0*.5*(T1+T2)
式中, vn 是面的外法线方向上的渗流速度分量; k s 是渗透比例系数; uw 是面得当前积分点上的渗 透压力; uw 是参考渗透压力。 当单元面或者边界面上的流动时非均匀流动时,用户就需要调用子程序 FLOW 定义非均布流 动。


功能:该子程序可以定义参考渗透压 uw 和比例系数 k s 随位置、时间、孔隙压力、单元编号、 积分点编号等变量发生变化的函数。 SUBROUTINE FLOW(H,SINK,U,KSTEP,KINC,TIME,NOEL,NPT,COORDS, 1 JLTYP,SNAME) C INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2), COORDS(3) CHARACTER*80 SNAME user coding to define H and SINK RETURN END 主要参数: ? ? ? ? ? ? ? H 为渗透比例系数,量纲为[长度]3[力]-1[时间]-1; SINK 为渗透压力 uw ; U 是当前积分点当前时间估计的表面总压力; KSTEP 是计算步编号; KINC 是增量编号; TIME 为时间,TIME(1)表示当前步时间值,TIME(2)表示当前总的时间值; COORDS 是积分点当前的坐标。


5. DFLOW 子程序 当单元面或者边界面上的渗流速度为非均匀时,用户就需要调用子程序 DFLOW 定义非均布流 动。 功能:在固结分析中,用于定义渗流速度是位置、时间、孔隙压力等变量的函数。 SUBROUTINE DFLOW(FLOW,U,KSTEP,KINC,TIME,NOEL,NPT,COORDS, 1 JLTYP,SNAME) C INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2),COORDS(3) CHARACTER*80 SNAME user coding to define FLOW RETURN

END 主要参数: ? ? ? ? ? ? ? FLOW 为渗流速度; U 是当前积分点当前时间估计的表面总压力; KSTEP 是计算步编号; KINC 是增量步编号; NOEL 为单元编号; TIME 为时间,TIME(1)表示当前步时间值,TIME(2)表示当前总的时间值; COORDS 是积分点当前的坐标。
6. SIGINI 子程序 功能:用于定义初始应力场分布。 SUBROUTINE SIGINI(SIGMA,COORDS,NTENS,NCRDS,NOEL,NPT,LAYER, 1 KSPT,LREBAR,NAMES) 主要参数: 1)SIGMA 为应力数组,包括 6 个应力分量; 2)COORDS 为积分点的坐标; 3)NTENS 为应力分量的个数; 4)NCRDS 为坐标分量的个数; 示例描述:垂向地应力是坐标的函数,水平向侧压力系数为 0.8,具体表达式如下:
?σ z = ρ g (100 ? z ) + 3000 x + 1700 y ? ?σ x = 0.8σ z ?σ = 0.8σ z ? y ? ?τ xy = 0 ?τ = 0 ? xz ? ?τ yz = 0
相应的子程序代码为: SUBROUTINE SIGINI(SIGMA,COORDS,NTENS,NCRDS,NOEL,NPT,LAYER, 1 KSPT,LREBAR,REBARN) C INCLUDE 'ABA_PARAM.INC' C DIMENSION SIGMA(NTENS),COORDS(NCRDS) CHARACTER*80 REBARN real aa,bb,cc

aa=0.8 bb=0.75 SIGMA(3)=-10000*(100-COORDS(3))-3000*COORDS(1)-1700*COORDS(2) SIGMA(1)=aa*SIGMA(3) SIGMA(2)=bb*SIGMA(3) SIGMA(4)=0 SIGMA(5)=0 SIGMA(6)=0 c write(*,*) COORDS(3) RETURN END 7. USDFLD 子程序 功能:用于重新定义材料积分点处的场变量,也可获得材料积分点处的信息。该子程序允许场 变量是时间或任何变量的函数,并且可以定义状态变量是场变量的函数,须通过实用子程序 GETVRM 去获得积分点的数据。 SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT, 1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER, 2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA) C INCLUDE 'ABA_PARAM.INC' C CHARACTER*80 CMNAME,ORNAME CHARACTER*3 1 T(3,3),TIME(2) DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*) FLGRAY(15) DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
user coding to define FIELD and, if necessary, STATEV and PNEWDT
RETURN END 主要参数: ? ? ? ? ? FIELD(NFIELD)表示场变量,NFIELD 为场变量的个数; STATEV(NSTATV)为状态变量,NSTATV 为状态变量的个数; TIME 为时间,TIME(1)为当前增量步的时间,TIME(2)为总的时间; DTIME 为时间增量; COORD 为积分点的坐标。
示例描述:取损伤变量与等效塑性应变的关系满足一阶指数衰减函数,即:

D = A0 e
式中, ε p 为等效塑性应变; a 为材料参数; A0 =
?ε p / a
+ B0
, B0 = ?
1 e
?1/ a
1 e
?1/ a
?1
?1

相应的子程序代码为: SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT, 1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER, 2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO, 3 LACCFLA) C INCLUDE 'ABA_PARAM.INC' C CHARACTER*80 CMNAME,ORNAME CHARACTER*3 1 T(3,3),TIME(2) DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*), 1 COORD(*) C real a real m real maxpeeq a=0.2 m=-1/a A0=1/(exp(m)-1) B0=-1/(exp(m)-1) C Absolute value of current strain: CALL GETVRM('PE',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) EVP=ARRAY(1)+ARRAY(2)+ARRAY(3) EPEEQ=ARRAY(7) EPEMAG=ARRAY(8) C field variable DAMAG=A0*exp(m*EPEEQ)+B0 FIELD(1)= DAMAGE C state variable STATEV(1) =EPEEQ FLGRAY(15) DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),

STATEV(2) =DAMAGE C If error, write comment to .DAT file: IF(JRCD.NE.0)THEN WRITE(6,*) 'REQUEST ERROR IN USDFLD FOR ELEMENT NUMBER ', 1 C RETURN END 8. UPOREP 子程序 功能:用于定义初始孔隙压力分布,可以定义孔隙压力是位置的函数。 SUBROUTINE UPOREP(UW0,COORDS,NODE) C INCLUDE 'ABA_PARAM.INC' C DIMENSION COORDS(3) C user coding to define UW0 RETURN END 主要参数: ? ? ? UW0 表示初始孔隙压力; COORDS 为节点坐标; NODE 表示节点编号。 NOEL,'INTEGRATION POINT NUMBER ',NPT ENDIF
9. VOIDRI 子程序 功能:用于定义初始孔隙比分布,可以定义孔隙比是位置的函数。 SUBROUTINE VOIDRI(EZERO,COORDS,NOEL) C INCLUDE 'ABA_PARAM.INC' C DIMENSION COORDS(3) C user coding to define EZERO RETURN

END 主要参数: ? ? ? EZERO 表示初始孔隙比; COORDS 为节点坐标; NOEL 表示单元编号。 10. UEXTERNALDB 子程序 功能: ? ? ? 可以用来和其它用户子程序及其它软件进行数据通讯; 可以用来在适当的时间打开,关闭外部文件; 用户可以把自己编写的 ABAQUS 扩充功能的程序代码通过此用户子程序嵌入到 ABAQUS 中。 SUBROUTINE UEXTERNALDB(LOP,LRESTART,TIME,DTIME,KSTEP,KINC) C INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2) C user coding to set up the FORTRAN environment, open files, close files, calculate user-defined model-independent history information, write history information to external files, recover history information during restart analyses, etc. do not include calls to utility routine XIT RETURN END 参数: 用户可以利用 LOP 开关来控制自己的代码程序何时被 ABAQUS 调用。LOP=0(3)表示在计算 的开始(结束)ABAQUS 调用此用户子程序;LOP=1 (2) 表示在每个 INCREMENT 的开始(结束) ABAQUS 调用此用户子程序;LOP=4 表示在每个 RESTART 的开始 ABAQUS 调用此用户子程序。 这为用户子程序提供了很大的灵活性。 示 例 描 述 :新 建 一 个与 JOB 名 相 同 但 扩 展名 (.ALE) 不 同 的 文 件 ,此 用 户 子 程序 用 到 了 GETENVVAR 应用程序来获得 ABAQUS 的环境变量,用 DMKNAME 子程序来合成所需的文件名。 SUBROUTINE UEXTERNALDB(LOP,LRSTART,TIME,DTIME,KSTEP,KINC) INCLUDE 'ABA_PARAM.INC' CHARACTER XINDIR*255,XFNAME*80 CHARACTER DMKNAME*255,FNAMEX*80 C LXFNAME=0

LXINDIR=0 XFNAME =' ' XINDIR =' ' CALL GETENVVAR('FNAME',XFNAME,LXFNAME) !读取 input 文件名 CALL GETENVVAR ('OUTDIR',XINDIR,LXINDIR) !读取 input 文件所在的路径 IF(LOP.EQ.0) THEN FNAMEX=DMKNAME(XFNAME(1:LXFNAME),XINDIR(1:LXINDIR), '.ALE') C C 生成所要新建文件的文件名 OPEN(UNIT=17,FILE=FNAMEX,STATUS='UNKNOWN',FORM='FORMATTED') 打开文件 WRITE(17,*)'Opening new user external file...' WRITE(17,*)'Writing dummy data to this file...' END IF RETURN END C C C CHARACTER*(*) FNAME,DNAME,EXTEN C C C C FNAME I JOBNAME DNAME I DIRECTORY EXTEN I EXTENSION DMKNAME O DIRECTORY/JOBNAME.EXTEN LTOT = LEN(FNAME) LF = 0 DO K1 = LTOT,2,-1 IF (LF.EQ.0.AND.FNAME(K1:K1).NE.' ') LF = K1 END DO LTOT = LEN(DNAME) LD = 0 DO K1 = LTOT,2,-1 IF (LD.EQ.0.AND.DNAME(K1:K1).NE.' ') LD = K1 END DO LTOT = LEN(EXTEN) LE = 0 DO K1 = LTOT,2,-1 IF (LE.EQ.0.AND.EXTEN(K1:K1).NE.' ') LE = K1 END DO IF ((LF + LD + LE) .LE. LEN(DMKNAME)) THEN DMKNAME = DNAME(1:LD)//FNAME(1:LF) LTOT = LD + LF IF ( LE.GT.0) THEN DMKNAME = DMKNAME(1:LTOT)//EXTEN(1:LE) COMPOSE A FILENAME DIRECTORY/JOBNAME.EXTEN CHARACTER*(*) FUNCTION DMKNAME (FNAME,DNAME,EXTEN)

END IF END IF C RETURN END 11. URDFIL 子程序 功能: ? ? 读结果文件(.FIL)中的数据; 利用 LSTOP 开关,用户可中止 ABAQUS 计算。 SUBROUTINE URDFIL(LSTOP,LOVRWRT,KSTEP,KINC,DTIME,TIME) C INCLUDE 'ABA_PARAM.INC' C DIMENSION ARRAY(513),JRRAY(NPRECD,513),TIME(2) EQUIVALENCE (ARRAY(1),JRRAY(1,1)) user coding to read the results file RETURN END 参数: ? ? ? LSTOP 是决定 ABAQUS 分析是否继续的开关。如果 LSTOP=1,分析中止;否则,分析继 续。 LOVRWRT 是决定能否把上个 INCREMENT 的结果文件覆盖的开关。 LOVRWRT=1, 覆盖, 这样可大大减少结果文件的大小;否则,不覆盖。 LSTEP 和 LOVRWRT 参数是留给用户自己定义的, KSTEP,KINC,DTIME,TIME 是 ABAQUS 传给用户子程序的参数。
URDFIL 用户子程序要用到以下两个 ABAQUS 应用程序:POSFIL 和 DBFILE CALL POSFIL (NSTEP,NINC,ARRAY,JRCD) 功能:如果用户想要对某个 STEP 中的某个 INCREMENT 的结果数据进行操作,POSFIL 可定 位用户想要进行操作的 STEP 和 INCREMENT 数据在结果文件中的位置。 参数: ? ? NSTEP 和 NINC 的值都是由调用它的 URDFIL 用户子程序接口中的参数 KSTEP 和 KINC 传递下来。 ARRAY 是用来存放 RECORD 2000 的值

?
JRCD 为返回值。如果在结果文件中找到相应的 STEP 和 INCREMENT,返回值为 0;否则 为 1。
CALL DBFILE (LOP,ARRAY,JRCD) 功能:读取结果文件中的一条记录。 参数: ? ? ? LOP 是用户自己定义的参数。 LOP 设为 0 表示继续读下一条记录; LOP 设为 2 表示文件已 读到结尾后,又从头开始读起。 ARRAY 是用来存放从结果文件中读到的那条记录的数组。要用户注意的是 ARRAY 数组 的大小要能存放一条记录。 JRCD 是返回值,如果读到文件结尾,返回值为非 0 的整数。
如果想要熟练运用 SUBROUTINE URDFIL, 那么用户必须对结果文件 (.FIL) 的格式有所了解。 要让 ABAQUS 输出结果文件,用户必须在 INPUT 文件或 KEYWORD 中加入*EL FILE 或着*EL NODE。有些数据是 ABAQUS 自动写道结果文件中的,如 ABAQUS 的版本号,节点编号和节点坐 标;有些是用户用*EL FILE 或*EL NODE 定义的,比如应力、应变、节点位移等等。结果文件存放 的是一条条的记录。为了区别不同的记录集,记录中有一项为 RECORD KEY。不同的记录集, RECORD KEY 是不同的。比如节点坐标的记录集(COORD)的 RECORD KEY 为 8;主应力(EP) 的 RECORD KEY 为 403; 用户可根据不同的 RECORD KEY 来分辨不同的记录集。 每条记录包括好 多个数据。每个记录是以*I 开头,数据中的实数是以 D 开头,输出格式为 E22.15 or D22.15;整数 是以 I 开头,接着的数字为这个整数的位数,然后才是整数的值。字符数据以 A 开头。比如记录 *I 18I 41900I 15AS4R I 3195I 3198I 3205I 3204 这条记录第一项 18 表示这条记录一共有 8 个数据,1 为 8 的位数;第二项为 RECORD KEY 其值为 1900,前面的 4 为 1900 的位数。第三项 5 表示是此 单元编号,第四项 S4R 表示单元类型,剩余四项表示此单元四个节点的编号。 示例:此程序是把结果文件中的每个节点的编号、坐标、速度和位移写到文件 F3.DAT SUBROUTINE URDFIL(LSTOP,LOVRWRT,KSTEP,KINC,DTIME,TIME) C INCLUDE 'ABA_PARAM.INC' C DIMENSION ARRAY(513),JRRAY(NPRECD,513),TIME(2),LRUNIT(2,1) 1,COORD(3) EQUIVALENCE (ARRAY(1),JRRAY(1,1)) CALL POSFIL(KSTEP,KINC,ARRAY,JRCD) !定位到当前的 STEP 和 INCREMENT OPEN(UNIT=17,FILE='G:\TEMP\F3.DAT') !打开文件 WRITE(17,*)KINC,KSTEP !把当前的 STEP 和 INCREMENT 输出到文件 DO 1000 K2=1,10 DO 100 K1=1,99999 C CALL DBFILE(0,ARRAY,JRCD) !读入一条记录 IF(JRCD.NE.0)GO TO 110 !判断结果文件是否结束

KEY=JRRAY(1,2) !把 RECORD KEY 赋值于 KEY C IF(KEY.EQ.107) THEN !判断此条记录是否为节点坐标 KEL=JRRAY(1,3) COORD(1)=ARRAY(4) COORD(2)=ARRAY(5) COORD(3)=ARRAY(6) WRITE(17,120) KEL,COORD(1),COORD(2),COORD(3) !输出节点编号,坐标 120 FORMAT(5X,'NODE',I5,5X,'COORD',F20.14,5X,F20.14,5X,F20.14,5X) ELSE IF(KEY.EQ.101)THEN !判断此条记录是否为位移 KEL=JRRAY(1,3) C COORD(1)=ARRAY(4) COORD(2)=ARRAY(5) COORD(3)=ARRAY(6) WRITE(17,140) KEL,COORD(1),COORD(2),COORD(3)!输出节点编号,位移 140 FORMAT(5X,'NODE',I5,5X,'UCOORD',F20.14,5X,F20.14,5X,F20.14,5X) ELSE IF(KEY.EQ.102)THEN !判断此条记录是否为速度 WRITE(17,130) ARRAY(3),ARRAY(4),ARRAY(5),ARRAY(6),ARRAY(7), 1 130 ARRAY(8),ARRAY(9) !输出节点编号,速度 FORMAT(5X,'NODE',I5,5X,'VELOVITY',F20.10,5X,F20.10,5X,F20.10,5X 1 , F20.10,5X,F20.10,5X,F20.10,5X) END IF C 100 1000 110 CONTINUE CONTINUE CONTINUE CLOSE(17) !关闭文件 RETURN END
9.4 应用举例
9.4.1 初始地应力场的定义
模型描述:模型长宽高均为 100 米,z 方向为垂直方向,材料弹性模量为 300MPa,泊松比为 0.125,考虑材料为多孔介质,初始孔隙比为 0.67,渗透系数为 1.1e-12m/s。 模型基本命令流: *Heading *NODE 1, 0.0 , 0.0 , 0.0

2, 100.0 3, 100.0 4, 0.0 5, 0.0
, 0.0 , 100.0 , 100.0 , 0.0
, 0.0 , 0.0 , 0.0 , 100.0
………………………………………… ………………………………………… 124, 31.337534236764, 26.69301406725 , 71.358196059511 125, 28.255601991366, 37.128666882573, 44.667690622895 126, 36.372274542481, 33.887667134948, 20.752001750953 127, 68.132400719929, 52.653986636209, 62.818455216262 128, 77.0432********, 55.926610208643, 23.284517547577 *ELEMENT,TYPE=C3D8P,ELSET=auto2 205, 206, 207, 208, 209, 94, 52, 125, 80, 114, 92, 111, 100, 79, 109, 109, 108, 96, 96, 104, 109, 108, 96, 96, 104, 104, 47, 95, 81, 94, 104, 47, 95, 81, 94, 104, 47, 95, 81, 94, 104 47 95 81 94
………………………………………… ………………………………………… 533, 534, 535, 536, 537, 1, 128, 205, 537, 10, 35, 1 25, 40, 41, 42, 43, 98, 99, 100, 101, 102, 103 44, 78, 79, 80, 91, 92, 93 1 1 128, 125, 118, 123, 84, 29, 116, 125, 107, 124, 122, 123, 117, 105, 81, 122, 123, 117, 105, 81, 123, 127, 127, 114, 82, 123, 127, 127, 114, 82, 123, 127, 127, 114, 82, 123 127 127 114 82
*Nset, nset=allnodes, generate *Elset, elset=allels, generate *Nset, nset=bottom, generate *Nset, nset=left 10, 22, 23, 24, 94, 95, 96, 97, *Nset, nset=right 14, 15, 16, 17, 18, 36, 48, 49, 50, 51, 62, 63, 64, 65, 66, 67 68, 69, 70, 71, 72, 73, 74, 75, 76, 77 *Nset, nset=before 10, 11, 12, 13, 14, 36, 37, 38, 39, 40, 62, 63, 64, 78, 79, 80 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 *Nset, nset=behind 18, 19, 20, 21, 22, 44, 45, 46, 47, 48, 65, 66, 67, 91, 92, 93

104, 105, 106, 107, 108, 109, 110, 111, 112, 113 ************************ *Solid Section, elset=allels, material=clay *Material, name=clay *Elastic 3e+08, 0.125 *****干密度 *DENSITY 1590. *Permeability, specific=10000. 1.1e-12,0.67 *Mohr Coulomb 18.,0. *Mohr Coulomb Hardening 300000.,0. ****************初始条件***************************** *INITIAL CONDITIONS,TYPE=RATIO allnodes,0.67 *INITIAL CONDITIONS,TYPE=PORE PRESSURE allnodes,1.0e+06,0,0,100 *INITIAL CONDITIONS,TYPE=STRESS, GEOSTATIC,USER ****************边界条件***************************** *Boundary before, 2, 2 behind, 2, 2 bottom, 3, 3 left, 1, 1 right, 1, 1 ** ------初始应力场平衡-----------------------*Step,name=Step-balance *Geostatic 1,1 *DLOAD allels,GRAV,10.,0.,0.,-1. *End Step 用户子程序代码: SUBROUTINE SIGINI(SIGMA,COORDS,NTENS,NCRDS,NOEL,NPT,LAYER, 1 KSPT,LREBAR,REBARN) C INCLUDE 'ABA_PARAM.INC' C DIMENSION SIGMA(NTENS),COORDS(NCRDS)

CHARACTER*80 REBARN real aa,bb,cc aa=0.8 bb=0.75 SIGMA(3)=-10000*(100-COORDS(3)) SIGMA(1)=aa*SIGMA(3) SIGMA(2)=bb*SIGMA(3) C C C C SIGMA(4)=-SIGMA(1)*0.3 SIGMA(5)=SIGMA(1)*0.2 SIGMA(6)=-SIGMA(1)*0.1 write(*,*) COORDS(3) RETURN END 该用户子程序也可以通过如下关键语句来实现,其效果是等同的,即: *INITIAL CONDITIONS,TYPE=STRESS, GEOSTATIC allels,-1.0e+06,0,0,100,0.8,0.75 计算结果: 计算通过,可以进行后处理,图 9-1 为 x 方向水平地应力分布云图,图 9-2 为 y 方向水平地应 力分布云图,图 9-3 为 z 方向垂向地应力分布云图,图 9-4 为 Mises 应力分布云图,图 9-5 为孔隙水 压力分布云图,图 9-6 为 z 方向垂向变形分布云图。
图 9-1 x 方向水平地应力分布云图
图 9-2
y 方向水平地应力分布云图
图 9-3
z 方向垂向地应力分布云图
图 9-4
Mises 应力分布云图

ABAQUS-二次开发资料-UMAT

各个楼层及内容索引 2-------------------------------------什么是UMAT 3-------------------------------------UMAT功能简介 4-------------------------------------UMAT开始的变量声明 5-------------------------------------UMAT中各个变量的详细解释 6-------------------------------------关于沙漏和横向剪切刚度 7-------------------------------------UMAT流程和参数表格实例展示 8-------------------------------------FORTRAN语言中的接口程序Interface 9-------------------------------------关于UMAT是否可以用Fortran90编写的问题 10-17--------------------------------Fortran77的一些有用的知识简介 20-25\30-32-----------------------弹塑性力学相关知识简介 34-37--------------------------------用户材料子程序实例JOhn-cook模型压缩包下载 38-------------------------------------JOhn-cook模型本构简介图 40-------------------------------------用户材料子程序实例JOhn-cook模型完整程序+david详细注解[欢迎大家来看看,并提供意见,完全是自己的diy的,不保证完全正确,希望共同探讨,以便更正,带"?"部分,还望各位大师\同仁指教] 1什么是UMAT??? 1.1 UMAT功能简介!!![-摘自庄茁老师的书 UMAT子程序具有强大的功能,使用UMAT子程序: (1)可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行计算,扩充程序 功能。ABAQUS软件2003年度用户年会论文集 (2)几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQUS中 的任何单元; (3)必须在UMAT中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量 的变化率。 (4)可以和用户子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元每一物质点上传 递到UMAT中场变量的数值。 1.2 UMAT开始的变量声明 由于主程序与UMAT之间存在数据传递,甚至共用一些变量,因此必须遵守有关书写格式,UMAT中常用的变量在文件开头予以定义,通常格式为: SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT, 2STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,

ABAQUS-UMAT弹塑本构二次开发的实现

前言 有限元法是工程中广泛使用的一种数值计算方法。它是力学、计算方法和计算机技术相结合的产物。在工程应用中,有限元法比其它数值分析方法更流行的一个重要原因在于:相对与其它数值分析方法,有限元法对边界的模拟更灵活,近似程度更高。所以,伴随着有限元理论以及计算机技术的发展,大有限元软件的应用证变得越来越普及。 ABAQUS软件一直以非线性有限元分析软件而闻名,这也是它和ANSYS,Nastran等软件的区别所在。非线性有限元分析的用处越来越大,因为在所用材料非常复杂很多情况下,用线性分析来近似已不再有效。比方说,一个复合材料就不能用传统的线性分析软件包进行分析。任何与时间有关联,有较大位移量的情况都不能用线性分析法来处理。多年前,虽然非线性分析能更适合、更准确的处理问题,但是由于当时计算设备的能力不够强大、非线性分析软件包线性分析功能不够健全,所以通常采用线性处理的方法。 这种情况已经得到了极大的改善,计算设备的能力变得更加强大、类似ABAQUS这样的产品功能日臻完善,应用日益广泛。 非线性有限元分析在各个制造行业得到了广泛应用,有不少大型用户。航空航天业一直是非线性有限元分析的大客户,一个重要原因是大量使用复合材料。新一代波音 787客机将全部采用复合材料。只有像 ABAQUS这样的软件,才能分析包括多个子系统的产品耐久性能。在汽车业,用线性有限元分析来做四轮耐久性分析不可能得到足够准确的结果。分析汽车的整体和各个子系统的性能要求(如悬挂系统等)需要进行非线性分析。在土木工程业, ABAQUS能处理包括混凝土静动力开裂分析以及沥青混凝土方面的静动力分析,还能处理高度复杂非线性材料的损伤和断裂问题,这对于大型桥梁结构,高层建筑的结构分析非常有效。 瞬态、大变形、高级材料的碰撞问题必须用非线性有限元分析来计算。线性分析在这种情况下是不适用的。以往有一些专门的软件来分析碰撞问题,但现在ABAQUS在通用有限元软件包就能解决这些问题。所以,ABAQUS可以在一个软件完成线性和非线性分析。 ABAQUS给用户提供了强大二次开发接口,尤其是在材料本构方面,给用户开发符合实际工程的材料本构模型提供了强大帮助,本文将针对其用户材料子程序展开研究,总结常用材料模型的开发方法。

基于Python的Abaqus二次开发实例讲解

基于Python的Abaqus二次开发实例讲解 (asian58 2013.6.26) 基于Python的Abaqus的二次开发便捷之处在于: 1、所有的代码均可以先在Abaqus\CAE中操作一遍后再通过rp文件读取,然后再在此基础上进行相应的修改; 2、Python是一种解释性语言,读起来非常清晰,因此在修改程序的过程中,不存在程序难以理解的问题; 3、Python是一种通用性的、功能非常强大的面向对象编程语言,有许多成熟的类似于Matlab函数的程序在网络上流传,为后期进一步的数据处理提供了方便。 为了更加方便地完成Abaqus的二次开发,需进行一些相关约定: 1、所有参数化直接通过点的坐标值进行,直接对几何尺寸的参数化反而更加繁琐; 2、程序参数化已不允许在模型中添加太多的Tie,因此不同零部件的绑定直接通过共节点来进行,这就要求建模方法与常规的建模方法有所区别。思路如下: 将一个整机拆成几个大的Part来建立,一个Part中包含许多零件,这样在划分网格式时就可以自动实现共节点的绑定。不同的零件可通过建立不同的Set来进行区分,不同Part 的绑定可以通过Tie来实现。将一个复杂的结构拆成几个恰当的Part来建立,一方面可以将复杂的模型简单化,使建立复杂模型成为可能;另一方面,不同的Part可单独调用,从而又可实现程序的模块化,增加程序的适应范围,延长程序的使用寿命,也方便后期程序的维护和修改。 3、通过py文件建立起的模型要进行参数优化,已不适合采用Isight中Abaqus模块,需要用到Isight的Simcode模块。 下面详细解释一个臂架的py文件。 #此程序用来绘制臂架前段 #导入相关模块 # -*- coding: mbcs -*- from abaqus import * from abaqusConstants import * #定义整个臂架的长、宽、高 L0=14300 W0=1650 H0=800

ABAQUS二次开发教程

ABAQUS(Python语言)二次开发人生苦短,我用Python 作者:Fan Shengbao Python2、7 2017年12月

目录 第一章Python程序基本语法 (1) 1、1Python语法结构 1 1、2Python元组 1 1、3Python列表 1 1、4Python字典 2 1、5Python集合 3 1、6Python字符串 3 1、7Python分支语句 4 1、8Python循环语句 5 1、8、1for循环 5 1、8、2while循环 5 1、9Python定义函数 5 1、10Python模块 6 1、11Python包 7 1、12Python文件与目录 7

1、1 2、1目录操作 7 1、1 2、2文件操作 7 1、13Python异常处理 8 第二章ABAQUS/Python二次开发 (9) 2、1ABAQUS执行Python程序 9 2、2编写ABAQUS/Python程序 10 2、3ABAQUS录制Python程序 10 2、4ABAQUS/Python对象介绍 11 2、4、1 session对象 (11) 2、4、2 mdb对象 (11) 2、4、3 odb对象 (13) 2、5ABAQUS完整二次开发示例 13 2、6ABAQUS二次开发常用函数 15 2、6、1 Part模块常用函数 (15)

第一章Python程序基本语法 1.1Python语法结构 Python语言以缩进来约束每个程序块,编写程序时要特别注意每一行的缩进量,同一层次的语句应具有相同的缩进量。下面就是一段Python程序示例: #-*- coding: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 该段程序主要功能就是实现乘法口诀表输出打印,其中“#-*- coding:utf-8 -*-”就是约定文档的编码方式。程序主体部分由两个嵌套的for循环语句组成,可以瞧到每一个for循环块的内部都具有相同的缩进量。程序输出结果如下: 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 Python程序中一行中“#”号后面的内容为注释,“#”号只支持单行注释,多行注释可使用“’’’ …‘’’”注释符。 ''' Abaqus6、14 Python ''' 1.2Python元组 Python中的元组(tuple)相当于C语言中的数组简化版,其内容与长度均不可变,只能对其内容进行访问。 tt1 =(1,2,3,4,5) print tt1[1] 程序执行结果: 2 1.3Python列表 Python中的列表(list)相当于C语言中的数组,但比C语言中的数组使用起来更加方便灵活。其长度与内容均可修改,列表就是编程时使用较多的结构。

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毕竟只是软件,如何考虑专业知识成功建模才是最困难的。

ABAQUSFortran二次开发

目录 摘要.................................................................... ABSTRACT................................................................. 1.绪论 0 1.1.课题的研究背景 0 1.2.本文的研究内容和方法 (1) 2.基于ABAQUS软件的二次开发 (2) 2.1.ABAQUS介绍 (2) 2.2.ABAQUS各模块简介 (2) 2.3.ABAQUS的二次开发平台 (5) 2.4.ABAQUS的二次开发语言 (6) 3.用户材料子程序UMAT (7) 3.1.UMAT开发环境设置 (7) 3.2.UMAT注意事项 (8) 3.3.UMAT接口的原理 (10) 3.4.UMAT的使用方法 (14)

4.材料非线性问题 (15) 4.1.材料的弹塑性本构关系 (16) 4.2.非线性有限元算法理论 (20) 4.3.增量理论常刚度法公式推导 (22) 4.4.增量理论切线刚度法公式推导 (23) 5.UMAT程序设计和编码 (25) 5.1.本构关系描述 (25) 5.2.常刚度法程序设计 (27) 5.3.常刚度法程序编码 (28) 5.4.切线刚度法程序设计 (36) 5.5.切线刚度法程序编码 (38) 5.6.程序的调试 (46) 6.程序验证 (48) 6.1.问题描述 (49) 6.2.本构关系 (49) 6.3.ABAQUS自带材料模型计算 (49)

6.4.常刚度法的UMAT验证 (50) 6.5.切线刚度法的UMAT验证 (52) 6.6.两种算法的比较分析 (54) 7.结论与展望 (55) 7.1.结论 (55) 7.2.展望 (56) 致谢 (57) 参考文献 (57) 附1:ABAQUS自带弹塑性材料验证的INP文件 (58) 附2:用于算法验证的INP文件 (81)

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

文章编号:1001-2265(2009)01-0030-04 收稿日期:2008-08-11  *基金项目:江西省科技厅科技支撑项目[2007];江西省教育厅2009年度一般科技项目(G J J 09025);江西省教育厅科技研究项目(G J J 08429) 作者简介:朱兆华(1979—)男,江苏涟水人,南昌大学机电学院硕士研究生,助理工程师,研究方向为材料加工新技术,(E-m a i l )b y j 245@163. c o m 。 A B A Q U S 前、后处理模块二次开发的应用 * 朱兆华1 ,黄菊花1 ,张庭芳1 ,谢世坤2 ,白引娟 3 (1.南昌大学机电工程学院,南昌 330031;2.井冈山大学工学院,江西吉安 343009;3.江西协中汽车 内饰有限公司,南昌 330032) 摘要:文章以实例说明了P y t h o n 脚本语言和A B A Q U S G U I T o o l k i t 在A B A Q U S 的前、后处理模块二次开发中的应用,并阐述了不同模块之间的调用流程。通过二次开发程序控制A B A Q U S 的建模和装配的过程,有效地解决了模型装配时的繁琐、易错等问题,提高了前处理的效率;因A B A Q U S 对板料拉深进行数值 模拟的后处理功能不够全面,为扩展后处理的功能,更好地查看和分析模拟的结果,文章对A B A Q U S 后处理进行二次开发来达到这一目的。 关键词:A B A Q U S ;P y t h o n ;A B A Q U S G U I T o o l k i t ;二次开发中图分类号:T H 16;T G 65 文献标识码:A A p p l i c a t i o no f S e c o n d -d e v e l o p e d o n A B A Q U S P r e -p r e c e s s a n d P o s t -p r o c e s s Z H UZ h a o -h u a 1,H U A N GJ u -h u a 1,Z H A N GT i n g -f a n g 1,X I ES h i -k u n 2,B A I Y i n -j u a n 3 (1.S c h o o l o f M e c h a n i c a l a n dE l e c t r i c a l E n g i n e e r i n g ,N a n c h a n g U n i v e r s i t y ,N a n c h a n g 330031;2.C o l l e g e o f E n g i n e e r i n g ,J i n g g a n g s h a n U n i v e r s i t y ,J i a n g x i J i 'a n 343009,C h i n a ) A b s t r a c t :T h i s a r t i c l e u s i n g a n e x a m p l e t o e x p l a i n P y t h o n a n d A B A Q U S G U I T o o l k i t p r o g r a m m e f o r A B A Q U S p r e -p r o c e s s a n d p o s t -p r o c e s s s e c o n d -d e v e l o p m e n t a n de x p o u n dt h e p r o c e s s a m o n g d i f f e r e n t m o d u l e s 。T h o u g h s e c o n d -d e v e l o p m e n t t h e p r o c e s s o f m o d e l a n da s s e m b l e c a n b e c o n t r o l l e d ,t h e t e d i o u s 、e r r o r -p r o n e a n do t h e r p r o b l e m s c a n b e e f f e c t i v e l y s o l v e d ,s o t h ew o r k i n g e f f i c i e n c y c a nb e h i g h l y i m p r o v e di nt h e p r e -p r o c e s s ;F o r d r a w i n g s h e e t ,p o s t -p r o c e s s f u n c t i o n s p r o v i d e db y A B A Q U S a r ei n s u f f i c i e n t .I no r d e r t o e x t e n dp o s t -p r o c e s s f u n c t i o n s a n d e x a m i n e s i m u l a t i o n r e s u l t e f f e c t i v e l y s e c o n d d e v e l o p o n A B A Q U S p o s t -p r o c e s s i s u s e d i n t h i s p a -p e r . K e y w o r d s :A B A Q U S ;P y t h o n ;A B A Q U S G U I T o o l k i t ;s e c o n d -d e v e l o p m e n t 0 引言 A B A Q U S 是国际上最先进的大型通用有限元计算分析软件之一,可以模拟绝大部分工程材料的线性和非线性行为。A B A Q U S 自带的C A E 是进行有限元分析的前后处理模块,也是建模、分析和后处理的人机交互平台,它具有良好的人机对话界面,因此A B A Q U S 软件在工程中得到了广泛的应用。 P y t h o n 是一种面向对象的脚本语言,它功能强大,既可以独立运行,也可以用作脚本语言。特别适用于 快速的应用程序开发。 1 A B A Q U S /C A E 处理过程和二次开发接口 介绍 A B A Q U S /C A E 处理有两个程序:①内核程序;②G U I 程序。内核程序实际上就是它的脚本语言,它采用的是P y t h o n 语言,同时扩展了P y t h o n 语言,额外提供了大约500个对象模型,对象模型之间的关系复杂,它们间部分关系如图1所示。 图1中,C o n t a i n e r 表示容器,里面包括其他对象, · 30·

ABAQUS_Fortran二次开发

目录 摘要 ......................................................................................................................................... I ABSTRACT ............................................................................................................................ II 1.绪论 .. (1) 1.1.课题的研究背景 (1) 1.2.本文的研究内容和方法 (2) 2.基于ABAQUS软件的二次开发 (3) 2.1.ABAQUS介绍 (3) 2.2.ABAQUS各模块简介 (3) 2.3.ABAQUS的二次开发平台 (5) 2.4.ABAQUS的二次开发语言 (6) 3.用户材料子程序UMAT (8) 3.1.UMAT开发环境设置 (8) 3.2.UMAT注意事项 (9) 3.3.UMAT接口的原理 (10) 3.4.UMAT的使用方法 (12) 4.材料非线性问题 (14) 4.1.材料的弹塑性本构关系 (14) 4.2.非线性有限元算法理论 (17) 4.3.增量理论常刚度法公式推导 (20) 4.4.增量理论切线刚度法公式推导 (21) 5.UMAT程序设计和编码 (25) 5.1.本构关系描述 (25) 5.2.常刚度法程序设计 (27) 5.3.常刚度法程序编码 (29) 5.4.切线刚度法程序设计 (32) 5.5.切线刚度法程序编码 (36) 5.6.程序的调试 (39) 6.程序验证 (40) 1

ABAQUS二次开发教程

ABAQUS(Python语言)二次开发人生苦短,我用Python 作者:Fan Shengbao 2017年12月

目录 第一章Python程序基本语法 (1) 1.1Python语法结构 (1) 1.2Python元组 (1) 1.3Python列表 (1) 1.4Python字典 (2) 1.5Python集合 (3) 1.6Python字符串 (3) 1.7Python分支语句 (4) 1.8Python循环语句 (5) 1.8.1for循环 (5) 1.8.2while循环 (5) 1.9Python定义函数 (5) 1.10Python模块 (6) 1.11Python包 (7) 1.12Python文件和目录 (7) 1.12.1目录操作 (7) 1.12.2文件操作 (7) 1.13Python异常处理 (8) 第二章ABAQUS/Python二次开发 (9) 2.1ABAQUS执行Python程序 (9) 2.2编写ABAQUS/Python程序 (10) 2.3ABAQUS录制Python程序 (10) 2.4ABAQUS/Python对象介绍 (11) 2.4.1 session对象 (11) 2.4.2 mdb对象 (11) 2.4.3 odb对象 (13) 2.5ABAQUS完整二次开发示例 (14) 2.6ABAQUS二次开发常用函数 (16) 2.6.1 Part模块常用函数 (16)

第一章Python程序基本语法 1.1Python语法结构 Python语言以缩进来约束每个程序块,编写程序时要特别注意每一行的缩进量,同一层次 的语句应具有相同的缩进量。下面是一段Python程序示例: #-*- coding: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 该段程序主要功能是实现乘法口诀表输出打印,其中“#-*- coding:utf-8 -*-”是约定文档的编码方式。程序主体部分由两个嵌套的for循环语句组成,可以看到每一个for循环块的内部都 具有相同的缩进量。程序输出结果如下: 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 Python程序中一行中“#”号后面的内容为注释,“#”号只支持单行注释,多行注释可使 用“‘‘‘ …?‘‘”注释符。 ''' Abaqus6.14 Python ''' 1.2Python元组 Python中的元组(tuple)相当于C语言中的数组简化版,其内容和长度均不可变,只能对其内容进行访问。 tt1 =(1,2,3,4,5) print tt1[1] 程序执行结果: 2 1.3Python列表 Python中的列表(list)相当于C语言中的数组,但比C语言中的数组使用起来更加方便灵活。其长度和内容均可修改,列表是编程时使用较多的结构。 1

abaqus_二次开发详解

#开头的为注释行. 第一步,建立建模环境,这一步中p y将从a b a q u s中导入建模所需的所有程序模块.#@ f r o m p a r t i m p o r t*m+ 接下来定义草图环境#w+ m d b.m o d e l s['M o d e l A'].S k e t c h(n a m e='__p r o f i l e__',s h e e t S i z e=200.0)+ m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].s k e t c h O p t i o n s.s e t V a l u e s(c o n s t r u c t i o n G e o m e t r y=O N, d e c i m a l P l a c e s=2,d i m e n s i o n T e x t H e i g h t=5.0,g r i d=O N,~@ g r i d F r e q u e n c y=2,g r i d S p a c i n g=5.0,s h e e t S i z e=200.0,v i e w S t y l e=A X I S Y M) 上面的设定为大小200*200,格栅间距为5,文字标注高度为5. m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].O b l i q u e C o n s t r u c t i o n L i n e(p o i n t1=(0.0,-100.0),p o i n t2=(0.0,100.0)) 本句语句设定轴对称模型的对称轴线位置M m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].r e c t a n g l e(p o i n t1=(0.0,0.0),p o i n t2=(40.0, -40.0)) 该语句绘制矩形,从点0,0至点40,-40+% m d b.m o d e l s['M o d e l A'].P a r t(d i m e n s i o n a l i t y=A X I S Y M M E T R I C,n a m e='B o d e n', t y p e=D E F O R M A B L E_B O D Y) 定义模型为轴对称,名字为b o d e n,为可变形体 m d b.m o d e l s['M o d e l A'].p a r t s['B o d e n'].B a s e S h e l l(s k e t c h=m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'])%@ d e l m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__']w 绘图完成丌要忘记收回建模环境所占的内存W^+ %#^# 第二节:材料定义--------------------2楼M 第三节:装配--------------------3楼+W m^ 第四节:分析步定义--------------------4楼 第五节:接触定义--------------------5楼M+% 第六节:荷载边界定义-----------------6楼 第七节:网格划分控制------------------7楼 第八节,任务提交及杂项功能--------8楼 关于如何在p y t h o n中提交多个任务的问题9楼 第二节,材料定义 f r o m m a t e r i a l i m p o r t*%m f r o m s e c t i o n i m p o r t*O 从A B A Q U S提供的接口中导入材料库和组件库 m d b.m o d e l s['M o d e l-A'].M a t e r i a l(n a m e='B o d e n') 定义材料名+~ m d b.m o d e l s['M o d e l A'].m a t e r i a l s['B o d e n'].D e n s i t y(t a b l e=((2000.0,),))w# 定义材料密度m m d b.m o d e l s['M o d e l A'].m a t e r i a l s['B o d e n'].E l a s t i c(t a b l e=((210546.3,0.3333),)) 定义材料线弹性模量和泊松比,其它的材料,如弹塑性,粘弹性材料均对应丌同的对象函数. m d b.m o d e l s['M o d e l A'].H o m o g e n e o u s S o l i d S e c t i o n(m a t e r i a l='B o d e n', n a m e='b o d e n',t h i c k n e s s=1.0)#O m d b.m o d e l s['M o d e l

ABAQUS二次开发教程

ABAQUS(Python语言)二次开发 令狐采学 人生苦短,我用Python 作者:Fan Shengbao Python2.7 2017年12月

目录 第一章 Python程序基本语法 (1) 1.1 Python语法结构 (1) 1.2 Python元组 (1) 1.3 Python列表 (1) 1.4 Python字典 (2) 1.5 Python集合 (3) 1.6 Python字符串 (3) 1.7 Python分支语句 (4) 1.8 Python循环语句 (5) 1.8.1 ................................................................................................................... f or循环 5 1.8.2 .............................................................................................................. while循环 5 1.9 Python定义函数 (5) 1.10 Python模块 (6) 1.11 Python包 (7) 1.12 Python文件和目录 (7) 1.12.1 目录操作 (7) 1.12.2 文件操作 (7) 1.13 Python异常处理 (8) 第二章 ABAQUS/Python二次开发 (9) 2.1 ABAQUS执行Python程序 (9) 2.2 编写ABAQUS/Python程序 (10) 2.3 ABAQUS录制Python程序 (10) 2.4 ABAQUS/Python对象介绍 (11) 2.4.1 session对象 (11) 2.4.2 mdb对象 (11) 2.4.3 odb对象 (13) 2.5 ABAQUS完整二次开发示例 (14) 2.6 ABAQUS二次开发常用函数 (16) 2.6.1 Part模块常用函数 (16)

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 此时要求的增量步很多,即每次增量要很小, *static 1,500 时,在弹性向塑性过度时,出现错误,增量过大,出现尖点.? A: YOU CAN TRY AS FOLLOWS: *STEP,EXTRAPOLATION=NO,INC=2000000 *STATIC 0.001,500.0,0.00001,0.1。 Q: 模型中存在两个物体的接触,计算过程中报错,怎么回事? A: 接触问题不收敛有两个方面不妨试试: 一、在*CONTACT PAIR 里调试ADJUST参数; 二、调一些模型参数,比如FRICTION等。。 Q: 在边界条件和加载时,总是有initial这个步,然后是我们自己定义的加载步,请问这 个initial步,主要作用是什么?能不能去掉? A: 不能去掉,所有的分析都有,是默认的步。 Q: A solid extrusion base feature 这句话是什么意思?

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/CAE 和 INPUT 文件中是难以实现的,但在用户子程序 DLOAD 中就很 容易实现。同时,用户子程序也可被用来定义这些单元的线性和非线性特性。 通过用户材料子程序接口,用户可定义任何补充的材料模型,不但任意数量的材料常数都可以 作为资料被读取,而且 ABAQUS 对于任何数量的与解相关的状态变量在每一材料计数点都提供了 存储功能,以便在这些子程序中应用。

相关文档
相关文档 最新文档