玩转Matlab-Simscape(初级)- 05 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分1)

**

玩转Matlab-Simscape(初级)- 05 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分1)

**

目录

    • 玩转Matlab-Simscape(初级)- 05 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分1)
  • 前言
  • 一、COMSOL Multiphysics with Simulink介绍
    • 1.1 Simulink与COMSOL联合仿真简介
    • 1.2 使用COMSOL启动Simulink
    • 1.3 协同仿真
    • 1.4 状态空间系统
    • 1.5 自定义设置
  • 二. 协同仿真工作流程
    • 2.1 仿真开始前注意点
    • 2.2 Comsol中协同仿真工作流
      • 2.2.1 配置和导出协同仿真文件
    • 2.3 在Simulink中添加协同仿真块
      • 2.3.1 在Simulink库浏览器中,找到COMSOL联合仿真块,拖进Simulink图中。
      • 2.3.2 在Simulink图中,要进入COMSOL联合仿真块设置窗口,双击该块。
    • 2.4 运行仿真后
      • 2.4.1 保存模型
      • 2.4.2 在COMSOL软件中编辑模型
  • 总结


前言

学完《玩转Matlab-Simscape(初级)》系列博客的前三节 ,我发现应用Maltab simscape对多体进行仿真时,如果要研究的对象是一个刚体系统,进行动力学的分析还是相对好处理的,但如果3D模型再复杂些,研究的结构中个别组件为柔性体(即对一个复杂刚柔耦合系统的控制进行仿真),在Matlab Simscape中进行分析,现阶段对我来说貌似有些困难,所以,今天我跳转介绍下COMSOL Multiphysics with Simulink。该部分主要想解决后续可能遇到的复杂3D刚柔耦合控制系统的仿真问题。
本文通篇概述基于Solidworks、Matlab Simulink、COMSOL进行协同仿真的理论基础部分。欢迎各位小伙伴关注、赞赞、留言和收藏。
(Matlab的这种刚柔耦合控制仿真分析模块我还没学习到,待掌握了解后跟此文方法会做个对比研究。😄)


一、COMSOL Multiphysics with Simulink介绍

1.1 Simulink与COMSOL联合仿真简介

  • 任何时间相关的或静态的COMSOL模型都可以与Simulink一起用于联合仿真;
  • 基于COMSOL模型导出状态空间模型为总自由度(DOFs)的线性化模型,是模态降阶的线性化模型,对于某些物理场,需要有额外的模块,以便能够建立执行模态分析所需的模态研究;

1.2 使用COMSOL启动Simulink

方法1(windows系统):双击桌面图标或 “开始”→COMSOL Multiphysics 6.1→COMSOL
Multiphysics 6.1 with Simulink,这将打开MATLAB桌面以及COMSOL Multiphysics服务器。注意:不支持手动建立Simulink与COMSOL的连接。
在这里插入图片描述
注意:

    1. 如果没有出现上述“COMSOL Multiphysics 6.1 with Simulink”和“COMSOL Multiphysics 6.1 with Matlab”图标,可以如下处理:
      ①先安装Matlab软件再安装Comsol软件;②在安装comsol软件时,指定Matlab的安装根路径
    1. 如果comsol不能与simulink建立联结,可以右键“COMSOL Multiphysics 6.1 with Simulink”图标属性,在“目标”中输入如下字段:
      <COMSOL_ROOT>\bin\win64\comsolmphserver.exe Simulink -mlroot <MATLAB_ROOT>
      其中,
      <COMSOL_ROOT>是COMSOL安装根目录,例如D:\Program Files\Comsol\COMSOL61\Multiphysics,
      <MATLAB_ROOT>是MATLAB安装根目录,如例D:/Program files/MATLAB/R2010b。

1.3 协同仿真

