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

问题描述

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

解决方法

外部材料一般通过 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 知识库,点击“”,获取实现外部材料的演示的案例模型。

237e327bff39167111341270db995d73.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idal 创建springboot 项目_SpringBoot教程:Maven方式创建SpringBoot项目

一.Maven方式创建Spring Boot项目1.配置Maven环境在以maven方式创建Spring Boot项目之前,请先确保自己的Maven并配置好环境变量,并且在ideal中关联好maven环境。2.创建一个新的maven项目3.设置项目坐标信息到此为止,就已经成功的…

mysql xa_Mysql对XA的支持

mysql8.0文档:https://dev.mysql.com/doc/refman/8.0/en/xa-statements.html。13.3.8.1 XA Transaction SQL Syntax章节讲述了Mysql对于XA事务的语法。XA {START|BEGIN} xid [JOIN|RESUME] XA END xid [SUSPEND [FOR MIGRATE]] XA PREPARE xid XA COMMIT xid [ONE P…

mysql 视图 过程 函数_MySQL视图,函数,触发器,存储过程

1. 视图视图是一个虚拟表,它的本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。使用视图我们可以把查询过程中的临时表摘出来,用视图去实现&…

socket抓包_64、抓包分析tcp与udp

从前面的两个案例,我们了解到了如何通过原生socket函数分别创建tcp和udp服务,以及通过相应的客户端进行连接测试。在本文中,我们将继续深入地去了解tcp和udp的差别,和思考它们两者如何应该多个客户端请求1、抓包分析这里采用tcpdu…

fw313r手机登录_迅捷(FAST)fw313r路由器手机设置教程

本文中,鸿哥主要给大家介绍,迅捷(FAST)fw313r路由器用手机设置的方法。一台新买回来的迅捷(FAST)fw313r路由器,要用手机来设置它连接Internet上网,需要以下几个步骤:1、正确连接FW313R路由器2、手机连接FW313R的信号3、…

mysql 5.6.21不能选择安装路径_mysql5.6.21服务器安装图解(选择安装和数据目录)

mysql安装图解(服务器上安装mysql,只安装mysql服务)1.3 mysql安装及配置版本:MySQL5.6.21 64位1.3.1 安装.net framework.exe 4.0注意:mysql5.6版本需要安装.net framwork.exe 4.0环境1.3.2 安装mysql数据库(1)打开安装程序后,…

爬空气质量MySQL_爬虫:利用selenium采集某某环境网站的空气质量数据

前言:在上一篇文章中,我们介绍了在http://PM2.5.in这个网站采集空气质量的数据,本篇文章是对其产生的一些问题的另一种解决方案,提供更加权威的数据采集。技术框架:selenium、json、etree这里的selenium是一种自动化测…

操作失败10秒内未完成启动服务mysql_01-MySQL 命令行-cmd用法-未完成

01.png02.png03.png04.png05.png06.png07.png08.png09.png一、mysql服务的启动和停止net stop mysqlnet start mysql二、登陆mysql语法如下: mysql -u用户名 -p用户密码键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,…

selenium python实例录制运行_WEB自动化测试工具selenium录制器使用笔记

简介selenium录制器是最近刚流行起来的一个WEB自动化测试工具,由多测测团队开发。Selenium录制器采用关键字驱动的理念,简化测试用例的创建和维护,可以直接运行在浏览器中,就像真正的用户在操作一样。自动化脚本录制、一键回放、报…

cass坡度土方计算案例_60度斜坡怎么计算_南方CASS土方计算方法—方格网法

01概述在我们的日常工作中,遇到大量的土方修正算的相关咨询,为什么CASS的方格网土方修正算,方格设定为10米和20米,修正算结果有很大差异呢?从软件计算原理、数据质量等方面进行分析,读了这篇文章&#xff0…

rabbitmq+topic+java_译:5.RabbitMQ Java Client 之 Topics (主题)

我们使用的是direct(直接交换),而不是使用只能进行虚拟广播的 fanout(扇出交换),并且有可能选择性地接收日志。虽然使用direct(直接交换)改进了我们的系统,但它仍然有局限性 - 它不能基于多个标准进行路由。在我们的日志系统中,我…

php 查找无限级,Ztree + PHP 无限级节点 递归查找节点法

一、前言简单的描述一下,实习几个原理,思想,其实写很多东西,思想算是最重要的。1、目标:将写一个无限节点的树形目录结构,如下图步骤:1、你的下载 插件 ztree。然后布置在你的项目中。2、相关C…

用php实现一个简易的web表单生成器,网络编程PHP Web表单生成器案例分析

本文实例讲述了PHP Web表单生成器。分享给大家供大家参考,具体如下:1.实例:2. 需求分析在项目的实际开发中,经常需要设计各种各样表单。直接编写HTML表单虽然简单,但修改、维护相对麻烦。因此,可以利用PHP实…

matlab示波器有功功率,巧用示波器计算功率-测试测量-与非网

示波器主要用于测量电流和电压,然后通过一系列魔术般的数学公式就可以计算出功率。遗憾的是,功率有许多种类:瞬时功率、有功功率、视在功率和无功功率。这么多的功率术语经常让人感到困惑。本文介绍了如何在Teledyne LeCroy HDO 6000示波器上…

php 表单提交文件大小,PHP如何通过表单直接提交大文件详解

PHP如何通过表单直接提交大文件详解前言我想通过表单直接提交大文件,django 那边我就是这么干的。而对于 php 来说,我认为尽管可以设置最大上传的大小,但最大也无法超过内存大小,因为它无法把文件内容都放到 php://input 里面。直…

php登陆项目,ThinkPHP6项目基操(14.实战部分 中间件处理登录流程)

一、定义中间件namespace app\middleware;class Check{public function handle($request, \Closure $next){if ($request->param(name) think) {return redirect(index/think);}return $next($request);}}中间件类可以随意命名,中间件的入口执行方法必须是handl…

蓝桥杯第七届决赛之---阶乘位数

阶乘位数9的阶乘等于:362880它的二进制表示为:1011000100110000000这个数字共有19位。请你计算,9999 的阶乘的二进制表示一共有多少位? 思路总结: 根据平时做题规律得到如下规律:public class SwingDesign …

生日快乐模板php,可会有人跟我说句生日快乐

一个人一年可以经历三百六十五次零点的跨越,可是真正有意义的却只有那么一次。从呱呱坠地到现在芳华正茂,今晚将是我要度过的第二十二个零点。从此以后,我便会进入到一个崭新的年龄,弱弱的问一句:可会有人跟我说句生日…

Java排序算法之--快速算法--快速上手

何为快速算法:它是冒泡排序的改进~ 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以…

排序算法值--堆排序

堆实际上是一棵完全二叉树&#xff0c;其任何一非叶节点满足性质&#xff1a;Key[i]<key[2i1]&&Key[i]<key[2i2]或者Key[i]>Key[2i1]&&key>key[2i2]即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。堆分为大顶堆和小顶堆&#x…