![d0ccaaa41946fc61b5cd546215934e6a.png](https://i-blog.csdnimg.cn/blog_migrate/f6eeacee5b4906604374de63eccc795c.jpeg)
在使用 COMSOL 软件二次开发的过程中,你可能会遇到这样的问题:如何使用 App 开发器创建可以处理 CAD 导入并能让用户交互式选择边界条件的仿真 App?我需要了解编程吗?今天我们将为您介绍在 COMSOL 软件中创建包含 CAD 导入和选择的仿真 App 的方法,通过这些方法,你不仅可以通过一系列简单的步骤来做到这一点,而且不需要任何编程!你只需在 COMSOL 软件附加的 App 开发器的表单编辑器中执行标准操作就可以轻松完成。
CAD 导入和 仿真 App 选择演示
![c8a4ecf3de61d0955f236b8adad7627e.png](https://i-blog.csdnimg.cn/blog_migrate/a9ebf9780f8be5d2f5d68ef1e8950806.jpeg)
模型开发器中的选择
“选择”是创建本文开头演示的仿真 App 的关键。首先,我们来回顾一下选择的概念以及它们在 COMSOL Multiphysics® 软件中的用法。
在模型开发器中,指定选择可以在分配材料属性、边界条件和其他模型设置时,对域、边界、边或点进行分组。我们可以通过在组件 >定义 节点下添加子节点来创建不同类型的选择。这些可以在整个模型组件中重复使用。
下面,我们以边界条件的选择为例来说明如何使用选择。当我们选择一些边界与某个边界条件关联时,可以直接在 COMSOL Desktop® 环境的图形窗口中单击那些边界。这是默认选项,称为手动选择。然后这些边界将被添加到该边界条件的局部选择中。
![04d9fbc4f5526a9b03d1644c82f581d8.png](https://i-blog.csdnimg.cn/blog_migrate/ba0c8e2da5df79387e9e240e20fdf0ae.jpeg)
相反,指定选择可以让我们定义全局选择,只需从边界条件的下拉列表中进行选择即可将其重新应用。下图显示了显式选择的定义和使用,将编号为 186 的边界定义为出口流边界。
![b05e23b8a264a15d7982e7ccc5e08081.png](https://i-blog.csdnimg.cn/blog_migrate/5059f86b22d92d419cc97e53a5c21bc4.png)
![318422c03614cd6c9c5ed01717c06ce6.png](https://i-blog.csdnimg.cn/blog_migrate/a66ec49c87f7029c1178fce23d086d31.png)
准备用于创建 仿真App 的模型
我们将以 COMSOL Multiphysics 案例库中的微混合器模型教程为例,说明 CAD 导入和选择的用法。在案例库中,原始模型位于以下位置:COMSOL Multiphysics > 流体动力学 > 微混合器。
微混合器cn.comsol.com![b4f066a8f1e1fd5e6e8b0a59ec4c85a9.png](https://i-blog.csdnimg.cn/blog_migrate/b4dcf5b692707134e88f77fbb0c5b87a.png)
该模型模拟了一个静态层流微混合器,混合器具有两组平行的分离-再成形-重组混合单元。每个混合单元使流体层的数量增加了一倍,从而实现快速混合过程。以标量混合质量为输出结果,通过计算出口处的浓度曲线的相对方差来定义。
![b62637ac3ee66dfdcf04897686668e84.png](https://i-blog.csdnimg.cn/blog_migrate/1c62d164372ed07ca81087ea2a2d266f.png)
我们将对此模型稍做修改并作为仿真 App 的基础模型。尽管这是一个微流体模型,但这里使用的操作是通用的,适用于任何模型。
COMSOL 案例库中的模型都是通过使用 COMSOL Multiphysics 中的内置功能来构建几何结构的。但是,这里我们将其修改为基于 CAD 导入的版本。
首先,下载并打开相应的文件 micromixer_prepared.mph,该文件在与本博客文章相关的文件列表中可以查看:
支持 CAD 导入和选择的 Appcn.comsol.com![2ea7d4b63127c95652302ed700a9bbae.png](https://i-blog.csdnimg.cn/blog_migrate/695ccf855e230a263ee05c4d33bf1342.jpeg)
该模型在几何 序列中具有一个 CAD 导入节点,如下图所示。
![d99c357eeafad1ef12bc6d83a1e69b28.png](https://i-blog.csdnimg.cn/blog_migrate/45f9fb11ae8b8a6371cf3429a0a4430e.png)
如果我们拥有可访问 CAD 内核的附加产品(CAD 导入模块,设计模块或用于连接 CAD 的 LiveLink™ 产品之一),则该仿真 App 将允许我们导入各种行业标准的 CAD 格式文件。
CAD 导入模块 - 在 COMSOL® 软件中导入 CAD 文件cn.comsol.com![e14e5a0bdc83c67ebd5a8ab7623ec613.png](https://i-blog.csdnimg.cn/blog_migrate/c23874b74ed4cd20c27b70e9f54d81cf.jpeg)
为了使仿真 App 不依赖导入 CAD 格式文件的尺寸,该模型还添加了 缩放 操作,并设置参数为 geometryScale
,如下图所示。
![e1d5be05febee82bc6a1adc160108c17.png](https://i-blog.csdnimg.cn/blog_migrate/8db5a109ecbc65f39b7eb155d641f3e7.png)
geometryScale
的值 1 假定导入的 CAD 格式文件以微米为单位定义。geometryScale
的默认值 1000 假定导入的 CAD 格式文件以毫米为单位定义。
如本文开头所述,模型 micromixer_prepared.mph 具有两个显式 选择,即入口边界 和出口边界。这些选择将应用于模型中的流量和质量传输的入口和出口。
![289d0e85edbd9586d14173d9b3dec6ab.png](https://i-blog.csdnimg.cn/blog_migrate/1159834583ae8d02a16ea806280e55a0.jpeg)
使用新表单向导创建第一个仿真 App
现在,让我们基于微混合器模型创建一个仿真 App。在主屏幕 选项卡上,从模型开发器切换到 App 开发器,然后单击新建表单,打开新建表单向导。
在输入/输出页面,将表单标题 更改为 Main,并将表单名称 更改为 main。然后,双击左侧的树使以下参数在表单中可用(详请参见下图):
- 入口浓度
- 扩散系数
- 平均速度
- 几何比例
此外,双击全局计算 节点以显示计算出的混合质量。
![0a32ac65bb1348ea3d603eaaaedcee56.png](https://i-blog.csdnimg.cn/blog_migrate/9fa77166a91c8cc2d0ffff2df1bcb070.jpeg)
在图形 页面中,双击浓度,表面(tds)以将其作为默认图形输出。
![b2672312af94d3c31b7ebf251451477c.png](https://i-blog.csdnimg.cn/blog_migrate/f27aa3bf1d2069e267a5b7eb9c629bd6.jpeg)
在按钮页面中,双击计算研究1 以添加计算按钮。
![17cae48a8f43fcce47db8215ab8691fd.png](https://i-blog.csdnimg.cn/blog_migrate/ef54edd1af8f6a98cbea0f1965a93c57.jpeg)
单击确定退出表单向导。
在表单编辑器中,根据下图使用拖放操作放置图形 对象和计算按钮。单击并拖动以调整图形 对象的大小,使其稍大一些。
![d2ba345932b705a3376eccdbe44148f1.png](https://i-blog.csdnimg.cn/blog_migrate/fda4749605dcf4882715f8842c36647d.png)
下一步,将 App 布局模式切换为栅格模式。通过选择增长列,增长行,对齐 >水平填充,以及对齐 >垂直填充,使图形对象可调整大小。有关如何执行此操作的详细说明,请参阅COMSOL App 开发器简介(5.5版本)中第 116-117 页。
![651916326d67a74198b2aa395253c4b2.png](https://i-blog.csdnimg.cn/blog_migrate/3db502316f3aefb82ee5cef78f0fce16.jpeg)
现在,我们通过单击功能区中的测试 APP 来运行该仿真 App。此仿真 App 非常有趣,对于各种输入都可以轻松计算并获得结果。
![942411bd71eae4c3dbf6afca72cc0947.png](https://i-blog.csdnimg.cn/blog_migrate/8b33999c8e93c844b6522a2281eeaa12.jpeg)
在运行时最大化整个 App 窗口可能更为方便。在 App 开发器 中,单击 App 开发器模型树中的主窗口节点,然后在设置窗口中的大小部分,选择初始大小最大化,就可以启用这个功能。
![e297118abf631785d5f83b5ff4e57fb9.png](https://i-blog.csdnimg.cn/blog_migrate/bfe3243741ce25f284a258565ab5f431.png)
启用 CAD 导入
为将 CAD 导入仿真 App,我们需要添加一个专用按钮,使用该按钮打开文件浏览器并执行导入。为了给新添加的按钮留出空间,如下图所示,在最后一个输入框相对浓度方差,出口 下方添加新行。
![8d9529154f720735a86a47b7aeb92313.png](https://i-blog.csdnimg.cn/blog_migrate/4f730a22599e931e4461a588b29c265d.png)
如下图所示,单击并选择新行中最左边的单元格。
![1627ade6bc9e3e41b058e9c614dc3fd5.png](https://i-blog.csdnimg.cn/blog_migrate/0c4a242a97b96ec8fedfa5700eff85cf.png)
选择空单元格后,在表单选项卡中,选择插入对象 >输入>按钮。在按钮的设置窗口,将文本更改为导入,使用图像库中名为 import_32.png 的图标(单击图标右侧的+按钮),然后将大小更改为大(或使用另一个图标)。
![22ff8db424132bd3da045c2bd14eca19.png](https://i-blog.csdnimg.cn/blog_migrate/12cbb0499a588bc1e9ea85543911e8d7.png)
右键单击按钮,然后选择对齐 >右对齐以更好地放置按钮。
![8c4b8a7415c367162571ce4bc8c419cf.png](https://i-blog.csdnimg.cn/blog_migrate/fdcc0dc1739e10a2c5da95757105d494.png)
现在,按钮的布局已经准备就绪。下一步是将动作或命令关联到按钮。单击导入按钮查看其设置窗口。在选择要运行的命令部分中,浏览并双击模型 >组件1 >几何1 >导入1 >文件名(文件名)。
![fafde02614ff66e9de806ac43a5617fa.png](https://i-blog.csdnimg.cn/blog_migrate/0b5d99185a3896228a1d0748680e104b.png)
同样,浏览并双击模型 >组件1 >几何1 和 GUI 命令 >图形命令 >缩放范围,以将这些操作添加到命令序列中。此外,根据下图,使用命令序列下方的编辑变元按钮,或在绘制几何1和缩放范围命令的变元字段中,手动键入main/graphics1
。
![38ddfa5f21a51988a0287a2fd1f68f04.png](https://i-blog.csdnimg.cn/blog_migrate/86a8d7e85fc28050cb1b04e6636b4bb4.png)
变元 main/graphics1
将图形输出到仿真 App 中的相应的图形 对象。不管模型的尺寸有多大,缩放到窗口大小命令可以确保整个 CAD 模型在图形窗口中都是可见的。
现在,我们可以通过单击测试 App 来运行该仿真 App,然后导入在本文相关文件中下载的 MPHBIN 文件。
为了能够使用缩放 参数轻松更改导入 CAD 模型的比例,我们需要在新比例下重建几何对象并对其进行可视化。为此,我们可以添加另一个按钮来显示和构建几何图形。使用编辑器工具 窗口可以很容易地做到这一点。通过单击功能区的表单选项卡中的相应按钮,可以打开编辑器工具 窗口。单击编辑器工具 窗口中的导入按钮右侧的空白单元格,浏览至模型 >组件 >几何,然后单击鼠标右键,选择按钮。
![425c1f3a005d1ca8b809376be559b77f.png](https://i-blog.csdnimg.cn/blog_migrate/6a757ab9022195c063aee623471d2542.png)
![3f20ca53805e8da5613b3bfa5f35bc5d.png](https://i-blog.csdnimg.cn/blog_migrate/6eab8c0f0dabe5016886399867af7b8f.png)
如果需要对导入缩放后的 CAD 模型自动调整图形轴,请根据下图,在绘制几何按钮的设置窗口中,向命令序列添加缩放范围命令。
![a958050ec8937f03efcfa994ebd5b39b.png](https://i-blog.csdnimg.cn/blog_migrate/d5022fab5ecfe953743a26ec90de9d14.png)
选择边界
现在,我们添加两个按钮来选择边界:一个按钮用于入口边界,另一个按钮用于出口边界。
单击与计算 按钮相同的行中最左边的空白单元格。
使用编辑器工具窗口,浏览并右键单击模型 >组件1 >定义 >选择 >入口边界 >按钮。
![b55468701277478f719351a79113b677.png](https://i-blog.csdnimg.cn/blog_migrate/23ec7fb8452100d2e4af13a20129ec58.png)
将绘图选择 按钮添加到所选单元格。右键单击并选择对齐 >右对齐以更好地放置按钮。
双击绘图选择 按钮,然后在其设置 窗口中,将文本 更改为入口。
![609f3f505dad1831d120ad051ab4b268.png](https://i-blog.csdnimg.cn/blog_migrate/7eee73d32727ab8af9470eaacec910e7.png)
根据下图,通过浏览并右键单击模型 >组件1 >定义 >选择 >出口边界 >按钮,然后将按钮的相应文本更改为出口,重复上述步骤以创建出口按钮。
![05ae68a2b51e3328f6e5d123d29be959.png](https://i-blog.csdnimg.cn/blog_migrate/29425c3a558973bc9e7025bd6a9014f0.png)
与在 模型开发器 中一样,单击 出口 选择按钮,使图形 对象具有交互性,从而允许我们单击边界,以便为出口边界 选择一个或多个边界。如下图所示,在绘制出口边界 命令中将 graphics1
作为变元反映在命令 序列中。对于入口 按钮,也是如此。
![97a1858e9d2948d153c314fecb8fd95c.png](https://i-blog.csdnimg.cn/blog_migrate/c77fb403efdb7d51da22c58495d1975f.png)
要查看单击选择按钮后用户界面的显示方式,请参阅本文末尾更高级版本的仿真 App 图示。
在使用新的选择按钮之前,我们还需要在用于计算混合质量的平均算子中使用选择。在模型开发器中,转到组件1 >定义 >平均值1 和组件1 >定义 >平均值2,然后根据下图将选择 分别更改为入口边界 和出口边界。
![bb806a69e964bc9310200bc3dfc01619.png](https://i-blog.csdnimg.cn/blog_migrate/712b189c69c3d7fbc81ede5992798b4a.png)
参数化阶跃式流入浓度曲线
为了使用户能够控制用于测量混合质量的入口边界处的浓度阶跃函数,我们需要将其参数化并将此表达式提供给用户。为了表示微流体通道的特征宽度(数量级),根据下图,以具有默认值 1400[um]
的全局参数 channelWidth
开始。
![6a92a709cd19e4d1655489df3ce10253.png](https://i-blog.csdnimg.cn/blog_migrate/7e48823e87ec063cd74d9c7a7e6fbe77.png)
找到阶跃函数组件1 >定义 >阶跃1的设置窗口。在平滑部分中,在过渡区域的大小输入channelWidth/10
。这样可确保在从 0 增加到 1 时,阶跃函数的过渡区域为通道宽度的 10%。过渡过于尖锐可能会导致粗糙网格存在收敛问题。在本文的后面,我们将看到如何使用此阶跃函数来设置自定义浓度曲线。
![2ff52d2705c9716f73553bfd4bb210c5.png](https://i-blog.csdnimg.cn/blog_migrate/10de1401c9b5565a20f96208859420eb.png)
接下来,在流入边界条件的浓度设置中,将表达式替换为cStep
。
![c24a3bbf0d2b2aed3aa07bbeda5fb108.png](https://i-blog.csdnimg.cn/blog_migrate/89a0a9535cd0d6c24a4e2c4b6fc25333.png)
用于流入浓度的变量 cStep
在组件1 >定义 >变量,定义新的变量 cStep
使表达式 等于 c0*step1(-z[1/m])
。
![827843cc812dd3faca347aa6a9b316d5.png](https://i-blog.csdnimg.cn/blog_migrate/99f2af8711c7d73d291f87a8f5bb7ce4.png)
在 App 开发器的主表单中,根据下图,在几何比输入框下方添加两个新行,并使用编辑器工具窗口分别为通道宽度参数和浓度阶跃变量添加输入。为了放置和适应新的输入框,我们可能需要使用表单编辑器功能区中的合并单元格工具。使用 Shift + 单击以选择多个单元格,然后单击合并单元格。另外,我们可能还需要拖动以展开输入框的列,以适合浓度阶跃的新变量表达式。有关更多信息,请参见模型开发器简介。
![be2d5802efb66dbc7dcffb06af5ffa22.png](https://i-blog.csdnimg.cn/blog_migrate/3cdb20bac9dbac2b9256972ba3bfb526.png)
![bc053936157344281ec2a2934aa42b22.png](https://i-blog.csdnimg.cn/blog_migrate/a53ca15cac20fa7a8648a5562282e97e.png)
![6ce3e8edfd1c835478b5d367635ba73a.png](https://i-blog.csdnimg.cn/blog_migrate/252802ca7aed96cf650e7ca1e41e25bd.png)
使用数据访问控制单元大小
为了让用户控制单元的大小,请通过单击模型开发器的开发工具 选项卡中的相应按钮来启用数据访问。这样我们就可以访问单元大小的大小 属性,并在仿真 App 中使用它。
![0925886da619bc948514bc91011c0cda.png](https://i-blog.csdnimg.cn/blog_migrate/9fb5a98a86e23204b522a0654c0913a7.png)
在主表单中,在浓度方差输出下方添加另一行。单击新添加的行中最左侧的单元格,然后使用编辑器工具 窗口添加预定义大小输入。
在编辑器工具窗口中:
![cb2d46f72b2e55e7d5a17e402ad5f125.png](https://i-blog.csdnimg.cn/blog_migrate/06f74f84e42a3980213aaafc2b83f355.png)
这样做将为预定义的大小添加一组合框对象,如下图所示。请注意,我们可能需要使用合并单元格来获得所需的布局。
![3711574ad6586eed9bbb1e1eafcc2aec.png](https://i-blog.csdnimg.cn/blog_migrate/7c9e1962221138a929ea08a6a925b2d4.png)
该仿真 App 的基本版本现在已经准备就绪。如果您不想执行所有步骤,可以从与此博客文章相关的文件集中下载该 App。文件名是
支持 CAD 导入和选择的 Appcn.comsol.com![2ea7d4b63127c95652302ed700a9bbae.png](https://i-blog.csdnimg.cn/blog_migrate/695ccf855e230a263ee05c4d33bf1342.jpeg)
测试仿真 App
测试该仿真 App需要导入 CAD 文件 split_recombine_mixer.mphbin,并使用输入参数,如下图所示。这些参数将重现微流体模块中可用的教程模型的结果。
![21d615bc265fcbe9af6e475b79f45e9a.png](https://i-blog.csdnimg.cn/blog_migrate/c7ddc13ac5e552112e064f5926f72006.png)
表达式 c0*step1((0.75[mm]-x)[1/m])
定义了 x 方向上的浓度阶跃,过渡区域位于两个入口边界之间。具体地,过渡区域是 500 微米道宽度的 10%。这意味着在入口边界之间的区域中,浓度阶跃 表达式的值在宽度为 50μm 的区域内从 0 迅速增加到 1,从而确保左右入口的浓度值分别精确地为 0 和 1。单位表达式 [1/m] 确保阶跃函数的输入变元没有单位。
计算后的结果如下图所示。在这种情况下,相对浓度方差为 0.158。
![c039a8f928a3c8ba6ac872c662c631fb.png](https://i-blog.csdnimg.cn/blog_migrate/591c45ff1695b2f2a6b66d0e472368be.jpeg)
启用其他 CAD 格式
启用任何格式的 CAD 导入取决于附加产品,我们需要在模型开发器中的几何 序列中为 CAD 导入节点显式启用任何文件格式。为此,需启用数据访问,操作与上述的启用用户单元大小控制时相同。在导入设置窗口中,选中源 旁边的复选框,然后更改为任何可导入文件,如下图所示。此处可用的选项将取决于可用的附加产品。
![bd517a506671eda01ba440872b0ceab6.png](https://i-blog.csdnimg.cn/blog_migrate/43f1e39400ea098b858bf63323157e5e.png)
在 App 开发器中,双击导入按钮以打开其设置窗口。双击模型 >组件1 >几何1 >导入1 >源(类型),然后输入文件作为变元。反复使用上移按钮将其上移到命令序列的顶部。(可用变元为:文件、网格、本机、cad 和 ecad。)
![6adf71ef86d5bfce74477178b45fad00.png](https://i-blog.csdnimg.cn/blog_migrate/c9cc52786d0084cc41f0a2ebcb0fc713.png)
整理仿真 App
在可下载文件列表中,我们会找到此仿真 App 的稍微复杂的版本,文件名为 micromixer_app.mph。此版本仿真 App 的界面组织得更好,所有按钮都作为功能区项来使用,各种输入和输出分别布置在 CAD、网格、传递,流动 和结果 的子表单中,并通过表单集合进行汇总,如下图所示。此外,在文件菜单中,还有保存,另存为,重置 和报告 选项。
但是,即使在此版本的仿真 App 中,也无需编程。使用表单编辑器,仅需要几步就可以创建它。为了使仿真 App 简洁明了,其中并未设置错误检查和文档。我们可以在 COMSOL Multiphysics 案例库中找到更多高级仿真 App。
螺旋静态混合器cn.comsol.com![c2e5e47aecfe0049130a129b75ad59a9.png](https://i-blog.csdnimg.cn/blog_migrate/ec72ce1ab6f5082c8641999799016430.png)
![0f760cdec65db1a134791b0cd69cdc33.png](https://i-blog.csdnimg.cn/blog_migrate/f64997d072cc3921efd97df8b9ff90cb.jpeg)
![310ba123fd70922812f6760a6e8f360f.png](https://i-blog.csdnimg.cn/blog_migrate/5b5d8f208ec47fe7a8230ffc090b2236.jpeg)
通过网页浏览器在 COMSOL Server™ 上使用仿真 App
当然,我们可以使用 COMSOL Compiler™ 将仿真 App 编译为独立的应用程序,或者通过连接到 COMSOL Server™ 来运行它。使用 COMSOL Server 运行时,我们可以使用以下三种方式运行 App:
- COMSOL Client for Windows®
- 标准网页浏览器
- COMSOL Client for Android™
使用 COMSOL Client for Windows® 运行时,通过在用户界面中单击来执行选择的方式,与使用 COMSOL Multiphysics® 进行选择的方式相同。使用标准的网页浏览器或 COMSOL Client for Android™ 运行时,我们可以双击边界来选择它们。
![c67102f140ad607e74bb0186a1f80e1a.png](https://i-blog.csdnimg.cn/blog_migrate/1fce09554be8ca7f1797a41ef6225130.jpeg)
仿真 App 的潜在扩展
本文介绍了如何创建包含 CAD 导入和选择的仿真 App 而无需进行任何编程。仿真 App 有两种类型的入口和出口边界条件,使用本文介绍的技巧可以轻松扩展仿真 App 的其他边界条件。例如,仿真 App 还可以为其他类型的边界条件添加更多的选择,例如对于设置固定压力值或对滑移流进行建模。该仿真 App 演示了计算流体动力学和稀物质传递。您也可以轻松地为另一个物理领域创建类似的仿真 App,例如结构力学、声学、电磁学或传热。
下载仿真 App 文件
单击下面的按钮,下载本文中讨论的仿真 App。通过学习该仿真 App,激发创建您自己的仿真 App(并添加专门功能)的灵感!
支持 CAD 导入和选择的 Appcn.comsol.com![2ea7d4b63127c95652302ed700a9bbae.png](https://i-blog.csdnimg.cn/blog_migrate/695ccf855e230a263ee05c4d33bf1342.jpeg)
经授权转载自 COMSOL 博客,作者 Bjorn Sjodin
如何创建包含 CAD 导入和选择的仿真 Appcn.comsol.com![8ac874414b1a34786aadb8bcf2897917.png](https://i-blog.csdnimg.cn/blog_migrate/2c35c229edf45d10449d3941c83a0eea.jpeg)
推荐阅读
如何模拟不规则形状并构建几何模型zhuanlan.zhihu.com![6f599b69b3e218c560293cd401ebe8af.png](https://i-blog.csdnimg.cn/blog_migrate/323ecf3cd642b7ffafaa52dc96fec764.jpeg)
![5af09fab8da081bc6389e2be0bff0ed0.png](https://i-blog.csdnimg.cn/blog_migrate/9e85dd91a33ad3c0b5021c13a94b3e09.jpeg)
![bd7276c6a479b299b77ca40ffe85b046.png](https://i-blog.csdnimg.cn/blog_migrate/77a07b0898db115ff13b9e1c46dd577a.jpeg)
![7a6e960bd72f6926318659cb9f476de0.png](https://i-blog.csdnimg.cn/blog_migrate/466469f036f3085bb6494fe9bd51580b.jpeg)
![71d9848c5811d35f6273ecdf58af9761.png](https://i-blog.csdnimg.cn/blog_migrate/b4f5a4b856f7c322704b7ba2669b0bd4.png)