Abaqus USDFLD使用教程

合集下载

ABAQUS中Fortran子程序调用方法

ABAQUS中Fortran子程序调用方法

第一种方法:/ o/ J5 @6 U/ ^- o$ 1. 建立工作目录/ ]"2. 将Abaqus安装目录\6.4-pr11\site下的aba_param_dp.inc或aba_param_sp.inc拷贝到工作目录,并改名为aba_param.inc;# ~/ |0 I0 E6 {, @4 X3 q: W3. 将编译的fortran程序拷贝到工作目录;4. 将.obj文件拷贝到工作目录;5. 建立好输入文件.inp;6. 运行abaqusjob=inp_name user=fortran name即可。

第二种方法:在Job模块里,创建工作,在EditJob对话框中选择General选项卡,在Usersubroutine file中点击Select 按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for或.f)。

, D8 i7 d/r c6 @" |以下是网上摘录的资料,供参考:. |$ t/ }$W7 Y6 m4 h6 D6 j用户进行二次开发时,要在命令行窗口执行下面的命令:4 O. R+ ^,@( ? abaqus job=job_name user=sub_nameABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库standardU.lib和动态库standardU.dll,还有其它一些临时文件,而它的主程序(如standard.exe和explicit.exe等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。

这种运行机制与ANSYS、LS-DYNA、marc等都不同。

: j6 g' R-o( {0 [* N2 J3 X这些生成的临时文件要到文件夹C:\Documentsand Settings\Administrator\Local Settings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。

Abaqus USDFLD使用教程

Abaqus USDFLD使用教程

user-subroutines-l4-usdfld 课件目录引言 (3)Abaqus的使用 (3)定义场变量相关的材料属性 (3)在用户子程序内定义场变量 (3)定义场变量 (3)访问积分点上的计算数据 (4)显式方法vs. 隐式方法 (4)使用解相关的状态变量(Solution-Dependent State Variables,SDVs) (4)用户子程序GETVRM (4)GETVRM子程序界面 (4)提供给GETVRM的变量 (4)GETVRM返回的变量 (5)GETVRM所支持的单元 (5)USDFLD子程序界面 (5)需定义的变量 (6)可能被定义的变量 (6)变量信息 (6)USDFLD与自动时间增量 (7)实例:层状复合板失效 (7)材料模型 (8)基体拉伸开裂 (9)基体压缩开裂 (9)纤维-基体剪切失效 (9)部分输入数据 (10)用户子程序 (10)结果 (10)备注 (10)1.1.49 USDFLD: User subroutine to redefine field variables at a material point. (11)参考文献 (11)概述 (11)明确的解依赖性 (11)定义场变量 (11)访问材料点数据 (12)状态变量 (12)用户子程序界面 (12)定义的变量 (12)能够更新的变量 (12)传递信息的变量 (13)实例:损伤弹性模型 (14)2.1.6 Obtaining material point information in an Abaqus/Standard analysis (15)参考文献 (15)概述 (15)界面 (16)提供给实用程序的变量 (16)从实用程序中返回的变量 (16)可用的输出变量钥匙 (16)返回分量的顺序 (16)返回值的分析时间 (17)返回值的平衡状态 (17)实例 (17)访问状态依赖变量 (17)不支持的单元类型、进程与输出变量钥匙 (17)引言·通常使用用户子程序USDFLD,当需要对复杂材料行为建模与用户不想要使用UMAT子程序时——在ABAQUS/Standard中的大多数材料属性可以被定为场变量的函数——子程序USDFLD允许在单元的每个积分点定义——子程序可以访问计算结果数据,因此,材料属性可以是计算结果数据的函数·子程序USDFLD只能使用在具有*Material选项的材料属性的单元(详见p. L4.18页上GETVRM所支持的单元)Abaqus的使用·在模型中,与DLOAD和FILM子程序相比,包括USDFLD在内的子程序需要付出更多的努力·通常用户必须定义材料属性的依赖性,例如弹性模量或屈服应力,作为场变量的函数——这可以通过表格输入或额外用户子程序来完成·使用子程序USDFLD来在积分点上定义的值——在材料定义中包括了∗USER DEFINED FIELD 选项,这表明对于使用材料定义的这些单元来说,USDFLD子程序可以使用——可以被定义为在积分点上有的计算结果数据的函数,例如应力、应变定义场变量相关的材料属性这里有两种方法,能够定义场变量相关的材料属性·对于Abaqus内置的材料模型,使用表格定义方式·使用其他用户子程序来定义材料属性为的函数,例如蠕变CREEP表格定义·使用在材料选项上DEPENDENCIES选项来指定对于给定材料选项存在有多少不同场变量——弹性模量(E)是场变量#1(f1)的函数。

Abaqus_USDFLD使用教程

Abaqus_USDFLD使用教程