协同仿真是一种将两个或多个独立的仿真软件程序集成在一起,使它们能够执行联合仿真的方法。在用Simulink对COMSOL模型进行联合仿真时,Simulink负责整个时间步进,并控制如何以及何时执行Simulink模型中所有模块的模拟。
注意:COMSOL模型的模拟是由模型中定义的COMSOL求解器执行的。因此,COMSOL求解器确定在通信步长t到t + dt期间,COMSOL内部执行哪种类型的时间步长。通常,COMSOL会选择在通信步骤内采取小的时间步骤,以达到所需的精度。

1.4 状态空间系统

状态空间系统是线性动态系统,其输入u和输出y定义如下式:
在这里插入图片描述
其中x为状态变量向量。上述动态系统的另一种表示是:
在这里插入图片描述
后一种形式更适合于大型系统,因为矩阵MC和MCA通常会变得比A稀疏得多。
在COMSOL中,可以选择使用降阶模型对系统进行线性化,也可以选择从完整模型中组装线性化的矩阵。模型约简仅限于支持特征值分析的物理接口。多物理场问题可能不适合降阶模型。状态空间矩阵的装配操作必须在COMSOL模型中完成。
直接提取全阶系统的状态空间矩阵是降阶建模的替代方案,因为状态空间系统不限于特定的物理接口,只要使用合适的线性化点,就可以用于多物理场问题。得到的矩阵具有模型的自由度数的大小,这可能会导致非常大的矩阵。状态空间矩阵的装配操作必须在COMSOL模型中完成。

1.5 自定义设置

要更改与联合仿真相关的设置,通过在MATLAB命令窗口中运行命令mphsimsettings打开e Settings — LiveLink for Simulink窗口。
在这里插入图片描述
如果COMSOL模型文件(MPH)与cosimulation文件放在同一目录下,COMSOL将能够自动找到COMSOL模型文件。如果无法将模型文件与协仿真文件放在同一位置,则必须点击Add按钮并选择所需的文件夹,手动将模型文件的路径添加到模型搜索路径列表中。

二. 协同仿真工作流程

2.1 仿真开始前注意点

    1. 用于协同仿真的“研究”只能是一个“研究步”,要么是瞬态研究要么是稳态研究。一般常见的是瞬态研究。
    1. 瞬态研究和稳态研究中的参数扫描功能,以及稳态研究步中的载荷工况在协同仿真中均不支持。
    1. 自适应(如自适应网格细化,自适应误差估计)在协同仿真中也不支持。
    1. 在导出协同仿真文件前,必须将模型文件进行保存。
    1. 最好将模型文件与导出的协同仿真文件保存在同一目录中,这样协同仿真时会更容易使用。
    1. 在进行协同仿真时,确保模型求解的时间间隔和时间步长被用于求解。
    1. 确保模型用于求解的预期输入参数范围将用于协同仿真。
    1. 如果Simulink的时间单位是s,就无需检查COMSOL和simulink中的时间单位是否相同。
    1. 输入和输出的单位变换没有表示,因此,所有变换的值都在COMSOL模型单元里。当使用探针指定输出值时,探针会包含用于转换的单位设置。
    1. 当与Simulink进行联合仿真时,位于离散通信点处的参数会突变。某些情况下,这种突变相对于仅在COMSOL中进行仿真,使时间步对于求解器更具挑战。
    1. 考虑到输入值的变化,将不得不更新求解器的设置。如果参数直接控制场变量,一般需要进行手动缩放。
    1. 为了精确地描述系统的动力学行为,一般模型中的物理场定义需要更新。尤其是当将模型从稳态求解转变为瞬态求解时,这点尤其重要。例如,你可能必须引入影响动力学行为的阻尼或其他材料设置 。

