ABAQUS有一个非常大的单元库,含有多种类型单元,可以满足各种复杂的力学分析。相比于写一个完整的有限元求解程序,在一些现有程序的基础上编写用户单元可以大大降低开发成本、缩短开发时间,并且可以充分利用ABAQUS提供的强大的前后处理能力。此外,ABAQUS内置的求解器的效率非常高,求解非线性问题具有很好的收敛性,这也使得用户单元子程序具有非常广的应用前景,是一个很好的助力科研和工程的工具。......
2025-09-30
不同于基于线程的并行计算,MPI(Message-Passing-Interface,消息传递接口)实现的并行是进程级的。它采用分布式内存系统,通过通信(message)在进程之间进行消息传递,其可扩展性好。MPI的缺点是编程模型复杂、容易出错,所以在进行并行计算之前,最好先验证一个单线程运行的正确性。
基于MPI的用户子程序的并行计算,总是通过一些特定的函数来实现,先简单介绍一下这些函数:
●MPI_Init:告知MPI系统进行所有必要的初始化设置。它写在启动MPI并行计算的最前面。
●通信子(communicator):ABA_COMM_WORLD表示一组可以互相发送消息的进程的集合。
●MPI_Comm_rank:用来获取正在调用进程的通信子中的进程号。
●MPI_Comm_size:用来得到通信子的进程数。
●MPI_Finalize:告知MPI系统MPI已经使用完毕。它总是放在做并行计算的功能块的最后,在此函数之后就不再出现任何有关MPI相关的东西了。(https://www.chuimin.cn)
注意:MPI_Init和MPI_Finalize函数不需要显式地调用,它们会被ABAQUS进行调用。
以上只是表达了作为一个MPI并行计算的基本结构,并没有真正涉及进程之间的通信,为了更好地进行并行,必然需要在进程间通信。下面介绍在两个进程间通信的函数,即MPI_Send和MPI_Recv,分别用于消息的发送和接收。
(1)MPI_Send:阻塞型消息发送。
(2)MPI_Recv:阻塞型消息接收。
与其他MPI程序一样,用户子程序必须包含头文件mpi.h(用于C++程序中)或mpif.h(用于Fortran程序中),才能正常使用MPI函数。下面给出一个具体的基于MPI的并行计算的例子:
相关文章
ABAQUS有一个非常大的单元库,含有多种类型单元,可以满足各种复杂的力学分析。相比于写一个完整的有限元求解程序,在一些现有程序的基础上编写用户单元可以大大降低开发成本、缩短开发时间,并且可以充分利用ABAQUS提供的强大的前后处理能力。此外,ABAQUS内置的求解器的效率非常高,求解非线性问题具有很好的收敛性,这也使得用户单元子程序具有非常广的应用前景,是一个很好的助力科研和工程的工具。......
2025-09-30
用户子程序UELMAT的接口和用户子程序UEL的接口相似,具体如下:与用户子程序UEL不同,用户子程序UELMAT可以直接调用ABAQUS内置的材料模型,这样我们可以在编程时重点考虑在单元层面的实现上,而无须考虑复杂的材料实现。为了在模型中使用用户子程序UELMAT,需要在模型的inp文件中添加接口,以指明哪些单元需要使用用户子程序UELMAT计算其单元刚度矩阵和右手边残差向量。......
2025-09-30
蠕变是固体材料在保持应力不变的条件下,应变随时间延长而增加的现象。由于蠕变,材料在某瞬时的应力状态一般不仅与该瞬时的变形有关,而且与该瞬时以前的变形过程有关[24]。虽然Abaqus/Standard提供了丰富的蠕变本构模型,但Abaqus/Explicit还没有关于蠕变的本构模型。然而,对于一些特定的问题,采用Abaqus/Standard很难求解收敛,此时不得不借助Abaqus/Explicit进行求解,如果其中涉及的材料具有较为明显的蠕变特性,则需要借助VUMAT在Abaqus/Explicit中实现蠕变本构模型[26]。......
2025-09-30
Fortran语言提供了5种内在的数据类型,也可以根据需要来自定义数据类型。此外,在声明整型变量时,还可以指定变量使用的字节数。在Fortran语言中,用两个连续的实数来存储复数的这两部分。......
2025-09-30
用户子程序USDFLD是用于Abaqus/Standard中的场变量定义子程序,其具有以下特性:允许将材料点处的场变量定义为时间函数或输出变量标识符表中列出的任何可用的材料点处的量的函数,但用户定义的输出变量UVARM和UVARMn除外。将在材料定义中包含了用户子定义场变量的单元的所有材料点上被调用。可以与用户子程序UFIELD一起使用,以指定预定义的场变量。用户子程序USDFLD的Fortran程序接口如下:下面分别解释子程序的输入输出参数及其意义,这些参数主要分为以下三类。......
2025-09-30
混合硬化塑性材料的用户子程序UMAT的代码如下:上面的这个用户子程序UMAT除了背应力张量中的静水压力项不在求解中起作用外,其计算结果与ABAQUS中的线性运动硬化金属塑性材料模型的结果完全相同。这个微小的差异是因为,用户子程序UMAT中使用Prager演化定律来产生偏背应力张量,而ABAQUS中的线性运动硬化金属塑性材料模型则使用Ziegler演化定律,其中包含了流体静水压力对背应力张量的额外贡献。变量statev由ndi个直接分量和nshr个剪切分量组成。......
2025-09-30
本节将给出一个完整的用C++编写的用户子程序的例子,这是一个简单的线弹性本构模型的用户材料子程序UMAT,其他用Fortran语言编写的用户子程序若要转化为C++编写的用户子程序,也可以仿照这个例子修改用户子程序的接口。C++语言的面向对象的属性在编写大型复杂结构的子程序时具有独特的优势,编写的代码结构更加清晰、可读性更高。......
2025-09-30
1.各向同性等温弹性材料的本构方程各向同性等温弹性材料的本构方程为[18]将式表达为Jaumann率的形式:在共轴旋转框架下进行时间积分,可得所以应力更新的过程为式中,ΔR·σt·ΔRT已经在用户子程序UMAT外实现了。......
2025-09-30
相关推荐