图像缩略图

一个简单的有限体积求解Matlab

version 2.1.0.0 (1.95 MB) by ehsan.
一个简单而通用的瞬态对流扩散偏微分方程FVM求解器

92下载

更新12月12日12月12日

来自GitHub.

查看版本历史记录

在github上查看许可证

简单的有限卷工具
这段代码是化学/石油工程师开发一个简单的工具来解决对流扩散方程的一般形式的结果:
α∂ϕ/∂t +∇。(uϕ)+∇。(−D∇ϕ)+βϕ=γ
在1D,1D轴对称(径向),2D,2D轴对称(圆柱形)和3D域上的简单均匀/非均匀网格。
代码接受Dirichlet,NeuMann和Robin边界条件(可以通过在边界的整个或部分通过以下等式中改变A,B和C)来实现:
一个∇ϕ. + bϕ= c。
它还接受定期边界条件。
此代码的主要目的是为尝试使用数学模型的人作为一种方便的工具,在1D中以数字方式解决模型,将其与分析解决方案进行比较,并将其数值代码扩展到2D和3D,其中最小数量金宝搏官方网站修改1D代码。
自由拟议计划包括
*中心差分
*对流术语的Upwind方案
*具有许多磁通限制器的对流术语的TVD方案
要开始,请转到`test`文件夹并运行测试脚本。
有一些微积分(分歧,梯度等)和平均技术(算术平均,谐波平均等)可用,这可以特别用于求解非线性或耦合方程或实现显式方案。
我使用该代码来解决PDE的耦合非线性系统。您可以在示例/高级文件夹中找到其中一些。

“PhysicalProperties”文件夹中有一些功能,用于计算流体的物理性质。其中一些不是我的,它在文件中指定。

我将尝试定期更新文档,在GitHub存储库中。请通过在我的Weblog中写一篇评论来告诉我您的反馈/问题:<http://fvt.simulkade.com/>
特别感谢:我非常受益于Fipy背后的想法<http://www.ctcms.nist.gov/fipy/>,基于Python的有限音量求解器。

要启动解算器,下载并解压压缩文件,打开并运行“FVToolStartUp”函数。
要在Matlab命令窗口中查看操作中的代码,请复制和粘贴以下内容:

CLC;清除;
L = 50;%域长度
nx = 20;%细胞数量
m = createMesh3D(Nx,Nx,Nx, L,L);
bc = createbc(m);%所有Neumann边界条件结构
BC.left.a (:) = 0;BC.left.b (,) = 1;BC.left.c (,) = 1;狄利克雷左边界
bc.right.a(:) = 0;bc.right.b(:)= 1;BC.right.c (:) = 0;右边界的%dirichlet
D_val = 1;%值的扩散系数
d = CreateCellVariable(m,d_val);%将扩散系数分配给细胞
d_face = houronicmean(d);%计算细胞面上扩散芯片的谐波平均值
Mdiff = diffusionTerm (D_face);扩散项系数的%矩阵
[MBC,RHSBC] =边界条件(BC);BC的系数和RHS向量的%matix
m = mdiff + mbc;PDE的Ceffient%矩阵
C =溶剂(M,M,RHSBC);%发送m和rhs到求解器
VisualizeCells(c);%可视化结果

你可以在我的youtube频道找到一些这段代码的动画结果:
https://www.youtube.com/user/processsimulation/videos.

引用

eftekhari,a.a.等等。(2015)。FVTool:MATLAB的有限卷工具箱。Zenodo。http://doi.org/10.5281/zenodo.32745

评论和评级(68.

ehsan.

究竟,@meteb.

Meteb Mejbel

谢谢@ehsan为您的回复。删除瞬态术语,这是否意味着在第37和38号线,条款M和RHS应该等于
-mdiff + MBC和RHSBC?

ehsan.

@meteb。谢谢你的评论。我不确定我是否了解保护表面上的初始浓度的一部分。但是,您可以始终解决稳态方程。只需从瞬态教程中删除瞬态术语(和for循环)。您可以使用函数gradientterm(c)获取浓度渐变,其中c是包含浓度配置文件的CellValue对象。

Meteb Mejbel

超级有用的工具。对此感激不尽。我有一个问题@ehsan,我正在努力参加1d球体的扩散方程。是否有无论如何在不处理瞬态的情况下模拟球体域(R或X)内的浓度梯度?如果我在表面上存在初始浓度,我只想观察域内的分布。我正在使用delmusionttutorial_spherical.m

andrea bottacin busolin

ehsan.

@cmaurer,它能和CasADI一起工作真是太神奇了。你能在github上打开一个关于修复combineBC函数的问题吗?另外,您是否可以将CasADI示例作为pull请求添加到FVTool存储库中?

cmaurer

伟大的工具,我也可以用casadi使用它(包括小变化)
因此,我使用CombineBC函数(类似于MATLABS颂歌求解器的使用)。我想知道你是否可以包括丢失的CombineBC3D函数?

ehsan.

谢谢,伯克。我刚修了它。顺便说一句,您可以随时建议在GitHub上提出这些修复,甚至更好地使用拉出请求来改变它。这样,你的贡献将在你的名字下注册,你得到信用:-)