user-subroutines-l4-usdfld 课件目录引言 (3)Abaqus的使用 (3)定义场变量相关的材料属性 (3)在用户子程序内定义场变量 (3)定义场变量 (4)访问积分点上的计算数据 (4)显式方法vs. 隐式方法 (4)使用解相关的状态变量(Solution-Dependent State Variables,SDVs) (4)用户子程序GETVRM (4)GETVRM子程序界面 (5)提供给GETVRM的变量 (5)GETVRM返回的变量 (5)GETVRM所支持的单元 (5)USDFLD子程序界面 (5)需定义的变量 (6)可能被定义的变量 (6)变量信息 (6)USDFLD与自动时间增量 (7)实例:层状复合板失效 (7)材料模型 (8)基体拉伸开裂 (9)基体压缩开裂 (9)纤维-基体剪切失效 (10)部分输入数据 (10)用户子程序 (10)结果 (10)备注 (10)1.1.49 USDFLD: User subroutine to redefine field variables at a material point. (12)参考文献 (12)概述 (12)明确的解依赖性 (12)定义场变量 (12)访问材料点数据 (13)状态变量 (13)用户子程序界面 (13)定义的变量 (13)能够更新的变量 (14)传递信息的变量 (14)实例:损伤弹性模型 (15)2.1.6 Obtaining material point information in an Abaqus/Standard analysis (17)参考文献 (17)概述 (17)界面 (17)提供给实用程序的变量 (17)从实用程序中返回的变量 (17)可用的输出变量钥匙 (18)返回分量的顺序 (18)返回值的分析时间 (18)返回值的平衡状态 (18)实例 (18)访问状态依赖变量 (18)不支持的单元类型、进程与输出变量钥匙 (19)引言·通常使用用户子程序USDFLD,当需要对复杂材料行为建模与用户不想要使用UMAT子程序时——在ABAQUS/Standard中的大多数材料属性可以被定为场变量的函数——子程序USDFLD允许在单元的每个积分点定义——子程序可以访问计算结果数据,因此,材料属性可以是计算结果数据的函数·子程序USDFLD只能使用在具有*Material选项的材料属性的单元(详见p. L4.18页上GETVRM所支持的单元)Abaqus的使用·在模型中,与DLOAD和FILM子程序相比,包括USDFLD在内的子程序需要付出更多的努力·通常用户必须定义材料属性的依赖性,例如弹性模量或屈服应力,作为场变量的函数——这可以通过表格输入或额外用户子程序来完成·使用子程序USDFLD来在积分点上定义的值——在材料定义中包括了∗USER DEFINED FIELD 选项,这表明对于使用材料定义的这些单元来说,USDFLD子程序可以使用——可以被定义为在积分点上有的计算结果数据的函数,例如应力、应变定义场变量相关的材料属性这里有两种方法,能够定义场变量相关的材料属性·对于Abaqus内置的材料模型,使用表格定义方式·使用其他用户子程序来定义材料属性为的函数,例如蠕变CREEP表格定义·使用在材料选项上DEPENDENCIES选项来指定对于给定材料选项存在有多少不同场变量——弹性模量(E)是场变量#1(f1)的函数。

ABAQUS子程序USDFLD

ABAQUS子程序USDFLD

