精华内容
下载资源
问答
  • 该模型是求解系数偏微分方程的好例子,神奇的大千世界都可在计算机上完美地重现!
  • COMSOL求解微分方程

    万次阅读 2018-01-10 21:40:16
    COMSOL Multiphysics多物理场仿真软件也提供了求救常微分方程(ODE)和偏微分方程(PDE)的接口,下面详细介绍一下。 (1)建立模型,选择模型向导–>零维–>数学–>全局常微分和微分代数方程(ge),选择研究,选择...

    COMSOL Multiphysics多物理场仿真软件也提供了求救常微分方程(ODE)和偏微分方程(PDE)的接口,下面详细介绍一下。

    (1)建立模型,选择模型向导–>零维–>数学–>全局常微分和微分代数方程(ge),选择研究,选择瞬态,点击完成
    (2)在组件下面可以看到刚刚添加的全局常微分和微分代数方程(ge),在右边栏,全局方程那里输入需要求解的函数。

    这里写图片描述

    以上图电路实例来说,现有RLC串联电路,假设R、L、C的参数都为1,电容电压: uC(t) ,电容电流: i(t) ,电感电压: uL(t) ,电阻电压: uR(t) ,输入电压 uin=sin(2πft) 则有下面的关系式:

    uC(t)i(t)uL(t)uR(t)uin=uC(t)=CduC(t)dt=Ldi(t)dt=LCdu2C(t)dt2=Ri(t)=RCduC(t)dt=uC(t)+uL(t)+uR(t)

    化简上式可得:
    du2C(t)dt2+duC(t)dt+uC(t)=uin
    ,换成常见的数学形式为
    f′′+f+f=sin(2πft)

    要想在COMSOL求解该二阶微分方程,可以先用之前的方法在python里面求解,python代码如下:

    from scipy.integrate import odeint
    import numpy as np
    import matplotlib.pyplot as plt
    def f(y,t):
        dy1 = y[1]
        dy2 = np.sin(100*t)-y[0]-y[1]
        return [dy1,dy2]
    
    t = np.linspace(0,20,3000)
    # 初值[0,0]表示y(0)=0,y’(0)=0
    # 返回y, 其中y[:,0]是y[0]的值 ,就是最终解 ,y[:,1]是y’(x)的值
    y = odeint(f,[0,0],t)
    
    l1, = plt.plot(t,y[:,0],label='y(0)')
    #l2, = plt.plot(t,y[:,1],label='y(1)')
    
    plt.legend()
    plt.grid('on')
    plt.show()
    

    输出结果如下:

    RLC_python.png

    输入电源参数设置为 2πf=100 ,初值设定为 y(0)=0 , y(0)=0 ,由结果可知是一个衰减震荡的过程。

    (3)步骤(2)得到的COMSOL设置结果如下:

    RLC_COMSOL_ODE.png

    关于全局方程的书写官方原文如下:

    In each column enter as follows:\
    • Enter the Name of the state variable. This also defines time-derivative variables. If a state variable is called u, its
    first and second time derivatives are ut and utt, respectively. These variables become available in all geometries.
    Therefore the names must be unique.\
    • Use the f(u,ut,utt,t) column to specify the right-hand side of the equation that is to be set equal to zero.
    The software then adds this global equation to the system of equations. When solving the model, the value of
    the state variable u is adapted in such a way that the associated global equation is satisfied. All state variables and
    their time derivatives can be used as well as any parameters, global variables, and coupling operators with a scalar
    output and global domain of definition in the f(u,ut,utt,t) column. The variables can be functions of the state
    variables in the global equations. Setting an equation for a state is optional. The default value of 0 means that
    the software does not add any additional condition to the model.\
    • If the time derivative of a state variable appears somewhere in the model during a time-dependent solution, the
    state variable needs an initial condition. Models that contain second time derivatives also require an initial value
    for the first time derivatives of the state variables. Set these conditions in the third (Initial value (u_ 0)) and fourth (Initial value (u_t 0)) columns.\
    • Enter comments about the state or the equation in the last column, Description.\
    \emph{特别注意}:\
    (1)方程名称是作为变量用于整个几何体的,因此不要在其他地方重复误用,本例的函数名为f,也可以是u,y,g,h以及func之类等\
    (2)方程关于时间的一阶导和二阶导表达式写作:ft和ftt,这是以本例函数名称为f来说的,如果函数名为y,就是yt和ytt,如果函数名是func,就是funct和
    functt;\

    (4)按下图设置仿真步长和时间,range(0,0.01,20)意思是仿真时间0-20s(因为一开始建立模型的研究类型是瞬态),仿真步长0.01s:

    step_setup.png

    点击计算,发现结果与python求救不符合,结果如下图所示:

    comsol_ode_wrong_res

    经过与前面python的结果对比,求解值比较小,数量级是 103 ,因此要修改COMSOL仿真配置中的容差,将\pmb{物理场控制}改为\pmb{用户控制},设置容差为\pmb{1e-6},设置和正确求解的最终结果如下图:

    这里写图片描述

    comsol_rlc_result

    在COMSOL里自带的例子中,事先在\pmb{全局定义}设置了\pmb{参数}a,b,c,分别对应参数 σ , ρ β ,方程设置如下:

    这里写图片描述

    得到的结果和python求解的类似。

    展开全文
  • 有限差分法求解偏微分方程

    万次阅读 多人点赞 2016-11-06 14:23:03
    只含有未知多元函数及其偏导数的方程,称之为偏微分方程。偏微分方程在工程技术(甚至图像处理)中有...本文主要介绍利用有限差分(涉及Jacobi迭代和Gauss-Siedel迭代)求解偏微分方程(以Laplace方程为例)的方法,

    自然科学与工程技术中种种运动发展过程与平衡现象各自遵守一定的规律。这些规律的定量表述一般地呈现为关于含有未知函数及其导数的方程。我们将只含有未知多元函数及其偏导数的方程,称之为偏微分方程。初始条件和边界条件称为定解条件,未附加定解条件的偏微分方程称为泛定方程。对于一个具体的问题,定解条件与泛定方程总是同时提出。定解条件与泛定方程作为一个整体,称为定解问题。

    在介绍有限差分法求解偏微分方程的过程中,我们会用到Jacobi迭代法与Gauss-Seidel迭代法的相关内容,如果读者对此不甚了解,可以参阅下文:

    欢迎关注白马负金羁的博客 http://blog.csdn.net/baimafujinji,为保证公式、图表得以正确显示,强烈建议你从该地址上查看原版博文。本博客主要关注方向包括:数字图像处理、算法设计与分析、数据结构、机器学习、数据挖掘、统计分析方法、自然语言处理。


    椭圆方程

    由于大多数工程问题都是二维问题,所以得到的微分方程一般都是偏微分方程,对于一维问题得到的是常微分方程,解法与偏微分方程类似,故为了不是一般性,这里只讨论偏微分方程。由于工程中高阶偏微分较少出现,所以本文仅仅给出二阶偏微分方程的一般形式,对于高阶的偏微分,可进行类似地推广。二阶偏微分方程的一般形式如下:

    展开全文
  • 背景求解真实问题中建模得到的非线性偏微分方程组, 尽可能少手写代码,如果用matlab, 可能的选项很有限。pdetoolbox有限元方法能够求解一些,但是要求对微分方程的类型以及pdetoolbox特有的书写方式非常熟悉,并能够把...

    背景

    求解真实问题中建模得到的非线性偏微分方程组, 尽可能少手写代码,如果用matlab, 可能的选项很有限。pdetoolbox有限元方法能够求解一些,但是要求对微分方程的类型以及pdetoolbox特有的书写方式非常熟悉,并能够把问题转为相应繁琐的格式;

    早在Matlab 6.x版本的时候(已经10多年的历史了)出现了一个pdepe求解函数, 虽然同样繁琐,要写代码, 但对偏微分方程的知识的要求相对少多了。不需要区分什么类型,只要方程看上去能写成特定的形式即可。傻瓜型和通用性好是求解界面友好程度的标准。

    这个函数算法的思想基于

    Robert D. Skeel
    Purdue University

    Martin Berzins
    University of Utah

    的一篇文章

    论文标题: A Method for the Spatial Discretization of Parabolic Equations in One Space Variable

    发表的刊物和时间: SIAM JOURNAL ON SCIENTIFIC AND STATISTICAL COMPUTING ·JANUARY 1990

    可以从这里免费获取文章: https://www.researchgate.net/publication/244958749

    第二作者发文章的时候还在英国利兹大学

    (北京大学数学系毕业的 @数学文化 微薄的作者,原香港浸会大学理学院院长,专业方向谱方法解微分方程,现深圳科技大学科研副校长汤涛教授博士也毕业于这个学校)

    pdepe能解的非线性偏微分方程组

    方程就不用说了,关键是可以求解一类包括非线性在内的偏微分方程组。只要能改写成如下等价通解的形式(这个公式在上面的论文中以及pdepe的matlab帮助文档中都有):

    c⃗ (x,t,u⃗ (x,t),u⃗ (x,t)x)u⃗ (x,t)t=xmx(xmf(x,t,u⃗ (x,t),u⃗ (x,t)x))+s⃗ (x,t,u⃗ (x,t),u⃗ (x,t)x)

    华东理工大学的黄华江博士在所著的一本畅销书(《实用化工计算机模拟:MATLAB在化学工程中的应用》化学工业出版社2004年第一版)书中提到,pdepe用的也是“MOL(method of lines)”,其实这种说法是错误的。不过,pdepe的确可以求解一个空间维度的很多MOL方法可以求解的类似问题。

    ——从以求解为目的的用户角度来看,区分这些概念(不论是方程组属于什么类型,还是求解方法属于什么类型)本来没有什么意义,只要问题拿过来,用户可以解决就行了;本来分享自己的求解器就是为了节省用户的精力和时间,明明solver都是现成的了,还要求用户做那样这样的概念层面的区分,这不是好笑吗?这些交给计算机来判断最理想。

    局限性

    十多年前第一次用pdepe求解微分方程组的时候,还是很稀里糊涂的。比葫芦画瓢,拿来一个例子,完全没有实际应用背景,写完代码、运行结束,提交作业就以为自己明白了。

    而在实际中也很少用pdepe来解这样的问题。最近尝试了一个实际的问题,发现pdepe局限性颇多。很难成为首选的求解器。

    1. 并不是所有能够改写成这种形式的都可以求解,对于本质上具有高于1阶“微分-代数”方程组性质的“抛物-椭圆”型方程组,实际上是会罢工的;大致会提示出错信息,differential algebraic equations index up to 1 之类(这当然也可能是初边值条件设置不合理导致)
    2. 并不是所有该写成这种形式,而且转化之后得到的微分代数方程组的“微分-代数”阶数不高于1的偏微分方程组都能求解的;前面提到了初边值条件设置不合理,不符合PDEPE的要求,这个即使从形式上满足了,还可能在实际计算中出现行不通的情况。这个PDEPE使用的ode15s自适应性非常牵强;mathworks的风格这方面实在不好;
    3. 为了所谓“stiffness”,求解估计用的是精度阶数较低的差分格式(我看到美国劳伦斯Livermore国家实验室早年创作Fortran77版本的VODE的作者,在一篇文章中对比ode15s和某个其它的常微分方程求解器的文章中,对一个简单示例的计算结果,ode15s精度要差很多),这导致在某些实际计算中可能出现各种数值问题:比如雅克比矩阵降秩、出现复数计算结果、溢出等等,都会产生一个matlab拒绝执行下去的异常;处理这类问题,给我的感觉是,matlab做得还不如C++好。
    4. 现在计算机的CPU还有显卡,远远不是PDEPE刚出道那个年代的了,多线程并行计算也已经很普遍,尤其是微分方程求解中涉及的大量的求解线性方程组、非线性方程组的迭代问题等,但PDEPE的这部分核心算法不知道为什么,至今保留着不支持并行计算加速的特性;对于真正大型的问题或网格点数很多的情况,计算效率之低不言而喻。
    5. 改写成特定的形式,对于一般拿来举举例子的非线性方程组,还是很容易的;但是,最近碰到的一个让人头大的偏微分方程组,让我差点崩溃。也正是求解这个问题,而且尝试用pdepe,才切实体会到,这个函数居然有这么多的局限。

    求解器的用户界面

    求解非线性偏微分方程组最好的用户界面是什么样的?

    在我看来根本不是matlab的pdetoolbox或COMSOL中的广义系数或其它类似形式的GUI界面,完全让不懂PDE的外行崩溃,让懂PDE的内行也摸不着头脑。

    大部分求解PDEs的用户,多少还是会一些简单的编程语言的。因此,在没有特殊要求情况下(比如上面那个公式那样特殊的形式要求),把自己的方程组直接改写成某种形式的高级语言(C/C++,Fortran,Matlab,Pascal,Python,R…)表达式,还是相对容易上手的;如果是改写成Maple中或Mathematica中那样简直跟数学公式一模一样的形式,则上手会更容易。所有的GUI都是按照自己的编程者的思路,生搬硬套出一种奇怪的标准,以为用鼠标操作就能降低学习难度,实际上并不见得。

    所以,求解非线性偏微分方程组,好的用户界面应该是,只需输入跟数学公式的自然形态一模一样的方程组(至多作自然形式的公式到特定编程语言的语法的直接转换),然后就能求解,并根据反馈信息,逐条增加或改进,直至任务完成。

    这种用户界面方面做得最出色的具有符号和数值计算功能的Maple和Mathematica。而数值求解方面,拥有这种界面的,mathematica无疑最强。

    让图形用户界面见鬼吧,如果是求解非线性偏微分方程组。pdepe核心代码的功能太弱。这是应用pdepe求解一个实际问题给我的体会。

    展开全文
  • COMSOL初级学习之一

    万次阅读 多人点赞 2017-09-18 11:02:55
    COMSOL Multiphysics,以有限元法为基础,通过求解偏微分方程(单场)或偏微分方程组(多场)来实现真实物理现象的仿真。

    COMSOL Multiphysics[1](下称COMSOL),以有限元法为基础,通过求解偏微分方程(单场)或偏微分方程组(多场)来实现真实物理现象的仿真。COMSOL最先是MATLAB的一个工具箱FEMLAB,发展至今已具有一个基本模块和八个专业模块,此学习系列主要关注基本模块,也即是数学模块的使用学习。

    COMSOL的优势在于其使用有限元法求解偏微分方程(Partial Differential Equation,PDE),相比于有限差分法和谱方法求解偏微分方程,可以考虑更加复杂的几何结构和复杂的边界条件。此外,COMSOL软件与MATLAB等软件有完整的接口,便于模拟仿真数据的后处理。

    COMSOL数学模块PDE主要分为三种类型:系数形式(Coefficient form),一般形式(General form),弱形式(Weak form),使用难度依次增大,同时求解PDE的适用范围也相应增大。其中系数形式与一般形式较好理解,而弱形式需要相关有限元的知识,COMSOL求解也会将PDE转化为弱形式。相关的有限元参考书籍推荐 A First Course in Finite Elements,by Jacob Fish and Ted Belytschko。这一小节主要使用系数形式求解PDE,以二维热传导为例。

    热传导方程的可以写为[2]

    ρcpTt(kT)=q˙v

    在这里假设 k=constant,q˙v=0 ,同时引进参数 α=kρcp 并在下文约定 α=1 ,方程简化为:
    T(x,y,t)t=α2T(x,y,t)

    接下来,开始建立模型:
    1.打开COMSOL,在 Model Wizard 里选择 2D 模型,接着选择 Mathematical 模块(Physics Interface)里的 Coefficient Form PDE (c) 以及选择 Study 里的 Time Dependent,建立模型。
    这里写图片描述

    2.创建几何形状,右键点击 Geometry 并选择 Rectangle,输入矩形尺寸参数,再点击 Bulid All Objects,建立如图矩形区域。
    这里写图片描述

    3.输入方程相应的系数,如图所示。
    这里写图片描述

    4.设定边界条件,这里右键点击 Coefficient Form PDE (c) 选择使用 Dirichlet Boundary Condition,点击选择矩形区域左边界,设定相应的参数 T=1 r=1 )。
    这里写图片描述

    5.离散网格,使用缺省的网格,点击 Mesh 选项下的 Bulid All
    这里写图片描述

    6.点击 Study 选项下的 Step 1: Time Depend 设定求解的时间域,如图所示。
    这里写图片描述

    7.完成模型的建立,求解模型,右键点击 StudyCompute,得到计算结果。保存在 Result 选项下的 Data Sets,并可以通过 2D Plot Group 查看结果。
    这里写图片描述

    同时还可以导出动画。
    这里写图片描述

    展开全文
  • 最近在求解一个瞬态问题,计算结果不收敛。研究了一下comsol提供的三种瞬态求解器。 1,向后差分公式BDF 稳定性是它的最大优势。...向后差分公式法也是一种“微分代数方程”(DAE)求解器。 2,广义α方法 广义
  • 微分方程:初值问题与边值问题

    万次阅读 2018-04-12 13:45:04
    二阶偏微分方程()一般有三种边值问题:第一边值问题又称狄利克雷问题,它的边界条件是给出未知函数本身在边界上的值; 给出一个常微分方程,然后有条件限制,这个条件就是两个点,这两个点构成一个区间。例如:给...
  • 求解大型 COMSOL 模型需要多少内存?

    千次阅读 2020-06-01 11:00:12
    COMSOL Multiphysics能求解多大的模型是我们最常碰到的问题之一。这个问题其实很难直接回答,因此在本篇博客中,我们将讨论内存需求、模型大小、以及用户如何预测在求解大型三维有限元问题时所需的内存量。 先看一些...
  • 目录问题描述傅里叶定律解析解有限元求解思路COMSOL求解传热模块PDE模块MATLAB 求解C++求解Python求解 问题描述 如图所示,一根长度为 LLL 的金属棒,左端有恒定热量 qqq 流入,右端保持恒定温度 TLT_LTL​,有电流...
  • comsol建模与仿真

    2017-10-16 15:10:39
    COMSOL Multiphysics是以有限元法为基础,通过求解偏微分方程(单场)或偏微分方程组(多场)来实现真实物理现象的仿真,被当今世界科学家称为"第一款真正的任意多物理场直接耦合分析软件"。用数学方法求解真实世界的...
  • 结合COMSOL,浅谈多场耦合

    千次阅读 2016-06-16 11:08:00
    2019独角兽企业重金招聘Python工程师标准>>> ... 例如对上例中的 经过数学推导 整合后的一多场偏微分方程如图所示 转载于:https://my.oschina.net/zengjs275/blog/692785
  • Hermes是一个高级自适应有限元算法库,用于解决偏微分方程和多物理耦合问题。 Fityk是一个曲线拟合和数据分析程序。主要用于峰值拟合和峰值数据分析。 FlexPro是一个商业程序,主要用于交互式和自动化的分析和表示...
  • 背景通常数值解微分方程、微分方程组(常微分、偏微分方程),人们言必称“Matlab”,COMSOL,实际上,微分方程求解有两大强手被人忽视:(1)符号求解独孤求败:Maple; (2)数值求解Mathematica更为好用而且强大。...
  • comsol4.3a 软件

    2014-04-24 11:16:48
    COMSOL Multiphysics是以有限元法为基础,通过求解偏微分方程(单场)或偏微分方程组(多场)来实现真实物理现象的仿真,用数学方法求解真实世界的物理现象。
  • 作为一款大型的高级数值仿真软件,COMSOL Multiphysics 以有限元法为基础,通过求解偏微分方程(单场)或偏微分方程组(多场)来实现真实物理现象的仿真。COMSOL Multiphysics 以高效的计算性能和杰出的多场直接耦合...
  • COMSOL和ANSYS哪个好

    万次阅读 2020-08-20 07:01:26
     comsol求解器很强大的,解多物理场可以很方便的自行加入任意的方程,扩展性强于ansys,当然这点一般就是搞研究写论文有用。comsol跟Matlab有完整的接口,毕竟它是从Matlab的工具箱发展出来的,这个特点很有...
  • COMSOL LiveLink for MATLAB

    千次阅读 多人点赞 2020-06-05 19:06:39
    COMSOL LinvLink for MATLAB 功能允许用户将 COMSOL Multiphysics 与 MATLAB 脚本环境联系起来,可以实现: 通过脚本设置模型 在模型设置中使用 MATLAB 函数 在 COMSOL Desktop 和 MATLAB 之间进行交互式建模 通过 ...
  • COMSOL Multiphysics 是一款全球通用的基于高级数值方法和模拟物理场问题的通用软件,拥有、网格划分、研究和优化、求解器、可视化和后处理、仿真 App等相关功能,轻松实现各个环节的流畅进行,它能够解释耦合或多...
  • THE END小编今天再来分享一个专业类软件——COMSOL Multiphysics此篇推送会详细介绍此软件的用途及各类模块,熟悉的小伙伴可跳过文章前半部分,进入安装步骤,安装包在文末获取。不熟悉的额小伙伴多多了解收藏,方便...
  • 两种模型都是非线性偏微分方程组。 显式有限差分格式用于在均匀网格上对方程进行数值求解。 由于数值计算既是计算密集型又是数据密集型,因此使用各种高性能计算 (HPC) 技术来开发代码,例如多线程库 OpenMP、消息...
  • 基于FreeFEM++的有限元编程--2

    千次阅读 2020-11-09 08:45:17
    2、FreeFem++简介 FreeFem++是一款免费的、开放源码的二维、三维偏微分方程有限元计算软件,由巴黎第六大学研究人员开发,它集成网格生成器、线性方程组求解器、后处理及计算结果可视化于一体,能快速而高效地...
  • THE END小编今天再来分享一个专业类软件——COMSOL Multiphysics此篇推送会详细介绍此软件的用途及各类模块,熟悉的小伙伴可跳过文章前半部分,进入安装步骤,安装包在文末获取。不熟悉的额小伙伴多多了解收藏,方便...
  • 多重网格

    千次阅读 2018-11-01 23:18:42
    多重网格法(mufti-grid method)求解偏微分问题离散方程的一种快速迭代方法.是求解由椭圆边值问题离散化而得的线性代数方程组的非常有效的快速迭代方法.通常的迭代方法(比如雅可比迭代法,高斯一塞德尔迭代法以及SOR...
  • 通过现代数值方法求解偏微分方程,实现了数学应用的革命性突破。原因在于,只有在非常特殊的情况下(例如方程与简单几何的特定组合中)才能得到数学模型的解析解。尽管这些情况从理论上来说非常重要,但对工程师而...
  • 有限元漫谈

    千次阅读 2016-08-25 13:46:37
    --求解PDE(偏微分方程).那么PDE是做什么用的呢?--描述客观物理世界。我想如果这两个问题搞清楚了也就明白了为什么要用fem,fem可以做那些东西。PDE可以描述很多物理现象,电磁, 流体 ,换热,diffusion,力学,...
  • 何谓有限元法?

    2020-08-28 20:43:38
    有限元法真面目 学过高等数学的同学们可能知道,我们生活在一个骗局...香是香,但在许多物理问题中,我们知道,很多现象都可以化成一个微分方程组来解决,例如流体问题、热传导问题、电动力学问题。这些问题,问了直观
  • [Matlab]2018国赛 A题思路以及Matlab代码实现

    万次阅读 多人点赞 2019-03-26 15:17:57
    根据热学分析可以建立出关于各层材料传热情况的偏微分方程组模型。工作服的初始温度以及工作过程中材料各交界面的温度作为各层偏微分方程边界条件。由于此微分方程组模型较为复杂,运用有限差分法将微分方程化为差分...
  • 偏微分方程 、微分代数方程、时滞微分方程、递推关系式等等 8、离散和连续微积分的数值和符号工具 9、多变量统计程序库,包括支持100多种数据分布的数据拟合、假设检验、概率和期望的运算 10、对运算和应用...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

comsol求解偏微分方程组