Burak Durkut

在“FVTool_functions_uniform_test”中有一个问题。M”,在测试文件夹中。在第78行,for没有end。

Ali Mahmoodi

雷丽

@Ehsan,我想为Polyshape创建网状物,这可以在这个工具中完成吗?其次,我想使用对称的BC和对流BC,是这种模拟的任何示例吗?在教程中,它给出了简单的几何形状,如矩形,但是当几何体变得复杂并且有两个域和材料时,如何在这个工具箱中处理它?

洪川幸

@ehsan你好我想在骨折介质中模拟酸性虫洞,我应该如何增加裂缝?许多文献使用Monte Carlo方法,但我不知道如何在Matlab中实现它

ehsan.

@Ali,很不幸,FVTool不支持三角网格。金宝app

阿里Hammouche

@ehsan你好我想通过fvm解决泊松方程(-div(e * grad(a))=卷曲(m).m有牵引组件(mx my)。
通过使用三角网格,我不知道如何通过Fvm与三角网格dicdicreify项源??我曾经(pdemesh)

穆罕默德拉赫曼

@ehsan.
非常感谢分享!我相信这个代码有很大的潜力,特别用于解决化学反应器这样的反应流。

ehsan.

我已经解决了我的工作(多孔介质的反应运输)的非线性源术语的几个问题,即我尚未分享。您可以找到一个示例:https://github.com/behzaadh/fvtool/tree/master/examples/external/in'triperipnhclcorefloodproboreflood
这是一个相对高级的情况,尽管我认为源术语是线性化的。我稍后会添加一个简单的例子。

是否有任何示例来展示此类解决方案?

有时这不太容易!我要求f(phi)而不是phi的原因,让求解器可以解决非线性源术语。
例如在化学反应中,大部分时间都有非常非线性的术语。

ehsan.

@Mohammad Rahmani:您可以通过编写F(\ Phi)功能的泰勒扩展来轻松地做到这一点:-)

穆罕默德拉赫曼

做得好。如果您可以使用f(\ phi)而不是\ beta * \ phi,那么您的代码可用于反应扩散 - 对流案例!

继续进行下去!
祝你好运

马里米尔

Tamour zubair.

@All
任何人请帮助我,我是相当新的matlab。在刚开始的时候,我在一维啮合中遇到了如下错误。谢谢提前
错误:
未定义的功能或变量'网状结构'。

createMesh1D错误(第42行)
MS=MeshStructure(1, [Nx,1], CellSize, CellLocation,);
FaceLocation [1], [1]);

费尔南多费尔南德斯

你好!我在模拟世界中真的很新。你的脚本很棒!我需要模拟盐岩石朝向石油井,我怎么能为此使用你的脚本?我不知道打开文件,我想我需要将文件“meshgeneration”打开到主文件。你能逐步发送一步吗?

感谢你

Amitava Biswas.

ehsan.

@vahid,

目前,内部边界是不可能的。雅可比矩阵在FVTool中手动进行。制作它们是不是太难。我在这里有一个例子,用于非线性扩散系数:http://fvt.simulkade.com/posts/2015-04-06-solving-nonlinear-pdes-with-fvm.html

如果您在GitHub页面上打开问题,我会看到它们并更快地反应:https://github.com/simulkade/FVTool/issues

Vahid Moss.

你好。是否有机会将代码应用于具有内部边界的几何图形。例如,假设大规模的矩形几何形状,并采取小矩形。也可以看看,//www.tatmou.com/help/matlab/ref/polyshape.regions.html..另一个例子可以找到:图4.3(第89页)“计算流体动力学中的有限体积方法”openfoam和matlab的高级介绍“。

Vahid Moss.

嗨,Alireza,我是新的FVM,但我发现你代码很精彩。这是我的第一个问题。我假设,应该解决FVM中的一组代数方程,类似于FDM。在FDM中,非线性源期限,例如泊松等方程中的非线性源,将产生必须解决的非线性代数方程,例如,必须解决。通过牛顿方法和建立雅拓矩阵。您的代码是否包含符号或类,其中jacobian矩阵建立?如果是,它位于包装中?

