ЭТОТ ПЭЙДЖ ОПИСЫВАЕТ УСТАРЕВШИЙ РАБОЧИЙ ПРОЦЕСС. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. Для соответствующего шага в рекомендуемом рабочем процессе смотрите, Задают Граничные условия.
Матрица Граничного условия создается внутренне в приложении PDE Modeler (на самом деле функция, вызванная приложением PDE Modeler), и затем использовала от функционального assemb для сборки вкладов от контура до матриц Q, G, H и R. Матрица Граничного условия может также быть сохранена как массив данных граничных условий для дальнейшего использования с Граничными условиями путем Записи Функций.
Для каждого столбца в Анализируемой матрице Геометрии (см. Анализируемую Структуру данных Геометрии) в матрице Граничного условия должен быть соответствующий столбец. Формат каждого столбца:
Строка каждый содержит размерность N системы.
Строка два содержит номер M граничных условий Дирихле.
Строка три к 3 + N 2 – 1 содержит длины для векторов символов, представляющих q. Длины хранятся в постолбцовом порядке относительно q.
Строка 3 + N 2 - 3 + N 2 +N – 1 содержит длины для векторов символов, представляющих g.
Строка 3 + N 2 + N к 3 + N 2 + N + MN – 1 содержит длины для векторов символов, представляющих h. Длины хранятся в постолбцовом порядке относительно h.
Строка 3 + N 2 + N + MN к 3 + N 2 + N + MN + M – 1 содержит длины для векторов символов, представляющих r.
Следующие строки содержат текстовые выражения, представляющие фактические функции граничного условия. Векторы символов имеют длины согласно вышеупомянутому. Текстовые выражения MATLAB® хранятся в постолбцовом порядке относительно матриц h и q. Нет никаких разделительных символов между векторами символов. Можно вставить выражения MATLAB, содержащие следующие переменные:
2D координаты x и y.
Граничный параметр сегмента s, пропорциональный длине дуги. s 0 в начале граничного сегмента и увеличивается до 1 вдоль граничного сегмента в показанном стрелкой направлении.
Исходящие компоненты вектора нормали nx и ny. Если вам нужен тангенциальный вектор, он может быть выражен с помощью nx и ny начиная с tx = –ny и ty = nx.
u решения (только если входной параметр u был задан).
t времени (только если входной параметр time был задан).
Не возможно явным образом относиться к производной времени решения в граничных условиях.
Следующие примеры описывают формат матрицы граничного условия для одного столбца Анализируемой матрицы Геометрии. Для контура в скалярном УЧП (N = 1) с Неймановым граничным условием (M = 0)
граничное условие было бы представлено вектор-столбцом
[1 0 1 5 '0' '-x.^2']'
Никакие длины не хранятся для h или r.
Также для скалярного УЧП, граничного условия Дирихле
u = x 2 – y 2
хранится в вектор-столбце
[1 1 1 1 1 9 '0' '0' '1' 'x.^2-y.^2']'
Для системы (N = 2) со смешанными граничными условиями (M = 1):
столбец кажется подобным следующему примеру:
2 1 lq11 lq21 lq12 lq22 lg1 lg2 lh11 lh12 lr1 q11 ... q21 ... q12 ... q22 ... g1 ... g2 ... h11 ... h12 ... r1 ...
lq11, lq21... обозначьте продолжительности текстовых выражений MATLAB, и q11, q21... обозначьте фактические выражения.
Можно легко создать собственные примеры путем испытания приложения PDE Modeler. Введите граничные условия путем двойного клика на контурах в граничном режиме, и затем экспортируйте матрицу Граничного условия в рабочее пространство MATLAB путем выбора опции Export Decomposed Geometry, Boundary Cond's из меню Boundary.
Следующий пример показывает вам, как создать матрицы граничного условия для граничного условия Дирихле на контуре кругового диска.
Создайте следующую функцию в своей рабочей папке:
function [x,y] = circ_geom(bs,s)
%CIRC_GEOM Creates a geometry file for a unit circle.
% Number of boundary segments
nbs = 4;
if nargin == 0 % Number of boundary segments
x = nbs;
elseif nargin == 1 % Create 4 boundary segments
dl = [0 pi/2 pi 3*pi/2
pi/2 pi 3*pi/2 2*pi
1 1 1 1
0 0 0 0];
x = dl(:,bs);
else % Coordinates of edge segment points
z = exp(i*s);
x = real(z);
y = imag(z);
endСоздайте вторую функцию в своей рабочей папке, которая находит матрицы граничного условия, Q, G, H и R:
function assemb_example
% Use ASSEMB to find the boundary condition matrices.
% Describe the geometry using four boundary segments
figure(1)
pdegplot('circ_geom')
axis equal
% Initialize the mesh
[p,e,t] = initmesh('circ_geom','Hmax',0.4);
figure(2)
% Plot the mesh
pdemesh(p,e,t)
axis equal
% Define the boundary condition vector, b,
% for the boundary condition u = x^2-y^2.
% For each boundary segment, the boundary
% condition vector is
b = [1 1 1 1 1 9 '0' '0' '1' 'x.^2-y.^2']';
% Create a boundary condition matrix that
% represents all of the boundary segments.
b = repmat(b,1,4);
% Use ASSEMB to find the boundary condition
% matrices. Since there are only Dirichlet
% boundary conditions, Q and G are empty.
[Q,G,H,R] = assemb(b,p,e)Запустите функциональный assemb_example.m.
Функция возвращает четыре матрицы граничного условия.
Q = All zero sparse: 41-by-41 G = All zero sparse: 41-by-1 H = (1,1) 1 (2,2) 1 (3,3) 1 (4,4) 1 (5,5) 1 (6,6) 1 (7,7) 1 (8,8) 1 (9,9) 1 (10,10) 1 (11,11) 1 (12,12) 1 (13,13) 1 (14,14) 1 (15,15) 1 (16,16) 1 R = (1,1) 1.0000 (2,1) -1.0000 (3,1) 1.0000 (4,1) -1.0000 (5,1) 0.0000 (6,1) -0.0000 (7,1) 0.0000 (8,1) -0.0000 (9,1) 0.7071 (10,1) -0.7071 (11,1) -0.7071 (12,1) 0.7071 (13,1) 0.7071 (14,1) -0.7071 (15,1) -0.7071 (16,1) 0.7071
Q и G являются всеми нулевыми разреженными матрицами, потому что проблема имеет только граничные условия Дирихле и не обобщила Неймана и не смешалась, граничные условия применяются.