有朋友反映咱们杂货店里推送的高水平SCI论文太过物理,对于一些工科或者其他专业人来说可能有些障碍。模数哥以后也会经常写一写具体的Comsol操作教程,当然也不会像案例库里那样具体“手把手”,而会强调对软件算法或者底层数学规律的介绍。

今天的话题是如何对变量(variable)进行空间微分或者时间积分。可能朋友们会比较诧异:这有什么难的呢?确实在Comsol软件里有具体的函数或者算法,可以帮助我们进行这些操作,如d(f,x)即是对变量f沿左边x方向偏微分,timeint (t1, t2, expr)是对表达式expr在时间t1到t2内进行积分,但是有些情况下,这些操作符并不能直接解决我们的问题。福利1:百度“常用comsol的操作符和数学函数”,即可很容易找到相关更多资料。

问题1:变量的空间微分

问题描述:我们拿一个案例库中ACDC模块的helmholtz coil为例,请问各位能否画出mf.Hx沿x方向的微分(即Hx在x方向的梯度)呢?当我们在后处理中尝试画出d(mf.Hx, x)时,Opps,结果为零,这明显是有背于真实数学和物理的!福利2:可以百度一下“Plotting Spatial Derivatives of the Magnetic Field”找到Comsol官网的相关教程。该教程介绍了如何通过新建耦合偏微分方程(Partial differential equation, PDE)来对mf.Hx变量进行空间求导,但是里面语焉不详,并未介绍一些底层的数学原因。

要搞清楚这里的原因,我们首先要知道有限元算法中形函数(shape funcion)的概念。在用网格格点对整个仿真系统进行离散化时discretization,每个格点都是一个未知的方程,而这个方程的表达形式,就可以简单理解为形函数(其实并不严谨)。比如一般在力学模块里,常用的形函数是朗格朗日二次形函数(Quadratic Lagrange),即每一个格点的数学展开形式是二次多项式。如下图所示,对于空间任意一点x的数值f,我们均可以通过其周围几个点的数据进行插值interpolation得到。

如果我们要求解空间任意点x处变量f的偏微分,数学上其实是先对周围各点的形函数进行偏微分,再做插值处理得到x点的空间导数。以x1点为例,它的一阶微分是f1x=2a1*x1+b1,f1x中的x表示f1的x偏微分。它的二阶微分是f1xx = 2a1,很明显,它的三阶微分就是0了。所以这种有限元求微分的方法决定了朗格朗日二阶形函数下x点的三阶微分就是0——物理和数学上都是错误的。

那么怎么样才能求解变量f的三阶微分呢?方法就是我们可以新建一个PDE方程并将f1xx耦合为该PDE的主变量u,一般地,该PDE方程也默认是用二阶朗格朗日形函数表示,如下图,所以我们便可以再次对u(即f1xx)进行空间求导了。所以理论上,利用这种不断耦合到新PDE方程的形式,我们可以实现对f变量的任意阶空间求导或微分。

现在让我们再回到前文所述helmholtz coil案例中,该模型用的接口是3D的磁场Magnetic Field (mf),该物理场的变量是磁矢势Magnetic Vector Potential A,3D情况下A是一个矢量,而磁感应强度便是该矢量的旋度:▽×A = B,对矢量求旋度的数学处理就等效为二次偏微分了,所以我们无法再对磁感应强度B进行空间微分。这也是我们发现d(mf.Hx, x) =0的原因。

具体如何新建并耦合系数型PDE方程来对磁场H求其空间梯度,朋友们可以参考上文所述Comsol官方blog:

结果如下,磁场的梯度u1x(即d(mf.Hx, x))主要出现在线圈的周围:

我这边重点介绍一下这个系数型偏微分方程。如下图所示,该方程其实是一个万金油式的功能型方程,几乎可以包含宏观尺寸各类物理问题:

我们所享用的Comsol中现成的各个物理场接口,其实也大都是该方程的变种(各种情况的简化)罢了,比如稀物质扩散(tds)或者热传输场(heat transfer),都是用的下图所示扩散方程:

所以Comsol软件的前身是Matlab求解方程的一个工具箱FEMLab,后来独立更名为Comsol并一直沿用至今,所以Comsol的二次开发就是采用Matlab编程,这也决定了Comsol仿真的一些劣势(因为底层程序语言效率的不足,在非线性、流场、结构场粘弹性仿真等方面被Fluent、Abaqus碾压)。学习并掌握comsol中PDE方程的建模,设置各类边界条件和初始值,对于我们把握Comsol多物理场耦合有限元的数学思想是非常有帮助的。

问题2:变量的时间积分

问题描述:以案例库Laser Heating wafer为例,当一个固定加热光源打在一个旋转的硅片上,即等效为一个固定的硅片被一个旋转的光源所加热ht.q0。以其中某点为例,如何求出热通量的时间积分并画出随时间的曲线呢?

在后处理里画出Qtot随时间的曲线是不方便的,其实最简单的办法是新建并耦合一个常微分方程ODE,将热通量q0耦合进来进而求出其时间积分u:

