问题描述

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

解决方法

外部材料一般通过 C 语言编码,然后被编译到共享库中,供 COMSOL Multiphysics 在运行时使用。如果您在编译外部材料代码时遇到问题,请参阅 COMSOL Multiphysics 安装手册中的如何编写和连接外部材料模型一节。外部材料的用途有两个方面:

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

当 COMSOL Multiphysics 使用外部材料时,参数和状态(内部变量)将在程序和外部材料函数之间传递,此过程必须以一致的方式进行。例如,COMSOL Multiphysics 中定义的状态数必须与您在外部材料中使用的状态数相匹配。请参阅 COMSOL Multiphysics Reference Manual 中的 Working with External Materials 一节。此外,您也可以参考本页下方链接中提供的示例,尝试编译一个外部材料示例,并在简单的案例中使用它,以确保您能够正确用它来建模。如果模型无法求解或者不收敛,请尝试确定是应力计算还是雅可比矩阵计算出了问题。为了更容易测试您的外部材料代码,请执行以下操作:

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

应力计算

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

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

雅可比矩阵计算

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

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

一般建议

由于应力计算或雅可比矩阵计算存在问题,有时很难确定外部材料代码是否失败。基于应变场的数值扰动来实现雅可比矩阵可能是一种有效的做法。Miehe 于 1996 年提出了一种扰动技术,用六个额外的应力计算来代替雅可比矩阵计算。这项技术在计算上可能非常昂贵,但在外部材料开发过程中非常有用。此外,还请注意,本软件针对本构建模中经常出现的许多张量和矢量运算提供了一个实用程序函数库,可以帮助您减少自己编写相应功能代码所花费的时间。请参阅 Structural Mechanics Module User's Guide 中的 Using External Materials 一节。关于如何在 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.

本文内容来自 COMSOL 知识库,点击“”,获取实现外部材料的演示的案例模型。

c语言如何输入矩阵_如何在 COMSOL 软件中调试外部材料相关推荐

  1. comsol积分函数_如何在 COMSOL 软件中合并解

    在工程分析中,经常需要比较在不同情况下获得的解.可能包括比较不同载荷或参数配置的影响,以及在域的每个点上对结构进行包络以找到最坏或最佳的情况.对于上述每一种情况以及其他类似情况,我们都需要访问多个数据 ...

  2. comsol如何设置距离梯度_如何在 COMSOL 软件中设置“优质的”CFD 网格

    计算流体力学(CFD)模型的质量通常由求解问题时所采用的网格质量决定.优质的网格有助于模型收敛.降低内存需求,最终得到精确的解.因此,在求解 CFD 问题时,值得我们投入时间和精力认真创建网格.在本篇 ...

  3. r语言msar如何用_如何在jupyter notebook中使用R语言

    前人之述备矣,然则操作系统不同,软件版本相异,软件安装途径有别,只为于jupyter中使用R,所遇之难 ,得无异乎? 问题陈述 操作系统:win10 64 软件叙述:安装了anaconda, R(不是 ...

  4. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

  5. java eclipse导入工程文件_如何在Eclipse软件中导入Java工程文件

    有些在学习Java编程的用户虽然会创建工程,但是对于怎么导入工程文件却不清楚,下面这篇教程我们就来为大家介绍一下,在Eclipse软件中导入Java工程文件的方法,有兴趣的朋友就来了解一下吧. 解决方 ...

  6. c语言输入一段字符,C语言实现输入一个字符串后打印出该字符串中字符的所有排列...

    本文实例讲述了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,属于数学里的排列问题.是一个很实用的算法技巧.分享给大家供大家参考.具体实现方法如下: 例如输入字符串abc,则输出由字符 ...

  7. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

  8. wps表格户主序号_如何在Excel表格中对自动设置编号(wps excel查找)

    WPS如何设置产品编码规则 打开一个编好的WPS文档如下: 如果只样的话,文档显的太乱了,条理也不清晰,因此需要文档进行编号,选中文档,鼠标右键,弹出下拉菜单: 选择项目符号和编号,弹出符号和编号对话 ...

  9. [译]如何在visual studio中调试Javascript

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

最新文章

  1. php 文档标示规范,php标识
  2. HttpClient模拟http请求
  3. linux转mysql_转linux下mysql命令
  4. MySQL BIT、BINARY、VARBINARY、BLOB(二进制类型)
  5. java insert方法_【Oracle/Java】以Insert ALL方式向表中插入百万条记录,耗时9分17秒...
  6. 推荐一门免费提升开发效率的课程,非广告。
  7. 20211202:力扣第268周周赛(下)
  8. 好好的虚拟机不能用了, 出现无法打开内核设备\\.\Global\vmx86: 系统找不到指定的文件的错误, 以下是网上找到的解决方法,亲测可用...
  9. SQL正则表达式的应用 case的灵活应用
  10. 恶意代码分析实战学习——静态分析
  11. SQL Server 2008 Express 及 SSMS Express 下载安装配置教程
  12. NB50/60 TJ1/TK1 模具 黑苹果保姆级教程整理
  13. 【JavaScript】简易打地鼠游戏
  14. 图表可视化配色学习——自动提取图片主色调与配色方案(python、pillow、haishoku和seaborn),并生成十六进制颜色编码
  15. html刮刮乐百分比,jQuery+html5实现彩票刮刮乐效果
  16. 关于离开,请诸位保重自己
  17. “呼死你”重出江湖 如何避免骚扰电话?
  18. 快速成为抖音内容运营高手的心法
  19. 如何将scr文件设置为屏保
  20. 互联网医院网络安全等保建设方案

热门文章

  1. 解放双手!推荐一款阿里开源的低代码工具,YYDS!
  2. 如何生成高性能的短链接?
  3. JVM(三)对象的生死判定和算法详解
  4. python装饰器函数传参
  5. 白盒测试中的六种覆盖方法及案例分析
  6. unity塔防游戏怪物转向_红包版塔防游戏合集-可以赚钱领红包的塔防游戏-无广告塔防游戏红包版大全...
  7. 罗宾斯管理学13版pdf_全球著名管理学家,曾任五大高校教授,罗宾斯教你如何做好管理者...
  8. autowired的对象为null_spring-为什么我的@Autowired对象为null?
  9. eclipse不进入断点_Eclipse 调试中不支持运行到断点问题
  10. 爱奇艺怎么开启从列表删除时同时删除本地文件