自学内容网 自学内容网

MPI程序实例:二维Poisson方程(泊松方程)

目录

一、前言

二、并行算法设计

三、并行程序设计

四、并行效率分析

五、MPI并行程序优化

5.1 改进一:非阻塞通信

5.2 改进二:重叠通信与计算

5.3 改进三:二维Cartesian拓扑结构

5.4 改进四:并行I/O


一、前言

        本节介绍一个采用5点差分格式、Jacobi迭代求解二维Poisson方程的MPI Fortran程序实例。算法本身比较简单,效率较低,但是包含了规则网格上基于区域分解的偏微分方程计算MPI程序的典型结构和通信模式,具有代表性。同时,该程序可以推广至三维问题及非定常问题(主要适用于显式格式和某些隐式格式)。

        首先简单介绍二维区域上Poisson方程的5点差分离散以及如何使用Jacobi迭代来求解所到处的线性方程组,在此基础上给出基于区域分解的并行算法和MPI并行程序Fortran代码,同时为该算法建立并行模型对算法的并行效率进行分析,最后从几个不同角度对MPI并行程序进行改进。

        泊松方程5点差分格式推导、C代码实现等相关内容介绍请参考博主专栏文章↓传送门↓偏微分方程算法之五点菱形差分法_poisson 方程的 5 点菱形差分格式,矩形、非矩形区域情形边界条件的 处理(离散化)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/L_peanut/article/details/138216853        这里再简单对该知识点进行介绍:

        考虑定义在二维规则区域上的Poisson方程

\left\{\begin{matrix} -\Delta u(x,y)=f(x,y)\;\;(x,y)\in\Omega=(0,W)\times(0,H)\\ u(x,y)|_{\partial\Omega}=g(x,y) \end{matrix}\right.\;\;\;\;\;\;\;\;(1)

其中,f(x,y)g(x,y)为已知函数,分别定义在区域\Omega的内部和边界。

        沿坐标轴x和y方向,分别取步长

h_{x}=\frac{W}{IM},\;\;\;\;\;\;\;h_{y}=\frac{H}{JM}\;\;\;\;\;\;\;(2)

将区域\Omega离散成规模为IM\times JM的网格,其中IM和JM分别为沿坐标轴x和y方向的网格单元个数。

        假设方程(1)的离散解u(x,y)定义在所有网格结点上,且用如下未知量表示

\left\{\begin{matrix} u_{i,j}=u(i\times h_{x},j\times h_{y})\;\;\;\;1\leqslant i \leqslant IM-1,\;1\leqslant j\leqslant JM-1\\ u_{i,j}=g_{i,j}=g(i\times h_{x},j\times h_{y})\;\;\;\;i=0\;or\;i=IM\;or\;j=0\;or\;j=JM \end{matrix}\right.\;\;(3)

        用二阶中心差商近似导数:

\left\{\begin{matrix} u_{xx}(i\times h_{x},j\times h_{y})\approx\frac{u_{i-1,j}-2u_{i,j}+u_{i+1,j}}{h_{x}^{2}}\\ u_{yy}(i\times h_{x},j\times h_{y})\approx\frac{u_{i,j-1}-2u_{i,j}+u_{i,j+1}}{h_{y}^{2}} \end{matrix}\right.\;\;\;\;\;\;\;\;\;\;(4)

f_{i,j}=f(i\times h_{x}, j\times h_{y})\;\;\;\;\;\;\;\;(5)

        将以上公式代入方程(1),得到它的 5点差分离散。问题转化为求解稀疏线性代数方程组:

2(h^{x}_{x}+h^{2}_{y})u_{i,j}-h^{2}_{y}(u_{i-1,j}+u_{i+1,j})-h^{2}_{x}(u_{i,j-1}+u_{i,j+1})=h^{2}_{x}h^{2}_{y}f_{i,j}\\ 1\leqslant i\leqslant IM-1,1\leqslant j\leqslant JM-1.\;\;\;\;\;\;\;(6)

该方程组包含(IM-1)\times(JM-1)个未知量u_{i,j},i=1,\cdots,IM-1,j=1,\cdots,JM-1

        这里采用Jacobi点迭代算法求解方程组(6),从任意一个初始近似解出发,

u^{0}_{i,j},i=1,\cdots,IM-1,\;\;j=1,\cdots,JM-1

        Jacobi迭代法推导、C代码实现等相关内容介绍请参考博主专栏文章


原文地址:https://blog.csdn.net/L_peanut/article/details/142853042

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!