2.2 Comsol中协同仿真工作流

    1. 搭建并保存COMSOL模型,确认模型求解无问题。
    1. 将Cosimulation for Simulink特征节点添加到Comsol模型中。用于定义协同仿真模型的输入、输出和求解。
    1. 从Cosimulation for Simulink特征节点导出协同仿真文件,最好保存在.mph文件(comsol模型文件)的存放路径中。(详见2.2.1部分)
    1. 在Simulink中创建或加载仿真图,并添加COMSOL联合仿真模块。
    1. 双击COMSOL 联合仿真模块,输入第3步从COMSOL Multiphysics软件导出的Cosimulation文件名称。
    1. 在Simulink中运行cosimulation。
    1. 可选择保存模型,在COMSOL 软件中进行后处理。

2.2.1 配置和导出协同仿真文件

导出操作如下:
方法一:在Comsol 软件“研究”选项卡下,点击选择“Cosimulation for Simulink”。
方法二:右键单击“全局定义”,选择“Cosimulation for Simulink
导出的协同仿真文件只包含有关Simulink应该如何与COMSOL模型接口的信息。协同仿真文件本身不包含模型,
模型仅保留在COMSOL mph文件中。

    1. 在Cosimulation for Simulink 设置窗口中的Filename页,输入要导出的cosimulation文件的名称。
    1. 适当的cosimulation文件应设置至少一个输出表达式和一个支持的研究步骤。
    1. 点击导出,生成fmu格式的协同仿真文件。
      **注意:**在导出联合仿真文件之前,先保存应用程序mph文件设置模型名称。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置操作如下:

    1. 在“输入”设置部分
      ①可以在Cosimulation for Simulink 设置窗口中指定输入变量及其顺序。输入变量可以在每次通信时在模型中修改和更新。在Parameter name列中,列表中除了包含已经设置为全局参数的参数外,还有在模型中定义的全局参数。
      **注意:**不支持定义几何或网格设置的参数作为输入。
      ②在初始值单元格中输入要在初始时间步设置的值。
    1. 在“块参数”设置部分
      可以指定要在Simulink 模块中更改的参数,但这些参数仅在协同仿真初始化期间计算。在“参数名称”列中,从列表中选择一个参数。对块参数定义的设置没有限制。
    1. 在“研究”设置部分
      指定在协同仿真中运行的研究,以及如何将解存储在COMSOL模型中
      *. 4. “依赖性”设置部分
      使用单选按钮指定输入参数和输出表达式之间的任何直接依赖关系。该信息包含在导出的联合仿真文件中,以便通知Simulink模型中的直接馈通。
    1. “图像”设置部分
      对加载到Simulink中的COMSOL 协同仿真模块,为方便识别模型,可以对模块填充图像
      在这里插入图片描述

2.3 在Simulink中添加协同仿真块

2.3.1 在Simulink库浏览器中,找到COMSOL联合仿真块,拖进Simulink图中。

在这里插入图片描述

2.3.2 在Simulink图中,要进入COMSOL联合仿真块设置窗口,双击该块。

在这里插入图片描述
①在“Filename”字段中输入cosimulation的文件名。
②在“Comunication step size”中,您输入两个程序相互通信的时间间隔。
③要修改在comsol协同仿真文件导出过程中设置的默认值,则单击块参数“Block Parameters”。

2.4 运行仿真后

运行仿真后,可以根据COMSOL协同仿真模块和Simulink图中其他模块的输入、输出,从Simulink中提取数据,也可以在COMSOL中对存储的解决方案数据进行后处理。

2.4.1 保存模型

在执行协同仿真时,模型存储在COMSOL Multiphysics服务器的内存中。使用MATLAB中的命令行可以访问该模型并与之交互。

mphsave(<FILENAME>)

其中是要保存的COMSOL模型的名称。该模型可通过COMSOL Multiphysics加载,便于后续进一步分析。

2.4.2 在COMSOL软件中编辑模型

为了更快地进行分析,可以使用命令mphlaunch。该命令启动COMSOL Multiphysics,将其连接到用于联合仿真的COMSOL Multiphysics服务器,并将模型加载到用户界面中。此时,COMSOL中可用的所有后处理功能都可以用于分析模型。
当以这种方式打开COMSOL Multiphysics时,模型将被COMSOL用户界面锁定。因此,在Simulink中运行另一个联合仿真之前,需要关闭COMSOL用户界面。