Abaqus/CAE User's Manual12.8.5 Defining field variables at a material point(在一个材料点定义场变量)In Abaqus/Standard you can introduce dependence on solution variables with user subroutine USDFLD. This subroutine allows you to define field variables at a material point as functions of time, of any of the available material point quantities listed in “Abaqus/Standard output variable identifiers,” Section 4.2.1 of the Abaqus Analysis User's Manual, and of material directions. Material properties defined as functions of these field variables may, thus, be dependent on the solution.User subroutine USDFLD is called at each point for which the material definition includes a reference to the user subroutine.(在ABAQUS里面,你能够用子程序USDFLD来求解变量。

USDFLD允许你将一个材料点上的场变量定义为时间函数,能够使用到的材料点在用户使用手册4.2.1节中“abaqus输出变量的标识码”中被提及到。

Abaqus-USDFLD使用教程

Abaqus-USDFLD使用教程

user-subroutines-l4-usdfld 课件目录引言 (3)Abaqus的使用 (3)定义场变量相关的材料属性 (3)在用户子程序内定义场变量 (3)定义场变量 (3)访问积分点上的计算数据 (4)显式方法vs. 隐式方法 (4)使用解相关的状态变量(Solution-Dependent State Variables,SDVs) (4)用户子程序GETVRM (4)GETVRM子程序界面 (4)提供给GETVRM的变量 (5)GETVRM返回的变量 (5)GETVRM所支持的单元 (5)USDFLD子程序界面 (5)需定义的变量 (6)可能被定义的变量 (6)变量信息 (6)USDFLD与自动时间增量 (7)实例:层状复合板失效 (7)材料模型 (8)基体拉伸开裂 (9)基体压缩开裂 (9)纤维-基体剪切失效 (9)部分输入数据 (10)用户子程序 (10)结果 (10)备注 (10)1.1.49 USDFLD: User subroutine to redefine field variables at a material point (11)参考文献 (11)概述 (11)明确的解依赖性 (11)定义场变量 (11)访问材料点数据 (12)状态变量 (12)用户子程序界面 (12)定义的变量 (12)能够更新的变量 (12)传递信息的变量 (13)实例:损伤弹性模型 (14)2.1.6 Obtaining material point information in an Abaqus/Standard analysis (15)参考文献 (15)概述 (15)界面 (16)提供给实用程序的变量 (16)从实用程序中返回的变量 (16)可用的输出变量钥匙 (16)返回分量的顺序 (16)返回值的分析时间 (17)返回值的平衡状态 (17)实例 (17)访问状态依赖变量 (17)不支持的单元类型、进程与输出变量钥匙 (17)引言·通常使用用户子程序USDFLD,当需要对复杂材料行为建模与用户不想要使用UMA T子程序时——在ABAQUS/Standard中的大多数材料属性可以被定为场变量的函数——子程序USDFLD允许在单元的每个积分点定义——子程序可以访问计算结果数据,因此,材料属性可以是计算结果数据的函数·子程序USDFLD只能使用在具有*Material选项的材料属性的单元(详见p. L4.18页上GETVRM所支持的单元)Abaqus的使用·在模型中,与DLOAD和FILM子程序相比,包括USDFLD在内的子程序需要付出更多的努力·通常用户必须定义材料属性的依赖性,例如弹性模量或屈服应力,作为场变量的函数——这可以通过表格输入或额外用户子程序来完成·使用子程序USDFLD来在积分点上定义的值——在材料定义中包括了∗USER DEFINED FIELD 选项,这表明对于使用材料定义的这些单元来说,USDFLD子程序可以使用——可以被定义为在积分点上有的计算结果数据的函数,例如应力、应变定义场变量相关的材料属性这里有两种方法,能够定义场变量相关的材料属性·对于Abaqus内置的材料模型,使用表格定义方式·使用其他用户子程序来定义材料属性为的函数,例如蠕变CREEP表格定义·使用在材料选项上DEPENDENCIES选项来指定对于给定材料选项存在有多少不同场变量——弹性模量(E)是场变量#1(f1)的函数。

ABAQUS子程序USDFLD.

ABAQUS子程序USDFLD.

Abaqus/CAE User's Manual12.8.5 Defining field variables at a material point(在一个材料点定义场变量)In Abaqus/Standard you can introduce dependence on solution variables with user subroutine USDFLD. This subroutine allows you to define field variables at a material point as functions of time, of any of the available material point quantities listed in “Abaqus/Standard output variable identifiers,” Section 4.2.1 of the Abaqus Analysis User's Manual, and of material directions. Material properties defined as functions of these field variables may, thus, be dependent on the solution.User subroutine USDFLD is called at each point for which the material definition includes a reference to the user subroutine.(在ABAQUS里面,你能够用子程序USDFLD来求解变量。

USDFLD允许你将一个材料点上的场变量定义为时间函数,能够使用到的材料点在用户使用手册4.2.1节中“abaqus输出变量的标识码”中被提及到。

Abaqus-USDFLD使用教程

Abaqus-USDFLD使用教程

4 课件目录引言·通常使用用户子程序,当需要对复杂材料行为建模与用户不想要使用子程序时——在中的大多数材料属性可以被定为场变量的函数——子程序允许在单元的每个积分点定义——子程序可以访问计算结果数据,因此,材料属性可以是计算结果数据的函数·子程序只能使用在具有*选项的材料属性的单元(详见p. L4.18页上所支持的单元)的使用·在模型中,与和子程序相比,包括在内的子程序需要付出更多的努力·通常用户必须定义材料属性的依赖性,例如弹性模量或屈服应力,作为场变量的函数——这可以通过表格输入或额外用户子程序来完成·使用子程序来在积分点上定义的值——在材料定义中包括了∗选项,这表明对于使用材料定义的这些单元来说,子程序可以使用——可以被定义为在积分点上有的计算结果数据的函数,例如应力、应变定义场变量相关的材料属性这里有两种方法,能够定义场变量相关的材料属性·对于内置的材料模型,使用表格定义方式·使用其他用户子程序来定义材料属性为的函数,例如蠕变表格定义·使用在材料选项上选项来指定对于给定材料选项存在有多少不同场变量——弹性模量(E)是场变量#1()的函数。

当增加,E减少。

可以代表材料的损伤。

——热膨胀系数是与场变量#2()的函数——值的改变都会影响弹性模量(E)与热膨胀系数——在表格输入的数据点间将使用线性插值。

当超过了指定范围将使用最后一个数据点,它不会对数据外推——对于每一种材料属性,的范围不必须是一样的在用户子程序内定义场变量·将定义在中的值传递到下列用户子程序内:、、、、、、、、·定义在这些子程序内的材料属性可以是的函数定义场变量·通常认为场变量是节点数据·当开始计算单元应力与刚度时(例如,一个单元循环),它将对节点数据插值到单元的积分点·当使用子程序时,在计算单元的材料属性前,定义在子程序中的这些数值将取代了插值·并不存储定义的这些数值——如果你需要访问先前的值,你必须在中把他们存储为相关解变量(,)·假如你绕过子程序(可能因为在给定步中材料属性不会改变),积分点将使用的差值——通常,这些差值是分配给节点的最初值——假如没有明确给定最初值,在会默认为0——当定义材料属性时使用差值,很可能会造成不正确的结果。

Abaqus USDFLD使用教程

Abaqus USDFLD使用教程

user-subroutines-l4-usdfld 课件目录引言............................................................................................................................................................ 错误!未定义书签。

Abaqus的使用........................................................................................................................................... 错误!未定义书签。

定义场变量相关的材料属性 ............................................................................................................ 错误!未定义书签。

在用户子程序内定义场变量 ............................................................................................................ 错误!未定义书签。

定义场变量........................................................................................................................................ 错误!未定义书签。

访问积分点上的计算数据 ................................................................................................................ 错误!未定义书签。

Abaqus用户子程序USDFLD实例详解-kxh

Abaqus用户子程序USDFLD实例详解-kxh

NUAA--Kong Xianghong
Page � 29
3. Program Introduction
3.1. Fortran Subroutine -- myUSDFLD.for (5)
NUAA
⑦更新STATEV( )。 ⑧根据CR11、CR23等的值,判断是否将其对应 的场变量赋值为1。 FIELD(1)、FIELD(2)、FIELD(3)、FIELD(4)、 FIELD(5)、FIELD(6)分别对应材料中的6个场变 量,这六个场变量的值决定了下一个增量步中该 单元的材料属性。
bynubynubynubynuaaaaaaaaphdkongxianghongphdkongxianghongphdkongxianghongphdkongxianghong20121029201210292012102920121029abaqusabaqusabaqusabaqus用户子程序用户子程序用户子程序用户子程序usdfldusdfldusdfldusdfld实例详解实例详解实例详解实例详解复合材料层压板复合材料层压板复合材料层压板复合材料层压板渐进损伤强度分析渐进损伤强度分析渐进损伤强度分析渐进损伤强度分析nunununuaaaaaaaanuaakongxianghongpagepagepagepage????22221
NUAA
NUAA--Kong Xianghong
Page � 17
2. Solution
2.14. Assign Section (3)
NUAA
四种角度的铺层都赋完属性后, 如下图所示。之后,将所有单元显示在 当前窗口中,如右图所示。
NUAA--Kong Xianghong
Page � 18
2. Solution

ABAQUS子程序USDFLD

ABAQUS子程序USDFLD

Abaqus/CAE User's Manual12.8.5 Defining field variables at a material point个材料点岌义场雯量丿In Abaqus/Standard you can introduce dependence on solution variables with user subroutine USDFLD. This subroutine allows you to define field variables at a material point as functions of time, of any of the available material point quantities listed inoutput variable identifiersj Section4.2」of the Abdqus Analysis User's Manual, and of material directions. Material properties defined as functions of these field variables may, thus, be dependent on the solution.User subroutine USDFLD is called at each point for which the material definition includes a referenee to the user subroutine・(A. ABAQUS里面,你能够用子程序USDFLD来求解变量。

USDFLD允许你将一个材料6上的场雯量龙义为肘间场数,能够使用到的材料点亦用户使用手册421节中“abaqus输岀变量的标识码”中彼提及到。

材料的特性菠定义作%场雯量的函救,因此依赖于求解方比。

浅谈定义场子程序 UFIELD 和 USDFLD 的应用及作用关系

浅谈定义场子程序 UFIELD 和 USDFLD 的应用及作用关系

浅谈定义场子程序 UFIELD 和 USDFLD 的应用及作用关系浅谈定义场子程序 UFIELD 和 USDFLD 的应用及作用关系 UFIELD 与 USDFLD 是abaqus中常用的定义场变量的子程序。

所谓预定义场,简单理解的话可看作是一种与温度场类似的场,比如可以理解成电磁场,浓度场,化学势场等等,只要你在子程序中需要用到类似变量,均可以视其为预定义场。

1. UFIELD(User subroutine to specify predefined field variables.) 用于指定预定义场变量。

需要说明的是 UFIELD定义的场是直接定义到节点上的,所定义的节点场变量可以在分析中随时更新。

有两种更新方法:独立更新和同时更新。

a)独立更新,就是在分析过程中,多个场变量可一个一个地更新数值。

在abaqus中默认的变量更新就是独立更新的方式,也就是一次只有一个变量得到更新,如果有多个变量都需要更新,则需要调用多次UFIELD子程序,更新几个变量就调用几次UFIELD子程序。

这种独立更新方式常用于场变量相互独立的情况。

独立更新的inp 结构如下:*INITIAL CONDITIONS,TYPE=FIELD,VARIABLE=1 NALL,100.*INITIAL CONDITIONS,TYPE=FIELD,VARIABLE=2 NALL,200.*INITIAL CONDITIONS,TYPE=FIELD,VARIABLE=3 NALL,100.*STEP*STATIC*BOUNDARY**********FIELD,USER,VARIABLE=2NALL,*FIELD,USER,VARIABLE=2NALL,*FIELD,USER,VARIABLE=3NALL,子程序结构:SUBROUTINE UFIELD(FIELD,KFIELD,NSECPT,KSTEP,KINC,TIME,NODE,COORDS,( 1 TEMP,DTEMP,NFIELD) CINCLUDE 'ABA_PARAM.INC'CDIMENSION FIELD(NSECPT,NFIELD),COORDS(3),TIME(2),TEMP(NSECPT),1 DTEMP(NSECPT)CIF(***) THENFIELD(1,1)=***ELSE IF(***) THENFIELD(1,1)=***ELSE IF(***) THENFIELD(1,1)=***ENDIFRETURNENDb)同时更新,所谓同时更新,就是在分析中多个变量通过UFIELD子程序同时得到更新,也就是一次有多个变量同时得到更新。

abaqus混凝土徐变计算子程序2.0

abaqus混凝土徐变计算子程序2.0

此为1.0版的修正版,可以考虑混凝土弹性模量随时间,应力变化等情况下的徐变。

可以考虑徐变恢复。

注意,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,3 LACCFLA)CINCLUDE 'ABA_PARAM.INC'CCHARACTER*80 CMNAME,ORNAMECHARACTER*3 FLGRAY(15)DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),1 T(3,3),TIME(2)DIMENSION ARRAY(10),JARRAY(10),JMAC(*),JMATYP(*),1 COORD(*)CC Reading instantaneous thermal strain in direction 11(x axial) C Storing the thermal strain in state variableCCALL GETVRM('THE',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,1 MATLAYO,LACCFLA)STATEV(1)= ARRAY(1)CC Reading instantaneous elastic x axial strainC Storing the thermal strain in state variableC NOTE: ARRAY(1)--X AXIALC ARRAY(2)--Y AXIALC ARRAY(3)--Z AXIALCCALL GETVRM('EE',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,1 MATLAYO,LACCFLA)STATEV(2)= ARRAY(3)CCC Modifying Field variables to model development of Young’sC modulus with age.Cc IF(TIME(2).GT.1) THENc FIELD(1)=TIME(2)c ELSEc FIELD(1)=0c END IFRETURNENDCCCSUBROUTINE UEXPAN(EXPAN,DEXPANDT,TEMP,TIME,DTIME,PREDEF,1 DPRED,STATEV,CMNAME,NSTATV,NOEL)CINCLUDE 'ABA_PARAM.INC'CCHARACTER*80 CMNAMECDIMENSION EXPAN(*),DEXPANDT(*),TEMP(2),TIME(2),PREDEF(*),1 DPRED(*),STATEV(NSTATV),ARRAY(15)REAL CINI(4,8),T0(8),CLAMDA(4),AN(4)REAL CCLOAD(4),EMOD(8)CC SWITCH, II=1, CREEP; II=2, SHRINKAGE, II=3, CREEP+SHRANKAGECKK=3CC===================== INTIAL VALUES =========================C ******* FOR CREEP (USING 1STOPT) *********CC INITIAL FUNCTION IS Y=1.9*T0^(-0.118)*(T-T0)/(61-0.51*FC+T-T0) CC MODELING FUNCTION (SOFTWARE OF 1STOPT) ISC Y=C1*(1-EXP(-LAMDA1*(X-T)))+C2*(1-EXP(-LAMDA2*(X-T)))+C C3*(1-EXP(-LAMDA3*(X-T)))+C4*(1-EXP(-LAMDA4*(X-T)));CC WHERE T IS THE CALCULATING TIME, T0 IS THE LOADING TIMEC THE FACTORS ARE LISTED AS FOLLOWINGC LOADING TIME ARE 7,30,50,100,365,1000,3000(DAYS)C --------------------------------------------------------------- C | A | 7 | 30 | 50 | 100 | 365 | 500 | 1000 | 3000 |C | C1 |C(1,1)|C(1,2)|C(1,3)|C(1,4)|C(1,5)|C(1,6)|C(1,7)|C(1,8)| C | C2 |C(2,1)|C(2,2)|C(2,3)|C(2,4)|C(2,5)|C(2,6)|C(2,7)|C(2,8)| C | C3 |C(3,1)|C(3,2)|C(3,3)|C(3,4)|C(3,5)|C(3,6)|C(3,7)|C(3,8)| C | C4 |C(4,1)|C(4,2)|C(4,3)|C(4,4)|C(4,5)|C(4,6)|C(4,7)|C(4,8)|C ---------------------------------------------------------------IF((CMNAME.EQ."MAT-GIRDER").OR.(CMNAME.EQ."MAT-SLAB")) THENC ELASTIC MODULUSc EMOD=1.0C VALUES OF LAMDACLAMDA(1)=0.0193907053463775CLAMDA(2)=0.00537298967078406CLAMDA(3)=0.00105487934454054CLAMDA(4)=0.0597818282775493C INITIAL VALUES OF COEFFICIENT C1CINI(1,1)=0.255636119E-4CINI(1,2)=0.179033082E-4CINI(1,3)=0.163880576E-4CINI(1,4)=0.147710753E-4CINI(1,5)=0.124416704E-4CINI(1,6)=0.119344460E-4CINI(1,7)=0.110286669E-4CINI(1,8)=0.096165142E-4C INITIAL VALUES OF COEFFICIENT C2CINI(2,1)=0.157591725E-4CINI(2,2)=0.110425824E-4CINI(2,3)=0.101134277E-4CINI(2,4)=0.091232941E-4CINI(2,5)=0.077200858E-4CINI(2,6)=0.074402105E-4CINI(2,7)=0.068149034E-4CINI(2,8)=0.060733782E-4C INITIAL VALUES OF COEFFICIENT C3CINI(3,1)=0.053080102E-4CINI(3,2)=0.037166275E-4CINI(3,3)=0.034018732E-4CINI(3,4)=0.030634778E-4CINI(3,5)=0.025744519E-4CINI(3,6)=0.024744322E-4CINI(3,7)=0.022776919E-4CINI(3,8)=0.018527641E-4C INITIAL VALUES OF COEFFICIENT C4CINI(4,1)=0.120382947E-4CINI(4,2)=0.084348462E-4CINI(4,3)=0.077257019E-4CINI(4,4)=0.069613683E-4CINI(4,5)=0.058953358E-4CINI(4,6)=0.056904171E-4CINI(4,7)=0.051955726E-4CINI(4,8)=0.045768253E-4CC LOADING AGE(DAYS)T0=(/7,30,50,100,365,500,1000,3000/)C MODULUS OF ELASTIC AT T0'S AGEEMOD=(/2.546295,3.061405,3.147964,3.217927, * 3.271749,3.277386,3.285052,3.290193/)CC ======== FOR SHRINKAGE =======C TGSH-- TIME OF SHRINKAGE CALCULATION FOR "GIRDER" (DAYS)C TDSH-- TIME OF SHRINKAGE CALCULATION FOR "DECK" (DAYS)C 480E-6-- ULTIMATE SHRINKAGE STRAIN IN AASHRO 2007(SI)C FC --SPECIFIED COMPREI\SSIVE STRENGTH OF CONCRETE AT TIME OF C PRESTRESSING FOR PRESTRESSIONED MEMBERS AND AT TIME OFC INITIAL LOADING FOR NONPRESTRESSIONED MEMBERS, fci'IN AASHTO(2007)C STANDARD VALUE IS 28MPaC CKF --FACTOR FOR THE EFFECT OF CONCRETE STRENGTHC CKTD--TIME DEPENDENT(DEVELOPMENT) FACTOR (THE FIRST TWO TURMS) C RHSH--AMBIENT RELERTIVE HUMIDITY CORRECION FACTOR FOR SHRINKAGETGSH=1.0TDSH=50.0SHU=480E-6RH=70.0FC=28.0CKF=35.0/(7.0+FC)CKTD=61.0-0.58*FCRHSH=2.0-0.014*RHIF (CMNAME.EQ."MAT-SLAB") THENCKF=35.0/(7.0+0.8*FC)CKTD=61.0-0.58*0.8*FCEND IFCC=================INTERPOSITION=====================C ****COMPUTING THE COEFFICIENTS OF KABIR SERIES****CC STATEV(1)--THERMAL STRAINC STATEV(2)--ELASTIC STRAIN OF CURRENT INCREMENTC STATEV(3)--ELASTIC STRAIN OF PREVIOUS INCREAMENTC STATEV(4)--DTIME OF PREVIOUS INCREAMENTC DELTEE --INCREMENT OF ELASIC STRAINTCUR=TIME(2)THE=STATEV(1)EECUR=STATEV(2)EEPRE=STATEV(3)DTPRE=STATEV(4)CIF((TCUR.GE.T0(1)).AND.(TCUR.LT.T0(2)))THENJJ=1TA=T0(JJ)TB=T0(JJ+1)EMA=EMOD(JJ)EMB=EMOD(JJ+1)ELSE IF((TCUR.GE.T0(2)).AND.(TCUR.LT.T0(3)))THENJJ=2TA=T0(JJ)TB=T0(JJ+1)EMA=EMOD(JJ)EMB=EMOD(JJ+1)ELSE IF((TCUR.GE.T0(3)).AND.(TCUR.LT.T0(4)))THENJJ=3TA=T0(JJ)TB=T0(JJ+1)EMA=EMOD(JJ)EMB=EMOD(JJ+1)ELSE IF((TCUR.GE.T0(4)).AND.(TCUR.LT.T0(5)))THENJJ=4TA=T0(JJ)TB=T0(JJ+1)EMA=EMOD(JJ)EMB=EMOD(JJ+1)ELSE IF((TCUR.GE.T0(5)).AND.(TCUR.LT.T0(6)))THENJJ=5TA=T0(JJ)TB=T0(JJ+1)EMA=EMOD(JJ)EMB=EMOD(JJ+1)ELSE IF((TCUR.GE.T0(6)).AND.(TCUR.LT.T0(7)))THENJJ=6TA=T0(JJ)TB=T0(JJ+1)EMA=EMOD(JJ)EMB=EMOD(JJ+1)ELSE IF((TCUR.GE.T0(7)).AND.(TCUR.LT.T0(8)))THENJJ=7TA=T0(JJ)TB=T0(JJ+1)EMA=EMOD(JJ)EMB=EMOD(JJ+1)END IFCC COMPUTNG REAL COEFFICIENT OF C, STORING IN CCLOAD(I)CIF(TCUR.LT.T0(1))THENDO 5 I=1,4CCLOAD(I)=CINI(I,1)5 CONTINUEELSE IF((TCUR.GE.T0(1)).AND.(TCUR.LT.T0(8)))THENDELTAT=TB-TAC VARING MODULUS OF ELASTICEMODL=(TCUR-TA)/DELTAT*(EMODA-EMODB)+EMODAC COMPUTING COEFFICIENT OF CDO 10 I=1,4CA=CINI(I,JJ)CB=CINI(I,JJ+1)C INTERPOSITION FOR ANY LOADING TIMECCLOAD(I)=(TCUR-TA)/DELTAT*(CB-CA) +CA10 CONTINUEELSEDO 20 I=1,4CCLOAD(I)=CINI(I,8)20 CONTINUEEND IFCDELTEE=EECUR-EEPREDELTSTR=DELTEE*EMODLC =================================================C COMPUTING THE COEFFICIENT INCLUDING STRESS AN(I)C OPEN(2,ACCESS='APPEND',FILE='C:\CREEP.TXT')CIF((TCUR-1.0).LT.1E-5)THENDO 30 I=1,4STATEV(I+4)=0.030 CONTINUEEND IFCDO 40 I=1,4AN(I)=STATEV(I+4)*EXP(-CLAMDA(I)*DTPRE)+* DELTSTR*CCLOAD(I)STATEV(I+4)=AN(I)40 CONTINUECC WRITE(2,'(10X,5F10.6)')TIME(2),(STATEV(I+4),I=1,4)c WRITE(2,*)' TIME(2) CCLOAD(I)'C WRITE(2,'(2X,4F10.6)')((CINI(I,J),J=1,8),I=1,4) c WRITE(2,*)' TIME(2) DTIME DTPRE DELTSTR'C WRITE(2,'(6X,4F10.6)')TIME(2),DTIME, DTPRE, DELTSTRc WRITE(2,*)' STATEV(I)'C WRITE(2,'(10X,5F10.6)')TIME(2),(STATEV(I+4),I=1,4)c WRITE(2,*)CEXPANCR=STATEV(5)*(1-EXP(-CLAMDA(1)*DTIME))+ STATEV(6)** (1-EXP(-CLAMDA(2)*DTIME))+STATEV(7)*(1-EXP(-CLAM DA(3)** DTIME))+STATEV(8)*(1-EXP(-CLAMDA(4)*DTIME))CIF(TCUR.LT.T0(1))THENEXPANCR=0.0END IFCEND IF ! CORESPONG TO LINE 78'S IFCC ======================SHRINKAGE=========================CC COMPUTING SHRINKAGE (FORMULA 5.4.2.3.3-1 IN AASHTO(2007))CCIF (CMNAME.EQ."MAT-GIRDER") THENIF (TIME(2).GT.TGSH)THENTSH=TIME(2)-TGSHTPSH=TSH-DTIMEIF(TPSH.LT.0) THENTPSH=0.0END IFEXPANSH=SHU*RHSH*CKF*(-TSH/(CKTD+TSH)+TPSH /(CKTD+TPSH))END IFEND IFCIF (CMNAME.EQ."MAT-SLAB") THENIF (TIME(2).GT.TDSH)THENTSH=TIME(2)-TDSHTPSH=TSH-DTIMEIF(TPSH.LT.0) THENTPSH=0.0END IFEXPANSH=SHU*RHSH*CKF*(-TSH/(CKTD+TSH)+TPSH /(CKTD+TPSH))END IFEND IFC WRITE(2,'(10X,4F10.6)')RHSH,CKF,TSH,TPSH,EXPANSHCC FOR OUTPUT, KK=1 FOR CREEP ONLYC KK=2 FOR SHRINKAGE ONLYC KK=3 FOR SUM OF CREEP AND SHRINKAGEIF((KK-1).LT.1E-6) THENEXPAN(1)=EXPANCRELSE IF((KK-2).LT.1E-6)THENEXPAN(1)=EXPANSHELSEEXPAN(1)=EXPANCR+EXPANSHEND IFCC STORING CURRENT STRAIN INTO STATEV(3)C STORING CURRENT DTIME INTO STATEV(4)CSTATEV(3)=EECURSTATEV(4)=DTIMEC CLOSE(2)RETURNENDC。

