abaqus UAMP用户子程序

合集下载

ABAQUS子程序

ABAQUS子程序

Home浅谈ABAQUS用户子程序李青清华大学工程力学系摘要本文首先概要介绍了ABAQUS的用户子程序和应用程序,然后从参数,功能两方面详细论述了DLOAD, UEXTERNALDB, URDFIL三个用户子程序和GETENVVAR,POSFIL,DBFILE三个应用程序,并详细介绍了ABAQUS的结果文件(.FIL)存储格式。

关键字ABAQUS,用户子程序,应用程序,结果文件一、前言:ABAQUS为用户提供了强大而又灵活的用户子程序接口(USER SUBROUTINE)和应用程序接口(UTILITY ROUTINE)。

ABAQUS 6.2.5一共有42个用户子程序接口,13个应用程序接口,用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进行数据交换等等。

这些用户子程序接口使用户解决一些问题时有很大的灵活性,同时大大的扩充了ABAQUS的功能。

例如:如果荷载条件是时间的函数,这在ABAQUS/CAE 和INPUT 文件中是难以实现的,但在用户子程序DLOAD中就很容易实现。

二.在ABAQUS中使用用户子程序ABAQUS的用户子程序是根据ABAQUS提供的相应接口,按照FORTRAN语法用户自己编写的代码。

在一个算例中,用户可以用到多个用户子程序,但必须把它们放在一个以.FOR为扩展名的文件中。

运行带有用户子程序的算例时有两种方法,一是在CAE中运行,在EDIT JOB菜单的GENERAL子菜单的USER SUBROUTINE FILE对话框中选择用户子程序所在的文件即可;另外是在ABABQUS COMMAND用运行,语法如下:ABAQUS JOB=[JOB] USER¡[.FOR]¡C用户在编写用户子程序时,要注意以下几点:1.用户子程序不能嵌套。

即任何用户子程序都不能调用任何其他用户子程Home序,但可以调用用户自己编写的FORTRAN子程序和ABAQUS应用程序。

Abaqus用户子程序VUMAT

Abaqus用户子程序VUMAT
Pipe elements For pipe elements the stretch tensor and the deformation gradient tensor are not available. The axial strain, strainInc(*,1), and the shear strain, strainInc(*,4), associated with twist are provided along with the hoop stress, stressNew(*,2). The hoop stress is predefined based on your pipe internal and external pressure load definitions (PE, PI, HPE, HPI, PENU, and PINU), and it should not be modified here. The thickness stress, stressNew(*,3), is assumed to be zero and any value you assign is ignored. You must define the axial stress, stressNew(*,1), and the shear stress, stressNew(*,4). You must also define hoop strain, strainInc(*,2), and the pipe thickness strain, strainInc(*,3).
Component 1 2 3 4 5 6 7 8 9
2-D Case 3-D Case
Initial calculations and checks

abaqus1用户材料子程序

abaqus1用户材料子程序

19 ABAQUS用户材料子程序(UMAT)虽然ABAQUS为用户提供了大量的单元库和求解模型,使用户能够利用这些模型处理绝大多数的问题;但是现实世界毕竟十分复杂,ABAQUS不可能把所有可能出现的问题都包含进去。

所以ABAQUS提供了大量的用户子程序(User Subroutine)。

用户子程序允许用户在找不到合适模型的情况下自行定义符合自己问题的模型。

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

ABAQUS为用户提供的这个接口,允许用户通过自定义的子程序定制ABAQUS,以实现特定的功能。

用户子程序具有以下的功能和特点:(1)如果ABAQUS的一些固有选项模型功能有限;用户子程序可以提高ABAQUS中这些选项的功能;(2)通常用户子程序是用FORTRAN语言的代码写成;(3)它可以以几种不同的方式包含在模型中;(4)由于它们没有存储在restart文件中,如果需要的话,可以在重新开始运行时修改它;(5)在某些情况下它可以利用ABAQUS允许的已有程序。