ehsan.

@KannaPiran:
下载文件,提取它并运行fvtoolstartup

kannapiran arasu.

如何使用或安装?thannks。

junaid ahmad.

米尔里尔

你好,
你能告诉我如何在二维模型中定义一个非均匀速度场(比如库埃特流)吗?
谢谢你。

安纳尼亚

马尔基·

SAHi阿德尔

Avaneesh Narla.

我尝试运行dimblusiontutorial_--pherical代码,但是我评论了第20行和取消关注的第19行(从左到右切换BC),并且计算不再按预期执行。因为我只是在BCS中进行对称的变化,有没有作用的原因是不起作用的?

谢谢!

ehsan.

我主要使用“计算流体动力学:Verseeeg和Malalasekera的有限体积方法方法”,除了我自己设计的边界条件。

dinesh aravinth

你好,先生,
您可以指定您撰写此代码的哪本书?

杜王

Catalina麦地那

你好!

我正在尝试使用您为MATLAB创建的FVM工具箱来计算被注入油井中的流体的温度,该温度在底部关闭。流体沿着生产管和井的壳体之间的空间挖出槽,然后通过生产管升起。我需要计算岩石之间的热传递和流体下降,并且在流体下方的流体之间和液体上的流体之间。有一篇论文解释了这个问题,它也具有所需的方程。它被Xianbiao Bu被称为“利用废弃的石油和天然气井”的“地热能生产”。你觉得你可以做好职位吗?我为此目的而遇到麻烦。任何帮助都非常欢迎!

此致,
卡塔利娜。

Ali Akbar Eftekhari.

嗨erdum,

使用细胞的面的坐标产生非均匀网格。您应该使用小区中心协调:
```
X =[0 0.12 0.13 0.2 0.4 0.41 0.56 0.8 1];%不均匀网格
m = createmesh1d(x);
bc = createbc(m);%所有Neumann边界条件结构
BC.left.a (:) = 0;BC.left.b (,) = 1;BC.left.c (,) = 1;狄利克雷左边界
bc.right.a(:) = 0;bc.right.b(:)= 1;BC.right.c (:) = 0;%正确的边界
x = m.cellcenters.x;
d_val = sin(x)+2;%值的扩散系数
d = CreateCellVariable(m,d_val);%将扩散系数分配给细胞
d_face = houronicmean(d);%计算细胞面上扩散芯片的谐波平均值
Mdiff = diffusionTerm (D_face);扩散项系数的%矩阵
[MBC,RHSBC] =边界条件(BC);BC的系数和RHS向量的%matix
m = mdiff + mbc;PDE的Ceffient%矩阵
C =溶剂(M,M,RHSBC);%发送m和rhs到求解器
VisualizeCells(c);%可视化结果
```

你好,
我正在尝试使用具有非均匀网格的工具箱,具有非合作扩散系数。我可以做非均匀的网格(即x)。
我用sin(x)+2替换d_val,我得到d值为0,因此结果为nan。我怎样才能做到这一点?当然,我会将其扩展到2D和3D。
X =[0 0.12 0.13 0.2 0.4 0.41 0.56 0.8 1];%不均匀网格
>> m = createmesh1d(x);
>> BC = CreateBC(M);%所有Neumann边界条件结构
BC.left.a (:) = 0;BC.left.b (,) = 1;BC.left.c (,) = 1;狄利克雷左边界
bc.right.a(:) = 0;bc.right.b(:)= 1;BC.right.c (:) = 0;%正确的边界
d_val = sin(x)+2;%值的扩散系数
d = CreateCellVariable(m,d_val);%将扩散系数分配给细胞
d_face = houronicmean(d);%计算细胞面上扩散芯片的谐波平均值
Mdiff = diffusionTerm (D_face);扩散项系数的%矩阵
[MBC,RHSBC] =边界条件(BC);BC的系数和RHS向量的%matix
m = mdiff + mbc;PDE的Ceffient%矩阵
C =溶剂(M,M,RHSBC);%发送m和rhs到求解器
VisualizeCells(c);%可视化结果

Mehul Fadnavis.

MD Shujan Ali.

令人印象深刻和乐于助人

sfalahati.