ABAQUS中Fortran子程序调用方法—自己总结

ABAQUS中Fortran子程序调用方法—自己总结

第一种方法:在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine file中点击Select按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for 或.f)。

第二种方法:1. 建立工作目录2. 将Abaqus安装目录\\site下的或拷贝到工作目录,并改名为;3. 将编译的fortran程序拷贝到工作目录;4. 将.obj文件拷贝到工作目录;5. 建立好输入文件.inp;6. 运行abaqus job=inp_name user=fortran name即可。

以下是网上摘录的资料,供参考:用户进行二次开发时,要在命令行窗口执行下面的命令:abaqus job=job_name user=sub_nameABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库和动态库,还有其它一些临时文件,而它的主程序(如和等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。

这种运行机制与ANSYS、LS-DYNA、marc等都不同。

这些生成的临时文件要到文件夹C:\Documents and Settings\Administrator\LocalSettings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。

1 子程序格式(程序后缀是.f; .f90; .for;.obj)答:我试过,.for格是应该是不可以的,至少和版本应该是不行,其他的没用过,没有发言权。

在Abaqus中,运行abaqus j=jobname user=username时,默认的用户子程序后缀名是.for (.f,.f90应该都不行的,手册上也有讲过),只有在文件没有找到的情况下,才会去搜索,如果两者都没有,就会报错误信息。

如果username包括扩展名for或obj,那么就根据各自的扩展名ABAQUS会自动选择进行操作。

ABAQUS中Fortran子程序调用方法

ABAQUS中Fortran子程序调用方法

第一种方法:/ o/ J5 @6 U/ ^- o$ 1. 建立工作目录/ ]"2. 将Abaqus安装目录\6.4-pr11\site下的aba_param_dp.inc或aba_param_sp.inc拷贝到工作目录,并改名为aba_param.inc;# ~/ |0 I0 E6 {, @4 X3 q: W3. 将编译的fortran程序拷贝到工作目录;4. 将.obj文件拷贝到工作目录;5. 建立好输入文件.inp;6. 运行abaqusjob=inp_name user=fortran name即可。