要在模型中包含用户子程序,可以利用ABAQUS执行程序,在abaqus执行程序中应用user选项指明包含这些子程序的FORTRAN源程序或者目标程序的名字。

提示:ABAQUS的输入文件除了可以通过ABAQUS/CAE的作业模块中提交运行外,还可以在ABAQUS Command窗口中输入ABAQUS执行程序直接运行:ABAQUS job=输入文件名 user=用户子程序的Fortran文件名ABAQUS/Standard和ABAQUS/Explicit都支持用户子程序功能,但是他们所支持的用户子程序种类不尽相同,读者在需要使用时请注意查询手册。

在接下来的最后两章里,我们将讨论两种常用的用户子程序——用户材料子程序和用户单元子程序。

本章将通过在ABAQUS/Standard中创建Johnson-Cook的材料模型,对编写Standard 的用户材料子程序UMAT进行一个简单介绍。

ABAQUS用户子程序设置及错误代码解决1073741819方法

ABAQUS用户子程序设置及错误代码解决1073741819方法

ABAQUS用户子程序设置及错误代码解决1073741819方法1.我的测试CPU Intel i5-4590 haswell架构支持指令集AVX /高級矢量擴展AVX2 /高級矢量擴展2.0测试1测试环境ABAQUS 6.14-3ABAQUS 2016Windows10 ,version_1511_updated_feb_2016_x64_dvd_8380088Intel® Visual Fortran Composer XE 2013 SP1 for Windows* Update 1Microsoft visual studio2013结果最容易出现错误,rename the file mkl_avx2.dll to this: mkl_avx2.dll.11.0.0.1无效。

某次运行usdfld代码(1,简单),我的计算机(A)运行有错误,显示1073741819错误。

但是在另外一台电脑(B)运行则没有错误,该电脑软件环境一样,但CPU为i7-2600k,sandy bridge架构。

测试2测试环境ABAQUS 6.14-3Windows7 sp1Intel® Visual Fortran Composer XE 2013 SP1 for Windows* Update 1Microsoft visual studio2013运行usdfld代码(1,简单),计算机(A)和(B)运行均不显示1073741819错误。

运行稍微复杂的usdfld代码(2),计算机(A)和(B)运行均显示1073741819错误。

测试3测试环境ABAQUS 6.14-3Windows7 sp1Intel® Visual Fortran Composer XE 2011 Update 5Microsoft visual studio2010运行usdfld代码(1)和(2),计算机(A)运行不显示1073741819错误。

abaqus 子程序 简单案例

abaqus 子程序 简单案例

abaqus 子程序简单案例1. 案例一:ABAQUS子程序在计算机辅助工程中的应用在计算机辅助工程中,ABAQUS子程序是一种被广泛应用的工具,用于求解各种复杂的物理问题。

它可以在ABAQUS有限元软件中调用,通过编写用户自定义的子程序来实现特定的功能。

下面将介绍一些常见的ABAQUS子程序案例。

2. 案例二:ABAQUS子程序在材料力学中的应用ABAQUS子程序在材料力学中的应用非常广泛。

例如,可以通过自定义的子程序来模拟材料的非线性行为、塑性变形、断裂行为等。

通过在子程序中编写相应的材料本构模型和损伤模型,可以准确地预测材料的力学性能。

3. 案例三:ABAQUS子程序在流体力学中的应用ABAQUS子程序在流体力学中也有重要的应用。

例如,可以通过自定义的子程序来模拟流体的非牛顿性、多相流动、湍流等现象。

通过在子程序中编写相应的流体本构模型和湍流模型,可以准确地模拟流体的流动行为。

4. 案例四:ABAQUS子程序在结构力学中的应用ABAQUS子程序在结构力学中也非常有用。

例如,可以通过自定义的子程序来模拟结构的非线性行为、接触和摩擦、动力响应等。

通过在子程序中编写相应的结构本构模型和接触模型,可以准确地预测结构的力学性能。

5. 案例五:ABAQUS子程序在热传导中的应用ABAQUS子程序在热传导中的应用也非常广泛。

例如,可以通过自定义的子程序来模拟材料的热传导行为、热辐射、相变等。

通过在子程序中编写相应的热传导模型和相变模型,可以准确地预测材料的热学性能。

6. 案例六:ABAQUS子程序在电磁场中的应用ABAQUS子程序在电磁场中的应用也有一定的研究价值。

例如,可以通过自定义的子程序来模拟电磁场的非线性行为、磁饱和、电磁感应等。

通过在子程序中编写相应的电磁场模型和电磁感应模型,可以准确地模拟电磁场的行为。

7. 案例七:ABAQUS子程序在声学中的应用ABAQUS子程序在声学领域中也有一定的应用。

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

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

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

其中,用户材料子程序(User-Defined Material Subroutines)的开发与应用是ABAQUS的重要功能之一。

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

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

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

这包括明确模拟的目的、材料的力学行为特点、所需的物理量等。

通过需求分析,可以确定所需开发的子程序的类型和功能。

2. 选择合适的子程序类型ABAQUS提供了多种用户材料子程序类型,如塑性模型、弹性模型、蠕变模型等。

根据需求分析的结果,选择合适的子程序类型进行开发。

3. 编写子程序代码根据所选的子程序类型,编写相应的代码。

代码应遵循ABAQUS的编程规范,确保程序的正确性和可读性。

同时,需要提供必要的输入参数和输出结果。

4. 调试与测试编写完代码后,需要进行调试与测试。

这包括检查代码的语法错误、逻辑错误等。

同时,通过测试不同条件下的模拟结果,验证子程序的正确性和可靠性。

三、ABAQUS用户材料子程序的应用1. 在工程中的应用ABAQUS用户材料子程序在工程中有着广泛的应用。

例如,在金属成形、复合材料、岩石力学等领域,用户可以根据实际需求开发相应的子程序,模拟材料的力学行为。

通过对比模拟结果与实际结果,可以验证子程序的正确性,为工程设计提供有力支持。

2. 在科研中的应用在科研领域,ABAQUS用户材料子程序也发挥着重要作用。

通过开发新的子程序,研究人员可以探索材料的力学行为规律,为新材料的设计与开发提供理论依据。

同时,通过对比不同材料的模拟结果,可以揭示材料性能的差异及影响因素。

ABAQUS用户子程序

ABAQUS用户子程序
这个没有任何关系的,这个错误将在ABAQUS调用UMAT的时候自动会找到,仅仅有这个错误
将没有任何影响的。也就是说,ABAQUS中调用的时候,实际并不存在这个错误。FT,忘了
说一句了,你把ABA_PARAM.INC.dp或ABA_PARAM.INC.sp拷到你的程序工作空间后 ,应该将
几个关于子程序的问题及相应解答
Q 本人在用umat作本构模型时,
static,
1,500,0.000001,0.1 此时要求的增量步很多,即每次增量要很小,
static
1,500 时,在弹性向塑性过度时,出现错误,增量过大,出现尖点.
A YOU CAN TRY AS FOLLOWS
PARAMETER (PLOAD=100.E4)
IF (KSTEP.EQ.1) THEN !当STEP=1时的荷载大小
P=PLOAD
ELSE IF (KSTEP.EQ.2) THEN !当STEP=2时的荷载大小
P=COORDS(1)PLOAD !施加在积分点的荷载P是坐标的函数
态变量矩阵中的任何矢量或者张量都必须通过旋转来考虑材料的刚体运动。
状态变量矩阵的维数,等于关键字“DEPVAR”定义的数值。状态变量矩阵的维数通过ABAQUS 输入文件中的关键字“DEPVAR”定义,关键字下面数据行的数值即为状态变量矩阵的维数。
材料常数的个数,等于关键字“USER MATERIAL”中“CONSTANTS”常数设定的值。
STRESS (NTENS)
应力张量矩阵,对应NDI 个直接分量和NSHR 个剪切分量。在增量步的开始,应力张量矩阵中的数值通过UMAT 和主程序之间的接口传递到UMAT 中,在增量步的结束UMAT 将对应力张量矩阵更新。对于包含刚体转动的有限应变问题,一个增量步调用UMAT 之前就已经对应力张量的进行了刚体转动,因此在UMAT 中只需处理应力张量的共旋部分。UMAT 中应力张量的度量为柯西(真实)应力。

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

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

