而由Dharmasena等[90]提出的非典型应变率硬化的材料模型则需要通过编写用户子程序VUHARD来实现。采用用户子程序VUHARD实现上述非典型应变率硬化的材料模型代码如下:为了在模型中使用用户材料塑性硬化子程序VUHARD,需要在inp文件中定义如下语句:上述语句中,第6行指定了需要使用用户子程序VUHARD,第7行的5个数对应于程序中的props变量,其含义分别为屈服应力σY、参考应变率、指数m、切线模量Et和杨氏模量E。...
2023-11-03 理论教育
而由Dharmasena等[90]提出的非典型应变率硬化的材料模型则需要通过编写用户子程序VUHARD来实现。采用用户子程序VUHARD实现上述非典型应变率硬化的材料模型代码如下:为了在模型中使用用户材料塑性硬化子程序VUHARD,需要在inp文件中定义如下语句:上述语句中,第6行指定了需要使用用户子程序VUHARD,第7行的5个数对应于程序中的props变量,其含义分别为屈服应力σY、参考应变率、指数m、切线模量Et和杨氏模量E。...
2023-11-03 理论教育
在编写用户子程序UMAT或VUMAT时,以下几点是需要特别关注的:遵循Fortran、C或C++的语法规则。如果需要,也可以使用ABAQUS提供的实用子程序Utility,可方便快捷地达到计算需求。注意:UMAT是在每个材料点上被调用的,而VUMAT的一次调用会计算很多个积分点上的变量,nblock的具体数值与计算机相关,一般个人主机是136,这里涉及ABAQUS的显式程序Explicit的并行计算。因此,在写VUMAT时,需要注意每次更新nblock个积分点的应力。将测试结果和解析解进行比较。...
2023-11-03 理论教育
ABAQUS有一个非常大的单元库,含有多种类型单元,可以满足各种复杂的力学分析。相比于写一个完整的有限元求解程序,在一些现有程序的基础上编写用户单元可以大大降低开发成本、缩短开发时间,并且可以充分利用ABAQUS提供的强大的前后处理能力。此外,ABAQUS内置的求解器的效率非常高,求解非线性问题具有很好的收敛性,这也使得用户单元子程序具有非常广的应用前景,是一个很好的助力科研和工程的工具。...
2023-11-03 理论教育
为了进行时间积分,将总的时间间隔,即[0,ta]离散成N个小的时间间隔,即0=t0<t1<…<tN=ta,将第k步的时间增量步长定义为Δtk=tk-tk-1。本节用显式中心差分时间积分法积分位移场,用显式前向差分时间积分法积分温度场和相位场,用对角或“集中”单元容量/质量矩阵。为此,使用下式来确定速度的初始条件:温度场积分的前向差分法。采用前向差分法,根据以下更新公式求计算θk+1、pk+1:相场积分的前向差分法。...
2023-11-03 理论教育
混合硬化塑性材料的用户子程序UMAT的代码如下:上面的这个用户子程序UMAT除了背应力张量中的静水压力项不在求解中起作用外,其计算结果与ABAQUS中的线性运动硬化金属塑性材料模型的结果完全相同。这个微小的差异是因为,用户子程序UMAT中使用Prager演化定律来产生偏背应力张量,而ABAQUS中的线性运动硬化金属塑性材料模型则使用Ziegler演化定律,其中包含了流体静水压力对背应力张量的额外贡献。变量statev由ndi个直接分量和nshr个剪切分量组成。...
2023-11-03 理论教育
③对于三维实体单元,应力分量的存储顺序:σ11,σ22,σ33,σ12,σ13,σ23。在用户子程序UMAT中,剪切应变是以工程应变的形式存储的,即存储的是γ12:无论是二维问题还是三维问题,变形梯度张量Fij总是存储了三维的形式。如果需要用总体坐标系下的应力进行计算和其他处理,则可以通过子程序ROTSIG将应力张量转动回去。④如果用户子程序UMAT被用在减缩积分单元或者壳单元(如S4)和梁单元中,就必须指定沙漏刚度和横向剪切刚度。...
2023-11-03 理论教育
不同于基于线程的并行计算,MPI实现的并行是进程级的。基于MPI的用户子程序的并行计算,总是通过一些特定的函数来实现,先简单介绍一下这些函数:●MPI_Init:告知MPI系统进行所有必要的初始化设置。它写在启动MPI并行计算的最前面。以上只是表达了作为一个MPI并行计算的基本结构,并没有真正涉及进程之间的通信,为了更好地进行并行,必然需要在进程间通信。下面给出一个具体的基于MPI的并行计算的例子:...
2023-11-03 理论教育
相较于Fortran语言,C++语言的一大优势是含有丰富的外部库,可以满足各种计算需求,能大大提高开发子程序的效率。第1章已经简单介绍了使用外部库的好处,并通过一个简单的例子说明了使用外部库可以提高代码的可读性。本节以数值计算库armadillo为例来介绍如何在C++语言中调用外部库。如果没有进行这一步骤,则在运行中会弹出报错消息框并退出,而且弹出的是BLAS库的消息框。不过,在armadillo库中使用一维数组对矩阵进行初始化时是列优先的。...
2023-11-03 理论教育
式中矩阵的显式表达式如下:式中,——算符,表示经典有限元法中单元的全局装配,Ne是单元总数;——具有表面力和表面热流的表面单元数;——有限元形函数的向量;——形函数的空间导数[29];K——受损的传热系数矩阵,K=diag{k,k,k};K0——未受损物体的传热系数矩阵,K0=diag{k0,k0,k0};d——相场变量,其局部梯度类似于:;H——历史变量,定义为式中,Hn——第n步增量中先前计算的历史变量。...
2023-11-03 理论教育
用户子程序UELMAT的接口和用户子程序UEL的接口相似,具体如下:与用户子程序UEL不同,用户子程序UELMAT可以直接调用ABAQUS内置的材料模型,这样我们可以在编程时重点考虑在单元层面的实现上,而无须考虑复杂的材料实现。为了在模型中使用用户子程序UELMAT,需要在模型的inp文件中添加接口,以指明哪些单元需要使用用户子程序UELMAT计算其单元刚度矩阵和右手边残差向量。...
2023-11-03 理论教育
相场法是近年来受到广泛关注的一种方法,它基于Griffith弹性断裂力学的基本理论[71],可以模拟裂纹的任意扩展、分支和收敛。与其他数值方法不同,相场法不需要额外的不连续性。为了研究热弹性固体中多场耦合脆性断裂问题的动态演化,本章提出了一种Abaqus/Explicit多场耦合相场模型的全功能实现方法,并通过几个典型的算例验证了算法的有效性和实用性。...
2023-11-03 理论教育
在基于线程的并行计算中,对于公共空间的变量或者共享的资源,需要进行额外的保护。它们的编号为1~10,开发者可以通过它们的编号进行使用。初始化互斥锁的最佳位置在子程序uexternaldb中。示例如下:经过上面代码的计算,1号互斥锁(#1)就可以在其他要被调用的用户子程序中使用了,以保护对共享公用块中变量的访问,防止其被多个互相竞争的线程同时访问而造成破坏。...
2023-11-03 理论教育
本节将给出一个完整的用C++编写的用户子程序的例子,这是一个简单的线弹性本构模型的用户材料子程序UMAT,其他用Fortran语言编写的用户子程序若要转化为C++编写的用户子程序,也可以仿照这个例子修改用户子程序的接口。C++语言的面向对象的属性在编写大型复杂结构的子程序时具有独特的优势,编写的代码结构更加清晰、可读性更高。...
2023-11-03 理论教育
当一个含有用户子程序的模型被提交给ABAQUS分析时,正确的编译和链接命令应该被自动执行。对于不同的运行平台,ABAQUS正确的编译和链接命令默认存储在环境文件中,这个文件位于abaqus_dir/site目录下,这里的abaqus_dir是ABAQUS的安装目录。如果想将子程序提供给他人使用,但不希望他人看到子程序的源代码,在这种情况下,可将子程序的源码编译成obj文件提供给他人。这个目标文件可以运行子程序,但不会显示源代码。...
2023-11-03 理论教育
1.各向同性等温弹性材料的本构方程各向同性等温弹性材料的本构方程为[18]将式表达为Jaumann率的形式:在共轴旋转框架下进行时间积分,可得所以应力更新的过程为式中,ΔR·σt·ΔRT已经在用户子程序UMAT外实现了。...
2023-11-03 理论教育
用户子程序USDFLD是用于Abaqus/Standard中的场变量定义子程序,其具有以下特性:允许将材料点处的场变量定义为时间函数或输出变量标识符表中列出的任何可用的材料点处的量的函数,但用户定义的输出变量UVARM和UVARMn除外。将在材料定义中包含了用户子定义场变量的单元的所有材料点上被调用。可以与用户子程序UFIELD一起使用,以指定预定义的场变量。用户子程序USDFLD的Fortran程序接口如下:下面分别解释子程序的输入输出参数及其意义,这些参数主要分为以下三类。...
2023-11-03 理论教育