对流扩散反应方程
以一维稳态的对流反应扩散方程为例,我们一起来看一下如何使用 FEtch 系统快速地求解偏微分方程问题。
问题描述
定义在区间 $[0,L]$ 上的函数 $u(x)$,满足如下稳态的对流扩散反应方程 \(\frac{\partial}{\partial x}\left(U_{x} u\right)=\frac{\partial}{\partial x}\left(D \frac{\partial u}{\partial x}\right)+S_{c}\)
和边界条件 \(u(0)=0\\ u(L)=1\) 该问题的解析解为 \(u=\frac{S_{c} x}{U_{x}}+\left(1-\frac{S_{c} L}{U_{x}}\right) \frac{1-\exp \left(U_{x} \cdot x / D\right)}{1-\exp \left(U_{x} \cdot L / D\right)}\)
取 $L=10$,$U_{x}=1$,$D=1$,$S_{c}=0.05$ ,求函数 $u(x)$ 的有限元解。
脚本文件
这是一个比较简单的单物理场问题。用有限元语言表述,只需要填写 4 种类型的文件,即 PDE、NFE、GCN 和 MDI 文件。
- PDE 文件 (condiff.pde),用于描述微分方程的弱形式。在有限元理论框架中,对应于单元矩阵的计算,是整个程序中最核心的部分。
defi
disp u
coor x
shap %1 %2
gaus %3
mate eux ed esc 1.0 1.0 0.05
stif
dist = +[u/x;u]*eux+[u/x;u/x]*ed
load = +[u]*esc
end
- NFE 文件 (cdra.nfe),与 PDE 文件相配合,用于给出待求解的矩阵格式的线性方程组(对应于整体矩阵组装),以及对计算结果作进一步处理。
defi
stif s
load f
equation
matrix = [s]
forc = [f]
solution u
gidpost("u",1.0) u(1)
end
- GCN 文件 (cdr.gcn),用于定义求解器类型。同时与 NFE 文件相配合,一起组织计算流程。
defi
a ell
#startnin a
#solvnin a
- MDI 文件 (cdr.mdi),用于组织管理物理场信息。
1dx
#a 0 1 u
pde condiff l2g2
#
实际操作中,这里的 NFE 文件可以调用系统的库文件自动生成,因此用户只需填写 PDE、GCN 和 MDI 三个文件即可,统计下来,总行数不超过 20 行!
我们通过 FEtch 客户端提交脚本文件后,会自动生成并下载有限元程序文件(cdr.exe 和 run.bat)、材料参数文件(cdr.mat)和 GiD 软件的前处理模板文件(cdr.cnd 和 cdr.bas)。编程任务至此已经顺利完成。
前处理
前处理是通过第三方软件 GiD 来完成的。
我们首先进入 GiD 软件界面进行前处理。依次进行几何建模、施加边界条件、赋材料值和网格剖分,最终导出计算所需的数据输入文件(cdr.dat)。
施加的边界条件如下:
网格为 50 个均匀分布的 2 节点线单元。
计算结果
经过计算,生成了后处理文件(cdr.flavia.res)。将计算结果绘图,并与解析解对比,如下图所示。
可以看出,有限元解和理论解两者吻合得很好。至此,对流扩散反应方程的求解已顺利完成。
参考文献
[1] 王斌武, 宋小鹏, 吴国珊. 传输过程数值模拟可视化编程开发:基于HTML5技术[M]. 冶金工业出版社, 2018.