《ABAQUS用户材料子程序开发及应用》篇一一、引言随着计算机技术的迅猛发展,有限元分析软件在工程领域的应用越来越广泛。

ABAQUS作为一款功能强大的有限元分析软件,其在材料模拟、结构分析、热传导等方面具有广泛的应用。

其中,用户材料子程序的开发是ABAQUS功能的重要组成部分,它允许用户根据实际需求自定义材料模型,提高模拟的准确性和可靠性。

本文将介绍ABAQUS用户材料子程序的开发流程、应用领域及实际案例。

二、ABAQUS用户材料子程序开发流程1. 需求分析:明确材料模型的需求和特点,确定子程序的类型(如弹塑性、蠕变等)。

2. 理论建模:根据需求,建立相应的数学模型和物理模型。

3. 编程实现:使用ABAQUS提供的编程接口(如Fortran、C++等),编写用户材料子程序。

4. 调试与验证:对编写的子程序进行调试和验证,确保其正确性和可靠性。

5. 集成与测试:将子程序集成到ABAQUS中,进行整体测试,确保模拟结果的准确性。

三、ABAQUS用户材料子程序应用领域1. 金属材料:用户材料子程序可用于模拟金属的弹塑性、蠕变、疲劳等行为。

2. 聚合物材料:用于模拟聚合物材料的粘弹性、蠕变、塑性等行为。

3. 复合材料:用于模拟复合材料的力学性能和损伤演化等行为。

4. 高温超导材料:用于模拟高温超导材料的电性能和磁性能等行为。

四、实际案例分析以金属材料的弹塑性行为为例,介绍ABAQUS用户材料子程序的开发及应用。

1. 需求分析:金属材料在受到外力作用时,会表现出弹性和塑性行为。

为了更准确地模拟这一行为,需要开发一个弹塑性用户材料子程序。

2. 理论建模:根据金属的弹塑性理论,建立相应的数学模型和物理模型。

包括弹性阶段、屈服阶段和塑性流动阶段的描述。

3. 编程实现:使用Fortran或C++编写用户材料子程序,实现模型的数学描述。

4. 调试与验证:对编写的子程序进行调试和验证,确保其正确性和可靠性。

可以通过对比实验数据和模拟结果来验证子程序的准确性。

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

