在SIMPLE_C中,交错网格是由generate_grid( )子程序产生的。在执行这个子程序之前,计算域的范围以及网格密度已经通过对xl、yl、m1、l1的赋值而获得。xl、yl、m1、l1通常在user_could_reset_some_setting_here()确定的,如表2所示。
double xl;
double yl;
int l1;
int m1;
在本节中,我们使用一个二维长方形的计算域作为例子来介绍网格划分以及差分方程的系数计算。计算域的X坐标范围是[0 xl],Y坐标范围是[0 yl]。主控制体节点数m1=7,l1=7。
在网格设定策略中,主控制容积w、e、n与s四个“面”所在的位置是最早给定的,然后程序根据(式子2)将主控制容积的节点置于w、e、n与s四个面的中心。这样由“面”确定“点”的方法相对于由“点”定“面”的方法有一定的优势。进一步的信息请参阅《传热与流体流动的数值计算》4.6-1节。 计算区域在x方向上的宽度 计算区域在y方向上的宽度 X方向上主控制体的压力节点数。也是x方向上主控制节点位置下标i的最后一个值。 Y方向上主控制体的压力节点数。也是y方向上主控制节点位置下标j的最后一个值。 表2 确定二维计算域的参数
x(1)=xu(2); x(l1)=xu(l1);
xu(i)+xu(i+1)x(i)=,i=2to(l1 1)2 (2) y(1)=yv(2); y(m1)=yv(m1);
yv(j)+yv(j+1)y(j)=,j=2to(m1 1)2
其中,主控制体节点的坐标将以(x(i),y(j))的形式来表达。主控制体的w、e面承载u的信息,所以分别将以xu(i)、xu(i+1)的形式给出。同样,主控制体的s、n面以yv(j)、yv(j+1)的形式标出。因此,xu(i)、yv(j)的起始坐标都是2。xu(2)与x(1)相同,且等于计算域最左边的x坐标;yv(2)与y(1)等于计算域最下边的y坐标。xu(1)与yv(1)没有被赋值也不会被使用到。具体的情况请参考图3。
点与面的关系之所以重要,是因为点上的量用于计算不稳定项与源项,而面上的量用于计算对流项与扩散项。这样的计算策略是由于下面的朴素想法导致的:
l
l
x(i),y(j),xu(i)与yv(j)的设置在图3中给出。随后的图4 ̄6给出了u、v控制体网格的设定过程。
在SIMPLE_C中,与这些网格相关的变量中,只有xu(i)与yv(j)的设定是由用户通过user_generate_velocity_grid( )完成的。其它变量,均是由程序自动设定的。用户可以通过改变xu(i)或者yv(j)来设定网格结构的密度以及是否均匀。通常,流体性质变化较快处的网格应该更密集一些。 不稳定项与源项都是体积量。控制体内的体积均值理所当然要用控制体积的中点的量来计算; 对流扩散项都是面的通量。面上的均值当然要用面上的中点的量来计算。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库SIMPLEC 二维、结构网格单相流SIMPLE 算法的C 语言实现的说明(10)在线全文阅读。
相关推荐: