适用于: COMSOL Multiphysics®, 结构力学模块 版本: 所有版本

问题描述

我实现了一种用于“结构力学”的外部材料,但我的模型无法求解。

解决方法

外部材料一般通过 C 语言编码,然后被编译到共享库中,供 COMSOL Multiphysics 在运行时使用。如果您在编译外部材料代码时遇到问题,请参阅 COMSOL Multiphysics Reference Manual 中的 How to Compile and Link an External Material Model 一节。

外部材料的用途有两个方面:

  • 计算用于确定内力和外力是否达到平衡的机械应力。
  • 计算应力对应变的导数(雅可比),从而使方程求解器可以迭代以建立力平衡。

当 COMSOL Multiphysics 使用外部材料时,参数和状态(内部变量)将在程序和外部材料函数之间传递,此过程必须以一致的方式进行。例如,COMSOL Multiphysics 中定义的状态数必须与您在外部材料中使用的状态数相匹配。请参阅 COMSOL Multiphysics Reference Manual 中的 Working with External Materials 一节。此外,您也可以参考本页下方链接中提供的示例,尝试编译一个外部材料示例,并在简单的案例中使用它,以确保模型定义正确。

如果模型无法求解或者不收敛,请尝试确定是应力计算还是雅可比矩阵计算出了问题。为了更容易测试您的外部材料代码,请执行以下操作:

  • 建立一个尽可能小的模型,最好使用单一的网格单元。
  • 对模型施加位移控制的载荷。这样,您就可以精确控制输入外部材料代码中的应变。此外,如果您要实现的材料模型包含软化,则需要使用位移控制的模型。
  • 使用简单的变形情况,例如,单轴拉伸和纯剪切。

应力计算

您需要对一些与应力计算有关的事项进行检查:

  • 如果外部材料在单轴载荷下表现良好,但在其他变形模式下失效或产生不正确的结果,请确保在外部材料代码中使用了正确的剪切应变分量定义和顺序。
  • 您的代码中是否存在被零除的风险?在分析开始时,外部材料可能会调用零位移场(零应变),因此需要添加保护性代码,以避免可能出现的问题。
  • 许多非弹性材料模型都需要局部迭代来计算应力,这通常被称为应力更新算法。COMSOL Multiphysics 不会控制这些局部迭代,因此,密切关注已实现的迭代方法的健壮性非常重要。是否存在数值溢出的风险?在蠕变模型中,应力通常大于一次幂关系。在局部迭代过程中,未收敛的应力可能相当高,以至于幂指数计算时产生溢出。在代码中添加安全措施来识别这些类型的问题会很有帮助。
  • 如果您认为应力更新算法有问题,可以使用 C 语言中的 fprintf 语句将局部迭代中的信息打印到单独的文件中。但是要小心,这可能会产生大量的输出。

雅可比矩阵计算

雅可比矩阵不正确的一个标志是,模型在分析过程中的一部分运行没有问题,但随后会出现收敛问题。这种现象表明雅可比矩阵的非弹性部分不正确。您可以使用以下几种方法来识别并纠正与雅可比矩阵计算有关的问题:

  • 首先必须指出的是,在许多情况下,一个稍微偏离正确雅可比矩阵的近似雅可比矩阵通常足以达到收敛。这只会影响收敛速度,而不影响解的精度。
  • 导致收敛问题的最常见原因是没有正确定义雅可比矩阵。从形式上看,雅可比矩阵是第二类皮奥拉-基尔霍夫应力对格林-拉格朗日应变(或对变形梯度)的导数。必须计算导数,使其与计算应力所采用的应力更新算法一致。
  • 和应力更新算法一样,请密切关注剪切应变的定义和顺序。
  • 在求等效应力等物理量的微分时,一个常见的陷阱是忽略应力张量的对称性。在使用压缩的矢量格式处理应力和应变时,可能会出现问题。
  • 应力对应变的微分可能相当复杂(且容易出错)。您可以尝试对雅可比矩阵表达式进行受控简化。
  • 如果雅可比项的表达式非常复杂,您可以使用 fprintf 语句将值打印到单独的文件中,然后与手动计算的值进行比较。但是请小心,这可能会产生大量的输出。

跨平台使用外部材料

有时,您可能需要在与构建模型和处理结果的计算机不同的其他计算机上求解模型。如果这些计算机使用不同的操作系统(例如,一台是 Linux 计算机,而另一台是 Windows 计算机),您将需要: - 为这两个平台编译“外部材料”。 - 在尝试处理结果之前执行更新解操作,以确保使用正确的已编译“外部材料”库。

一般建议

由于应力计算或雅可比矩阵计算存在问题,有时很难确定外部材料代码是否失败。基于应变场的数值扰动来实现雅可比矩阵可能是一种有效的做法。Miehe 于 1996 年提出了一种扰动技术,用六个额外的应力计算来代替雅可比矩阵计算。这项技术在计算上可能非常昂贵,但在外部材料开发过程中非常有用。

此外,还请注意,本软件针对本构建模中经常出现的许多张量和矢量运算提供了一个实用程序函数库,可以帮助您减少自己编写相应功能代码所花费的时间。请参阅 Structural Mechanics Module User's Guide 中的 Using External Materials 一节。

关于如何在 COMSOL Multiphysics 中实现外部材料的演示,我们提供了许多资料供您参考,例如:

外部材料示例,结构力学

如何在模型中使用外部材料实现弹塑性

COMSOL Multiphysics 软件提供一个丰富的材料模型集合,在每个版本中,我们都会不断添加更多的内置材料模型。COMSOL Multiphysics 中现在可能已经包含您正在作为外部材料编码的材料特性。

参考文献

Miehe, C., "Numerical computation of algorithmic (consistent) tangent moduli in large-strain computational inelasticity", Comp. Meth. Appl. Mech. Engng., Vol 134, No. 3-4, pp. 223-240, Aug 1996.