总结

以上就是今天分享的关于COMSOL Multiphysics with Simulink 的理论基础内容第一部分,简单分享了在Comsol和Simulink中搭建模型工作流,迎各位小伙伴关注、赞赞、留言和收藏。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity里的Time

Time and frame rate management Time类&#xff1a; Time script reference page. 一些常见的属性有&#xff1a; Time.time 返回从游戏开始经历的时间.Time.deltaTime 返回从上帧结束到现在经历的时间&#xff0c;和帧率成反比Time.timeScale 控制时间流逝的因子Time.fixe…

web前端框架设计第八课-表单控件绑定

web前端框架设计第八课-表单控件绑定 一.预习笔记 1.v-model实现表单数据双向绑定 2.搜索数据的实现 3.全选案例实现1—JQ方法 4.单选案例实现 5.数据级联&#xff08;二级级联&#xff09; 6.v-model中的修饰符 二.课堂笔记 三.课后回顾 –行动是治愈恐惧的良药&#xff0c…

全局异常处理实现

全局异常统一处理 ​ 全局异常处理类通常用于捕获和处理应用程序中发生的所有异常&#xff0c;从而避免在代码的多个地方重复编写异常处理逻辑。 一、全局异常处理方案 ​ 全局异常处理类有多种实现方式&#xff0c;每种方式都有其特定的应用场景和优势。以下是几种常见的全…

如何解决代码循环依赖问题?

今天跟大家一起探讨在日常开发过程中经常会碰到的一个问题&#xff0c;这个问题跟代码的维护工作有很大关系。我们知道任何系统在开发了一段时间之后&#xff0c;随着业务功能和代码数量的不断增加&#xff0c;代码之间的调用和被调用场景也会逐渐变的越来越复杂。各个类或组件…

有趣的css - 卡片翻转效果

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是利用 css3 属性 backface-visibility 让卡片翻转的过渡动画效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整…

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2 1、 def get_item(a):Spaceship.step(1)Dev.step(a)Dev.turnLeft()Dev.step(1)Spaceship.step(1)Dev.turnRight()Dev.step(-a)Spaceship.step(1) get_item(3) get_item(2) get_item(3) get_item(1) get_item(5)2、 de…

PDF批量编辑:PDF转HTML批量操作技巧,提升文档格式转换效率

在数字化办公日益普及的今天&#xff0c;PDF&#xff08;Portable Document Format&#xff09;作为一种跨平台的文件格式&#xff0c;广泛应用于各种文档的存储和传输。然而&#xff0c;PDF文件的不可编辑性使得在某些情况下&#xff0c;我们需要将其转换为HTML格式以便更好地…

性价比王者HUSB237,极简PD Sink的“瘦身秘籍”

在小型化、高集成的要求下&#xff0c;慧能泰取电芯片进行技术升级后“瘦身成功”&#xff0c;推出最新一代极具性价比的最简PD Sink取电芯片——HUSB237。 图1&#xff1a;HUSB237 demo及封装图 HUSB237 是一款极具性价比的最简PD Sink取电芯片&#xff0c;支持PD3.1协议包含…

无人售货奶柜:掘金新零售蓝海,

无人售货奶柜&#xff1a;掘金新零售蓝海&#xff0c; 在日新月异的商业浪潮中&#xff0c;无人奶柜犹如一股清新的创业飓风&#xff0c;正以不可阻挡之势吸引着众多创业者的目光。这股新兴力量以其独到之处和庞大的市场蓝海&#xff0c;预示着一场关于健康、便捷消费方式的深…

网络故障快速定位的秘诀 - 基于 AnaTraf 全流量回溯分析

网络故障是每个 IT 从业者都深有体会的头疼问题。当网络出现异常时,如何快速定位故障原因,恢复网络正常运行,是考验运维能力的关键所在。借助 AnaTraf 网络流量分析仪的全流量回溯分析功能,您可以轻松应对各种复杂的网络问题,实现快速故障定位。 1. 网络故障分析的痛点 网络故…

