有限差分 - 波动方程 - 边界条件和设置

时间:2015-03-12 00:51:47

标签: matlab matrix equation-solving finite-element-analysis

我正在研究一个项目,该项目与使用MATLAB中的中心差分近似以及以下边界条件在二维(x,y,t)数值中求解波动方程有关:

plot

总装配方是:

FDformula

我理解一些边界条件(BC),比如

du / dy = 0,j = m,

BC

但我不确定如何在MATLAB中实现这些边界条件。

朋友给了我这些方程式:

eq

这是我尝试使用MATLAB代码,
但我无法继续前进:

% The wave function
% Explicit 

% Universal boundary conditions for all 3 cases:
% u=0 at t=0
% du/dt=0 at t=0

% Case 1 boundary conditions
% At x=0, u=2sin(2*pi*t/5);
% At y=0, du/dy=0;
% At y=2, du/dy=0;
% At x=5, du/dx=0;
% u=0 and du/dt=0 at t=0;
%-------------------------------------------------------------------------%


% Setting up
clc; clear all; close all;

% length, time, height
L = 5; % [m]
h = 2; % [m]
T = 10; % [s]

% Constants
c_x = 1; % arbitrary 
c_y = 1; % arbitrary

dx = 0.1; % <x> increment
dy = 0.1; % <y> increment
dt = 0.1; % time increment
nx = L/dx + 1; % number of <x> samples
ny = h/dy + 1; % number of <y> samples
nt = T/dt + 1; % number of time samples
t(:,1) = linspace(0, T, nt); 

theta_x = c_x*(dt^2)/(dx^2); 
theta_y = c_y*(dt^2)/(dy^2); 
% theta_x = theta_y
theta = theta_x;
%-------------------------------------------------------------------------%

% The matrix 
U = zeros(nt, nx, ny);

% Setting up the <U> matrix with the boundary conditions - case 1
U(1, :, :) = 0; % U=0 at t=0

for tt=1:nt   % U=2sin(2pi/5*t) at x=0
    for jj=1:ny
        U(tt, 1, jj)=2*sin(2*pi/5.*t(tt));
    end 
end


for it=2:t
    for ix=2:nx-1
        for iy=2:ny-1
            % Boundary conditions

            % General case (internal):
            U1 = -U(it-1, ix, iy);
            U2 = 2*(1-2*theta)*u(it, ix, iy);
            U3 = theta*U(it, ix-1, iy);
            U4 = theta*U(it, ix+1, iy);
            U5 = theta*U(it, ix, iy-1);
            U6 = theta*U(it, ix, iy+1);



        end 
    end 
end 

1 个答案:

答案 0 :(得分:0)

您有一般的装配公式也适用于边界。 复杂的是,当您在j = 1j = m时应用公式时,您的网格中有j = 0j = m+1字词。

为了改善这个问题,边界条件会给出网格和网格上的点之间的关系。

正如您所指出的,dudy = 0条件已经为您提供了u(i,m-1) == u(u,m+1)在边界上的关系。因此,您使用常规汇编公式并将所有m+1项替换为边界上的m-1 。对于下边界,你也会有类似的关系。