OverviewUser subroutine UAMP:∙allows you to define the current value of an amplitude definition as a function of time;∙can be used to model control engineering aspects of your system when sensors are used (sensor values are from the beginning of theincrement);∙can use a predefined number of state variables in their definition; and ∙can optionally compute the derivatives and integrals of the amplitude function.Explicit solution dependenceThe solution dependence introduced in this user subroutine is explicit: all data passed in the subroutine for information or to be updated are values at the beginning of that increment.User subroutine interfaceSUBROUTINE UAMP(* ampName, time, ampValueOld, dt, nProps, props, nSvars,* svars, lFlagsInfo,* nSensor, sensorValues, sensorNames, jSensorLookUpTable,* AmpValueNew,* lFlagsDefine,* AmpDerivative, AmpSecDerivative, AmpIncIntegral, * AmpDoubleIntegral)CINCLUDE 'ABA_PARAM.INC'C time indicesparameter (iStepTime = 1,* iTotalTime = 2,* nTime = 2)C flags passed in for informationparameter (iInitialization = 1,* iRegularInc = 2,* iCuts = 3* ikStep = 4* nFlagsInfo = 4)C optional flags to be definedparameter (iComputeDeriv = 1,* iComputeSecDeriv = 2,* iComputeInteg = 3,* iComputeDoubleInteg = 4,* iStopAnalysis = 5,* iConcludeStep = 6,* nFlagsDefine = 6)dimension time(nTime), lFlagsInfo(nFlagsInfo),* lFlagsDefine(nFlagsDefine)dimension jSensorLookUpTable(*)dimension sensorValues(nSensor), svars(nSvars),props(nProps)character*80 sensorNames(nSensor)character*80 ampNameuser coding to define AmpValueNew, andoptionally lFlagsDefine, AmpDerivative, AmpSecDerivative,AmpIncIntegral, AmpDoubleIntegralRETURNENDVariable to be definedAmpValueNewCurrent value of the amplitude.Variables that can be updatedlFlagsDefineInteger flag array to determine whether the computation of additional quantities is necessary or to set step continuation requirements.lFlagsDefine(iComputeDeriv)If set to 1, you must provide thecomputation of the amplitude derivative.The default is 0, which means thatAbaqus computes the derivativeautomatically.lFlagsDefine(iComputeSecDeriv)If set to 1, you must provide thecomputation of the amplitude secondderivative. The default is 0, whichmeans that Abaqus computes thesecond derivative automatically. lFlagsDefine(iComputeInteg)If set to 1, you must provide thecomputation of the amplitudeincremental integral. The default is 0,which means that Abaqus computes theincremental integral automatically.lFlagsDefine(iComputeDoubleInteg)If set to 1, you must provide the computation of the amplitude incremental double integral. The default is 0, which means that Abaqus computes the incremental integral automatically.lFlagsDefine(iStopAnalysis)If set to 1, the analysis will be stoppedand an error message will be issued.The default is 0, which means thatAbaqus will not stop the analysis. lFlagsDefine(iConcludeStep)If set to 1, Abaqus will conclude the stepexecution and advance to the next step(if a next step exists). The default is 0. svarsAn array containing the values of the solution-dependent state variables associated with this amplitude definition. The number of such variablesis nsvars (see above). You define the meaning of these variables.This array is passed into UAMP containing the values of these variables at the start of the current increment. In most cases they should be updated to be the values at the end of the increment.AmpDerivativeCurrent value of the amplitude derivative.AmpSecDerivativeCurrent value of the amplitude second derivative.AmpIncIntegralCurrent value of the amplitude incremental integral.AmpDoubleIntegralCurrent value of the amplitude incremental double integral.Variables passed in for informationampNameUser-specified amplitude name, left justified.time(iStepTime)Current value of step time or frequency.time(iTotalTime)Current value of total time.ampValueOldOld value of the amplitude from the previous increment.dtTime increment.propsUser-specified array of material constants associated with this amplitude definition.nPropsUser-defined number of material constants associated with this amplitude definition.nSvarsUser-defined number of solution-dependent state variables associated with this amplitude definition.lFlagsInfoInteger flag array with information regrading the current call to UAMP.lFlagsInfo(iInitialization) This flag is equal to 1 if UAMP is called from theinitialization phase of the first analysis step andis set to 0 otherwise.lFlagsInfo(iRegularInc)This flag is equal to 1 if UAMP is called from aregular increment and is set to 0 if called fromthe initialization phase of the first analysis step. lFlagsInfo(iCuts)Number of cutbacks in this increment. lFlagsInfo(ikStep)Step number.nSensorTotal number of sensors in the model.sensorValuesArray with sensor values at the end of the previous increment. Each sensor value corresponds to a history output variable associated with the output database request defining the sensor.sensorNamesArray with user-defined sensor names in the entire model, left justified. Each sensor name corresponds to a sensor value provided with the output database request. All names will be converted to uppercase characters if lowercase or mixed-case characters were used in their definition.jSensorLookUpTableVariable that must be passed into the utilityfunctions IGETSENSORID and GETSENSORVALUE.Example: Amplitude definition using sensor and state variablesc user amplitude subroutineSubroutine UAMP(C passed in for information and state variables* ampName, time, ampValueOld, dt, nProps, props, nSvars,* svars, lFlagsInfo,* nSensor, sensorValues, sensorNames,* jSensorLookUpTable,C to be defined* ampValueNew,* lFlagsDefine,* AmpDerivative, AmpSecDerivative, AmpIncIntegral, * AmpDoubleIntegral)include 'aba_param.inc'C svars - additional state variables, similar to (V)UEL dimension sensorValues(nSensor), svars(nSvars),* props(nProps)character*80 sensorNames(nSensor)character*80 ampNameC time indicesparameter( iStepTime = 1,* iTotalTime = 2,* nTime = 2)C flags passed in for informationparameter( iInitialization = 1,* iRegularInc = 2,* iCuts = 3,* ikStep = 4,* nFlagsInfo = 4)C optional flags to be definedparameter( iComputeDeriv = 1,* iComputeSecDeriv = 2,* iComputeInteg = 3,* iComputeDoubleInteg = 4,* iStopAnalysis = 5,* iConcludeStep = 6,* nFlagsDefine = 6)parameter( tStep=0.18d0, tAccelerateMotor = .00375d0, * omegaFinal=23.26d0,* zero=0.0d0, one=1.0d0, two=2.0d0, four=4.0d0)dimension time(nTime), lFlagsInfo(nFlagsInfo),* lFlagsDefine(nFlagsDefine)dimension jSensorLookUpTable(*)lFlagsDefine(iComputeDeriv) = 1lFlagsDefine(iComputeSecDeriv) = 1lFlagsDefine(iComputeInteg) = 1lFlagsDefine(iComputeDoubleInteg) = 1c get sensor valuevTrans_CU1 = GetSensorValue('HORIZ_TRANSL_MOTION',* jSensorLookUpTable,* sensorValues)if (ampName(1:22) .eq. 'MOTOR_WITH_STOP_SENSOR' ) then if (lFlagsInfo(iInitialization).eq.1) thenAmpSecDerivative = zeroAmpDerivative = omegaFinal/tAccelerateMotor ampValueNew = zeroAmpIncIntegral = zeroAmpDoubleIntegral = zerosvars(1) = zerosvars(2) = zeroelsetim = time(iStepTime)c ramp up the angular rot velocity of thec electric motorc after which hold constantif (tim .le. tAccelerateMotor) thenAmpSecDerivative = zeroAmpDerivative =omegaFinal/tAccelerateMotorampValueNew =omegaFinal*tim/tAccelerateMotorAmpIncIntegral =dt*(ampValueOld+ampValueNew)/twoAmpDoubleIntegral =dt**2*(ampValueOld+ampValueNew)/fourelseAmpSecDerivative = zeroAmpDerivative = zeroampValueNew = omegaFinalAmpIncIntegral =dt*(ampValueOld+ampValueNew)/twoAmpDoubleIntegral =dt**2*(ampValueOld+ampValueNew)/fourend ifc retrieve old sensor valuevTrans_CU1_old = svars(1)c detect a zero crossing and count the number of crossings if (vTrans_CU1_old*vTrans_CU1 .le. zero .and.* tim .gt. tAccelerateMotor ) thensvars(2) = svars(2) + oneend ifnrCrossings = int(svars(2))c stop the motor if sensor crosses zero the second time if (nrCrossings.eq.2) thenampValueNew = zerolFlagsDefine(iConcludeStep)=1end ifc store sensor valuesvars(1) = vTrans_CU1end ifend ifreturnend。

相关文档
最新文档