第二种方法:在Job模块里,创建工作,在EditJob对话框中选择General选项卡,在Usersubroutine file中点击Select 按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for或.f)。

, D8 i7 d/r c6 @" |以下是网上摘录的资料,供参考:. |$ t/ }$W7 Y6 m4 h6 D6 j用户进行二次开发时,要在命令行窗口执行下面的命令:4 O. R+ ^,@( ? abaqus job=job_name user=sub_nameABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库standardU.lib和动态库standardU.dll,还有其它一些临时文件,而它的主程序(如standard.exe和explicit.exe等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。

这种运行机制与ANSYS、LS-DYNA、marc等都不同。

: j6 g' R-o( {0 [* N2 J3 X这些生成的临时文件要到文件夹C:\Documentsand Settings\Administrator\Local Settings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

user-subroutines-l4-usdfld 课件目录引言 (3)Abaqus的使用 (3)定义场变量相关的材料属性 (3)在用户子程序内定义场变量 (3)定义场变量 (3)访问积分点上的计算数据 (4)显式方法vs. 隐式方法 (4)使用解相关的状态变量(Solution-Dependent State Variables,SDVs) (4)用户子程序GETVRM (4)GETVRM子程序界面 (4)提供给GETVRM的变量 (5)GETVRM返回的变量 (5)GETVRM所支持的单元 (5)USDFLD子程序界面 (5)需定义的变量 (6)可能被定义的变量 (6)变量信息 (6)USDFLD与自动时间增量 (7)实例:层状复合板失效 (7)材料模型 (8)基体拉伸开裂 (9)基体压缩开裂 (9)纤维-基体剪切失效 (9)部分输入数据 (10)用户子程序 (10)结果 (10)备注 (10)1.1.49 USDFLD: User subroutine to redefine field variables at a material point (11)参考文献 (11)概述 (11)明确的解依赖性 (11)定义场变量 (11)访问材料点数据 (12)状态变量 (12)用户子程序界面 (12)定义的变量 (12)能够更新的变量 (12)传递信息的变量 (13)实例:损伤弹性模型 (14)2.1.6 Obtaining material point information in an Abaqus/Standard analysis (15)参考文献 (15)概述 (15)界面 (16)提供给实用程序的变量 (16)从实用程序中返回的变量 (16)可用的输出变量钥匙 (16)返回分量的顺序 (16)返回值的分析时间 (17)返回值的平衡状态 (17)实例 (17)访问状态依赖变量 (17)不支持的单元类型、进程与输出变量钥匙 (17)引言·通常使用用户子程序USDFLD,当需要对复杂材料行为建模与用户不想要使用UMA T子程序时——在ABAQUS/Standard中的大多数材料属性可以被定为场变量的函数——子程序USDFLD允许在单元的每个积分点定义——子程序可以访问计算结果数据,因此,材料属性可以是计算结果数据的函数·子程序USDFLD只能使用在具有*Material选项的材料属性的单元(详见p. L4.18页上GETVRM所支持的单元)Abaqus的使用·在模型中,与DLOAD和FILM子程序相比,包括USDFLD在内的子程序需要付出更多的努力·通常用户必须定义材料属性的依赖性,例如弹性模量或屈服应力,作为场变量的函数——这可以通过表格输入或额外用户子程序来完成·使用子程序USDFLD来在积分点上定义的值——在材料定义中包括了∗USER DEFINED FIELD 选项,这表明对于使用材料定义的这些单元来说,USDFLD子程序可以使用——可以被定义为在积分点上有的计算结果数据的函数,例如应力、应变定义场变量相关的材料属性这里有两种方法,能够定义场变量相关的材料属性·对于Abaqus内置的材料模型,使用表格定义方式·使用其他用户子程序来定义材料属性为的函数,例如蠕变CREEP表格定义·使用在材料选项上DEPENDENCIES选项来指定对于给定材料选项存在有多少不同场变量——弹性模量(E)是场变量#1(f1)的函数。

