油藏数值模拟实验报告.doc

数值模拟上机 实验1:三对角系数矩阵的解法 隐式差分格式 出发点在(i,n +1),取关于t的一阶向后差商和关于x的二阶差商。 取 对于一维渗流问题的隐式差分方程组的系数矩阵为三对角矩阵,追赶法(THOMAS)就是用来求解三对角矩阵方程组的一种比较简单、 应用也极为广泛的解法。 它的基本思路是将三对角矩阵A分解成两个特定形式的三对角矩阵的乘积。 追赶法程序如下: Dim m As Integer, n As Integer, i As Integer Dim P(1 To 10) As Single, x(1 To 10) As Single, y(1 To 10) As Single, a(1 To 10) As Single, b(1 To 10) As Single, c(1 To 10) As Single, d(1 To 10) As Single Dim l(1 To 10) As Single, u(1 To 10) As Single n = InputBox(请输入方程个数) For i = 1 To n a(i) = InputBox(a( i )=?) Print a( i )=; a(i); Next i Print For i = 1 To n - 1 b(i) = InputBox(b( i )=?) Print b( i )=; b(i); Next i Print For i = 2 To n c(i) = InputBox(c( i )=?) Print c( i )=; c(i); Next i Print For i = 1 To n d(i) = InputBox(d( i )=?) Print d( i )=; d(i); Next i Print l(1) = a(1) For i = 2 To n u(i - 1) = b(i - 1) / l(i - 1) l(i) = a(i) - c(i) * u(i - 1) Next i y(1) = d(1) / l(1) Print y(1)=; y(1); For i = 2 To n y(i) = (d(i) - c(i) * y(i - 1)) / l(i) Print y( i )=; y(i); Next i Print x(n) = y(n) For i = n - 1 To 1 Step -1 x(i) = y(i) - u(i) * x(i + 1) Next i For i = 1 To n Print x( i )=; x(i); Next i 运行结果: 实验2:单相流数值模拟方法 已知一维均质等厚单相渗流,已知边界条件定压、初始压力分布,求任意时刻的压力分布。渗流微分方程为: 网格系统为均匀的块中心网格,求t=任意时刻的压力分布(隐式差分格式)。 一维隐式求解: Dim P(0 To 100, 0 To 100) As Single, r As Single, n As Integer, k As Integer Dim i As Integer, j As Integer, t As Double, z As Single, xm As Single, tm As Integer Dim x(1 To 100) As Single, y(1 To 100) As Single, a(1 To 100) As Single, b(1 To 100) As Single, c(1 To 100) As Single, d(1 To 100) As Single Dim l(1 To 100) As Single, u(1 To 100) As Single z = 1: xm = 2: n = 4 r = z / xm v = -(1 + 2 * r) tm = InputBox(输入所求时间) For i = 1 To 4 P(i, 0) = 10 Next i For i = 0 To tm P(0, i) = 5: P(5, i) = 2 Next i For i = 1 To n c(i) = r: a(i) = v: b(i) = r Next i For k = 1 To tm d(1) = -P(1, k - 1) - b(1) * P(0, k) d(2) = -P(2, k - 1) d(3) = -P(3, k - 1) d(4) = -P(4, k - 1) - b(1) * P(5,

文档评论(0)

1亿VIP精品文档

相关文档