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

버전2.1.1.0 (1000 kb)작성자:
瞬态对流扩散偏微分方程的一种简单通用FVM求解方法

다운로드수:11.1k

업데이트날짜:2022/7/29

GitHub에서호스트

GitHub에서라이선스보기

FVTool: Matlab有限体积工具箱

在文件交换中查看一个简单的Matlab有限体积求解器

小文件

这是一个有限容量的工具箱(玩具)化学/石油工程师。目前,它可以求解具有变速度场/扩散系数的瞬态对流扩散方程。离散化方案包括:

  • 中心差分扩散项
  • 中心差对流项
  • 逆风对流项
  • 具有各种通量限制器的TVD对流项
  • 瞬态项
  • Dirichlet, Neumann, Robin和周期性边界条件

扩散pde

你解的是哪个方程?

你可以解决以下PDE(或它的一个子集):
平流扩散

有如下边界条件:
边界条件

信不信由你,上述方程描述了化工、石油工程和类似领域的大多数输运现象。

如何开始

下载包,启动matlab,并运行FVToolStartUp

灵感

我在玩过之后开始编写这个工具FiPy,一个神奇的基于python的有限体积求解器。这个matlab解算器不是一个克隆,与FiPy相比确实非常有限。我写它是为了有一个非常方便的工具来测试新的想法(新的数学模型),通过在一维统一的笛卡尔网格中求解它们。然后我将代码扩展为

  • 一维轴对称(径向)
  • 2D径向(r,)
  • 二维笛卡尔
  • 三维笛卡尔
  • 二维轴对称(圆柱,r, z)
  • 三维圆柱(r,, z)

我重载了一些matlab运算符,以简化从1D代码到2D和3D代码的转换。

一个简单的例子

你可以解一个扩散方程,即$ \nabla。(-D \nabla \phi) = 0 $在Matlab中运行以下代码:

clcl50域的长度Nx20.单元格数量createMesh1DNxl);公元前createBC);全诺伊曼边界条件结构公元前一个0公元前b) =1公元前c) =1左边边界的狄利克雷函数公元前正确的一个0公元前正确的b) =1公元前正确的c) =0右边界D_val1扩散系数的值DcreateCellVariableD_val);将扩散系数分配给单元D_faceharmonicMeanD);计算单元表面扩散系数的谐波平均MdiffdiffusionTermD_face);扩散项的系数矩阵MbcRHSbcboundaryCondition公元前);系数矩阵和RHS向量的BCMdiff+Mbc偏微分方程的系数矩阵csolvePDERHSbc);将M和RHS发送给求解器visualizeCellsc);可视化结果

将第三行改为m = createMesh2D(Nx,Nx, L,L);m = createMesh3D(Nx,Nx,Nx, L,L,L);然后亲眼看看结果。
diff 3 d

例子

中有一些简单的例子教程文件夹中。中也可以找到一些更高级的例子(向非均质油田注水,两个非线性偏微分方程,耦合全隐式解)先进的文件夹中。

文档

找一些初步文件在这里

但是Matlab不是一个自由软件吗?

您可以使用的代码倍频程.新的(面向对象的)代码版本在Octave 4.0中工作classdef功能)。
我重写了代码茱莉亚.它工作得很好,但是在Windows操作系统上的可视化仍然有一些问题。

问题和错误报告

你可以在这里创建一个新问题,或者在这里写下评论我的博客.你也可以在网站上提问Matlab文件交换页面这段代码。非常感谢您的反馈和/或贡献。

如何引用:

如果你在工作中使用过该软件包,并觉得它很有用,请在以下位置注明:

@misc{ali_akbar_eftekhari_2015_32745,作者= {Ali Akbar Eftekhari and Kai Schüller and Ferran Brosa Planella and Martinus Werts and Behzad Hosseinzadeh}, title = {FVTool: Matlab的有限体积工具箱},月= oct,年= 2015,doi = {10.5281/zenodo。32745}, url = {https://doi.org/10.5281/zenodo.32745}}

如果你能给我写几行关于你在研究中如何使用它的文字,我也会很感激。它鼓励我维护代码。

化学式용양식

Eftekhari, A.A.等人(2015)。FVTool: Matlab的有限体积工具箱。Zenodo。http://doi.org/10.5281/zenodo.32745

Matlab릴리스호환정보
개발환경:R2014a
모든릴리스와호환
플랫폼호환성
窗户 macOS Linux
도움

받음:IAPWS_IF97

社区寻宝

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

开始狩猎!

边界

微积分

类/ @BoundaryCondition

类/ @CellVariable

类/ @CellVector

类/ @FaceVariable

类/ @MeshStructure

离散化

例子/高级

例子/外部/ Diffusion1DSpherical_Analytic-vs-FVTool-vs-Fipy

例子/外部/ InjectionHClCoreFloodProblem

例子/外部/ PhaseChangeEnthalpyMethod

例子/外部/ PhaseChangeEnthalpyMethod /功能

例子/外部/ SteadyLidDrivenCavityProblem

例子/外部/ SteadyLidDrivenCavityProblem /功能

例子/外部/ SteadyLidDrivenCavityProblem /测试点

例子/教程

FieldGeology

MeshGeneration

PhysicalProperties

物理

解决者

测试

公用事业公司

可视化

이GitHub애드온의문제를보거나보고하려면GitHub리포지토리로가십시오。
이GitHub애드온의문제를보거나보고하려면GitHub리포지토리로가십시오。