当f1增加,E减少。

f1可以代表材料的损伤。

——热膨胀系数是f1与场变量#2(f2)的函数——f1值的改变都会影响弹性模量(E)与热膨胀系数α——Abaqus在表格输入的数据点间将使用线性插值。

当f i超过了指定范围将使用最后一个数据点,它不会对数据外推——对于每一种材料属性,f i的范围不必须是一样的在用户子程序内定义场变量·将定义在USDFLD中的f i值传递到下列用户子程序内:CREEP、HETV AL、UEXPAN、UHARD、UHYPEL、UMA T、UMATHT、UTRS、UINTER·定义在这些子程序内的材料属性可以是f i的函数定义场变量·Abaqus通常认为场变量f i是节点数据·当Abaqus开始计算单元应力与刚度时(例如,一个单元循环),它将对节点数据f i插值到单元的积分点·当使用子程序USDFLD时,在计算单元的材料属性前,定义在子程序USDFLD中的这些数值将取代了插值f i ·Abaqus并不存储USDFLD定义的这些数值——如果你需要访问先前的值f i,你必须在USDFLD中把他们存储为相关解变量(solution-dependent variables,SDVs)·假如你绕过USDFLD子程序(可能因为在给定步中材料属性不会改变),积分点将使用f i的差值——通常,这些差值f i是分配给节点的最初值——假如没有明确给定最初值,在Abaqus会默认为0——当定义材料属性时使用差值,很可能会造成不正确的结果。