若我们只想考察某点的热通量总和,我们只需要建立一个分布式的(distributed)点的常微分方程即可,其方程形式如上图所示,设源项Source term是热通量ht.q0,损耗系Damping coefficient数为1,质量系数为0,则ODE的变量u即为热通量的时间积分。所以我们便可以画出该点的温度T和热通量总和u(即Qtot)随时间的变化:

该点的温度随时间变化呈现一个个脉冲的形式,即该点在旋转过程中一次次经过热源并被加热。而总热通量随时间呈现出阶跃的变化,即是热通量的一次次累积。这样一来,物理意义十分清晰。

最后总结一下,有些朋友找到模数哥,说想在comsol里面建PDE、ODE的耦合方程,一下子就晕了,不知道各个系数怎么设置。我觉得不要太从数学的眼光来看待这些方程,最好是从物理的角度来看待他们,每一个系数都是有明确的物理意义的,这样理解起来也是最方便的。当然如果想尽快解决你手上的问题,最快捷的方法是找模数哥付费咨询了。

comsol积分函数_COMSOL教程- 巧用PDE、ODE耦合方程实现变量的时间积分或者空间微分...相关推荐

  1. 叉积 微分 恒等式_COMSOL教程- 巧用PDE、ODE耦合方程实现变量的时间积分或者空间微分...

    有朋友反映咱们杂货店里推送的高水平SCI论文太过物理,对于一些工科或者其他专业人来说可能有些障碍.模数哥以后也会经常写一写具体的Comsol操作教程,当然也不会像案例库里那样具体"手把手&q ...

  2. 苹果手机计算机三角函数教程,Excel函数应用教程:数学和三角函数3

    Excel函数应用教程:数学和三角函数3 分类:计算机等级| 更新时间:2011-04-30| 来源:Thea 21.INT 用途:将任意实数向下取整为最接近的整数. 语法:INT(number) 参 ...

  3. 三角函数计算机应用举例,Excel函数应用教程:数学和三角函数5

    Excel函数应用教程:数学和三角函数5 分类:计算机等级| 更新时间:2011-04-30| 来源:Thea 41.ROUND 用途:按指定位数四舍五入某个数字. 语法:ROUND(number,n ...

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

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

  5. comsol积分函数_怎样在COMSOL中实现时间和空间积分

    展开全部 COMSOL Multiphysics是一款大型的高级数值仿真软件.广泛应用于各个领域的科学62616964757a686964616fe58685e5aeb931333363386162研 ...

  6. 菜鸟教程python正则表达式_Python正则表达式常用函数菜鸟教程

    这篇文章主要为大家详细介绍了Python正则表达式常用函数菜鸟教程,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! Py ...

  7. MATLAB不定积分的运算,matlab中怎么把积分函数 int 得到的不定积分式代入 solve 函数中进行计算?...

    答:syms r x fun=int(r*exp(-2*(r/2)^2),r,0,x); x=solve(fun-0.5) x = 2^(1/2)*log(2)^(1/2) -2^(1/2)*log( ...

  8. python函数自定义教程_Python中自定义函数的教程

    在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_abs函数 ...

  9. python函数模块化教程_【软件测试教程】Python模块化以及内置模块的使用

    一:什么是模块 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. 二:模块类型 1:自定义模块 由编程人员自己写的模块.自定义模块时要 ...

  10. python小老鼠编程_成都python函数学习教程,Python编写课程

    1.urllib2/urllib实现urllib2和urllib是Python中的两个内置模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅.1.1首先实现一个完整的请求与响应 ...

最新文章

  1. 《JAVA与模式》之简单工厂模式
  2. 调研字节码插桩技术,用于系统监控设计和实现
  3. 中国一线城市住宅地价同比增幅连续8个季度收窄
  4. Android - HttpURLConnection 抛出异常
  5. Visual Studio 2017最新版正式发布!适用于任何开发人员、平台及APP丨附下载
  6. fiddler和xampp安装成功后,网站打不开的原因
  7. 智能客户端(SmartClient)
  8. jquery选择器连续选择_JQuery中的选择器
  9. 列出所有子集----------2013年1月3日
  10. 截取台风后的图片_Python数据分析案例 | 台风最喜欢在我国哪个省市登陆
  11. PyTorch 深度学习:30分钟快速入门
  12. 再谈 Formsville
  13. 反编译那些事儿(四)—序列化问题
  14. Linux cache清理
  15. 视觉SLAM十四讲第一讲
  16. 51nod 1964 陵陵曾玩的数论题
  17. ChinaITLab-Linux工程师培训课程笔记2
  18. asp.net扫描仪编程及ajax图片数据上传
  19. 机房动力环境监测系统
  20. 基于boost库的搜索引擎

热门文章

  1. 程序员春节回家相亲指南
  2. 使用短生命周期容器(Ephemeral Containers)构建微服务化的工作流
  3. MyBatis映射表问题
  4. Android Studio建立百度地图步骤及导航无语音解决方法
  5. UVA 1252 十五 Twenty Questions
  6. Centos 5.8 搭建ntp服务器
  7. 设备参数—支持网络外部的通信
  8. (Maven配置)Failed to read artifact descriptor for xxx:jar解决方法
  9. 萌新如何写出一篇优质观点类新媒体文章?
  10. [Struts]使用tiles管理界面遇到困难