【跟着例子学MySQL】生成统计报告 --分组聚合

文章目录 前言生成报告DISTINCT 关键字GROUP BY 子句GROUP BY 聚合函数HAVING 子句WITH ROLLUP 子句未完待续 前言 举例子&#xff0c;是最简单有效的学习方法。本系列文章以一个贯穿始终的场景&#xff0c;结合多个实例讲解MySQL的基本用法。 ❔ 为什么要写这个系列&#xff…

前端铺子后台管理系统:基于Vue3与Ant Design Vue的轻量级解决方案

一、引言 随着前端技术的飞速发展&#xff0c;构建高效、轻量且易于维护的后台管理系统成为了企业信息化建设的重要一环。前端铺子后台管理系统&#xff0c;作为一款基于Vue的前端框架&#xff0c;结合Ant Design Vue的UI组件库&#xff0c;为企业提供了一个高效、灵活的后台管…

铁路机辆作业移动智能终端的特点是什么?

在铁路机辆作业的现代化进程中&#xff0c;移动智能终端以其独特的优势成为了不可或缺的装备。这些终端以其高度的便携性&#xff0c;使得工作人员能够随时随地处理各种作业任务&#xff0c;极大地提升了工作效率。它们具备出色的抗干扰性和高防护性&#xff0c;能够在复杂多变…

Docker部署MaxKB详细步骤(window系统)

上面章节已经实现了ollama李现部署llama3&#xff0c;并实现了一些简单的问答&#xff0c;但是问答的界面是在命令提示符中&#xff0c;交互很不友好&#xff0c;也不方便局域网其他用户访问&#xff0c;所以这节用docker部署MaxKB实现网页访问llama3&#xff0c;首先电脑上需要…

26版SPSS操作教程(高级教程第二十二章)

目录 前言 粉丝及官方意见说明 第二十二章一些学习笔记 第二十二章一些操作方法 联合分析 假设数据 具体操作 结果解释 联合分析的数据建模 CONJOINT过程语法 汽车偏好研究 具体操作 结果解释 高精统计图 市场占有率模拟 结果解释 结束语 前言 #一路向光而…

STL—string类(1)

一、string类 1、为什么要学习string&#xff1f; C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP&#xff08;面向对象…

【Fastadmin】自定义404页面

1.修改config.php // 文件路径&#xff1a;application/config.php// 自定义错误码模板http_exception_template > [// 定义404错误的模板渲染404 > APP_PATH . common/view/404/404.html,], 2.需要把debug关闭才能生效 在.env文件中把debug true&#xff0c;改为…

阿里云OSS如果指定某个文件夹给子账户

** 第一步创建子账号 ** 创建完用户不要给任何权限&#xff01; 当前页面切换到认证管理获取AccessKey即可 第二步目录授权 找到对应桶文件目录 上面授权按钮操作 选择添加的子账号账号保存即可&#xff01;

Ardupilot Rpanion 4GLTE 网络性能测试 - 国内中转

Ardupilot Rpanion 4GLTE 网络性能测试 - 国内中转 1. 源由2. 视频效果2.1 整体刷新率不高2.2 网络延迟可接受2.3 带宽增加丢包明显2.4 实测效果流畅 3. 总结 1. 源由 上一次&#xff0c;由于ZeroTier使用了国外服务器&#xff0c;延迟~ 569 ms&#xff0c;花屏、卡顿。 本着…

[自动化]pyautogui的使用

目录 环境 包的版本 前置知识 鼠标控制函数 屏幕与鼠标位置 size() position() OnScreen() 鼠标移动 moveTo() move() 鼠标拖动 dragTo() drag() mouseDown()按下鼠标 mouseUp()松开鼠标 鼠标滚动 scroll() 键盘控制函数 write() press() keyDown()和keyU…