确保你知道Abaqus在干什么。

·可以使用输出变量FV分别在*EL PRINT、*EL FILE与*ELEMENT OUTPUT选项上将单元积分点上f i的值输出到.dat文件、.file文件与.odb文件——ABAQUS/Viewer能够绘制FV#的轮廓图访问积分点上的计算数据·ABAQUS/Standard允许定义f i为积分点上计算数据的函数,如应力、应变·这些提供的计算数据值是从当前增量的开始·子程序USDFLD必须能够使用ABAQUS实用程序GETVRM来访问材料积分点数据显式方法vs. 隐式方法·既然USDFLD子程序只有在增量步开始访问材料积分点值,以这种方式介绍的解决方案是显式的——在给定增量下材料属性不受此增量内结果的影响——因此,结果的精度依赖于时间增量大小——因此,用户能通过变量PNEWDT来控制USDFLD子程序中的时间增量·对于大多数非线性材料行为(如,塑性)ABAQUS/Standard在当前增量步结束时将使用隐式积分方法来计算材料属性——这种隐式积分方法使得ABAQUS/Standard可以使用任何时间增量,然而依然是有条件的使用解相关的状态变量(Solution-Dependent State Variables,SDVs)·如果f i有任何历史依赖性,在USDFLD中必须使用SDVs——ABAQUS/Standard不会在USDFLD中存储f i的值·将在USDFLD中更新的SDVs传递到在积分点处被调用的其他用户子程序,例如列在p. L4.5中的变量(Defining Field-Variable-Dependent Material Properties)·用*DEPV AR选项来指定状态变量的数目用户子程序GETVRM子程序GETVRM提供给USDFLD用来访问分析过程中存储在数据库中的计算数据GETVRM子程序界面CALL GETVRM(‘V AR’, ARRAY, JARRAY, FLGRAY, JRCD,1 JMAC, JMA TYP, MATLAYO, LACCFLA)提供给GETVRM的变量·提供给GETVRM的变量是输出变量关键,V AR,对于想要的计算结果数据,与JMAC,JAMTYP,MA TLAYO,LACCFLA(在这些笔记中没有进一步讨论这些变量)·这些可用的输出变量列在了输出列表中,ABAQUS/Standard User’s Manual,Section 4.2.1——对于单元积分点处的结果文件输出,这些变量必须是可用的,例如,对于应力的米塞斯应力SGETVRM返回的变量·包含输出变量的独立浮点部分的数组(ARRAY)·包含输出变量的独立整数值部分的数组(JARRAY)·一个特征数组(FLGRAY)包含对应于各个部分的标志——标志将包含YES,NO,或N/A(不适用)·返回代码(JRCD),JRCD=0表明GETVRM没有遇到错误,然而值1表明这里有一个输出请求错误或者所有的输出变量部分都是0·如下写出了请求变量的组分——单个指标分量(与没有分量的请求)返回在位置1,2,3,etc——对于对称张量按顺序11,22,33,12,13,23返回双指标分量(张量),对于非对称张量接着是21,31,32,例如变形梯度——因此,对于平面应力单元,返回应力为ARRAY(1) = S11, ARRAY(2) = S22, ARRAY(3) = 0.0, and ARRAY(4) = S12.——不管分析的维度,对于主值请求、最小值(第一)与最大值(第三)、,总要返回三个数值,GETVRM所支持的单元·既然GETVRM是关于积分点数值,对于不需要*MATERIAL定义的大部分单元类型是不适用的。

·因此,不支持以下单元类型:DASHPOTxSPRING xJOINTCJOINTxDDRAGxDITS xxxMASSROTARYIall acoustic elements 所有声学单元all contact elements 所有的接触单元all gasket elementsall hydrostatic fluid elements 所有流体静力学单元USA elements USA单元USDFLD子程序界面用户子程序USDFLD界面是需定义的变量·数组FIELD(NFIELD)包含当前积分点处的场变量f i——传递当前增量步结束时从节点差值的数值,用*INITISL CONDITION选项与*FIELD选项来指定——使用更新的f i来计算作为场变量函数的积分点数值。

传递更新的f i进其他用户子程序(CREEP, HETV AL, UEXPAN, UHARD, UHYPEL, UMAT, UMATHT, and UTRS)可能被定义的变量·在USDFLD中能定义包含解相关状态变量的数组STA TEV(NSTA TV)——传递这些,作为增量步开始时的值——在所有的情况下子程序中能够更新STA TEV,更新后的值被传递到其他用户子程序中(CREEP, HETV AL, UEXPAN, UHARD, UHYPEL, UMAT, UMATHT, and UTRS)——与积分点相联系的状态变量数目用*DEPV AR来定义·给出了新建议时间增量与使用的时间增量(DTIME,如下)间的比值PNEWDT——该变量允许用户提供输入到ABAQUS自动时间增量算法。

相关文档
最新文档