嗨,大家好,
我需要编写CFD的代码来解决差异热方程并进行6例仿真。
等式:(

thanh hung vo.

尊敬的先生。先生,请帮助我解释如何使用这些代码来提高漏油。非常感谢

永嘉张

Marco Dos Santos Bernardes

Ali Akbar Eftekhari.

大家好,
请通过在github库中打开一个问题来提问(https://github.com/simulkade/fvtool.)在我的博客中写一个评论(http://fvt.simulkade.com.)。我没有访问此页面了,因为我之前的Tu Delft的电子邮件没有活动状态。
我向GitHub页面添加了一些示例,以回答有关泊松方程和源术语的问题。
简而言之,您可以通过将上述代码中的BC线更改为以下代码来具有衍生边界条件:
bc.left.a(:) = 1;bc.left.b(:)= 0;BC.left.c (,) = 1;左边界%neumann
BC.right.a (,) = 1;BC.right.b (:) = 0;BC.right.c (:) = 0;右方边界线为诺伊曼

可以通过调用q是一个小区变量来添加源术语来添加函数constantsourceterm(q)。不要忘记通过单元格卷划分源术语。

悦阳

只是想说thx

楚尧围

罗德华赫沃林

嗨,我想知道如何使用求解器向扩散方程添加源术语。

穆罕默德雷扎

您好,我如何在矩形通道域中用pdetool求解带导数边界条件的三维毒物方程?

Ali Akbar Eftekhari.

嗨shijie,

我不定期访问此页面。您可以随时从github下载最新版本:
https://github.com/simulkade/fvtool.

阿里

运输代理刘

嗨阿里,
我不知道为什么我无法下载附加的.zip文件。我已经尝试了很多次。你能把文件发送给我吗?我的电子邮件是shi.jieliu@163.com。非常感谢!

Saif Manji.

Yuri Feldman.

嗨阿里,
您能否解释对流术语的Upwind方案中的以下更正:
对边界单元格也正确(不是鬼单元格)
%左边界:
APX(1,:) = APX(1,:) - UW_MAX(1,:)/(2 * DXP(1));aw(1,:) = aw(1,:) / 2;
%对边界:
ae(结束,:) = ae(结束,:) / 2;APX(结束,:) = APX(结束,:) + UE_MIN(END,:)/(2 * DXP(END));
%底部边界:
年(:1)年(:1)= -vs_max(: 1) /(2 *多元印刷(1));(: 1) = (: 1) / 2;
%顶部边界:
(:,结束)=(:,结束)/ 2;apy(:,结束)= apy(:,结束)+ vn_min(:,结束)/(2 * DYP(END));

如果您能给我参考相关文献,我也将不胜感激。
谢谢,
尤里

Ali Akbar Eftekhari.

嗨,大家好,

请将您的问题或评论最好写在代码的Github页面。我的mathworks账户更改了,我不再收到通知了。
https://github.com/simulkade/fvtool.

Ali Akbar Eftekhari.

对不起Alireza的迟到的回复。我有一个新的Mathworks帐户,所以我不再收到通知了。是的,您可以定义异构字段。例如,在上面的示例中,替换网格创建和D定义行:
m= createesh2d (Nx, Nx, L, L); / /显示当前位置
d = CreateCellVariable(M,Rand(NX,NX));
您可以用任何NX X NX大小的矩阵替换RAND(NX,NX)。

安东尼奥

超级

AG)

谢谢你的出色工作。你的代码也支持异质材料属性吗?金宝app我在尝试解决一个二维瞬态热方程在一个区域有不同的传导率和热容我希望你的框架能有所帮助。

非常感谢!

Ali Akbar Eftekhari.

嗨Hongwei,我很高兴你发现代码有用。如果您希望将应用程序添加到示例文件夹,请告诉我。欢迎您在GitHub上发送拉请求。

洪威郭

非常感谢 !!!非常专业和一般代码!!!我会尝试在电子传输问题中应用这个!

洪威郭

郭居

威廉肖尔

彭曹

Nikhil库马尔

马丁

Matlab释放兼容性
用R2014A创建
兼容任何释放
平台兼容性
窗户 macOS Linux.
致谢

启发:IAPWS_IF97.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!

边界

结石

类/ @ boundgeCondition

课程/ @ CellVariable

类/ @ CellVector

类/ @FaceVariable

类/ @网状结构

离散化

例子/高级

示例/外部/扩散1dspherical_Analytic-VS-FVTool-VS-Fipy

例子/外部/注射HCLCOREFOROWPROBLOB

例子/外部/ PhaseChangeEnthalpyMethod

例子/外部/ PhaseChangeEnthalpyMethod /功能

示例/外部/稳步性难以推荐

例子/外部/ SteadyLidDrivenCavityProblem /功能

例子/外部/ SteadyLidDrivenCavityProblem /测试点

示例/教程

田间理论

啮合

物理卓越

物理

解决者

测试

公用事业

可视化