隐式有限差分编程

合集下载

交替方向隐式时域有限差分法中的Berenger理想匹配层

交替方向隐式时域有限差分法中的Berenger理想匹配层

中围分章鳙 号 :0 12 0 (0 6 0 —4 80 1 0 —40 20 )30 5 —4
Be e e ’ e f c l t he a e o h le n tn r ng r s p r e ty ma c d l y r f r t e a t r a i g
i l i( mp i t ADD lo i m ; e f cl th d ly r PM L) c ag rt h p re ty ma c e a e (
当利用时域 有 限差分 法 ( DT 模 拟开 区域 的 电磁 场 问题 时 , 收 边界 条 件 ( C) 必 须 的. ee gr F D) 吸 AB 是 B rn e 提 出的理 想 匹配层 ( ML 是一 种 建立 在 场 分 裂基 础 上 的媒 质 吸 收边 界 条 件 [ , 种 AB P ) 1这 ] C理 论 上 可实 现 反 射误 差任 意小. 无条 件稳 定 的 交 替 方 向 隐式 时域 有 限差 分 法 ( I D AD— TD) 法 [ 出 现 以后 , 何 实 现 ADI D F 算 2 如 — TD 和 F
常的时域有 限差分法推广 到交替方 向隐式时域有 限差分法. 已有 的离散方案 比较 。 和 采用文 中提 出的 商
散 方 案 可使 理 想 匹 配 层 吸 收 边 界 的反 射误 差成 数 量 级 地 减 小 . 关 键 词 : 交瞽 方 向 隐 式 方 法 l 时域 有 限 差 分 法 I 想 匹 配 层 理
i se d o h t n a d FD n ta f t e sa d r l TD t o . C mp r d wi h ic e i t n s h me p o o e meh d o ae t t e dsrt ai c e r p sd h z o e r e ,t en w n k st er f cin e r r fP L a s r i g b u d r o d t n d c e s a l r h e o e m e h e e t ro so M b o b n o n a y c n i o e r e i a l o i a

第五讲——显式差分和隐式差分(5)(格式整齐)

第五讲——显式差分和隐式差分(5)(格式整齐)

左端:n+1时刻的值; 右端:n时刻的值。
特点:结构简洁,直接求解,求解速度快。
但是,时间步长需满足:
显式差分格式才能得到稳定的数值解,否则,数值解将会不稳定而振荡。
高级材料
19
显示差分格式示意图
高级材料
20
2. 隐式差分格式:
高级材料
时间一阶精度 空间二阶精度
21
隐式有限差分格式
高级材料
22
初始条件:
高级材料
26
内部节点:
A = sparse(nx,nx); for i=2:nx-1 A(i,i-1) = -s; A(i,i ) = (1+2*s); A(i,i+1) = -s; end
边界节点:
A(1 ,1 ) = 1; A(nx,nx) = 1;
载荷项:
rhs = zeros(nx,1); rhs(2:nx-1) = Told(2:nx-1); rhs(1) = Tleft; rhs(nx) = Tright; 高级材料
end
end
高级材料
b=a^(-1); c=zeros(135,1); for i=121:135
c(i,1)=25;end d=b*c; s=zeros(11,17); for i=2:16
s(11,i)=100; end for i=1:9 for j=1:15; s(i+1,j+1)=d(15*(i-1)+j,1); end end
内部
边界
27
Crank-Nicolson 隐式差分格式的程序实现

sTi
n1 1

(2

2s)Ti n 1

有限差分法

有限差分法

有限差分法一、单变量函数:用中心差分法(matlab程序见附录)计算结果如下:图1 中心差分法表1 数据对比二、一维热传导:在此取φ(x)=0,g1(t)= g2(t)=100-100*exp(-t)问题描述:已知厚度为l的无限大平板,初温0度,初始瞬间将其放于温度为100度的流体中,流体与板面间的表面传热系数为一常数。

试确定在非稳态过程中板内的温度分布。

(1)显式差分法:图3 显式差分法(2)隐式差分法:图4 隐式差分法小结:显式格式仅当时格式是稳定的。

(其中称为网格比)隐式格式从k层求k+1层时,需要求解一个阶方程组。

而且隐式格式的稳定性对网格比没有要求,即为绝对稳定的。

三、Possion方程:取f=1,R=1图5差分法图6 误差小结:观察误差曲面,其绝对误差数量级为附Matlab程序:第1题:%===========================Boundary Value Problem 1clear;clc;A=[-2.01 1 0 0 0 0 0 0 0;1 -2.01 1 0 0 0 0 0 0;0 1 -2.01 1 0 0 0 0 0;0 0 1 -2.01 1 0 0 0 0;0 0 0 1 -2.01 1 0 0 0;0 0 0 0 1 -2.01 1 0 0;0 0 0 0 0 1 -2.01 1 0;0 0 0 0 0 0 1 -2.01 1;0 0 0 0 0 0 0 1 -2.01;];c1=[0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9];C=0.01*c1-1*[0;0;0;0;0;0;0;0;1];y=A\C;x=0:0.1:1;yn=[0;y;1];ye=2*(exp(x)-exp(-x))/(exp(1)-exp(-1))-x;figure(1);plot(x,yn,'*',x,ye);legend('numerical solution','exact solution')xlabel('x','fontsize',20);ylabel('y','fontsize',20);set(gca,'fontsize',18);figure(2);err=abs(ye'-yn);plot(x,err);legend('error')xlabel('x','fontsize',20);ylabel('y','fontsize',20);set(gca,'fontsize',18);第2题:%========================Boundary Value Problem 1_Explicit %显式clear;clcl=20;%板厚h=1;%步长J=l/h;T=50;%时间tao=2.5;%步长N=T/tao;%下面组合A矩阵a=0.2;lamda=tao/(h^2);zhu=1-2*a*lamda;ce=a*lamda;a00=ones(1,J-1);a0=diag(a00);A0=zhu*a0;a01=ones(1,J-2);a1=diag(a01,1);A1=ce*a1;a2=diag(a01,-1);A2=ce*a2;A=A0+A1+A2;u(:,1)=0; %板的初始温度for i=2:N+1u(1,i)=100-100*exp(-(i-1)*tao); %边界条件u(J+1,i)=100-100*exp(-(i-1)*tao); %边界条件end% g01=u(:,1);% g02=u(:,J);for k=1:N% g01=ce*g1(1,k);% g02=ce*g2(1,k);oo=zeros(J-3,1);g(:,k)=[ce*u(1,k);oo;ce*u(J+1,k)];u(2:end-1,k+1)=A*u(2:end-1,k)+g(:,k);endt=0:h:l;x=0:tao:T;mesh(x,t,u)xlabel('t','fontsize',20);ylabel('x','fontsize',20);zlabel('T','fontsize',20);set(gca,'fontsize',18);%========================Boundary Value Problem 1_2Implicit %隐式clear;clcl=20;%板厚h=1;%步长J=l/h;T=50;%时间tao=2.5;%步长N=T/tao;%下面组合A矩阵a=0.2;lamda=tao/(h^2);zhu=1+2*a*lamda;ce=-a*lamda;a00=ones(1,J-1);a0=diag(a00);A0=zhu*a0;a01=ones(1,J-2);a1=diag(a01,1);A1=ce*a1;a2=diag(a01,-1);A2=ce*a2;A=A0+A1+A2;u(:,1)=0; %板的初始温度for i=2:N+1u(1,i)=100-100*exp(-(i-1)*tao); %边界条件u(J+1,i)=100-100*exp(-(i-1)*tao); %边界条件end% g01=u(:,1);% g02=u(:,J);for k=1:N% g01=ce*g1(1,k);% g02=ce*g2(1,k);oo=zeros(J-3,1);g(:,k)=[ce*u(1,k);oo;ce*u(J+1,k)];u(2:end-1,k+1)=inv(A)*u(2:end-1,k)-inv(A)*g(:,k);endt=0:h:l;x=0:tao:T;mesh(x,t,u)xlabel('t','fontsize',20);ylabel('x','fontsize',20);zlabel('T','fontsize',20);set(gca,'fontsize',18);第3题:%=============================used by centered difference clear;function pdemodel[pde_fig,ax]=pdeinit;pdetool('appl_cb',1);set(ax,'DataAspectRatio',[1 1 1]);set(ax,'PlotBoxAspectRatio',[1.5 1 1]);set(ax,'XLim',[-1.5 1.5]);set(ax,'YLim',[-1 1]);set(ax,'XTickMode','auto');set(ax,'YTickMode','auto');% Geometry description:pdecirc(0,0,1,'C1');set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','C1')% Boundary conditions:pdetool('changemode',0)pdesetbd(4,...'dir',...1,...'1',...'0')pdesetbd(3,...'dir',...1,...'1',...'0')pdesetbd(2,...'dir',...1,...'1',...'0')pdesetbd(1,...'dir',...1,...'1',...'0')% Mesh generation:setappdata(pde_fig,'Hgrad',1.3);setappdata(pde_fig,'refinemethod','regular');pdetool('initmesh')pdetool('refine')% PDE coefficients:pdeseteq(1,...'1.0',...'0.0',...'1',...'1.0',...'0:10',...'0.0',...'0.0',...'[0 100]')setappdata(pde_fig,'currparam',...['1.0';...'0.0';...'1 ';...'1.0'])% Solve parameters:setappdata(pde_fig,'solveparam',...str2mat('0','1524','10','pdeadworst',...'0.5','longest','0','1E-4','','fixed','Inf'))% Plotflags and user data strings:setappdata(pde_fig,'plotflags',[1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 1]); setappdata(pde_fig,'colstring','');setappdata(pde_fig,'arrowstring','');setappdata(pde_fig,'deformstring','');setappdata(pde_fig,'heightstring','');% Solve PDE:pdetool('solve')。

高维波动方程数值模拟的隐式分裂有限差分格式

高维波动方程数值模拟的隐式分裂有限差分格式
( z)一 p( x+ Ax)一 2 p( x)+ p( x — Ax)
辅助 变量 U, V和 W 定义 为
f U 一 嵋 一 2 PT i k+ u % o
这就 要求 在实 际计 算 中选 取 较 小 的模 拟 时 间 步长
以确保数值稳定性 , 从而降低了计算效率 。我们提 出一种新 的、 与文献[ 1 ] 类似 的隐式分裂有限差分
高维波动方程数值模拟的隐式分裂有限差分格式597图5复杂的盐丘模型图6八阶显式差分格式的瞬时波场图7隐式分裂有限差分格式的瞬时波场结束语本文隐式分裂有限差分格式求解多维波动方程的基本原理是将多维波动方程分解为一维方程用追赶法快速地求解
维普资讯
第 4 6卷 第 6期 2 0 0 7年 1 1 月
格式 , 对于 给定 的高 维 波 动 方 程 , 首 先 按 照 不 同 的
传播方 向进 行分 解 , 然后 对分 解后 的一 维方 程分 别
{ 一硪 L 2 p T j  ̄ + l 一磁 一2 p T j k +
更新 后 的波 场 户 可由
( 3 )
硅 一盟
的一维波动 问题 , 然后分别沿各方 向隐式求 解 。该格 式包含 了 , Y, z三个 方向相互独 立的一维 隐式 差分格式 , 每个 方向的一维 格式 在数值离散后归结为一个三对角 矩阵 问题 , 可 以用追赶 法快速地 求解 。将 该格式 从时 间一
空 间域 变换 至时间一 波数域 , 证 明此格式 可以通过适当地选取参数来提高计算精度 , 保证计算过程 的稳定性 和与
式中: p ( x, Y , z ) 是压 力波 场 ; f ( z, Y, z ) 是 已知 的速 度 场 。为了对 ( 1 ) 式进 行差分 求解 , 将 p( x, Y, z ) 离

基于交变隐式差分方向方法的时域有限差分法

基于交变隐式差分方向方法的时域有限差分法

基于交变隐式差分方向方法的时域有限差分法摘要本文主要针对基于交变隐式差分方向方法的时域有限差分法(Alternating Direction Implicit Finite Difference Time Domain method,简称ADI-FDTD方法)做了一定研究。

论文首先介绍了二维ADI-FDTD方法,就其数值稳定性和数值色散特性进行了研究,验算了ADI-FDTD的Mur吸收边界条件对其稳定性的影响。

关键词:基于交变隐式差分方向方法的时域有限差分法有限时域差分法数值稳定数值色散吸收边界条件一、二维ADI-FDTD 方法基本原理基于交变隐式差分方向方法的时域有限差分法也就是ADI-FDTD 方法。

传统的FDTD 方法,属于显示差分方法,因此具有显示差分方法的共同特性。

其离散格式有以下两个方面的特点:一个就是数值色散对空间离散网格的要求,空间离散网格尺寸必须为所要模拟电磁波最短波长的1/12,通常在程序中取1/20以减少数值计算带来的误差。

第二就是时间和空间离散间隔之间应当满足Courant-Friedrich-Levy(CFL)稳定性条件,或者简称Courant 稳定条件,即:222max )(1)(1)(11z y x t v ∆+∆+∆≤∆其中Vmax 为电磁波在媒质中传播的最大相速。

如果时间步长不满足上述条件,将导致FDTD 的计算发散,特别是目标较之入射波的波长有细微结构时,随着空间网格尺寸变小,为了满足稳定性条件,时间步长也相应的取小,致使总的CPU 计算时间有可能达到无法实现的地步。

为了提高FDTD 方法的计算效率和应用范围,90年代后期提出了多种与其他技术相结合的混合方法。

第六章就介绍最后一种基于交变隐式差分方向方法的时域有限差分法,也就是ADI-FDTD 方法。

与显式差分方法相反,隐式差分格式总是稳定的,其时间步长仅受数值误差的限制。

但是,隐式差分格式的缺点是需要通过矩阵求逆,或者是迭代求解大型线性方程组,计算复杂且量大。

水环境保护作业代码

水环境保护作业代码

水环境保护课程作业——隐式差分法计算河段BOD浓度【例题】某均匀河段长8 km,流速u =5km/h,纵向离散系数E =2km2/h,BOD的降解系数K1=0.0151h-1,上游断面有一断面混合均匀的污染源,0~1h间稳定排污,使该断面的污染浓度保持在20mg/L,以后排污停止,试用隐式差分法计算本河段各断面的BOD浓度变化过程。

【解题思路】1、建立所需变量和数组。

经分析变量分别有纵向离散系数E、流速u、BOD的降解系数K、河段长L、时间步长△t和距离步长△d,用于进行循环的i,j。

取时间步长为0.1h,距离步长为0.5km,可得需要一11行17列的数组来存放所得数据结果,即不同时间点不同位置的浓度值。

2、进行边界的初值的赋值:第一行和第一列的数值为已知条件3、利用追赶法顺序求解不同时刻的g和w的值,根据公式的不同,分两步求解,第一步是g[1]和w[1]的值,第二步是循环求解第二个到倒数第二个的g和w的值,每个时刻的最后的一个g值等于最后的浓度值。

4、利用追赶法倒序求出每个时刻,各个位置点的浓度值。

思路框图如下:【编程代码】#include <stdio.h>void main(){double k=0.0151,d=0.5;int u=5,e=2;int i,j,m=10,n=16;double a=0,b=0,r=0,t=0.1;doublex[17]={0},g[17]={0},w[17]={0},aa[11][ 17]={0};//基础变量和数组的定义FILE *fp;if((fp=fopen("D:\\水环境保护.txt","w"))==NULL){printf("can not open file\n");return;}//结果的输出a=-e/(d*d);b=1/t+2*e/(d*d)+k/2;r=a;for(i=1;i<=n;i++){aa[0][i]=0;}for(i=0;i<m;i++){aa[i][0]=20;}aa[m][0]=0;//对边界初值的赋值for(j=0;j<=m;j++){w[1]=r/b;for(i=1;i<=n;i++){x[i]=aa[j][i]*(1/t-u/d)+aa[j][i-1]*(u/ d-k/2);}x[1]-=a*aa[j+1][0];g[1]=x[1]/b;for(i=2;i<n;i++){g[i]=(x[i]-a*g[i-1])/(b-a*w[i-1]);w[i]=r/(b-a*w[i-1]);}//求w[i]g[i]的数值g[16]=x[16]/(b+2*r);aa[j+1][n]=g[n];for(i=15;i>0;i--){aa[j+1][i]=g[i]-w[i]*zl[j+1][i+1];}//求各点的浓度值for(i=0;i<=n;i++){printf("%7.3f",aa[j][i]);fprintf(fp,"%7.3f",aa[j][i]);}printf("\n");}}【数据结果】【图表】。

【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现

【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现

第1章前言1.1问题背景在史策教授的《一维热传导方程有限差分法的MATLAB实现》和曹刚教授的《一维偏微分方程的基本解》中,对偏微分方程的解得MATLAB实现问题进行过研究,但只停留在一维中,而实际中二维和三维的应用更加广泛。

诸如粒子扩散或神经细胞的动作电位。

也可以作为某些金融现象的模型,诸如布莱克-斯科尔斯模型与Ornstein-uhlenbeck过程。

热方程及其非线性的推广形式也被应用与影响分析。

在科学和技术发展过程中,科学的理论和科学的实验一直是两种重要的科学方法和手段。

虽然这两种科学方法都有十分重要的作用,但是一些研究对象往往由于他们的特性(例如太大或太小,太快或太慢)不能精确的用理论描述或用实验手段来实现。

自从计算机出现和发展以来,模拟那些不容易观察到的现象,得到实际应用所需要的数值结果,解释各种现象的规律和基本性质。

科学计算在各门自然科学和技术科学与工程科学中其越来越大的作用,在很多重要领域中成为不可缺少的重要工具。

而科学与工程计算中最重要的内容就是求解科学研究和工程技术中出现的各种各样的偏微分方程或方程组。

解偏微分方程已经成为科学与工程计算的核心内容,包括一些大型的计算和很多已经成为常规的计算。

为什么它在当代能发挥这样大的作用呢?第一是计算机本身有了很大的发展;第二是数值求解方程的计算法有了很大的发展,这两者对人们计算能力的发展都是十分重要的。

1.2问题现状近三十年来,解偏微分方程的理论和方法有了很大的发展,而且在各个学科技术的领域中应用也愈来愈广泛,在我国,偏微分方程数值解法作为一门课程,不但在计算数学专业,而且也在其他理工科专业的研究生的大学生中开设。

同时,求解热传导方程的数值算法也取得巨大进展,特别是有限差分法方面,此算法的特点是在内边界处设计不同于整体的格式,将全局的隐式计算化为局部的分段隐式计算。

而且精度上更好。

目前,在欧美各国MATLAB的使用十分普及。

在大学的数学、工程和科学系科,MATLAB苏佳园:二维热传导方程有限差分法的MATLAB实现被用作许多课程的辅助教学手段,MATLAB也成为大学生们必不可少的计算工具,甚至是一项必须掌握的基本技能。

有限差分编程书籍

有限差分编程书籍

有限差分编程书籍
有限差分编程是一种常用的数值计算方法,以下是一些关于有限差分编程的书籍推荐:- 《Computational fluid dynamics, principles and applications》:由北大工学院的几位老教授编写,该书对经典的格式讲解得非常清楚,具有很强的实用性。

- 《Computational Fluid Dynamics, the basics with applications》:此书被很多人推荐,虽然其中的算法基本已经过时,但作为基础教材学习还是不错的。

- 《The finite-volume method method in computational fluid dynamics, an advanced introduction to Openfoam and Matlab》:这本书是目前有限体积编程方面的优质教材,其优势包括:①所讲算法具有实用性,且全部为非结构网格算法;②有大量C语言的代码;
③图片示意清晰,方便初学者理解。

有限差分编程的书籍还有很多,你可以根据自己的需求和水平选择适合的书籍进行学习。

隐式差分方程课件

隐式差分方程课件


1 2
k 2 Dx4

)u
n 1 m

u
n m
式中左边如果仅保留二阶导数项,且以
格式
(1
k h2

2 x
)U
n1 m

U
n m
1 h2

2 x
替代 Dx2
,则得差分
或者
rU
n1 m1

(1
2r
)U
n1 m

rU
n1 m1

U
n m
(2.41)
格式用图2.5表示,其截断误差阶为 (k2 h2) ,与古典差分格式相同。
exp(
1 2
k L)umn1

exp(1 2
k L)umn
由 L Dx2
得 [1
1 2
k Dx2

1 2
(1 2
kDx2 )2
]umn1

[1
1 2
k Dx2

1 2
(1 2
kDx2 )2
]umn
(2.42)
两边仅保留前二项,用
1 h2

代替 2
x
Dx2
,则得差分格式
(1
232cranknicolson隐式格式cranknicolson隐式差分格式是解热传导方程226的常用的差分格式为了推导它由式224有242两边仅保留前二项用代替则得差分格式243这是一个隐式差分格式称为cranknicolson差分格式截断误差阶为也可写为kdkdkdkd244由于格式244中包括六个结点故也可称为六点格式如图26所示
0.956 821 703 419 0.000 079

有限差分法

有限差分法

有限差分法有限差分法finite difference method微分方程和积分微分方程数值解的方法。

基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。

然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。

有限差分法的主要内容包括:如何根据问题的特点将定解区域作网格剖分;如何把原微分方程离散化为差分方程组以及如何解此代数方程组。

此外为了保证计算过程的可行和计算结果的正确,还需从理论上分析差分方程组的性态,包括解的唯一性、存在性和差分格式的相容性、收敛性和稳定性。

对于一个微分方程建立的各种差分格式,为了有实用意义,一个基本要求是它们能够任意逼近微分方程,这就是相容性要求。

另外,一个差分格式是否有用,最终要看差分方程的精确解能否任意逼近微分方程的解,这就是收敛性的概念。

此外,还有一个重要的概念必须考虑,即差分格式的稳定性。

因为差分格式的计算过程是逐层推进的,在计算第n+1层的近似值时要用到第n层的近似值,直到与初始值有关。

前面各层若有舍入误差,必然影响到后面各层的值,如果误差的影响越来越大,以致差分格式的精确解的面貌完全被掩盖,这种格式是不稳定的,相反如果误差的传播是可以控制的,就认为格式是稳定的。

只有在这种情形,差分格式在实际计算中的近似解才可能任意逼近差分方程的精确解。

关于差分格式的构造一般有以下3种方法。

最常用的方法是数值微分法,比如用差商代替微商等。

另一方法叫积分插值法,因为在实际问题中得出的微分方程常常反映物理上的某种守恒原理,一般可以通过积分形式来表示。

此外还可以用待定系数法构造一些精度较高的差分格式。

VTI介质隐式有限差分平面波偏移

VTI介质隐式有限差分平面波偏移

在减 少计 算量 , 高 波 动 方 程偏 移 效 率 上 的 潜 力 。 提 Brhu¨提 出面炮 偏 移 技术 ; ekot 张叔 伦 等 实 现 了
傅立 叶有 限差 分 平 面 波 偏 移 ; h n Z ag等 实 现 3 D
关 系要 复杂 些 , 因为其 传播 速 度依赖 于相 位角 。所 以 , V I 质 波 场 外 推 经 常 使 用 相 移 加 内插 ¨ 在 T介
向 同性 介质 下 , 有考 虑 各 向异 性介 质情 况 。而 各 没
向异 性 在石 油勘探 中普 遍 存在 , 如果 地 下介质 存 在
求解 差 分 系数 。作者 在本 文延 用 Sa 开弱 各 向 hn避
异性 假 设及 优化 的思 想 , 同的是 作者直 接建 立非 不
基 金 项 目:国 家“ 7 ” 目( 0 7 B 0 6 3 ; 93 项 2 0 C 2 9 0 ) 国家 8 3项 目( 0 7 A 6 8 1 6 20A 000 )
或 显性 卷 积 方 法 ¨ , 因为 复 杂 的频 散 关 系 并 不 增 加这 些方 法 的复 杂性 。但 是对 于相 移加 内插 法 , 需 要大 量 的参 考 波 场 。显 性 卷 积 方法 在 各 向 同性 下 都很 难保 证稳 定性 , 而且需 要很 长 的卷积 滤波算
延 迟 放炮 偏 移 ;t a等 对 共 检 波点 道 集 和 共 炮 So f
ec :ID) 法 。Rs w等 ¨ ne F 算 io t 基 于弱 各 向 异性 假 设 和 Ty r 析 将 其 拓 展 到 V I 质 。为 了改 al 分 o T介 善精度 ,i H 有 限差 分后加 人 了相 位 改正 算 Lu等 在
子 。S a ¨ 提 出 了优 化 的方 法 , 非 线 性 问 题 hn 将 降解 为线性 优化 问题 , 利用 线性 优 化解 出的 系数 再

隐式差分格式matlab

隐式差分格式matlab

隐式差分格式是指在求解偏微分方程时,不需要显式地写出方程的解,而是通过差分方法对方程进行离散化,然后通过迭代或其他方法求解离散化的方程。

在MATLAB中,可以使用ode45函数来求解隐式差分方程。

ode45函数使用四阶和五阶龙格-库塔方法来求解刚性和非刚性常微分方程。

下面是一个示例程序,演示如何使用ode45函数来求解一个简单的隐式差分方程:
matlab复制代码
function dy = myode(t, y)
% 定义隐式差分方程 dy/dt = y - t^2 + 1
dy = y - t^2 + 1;
end
tspan = [0, 2]; % 时间区间 [0, 2]
y0 = [0.5]; % 初始值 y(0) = 0.5
[t, y] = ode45(@myode, tspan, y0); % 求解隐式差分方程
plot(t, y(:, 1)) % 绘制解的图形
在这个示例中,我们定义了一个简单的隐式差分方程dy/dt = y - t^2 + 1,并使用ode45函数来求解该方程。

程序输出了解的图形,可以观察解的变化趋势。

色散混合显隐式时域有限差分法的石墨烯仿真

色散混合显隐式时域有限差分法的石墨烯仿真

色散混合显隐式时域有限差分法的石墨烯仿真徐健勋;傅伟杰【摘要】应用色散混合显隐式时域有限差分(hybrid implicit-explicit finite-difference time-domain, HIE-FDTD)法分析了石墨烯的电磁特性.这种方法的时间步长大小不受石墨烯层的剖分网格大小的限制,数值算例表明,HIE-FDTD方法是一种精度较高的有效算法,它的计算时间比FDTD方案大大减少.数值计算结果显示,设计的石墨烯吸收体通过改变石墨烯片的化学势,可以有效地调整吸收体的吸收峰.同时发现,在太赫兹频率下石墨烯吸收体的吸收率显示出一定的周期性并呈现栅形特性,这一特性可以对石墨烯器件的设计生产提供一些思路.【期刊名称】《电波科学学报》【年(卷),期】2019(034)002【总页数】5页(P239-243)【关键词】色散混合显隐式;时域有限差分方法;石墨烯;电磁特性;石墨烯吸收体【作者】徐健勋;傅伟杰【作者单位】合肥工业大学,合肥230009;合肥工业大学,合肥230009【正文语种】中文【中图分类】O441.4引言进入21世纪以来,时域有限差分(finite-difference time-domain, FDTD)法己经发展得非常成熟.人们对于FDTD方法的研究主要集中在探索新的处理方法,如交替方向隐格式时域有限差分(alternating-direction implicit FDTD,ADI-FDTD) 法及Crank-Nicolson时域有限差分(Crank-NicolsonFDTD,CN-FDTD)法等,以便更快得到更加精确的结果.FDTD法在实际应用的时候,存在Courant-Friedrich-Levy (CFL)稳定性条件的限制[1],针对不同问题随着网格剖分越来越精细,导致时间步长大幅度减小,从而导致计算时间大幅度提高.随着新型材料的不断应用,迫切需要更精确、更高效率的新型时域方法来分析新型材料的电磁特性,以满足工程上的分析需求.为了克服FDTD法时间步长的Courant限制,一种三维混合显隐式有限差分时域方法(hybrid implicit-explicit FDTD, HIE-FDTD)被提出[2].在这种方法中,CFL条件并没有完全消除,与传统的FDTD方法相比是较弱的稳定条件.在HIE-FDTD方法的求解中,只需要一次迭代(具有两个三对角矩阵和四次显式更新),与FDTD方法的运行结果相比,HIE-FDTD方法的计算时间大大缩短[3].石墨烯是一种单一方向上具有精细结构的材料.由于石墨烯的卓越性能,已经在太赫兹(THz)领域引起了全世界研究人员的兴趣[4-5].石墨烯具有线性色散的电磁特性,相比于半导体有更高电子迁移率,而且电导率具有可调特性[6].结合石墨烯的特性,本文应用Juan和Wang提出的一种色散HIE-FDTD,引入新的辅助变量即电流密度,使得算法复杂度更低,在这种方法中,时间步长的大小不受石墨烯层中剖分网格大小的限制,所以它的计算时间比FDTD方案的计算时间少得多.1 HIE-FDTD的基本原理石墨烯在太赫兹频段的等效模型可以用其表面电阻率来表示,即久保公式(Kubo formulation),在传统的FDTD中的仿真模型采用辅助差分方程(auxiliary differential equation, ADE)技术[7-9].在麦克斯韦方程中,通过引入辅助可变电流来模拟石墨烯的作用,形成具有损耗介质的麦克斯韦方程,通过求解该方程而获得电磁波通过石墨烯的传播特性.假设石墨烯为一个薄导电表面,其表面电导率可以表示为(1)式中:是角频率;T为开尔文温度;ħ为普朗克常量;e为电子电荷;KB为玻耳兹曼常数;μc为化学势;Γ为散射率.1.1 ADE常用传导电流密度J来表示石墨烯的导电率,h为石墨烯的厚度,两者之间关系为J=σE/h.(2)将σ的表达式代入到式(2)中可以得到J=(ME/h)/[1+jω/(2Γ)].(3)式中,(4)式(3)、(4)的时域形式如下:(5)采用中心二阶有限差分来近似式(5)中的导数算子形式,有Jn+1=S1Jn+S2En+1+S2En.(6)式中:是时间取样;Δt是时间步长.等式(6)表示石墨烯的分散特性,它是ADE模型,可以很方便地应用到HIE-FDTD方法中.1.2 HIE-FDTD方法的公式通过将电流密度J纳入麦克斯韦方程并结合HIE差分公式[10-11],可以推导出色散三维HIE-FDTD方法的迭代公式如下:×E=-jωμ0H;(7)×H=jωε0E+J.(8)(9)(10)(11)(12)(13)(14)式中,公式(9)~(14)为算法更新后的公式.2 算例分析2.1 仿真无限大石墨烯薄层算例为了证明所应用的色散HIE-FDTD方案计算精度和效率,本文用这种方法来模拟无限大的石墨烯片.如图1所示,石墨烯片位于x-z平面内,它在y方向的厚度为h.电场是沿着y方向极化的均匀平面波垂直入射在石墨烯片上.平面波的激励是一个高斯脉冲,其表达式为g(t)=exp(-(4π(t-t0)2)/τ2).(15)式中,t0=τ=5×10-13 s.其频率范围为0~4 THz,所以选取最小波长为75 μm.图1 石墨烯片结构图Fig.1 The structure of graphene通过使用总场散射场(TF/SF)边界条件将平面波引入计算域.沿y方向的上下边界处设置10个元胞卷积完全匹配层(convolutional perfectly matched layer, CPML)以截断散射场[12],在x和z方向添加周期边界条件,在石墨烯层中用粗细网格技术进行计算.石墨烯片的参数[13]如下:T=300 K,μc=0.1 eV,Γ=1/2·τ,τ=1 ps,h=1 nm.石墨烯片的内部剖分尺寸选择Δy为0.25 nm.另外,为了减少由数值色散引起的误差,空间网格必须小于最小波长的1/10,本文选取最小波长的1/15,在计算域的其他部分,选择均匀的网格尺寸:Δx=Δy=Δz=5 μm.为了满足CFL稳定性条件,在FDTD方案中的时间步长为=8.33×10-7 ps.相比之下,在色散HIE-FDTD方法中,时间步长仅取决于单元尺寸Δx和Δz:=1.18×10-3 ps.该结果是FDTD方案的1 417倍[14-15].由图2可以看出,色散HIE-FDTD方法的结果与FDTD非常吻合.以上模拟在Intel Core i7-6700 CPU@4 GHz and 32 G memory的计算机上完成,色散HIE-FDTD 方法和FDTD方法的计算时间分别为5.153 s和12 077.253 s,色散HIE-FDTD方法显然减少了计算时间.因此,可以验证我们所提出的方法在不牺牲精度的前提下,具有更高的效率.图2 HIE-FDTD法与FDTD法结果对比Fig.2 Result comparison between HIE-FDTD and FDTD2.2 仿真石墨烯吸收体算例一般来说,石墨烯的电导率动态变化可以通过改变石墨烯片的化学势来调整[16].由此,我们设计了一个石墨烯吸收体.图3为石墨烯器件的结构,石墨烯吸收体由PEC层、介质层(εr=12.9)和石墨烯层构成.图3 石墨烯吸收体的结构Fig.3 The structure of graphene devices图4显示了化学势μc分别取值0.1 eV、0.3 eV、0.5 eV情况下对吸收率(absorptivity)、反射率(reflectivity)的影响.我们定义反射率吸收率A=1-R2,其中Ein为输入电场值,ER为反射波电场值.结果表明,随着μc值的增加,吸收率不断提高,并向高频方向移动,且吸收率具有一定的周期性,呈现出栅形特性.图5显示,当μc=0.3 eV时,在1.409~1.625 THz、2.543~2.837 THz范围吸收率在80%以上,这个数据表明设计的石墨烯吸收体在特定频段内具有良好的吸收性能.图4 化学势对吸收率和反射率的影响Fig.4 Effects of chemical potential on absorptivity and reflectivity图5 吸收效果Fig.5 Absorption effect3 结论本文应用一种色散HIE-FDTD法成功分析了石墨烯器件的电磁特性,其中单层石墨烯的模型和ADE技术已经应用于求解麦克斯韦方程组.可以看出,色散HIE-FDTD 方法非常适用于分析具有单向精细结构的石墨烯电磁特性.数值计算结果表明,设计的石墨烯吸收体的吸收系数可以通过改变化学势来调节,而且当化学势不断增大的时候,吸收峰不断向高频方向移动,且吸收率具有一定的周期性,呈现出栅形特性,这一结果显示了石墨烯的可调制特性,这个特性在太赫兹波段可调石墨烯器件设计、可穿戴电子设备设计中有一定应用价值.此外,上述方法也可以用于分析诸如吸收器、频率选择器等基于石墨烯的器件上.参考文献【相关文献】[1] TAFLOVE A, HAGNESS S C. Computational electrodynamics: the finite-difference time-domain method[M]. Artech house, 2005: 107-164.[2] ZHANG Q, QIU S, ZHOU B. A hybrid implicit-explicit FDTD method with an intermediate field[C]//7th Asia-Pacific Conference on Environmental Electromagnetics (CEEM). IEEE, 2015: 157-160.[3] CHEN J, WANG J. Implementation of connection boundary for HIE-FDTD method[J]. Microwave and optical technology letters, 2008, 50(5): 1347-1352.[4] TAMAGNONE M, GOMEZ-DIAZ J S, MOSIG J R, et al. Analysis and design of terahertz antennas based on plasmonic resonant graphene sheets[J]. Journal of applied physics, 2012, 112(11): 114915.[5] LLATSER I, KREMERS C, CABELLOS-APARICIO A, et al. Graphene-based nano-patch antenna for terahertz radiation[J]. Photonics and nanostructures-fundamentals and applications, 2012, 10(4): 353-358.[6] CHEN J, WANG J. Three-dimensional dispersive hybrid implicit-explicit finite-difference time-domain method for simulations of graphene[J]. Computer physics communications, 2016, 207: 211-216.[7] SALSKI B. An FDTD model of graphene intraband conductivity[J]. IEEE transactions on microwave theory and techniques, 2014, 62(8): 1570-1578.[8] SOUNAS D L, CALOZ C. Gyrotropy and non-reciprocity of graphene for microwaveapplications[J]. IEEE transactions on microwave theory and techniques, 2012, 60(4): 901-914.[9] GUSYNIN V P, SHARAPOV S G, CARBOTTE J P. Magneto-optical conductivity in graphene[J]. Journal of physics: condensed matter, 2006, 19(2): 026222.[10] WANG J, ZHOU B, et al. An efficient 3-D HIE-FDTD method with weaker stability condition[J]. IEEE transactions on antennas and propagation, 2016, 64(3): 998-1004. [11] CHEN J, GUO J, TIAN C. Analyzing the shielding effectiveness of a graphene-coated shielding sheet by using the HIE-FDTD method[J]. IEEE transactions on electromagnetic compatibility, 2018, 60(2): 362-367.[12] 陈娟, 王建国, 许宁. 弱条件稳定时域有限差分方法[M]. 北京: 科学出版社, 2016: 87-99.[13] XU N, CHEN J, WANG J, et al. Dispersion HIE-FDTD method for simulating graphene-based absorber[J]. IET microwaves, antennas & propagation, 2017, 11(1): 92-97. [14] WANG X H, YIN W Y, CHEN Z. Matrix exponential FDTD modeling of magnetized graphene sheet[J]. IEEE antennas and wireless propagation letters, 2013, 12: 1129-1132.[15] 葛德彪, 闫玉波. 电磁波时域有限差分方法[M]. 2版. 西安: 西安电子科技大学出版社, 2005: 36-37.[16] LV B, FU J, WANG D, et al. Frequency adjustable cross-shaped absorber based on graphene[C]//IEEE International Conference on Electronic Information and Communication Technology. IEEE, 2016: 563-566.。

matlab用jacobi迭代求解隐式差分的richards方程

matlab用jacobi迭代求解隐式差分的richards方程

在MATLAB中,使用Jacobi迭代法求解隐式差分的Richards方程需要以下步骤:1. 定义Richards方程:Richards方程是一个描述土壤水分运动的偏微分方程,形式如下:d(θ)/dt = (1/α) [k_r(θ - θ_r) + k_s(θ_s - θ)]其中,θ 是土壤含水率,k_r 和k_s 是降雨入渗和蒸散发系数,θ_r 和θ_s 是残余含水率和饱和含水率,α 是时间系数。

2. 定义Jacobi迭代法:Jacobi迭代法是一种求解线性方程组的迭代方法,形式如下:x^(n+1) = (b - Ax^n) / D其中,A 是系数矩阵,b 是常数项向量,x^n 是第n 次迭代的解向量,D 是A 的对角线元素构成的向量。

3. 编写MATLAB代码:根据Richards方程和Jacobi迭代法,编写MATLAB代码。

下面是一个示例代码:matlab参数定义N = 100; 网格点数T = 100; 时间步数alpha = 0.1; 时间系数kr = 0.5; 降雨入渗系数ks = 0.2; 蒸散发系数theta_r = 0.01; 残余含水率theta_s = 0.35; 饱和含水率初始化变量time = linspace(0, T, T+1); 时间向量moisture = zeros(N+1, T+1); 含水率矩阵moisture(:, 1) = theta_r; 初始含水率Jacobi迭代for n = 1:T计算扩散项和源项D = (1/alpha)*(kr*(moisture(2:end, n) - moisture(1:end-1, n)) + ks*(moisture(1:end-1, n) - moisture(2:end, n)));b = (1/alpha)*(kr*(moisture(1, n) - theta_r) + ks*(theta_s - moisture(N+1, n)));Jacobi迭代计算含水率moisture(:, n+1) = (b - D*moisture(:, n)) ./ D;end。

隐式有限差分法jacobi矩阵

隐式有限差分法jacobi矩阵

隐式有限差分法jacobi矩阵
隐式有限差分法(Implicit Finite Difference Method)是一种数值分析方法,用于解决偏微分方程问题。

而Jacobi矩阵是一个矩阵,用于描述多元函数的一阶偏导数。

在隐式有限差分法中,Jacobi矩阵常常被用来线性化偏微分方程,从而将其转化为代数方程组,进而进行数值求解。

在隐式有限差分法中,我们通常会遇到需要求解一个线性方程组的情况。

而Jacobi矩阵在这里的作用是帮助我们进行迭代求解。

具体来说,我们可以利用Jacobi矩阵来构造迭代格式,从而逐步逼近方程组的解。

这种方法的优点在于可以将复杂的偏微分方程问题转化为简单的代数方程组问题,从而更容易进行数值求解。

另外,隐式有限差分法通常用于描述具有时间依赖性的偏微分方程,比如热传导方程或者扩散方程。

在这些情况下,Jacobi矩阵可以帮助我们线性化关于时间的部分,从而使得问题更容易处理。

总的来说,隐式有限差分法和Jacobi矩阵在数值分析中扮演着重要的角色,特别是在解决偏微分方程数值求解问题时。

它们的结
合可以帮助我们更好地理解和解决复杂的物理现象,并且为工程和科学领域提供了强大的数值计算工具。

有限差分编程书籍 -回复

有限差分编程书籍 -回复

有限差分编程书籍-回复有限差分编程是一种常见的数值计算方法,它广泛应用于科学和工程领域,用于求解偏微分方程等数学模型。

有限差分编程的原理和实践可以通过各种书籍进行学习和掌握。

本文将一步一步回答关于《有限差分编程书籍》的问题,探讨如何选择适合初学者和进阶者的书籍,以及如何利用这些书籍深入了解有限差分编程。

有限差分方法是将连续问题离散化为有限差分方程,通过计算差分方程的近似解来近似原问题的解。

这种方法既适用于一维问题,也适用于二维和三维问题。

因此,有限差分编程已成为解决科学和工程中的各种问题的常用工具。

对于初学者来说,选择一本适合入门的有限差分编程书籍是非常重要的。

《科学计算:Python语言的算法和数学模型》是一本非常受欢迎的介绍有限差分编程的书籍,它使用Python编程语言展示了一些简单的数学模型,并介绍了如何使用有限差分方法来求解这些模型。

这本书提供了丰富的例子和清晰的代码,对于初学者来说非常友好。

另一本对初学者来说不错的书籍是《偏微分方程的数学和计算方法》,它由Richard Haberman撰写。

这本书在介绍有限差分方法之前提供了必要的数学背景知识,对初学者来说非常有帮助。

此外,书中还提供了大量的例子和练习题,以帮助读者更好地理解和应用所学知识。

一旦掌握了基本的有限差分编程概念和技术,进阶者可以选择更深入的书籍来拓展他们的知识。

《有限差分法和有限元法:数值近似和模拟连续问题》是一本较为全面的书籍,介绍了有限差分法和有限元法的基本原理和应用。

这本书深入探讨了不同的差分格式和边界条件,并提供了大量的案例和实践经验,帮助读者理解和解决复杂的科学和工程问题。

另一本适合进阶者的书籍是《偏微分方程的数值解法:有限差分法、有限元法和有限体积法》。

该书涵盖了更多的数值方法,包括有限差分法、有限元法和有限体积法等。

此外,书中还介绍了如何应用这些方法来解决二维和三维问题,以及如何处理非线性和时间相关方程。

这本书既适合理论学习,也适合实践应用。

油藏数值模拟隐式差分MATLAB源程序

油藏数值模拟隐式差分MATLAB源程序

%隐式求解方法%t为投产后某一时刻,单位:天%d:迭代时间;%Pwf1:W1井底流压;%Q2:W2井产油量;function [P,d,Pwf1,Q2]=implict(t)%油藏参数Pini=20;u=5e-3;C=2e-4;Q1=30;Pwf2=15;dx=200;dy=200;dt=24;n=t*24/dt;%迭代时间步数re=0.208*dx;rw=0.1;%渗透率K=[0 259 222 200 190 180 185 0 0 0 0;259 259 222 200 190 180 185 185 0 0 0;310 310 240 235 228 210 195 195 0 0 0;330 330 290 270 250 230 205 197.5 180 185 0;350 350 300 280 259 222 200 190 180 185 185;340 340 320 290 310 240 235 228 210 195 195;355 355 335 315 310 290 270 250 230 205 205;0 0 0 0 325 300 280 240 210 215 215;0 0 0 0 340 320 290 260 235 225 225;0 0 0 0 355 335 315 295 275 255 0];%厚度H=K/50;%孔隙度Fai=(K.*0.02+15)/100;%地层压力P=Pini*ones(10,11);%P(1,:)=0;%P(2:10,1)=0;%P(2:10,11)=0;%P(2:4,8:10)=0;%P(8:10,2:4)=0;%系数矩阵%初始化a=zeros(10,11);b=zeros(10,11);c=zeros(10,11);d=zeros(10,11);e=zeros(10,11);%for i=2:9for j=2:10a(i,j)=3600e-9*dt*2*H(i,j-1)*K(i,j-1)*K(i,j)/u/C/Fai(i,j)/dx/dx/(H(i,j-1)*K(i,j-1)+H(i,j)*K(i,j)); b(i,j)=3600e-9*dt*2*H(i,j+1)*K(i,j+1)*K(i,j)/u/C/Fai(i,j)/dx/dx/(H(i,j+1)*K(i,j+1)+H(i,j)*K(i,j)); c(i,j)=3600e-9*dt*2*H(i+1,j)*K(i+1,j)*K(i,j)/u/C/Fai(i,j)/dx/dx/(H(i+1,j)*K(i+1,j)+H(i,j)*K(i,j));d(i,j)=3600e-9*dt*2*H(i-1,j)*K(i-1,j)*K(i,j)/u/C/Fai(i,j)/dx/dx/(H(i-1,j)*K(i-1,j)+H(i,j)*K(i,j));e(i,j)=-1-a(i,j)-b(i,j)-c(i,j)-d(i,j);endend%初始时刻地层压力p=Pini*ones(52,1);%系数矩阵AA=zeros(52);%第9行A(1,1)=e(9,6);A(1,2)=b(9,6);A(1,6)=d(9,6);for i=2:4A(i,i-1)=a(9,i+5);A(i,i)=e(9,i+5);A(i,i+1)=b(9,i+5);A(i,i+5)=d(9,i+5);endA(5,4)=a(9,10);A(5,5)=e(9,10)+b(9,10);A(5,10)=d(9,10);%第8行A(6,1)=c(8,6);A(6,6)=e(8,6);A(6,7)=b(8,6);A(6,12)=d(8,6);for i=7:9A(i,i-5)=c(8,i);A(i,i-1)=a(8,i);A(i,i)=e(8,i);A(i,i+1)=b(8,i);A(i,i+6)=d(8,i);endA(10,5)=c(8,10);A(10,9)=a(8,10);A(10,10)=e(8,10)+b(8,10); A(10,16)=d(8,10);%第7行A(11,11)=e(7,5);A(11,12)=b(7,5);A(11,20)=d(7,5);for i=12:15A(i,i-6)=c(7,i-6);A(i,i-1)=a(7,i-6);A(i,i)=e(7,i-6);A(i,i+1)=b(7,i-6);A(i,i+9)=d(7,i-6); endA(16,10)=c(7,10);A(16,15)=a(7,10);A(16,16)=e(7,10)+b(7,10); A(16,25)=d(7,10);%第6行A(17,17)=e(6,2)+a(6,2); A(17,18)=b(6,2);A(17,26)=d(6,2);for i=18:19A(i,i-1)=a(6,i-15);A(i,i)=e(6,i-15);A(i,i+1)=b(6,i-15);A(i,i+9)=d(6,i-15); endfor i=20:23A(i,i-9)=c(6,i-15);A(i,i-1)=a(6,i-15);A(i,i)=e(6,i-15);A(i,i+1)=b(6,i-15);A(i,i+9)=d(6,i-15); end%w2井定井底流压生产A(24,15)=c(6,9);A(24,23)=a(6,9);A(24,24)=e(6,9)-(3600e-9)*2*pi*K(6,9)*dt/u/C/Fai(6,9)/dx/dy/log(re/rw); A(24,25)=b(6,9);A(24,33)=d(6,9);A(25,16)=c(6,10);A(25,24)=a(6,10);A(25,25)=e(6,10)+b(6,10);A(25,34)=d(6,10);%第5行A(26,17)=c(5,2);A(26,26)=e(5,2)+a(5,2);A(26,27)=b(5,2);A(26,35)=d(5,2);for i=27:31A(i,i-9)=c(5,i-24);A(i,i-1)=a(5,i-24);A(i,i)=e(5,i-24);A(i,i+1)=b(5,i-24);A(i,i+9)=d(5,i-24);endfor i=32:33A(i,i-9)=c(5,i-24);A(i,i-1)=a(5,i-24);A(i,i)=e(5,i-24)+d(5,i-24);A(i,i+1)=b(5,i-24);endA(34,25)=c(5,10);A(34,33)=a(5,10);A(34,34)=e(5,10)+b(5,10)+d(5,10);%第4行A(35,26)=c(4,2);A(35,35)=e(4,2)+a(4,2);A(35,36)=b(4,2);A(35,41)=d(4,2);for i=36:39A(i,i-9)=c(4,i-33);A(i,i-1)=a(4,i-33);A(i,i)=e(4,i-33);A(i,i+1)=b(4,i-33);A(i,i+6)=d(4,i-33);endA(40,31)=c(4,7);A(40,39)=a(4,7);A(40,40)=e(4,7)+b(4,7);A(40,46)=d(4,7);%第3行A(41,35)=c(3,2);A(41,41)=e(3,2)+a(3,2);A(41,42)=b(3,2);A(41,47)=d(3,2);for i=42:45A(i,i-6)=c(3,i-39);A(i,i-1)=a(3,i-39);A(i,i)=e(3,i-39);A(i,i+1)=b(3,i-39);A(i,i+6)=d(3,i-39);endA(46,40)=c(3,7);A(46,45)=a(3,7);A(46,46)=e(3,7)+b(3,7);A(46,52)=d(3,7);%第2行A(47,41)=c(2,2);A(47,47)=e(2,2)+a(2,2)+d(2,2); A(47,48)=b(2,2);for i=48:51A(i,i-6)=c(2,i-45);A(i,i-1)=a(2,i-45);A(i,i)=e(2,i-45)+d(2,i-45);A(i,i+1)=b(2,i-45);endA(52,46)=c(2,7);A(52,51)=a(2,7);A(52,52)=e(2,7)+b(2,7)+d(2,7);% 循环次数tntn=0;while(tn<n)%右端项BB=-p;%第9行B(1)=B(1)-c(9,6)*Pini-a(9,6)*Pini;for i=2:5B(i)=B(i)-c(9,i+5)*Pini;end%第8行B(6)=B(6)-a(8,6)*Pini;%第7行B(11)=B(11)-c(7,5)*Pini-a(7,5)*Pini;%第6行for i=17:19B(i)=B(i)-c(6,i-15)*Pini;end%w2井定井底流压生产B(24)=B(24)-(3600e-9)*2*pi*K(6,9)*dt/u/C/Fai(6,9)/dx/dy/log(re/rw)*Pwf2; %W1井定产生产B(44)=B(44)+dt*Q1/24/C/Fai(3,5)/H(3,5)/dx/dy;%计算未知量压力p1p1=A\B;%稳定条件压力变化最大值小于0.000001if max(abs(p1-p))<0.000001break;endp=p1;tn=tn+1;end%将迭代时间换算为天d=tn*dt/24;%将计算出的压力写入地层压力PP(9,6:10)=p(1:5);P(8,6:10)=p(6:10);P(7,5:10)=p(11:16);P(6,2:10)=p(17:25);P(5,2:10)=p(26:34);P(4,2:7)=p(35:40);P(3,2:7)=p(41:46);P(2,2:7)=p(47:52);%计算W1井底流压。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档