exponenta event banner

Задание граничных условий

Перед созданием граничных условий необходимо создать PDEModel контейнер. Дополнительные сведения см. в разделе Решение проблем с помощью объектов PDEModel. Предположим, что у вас есть контейнер с именем modelи что геометрия хранится в model. Проверьте геометрию, чтобы увидеть метку каждой кромки или грани.

pdegplot(model,'EdgeLabels','on') % for 2-D
pdegplot(model,'FaceLabels','on') % for 3-D

Теперь можно задать граничные условия для каждой кромки или грани. При наличии системы PDE можно задать различные граничные условия для каждого компонента на каждой граничной кромке или грани.

Если граничное условие для кромки или грани не задано, по умолчанию используется граничное условие Неймана с нулевыми значениями для 'g' и 'q'.

Если граничное условие является функцией положения, времени или решения u, задайте граничные условия, используя синтаксис в разделе Некондиционные граничные условия.

Граничные условия Дирихле

Скалярные PDE

Граничное условие Дирихле подразумевает, что решение u на конкретном ребре или грани удовлетворяет уравнению

hu = r,

где h и r - функции, определенные на ∂Ω, и могут быть функциями пространства (x, y и, в 3-D, z), решения u и, для зависящих от времени уравнений, времени. Часто вы берете h = 1 и устанавливаете r в соответствующее значение. В качестве значения решения можно задать граничные условия Дирихле u на границе или как пара параметров h и r.

Предположим, что у вас есть модель PDE с именем model, и кромки или грани [e1,e2,e3], где решение u должно быть равным 2. Задайте это граничное условие следующим образом.

% For 3-D geometry:
applyBoundaryCondition(model,'dirichlet','Face',[e1,e2,e3],'u',2);
% For 2-D geometry:
applyBoundaryCondition(model,'dirichlet','Edge',[e1,e2,e3],'u',2);

Если решение на кромках или гранях [e1,e2,e3] удовлетворяет уравнению 2u = 3, задайте граничное условие следующим образом.

% For 3-D geometry:
applyBoundaryCondition(model,'dirichlet','Face',[e1,e2,e3],'r',3,'h',2);
% For 2-D geometry:
applyBoundaryCondition(model,'dirichlet','Edge',[e1,e2,e3],'r',3,'h',2);
  • Если не указать 'r', applyBoundaryCondition устанавливает его значение как 0.

  • Если не указать 'h', applyBoundaryCondition устанавливает его значение как 1.

Системы ПДЭ

Граничным условием Дирихле для системы PDE является hu = r, где h - матрица, u - вектор решения, r - вектор.

Предположим, что у вас есть модель PDE с именем modelи метки кромок или граней [e1,e2,e3] где первый компонент решения u должен быть равен 1, в то время как второй и третий компоненты должны быть равны 2. Задайте это граничное условие следующим образом.

% For 3-D geometry:
applyBoundaryCondition(model,'dirichlet','Face',[e1,e2,e3],...
                       'u',[1,2,2],'EquationIndex',[1,2,3]);
% For 2-D geometry:
applyBoundaryCondition(model,'dirichlet','Edge',[e1,e2,e3],...
                       'u',[1,2,2],'EquationIndex',[1,2,3]);
  • 'u' и 'EquationIndex' аргументы должны иметь одинаковую длину.

  • Если исключить 'EquationIndex' аргумент, 'u' аргумент должен иметь длину N.

  • Если исключить 'u' аргумент, applyBoundaryCondition устанавливает компоненты в 'EquationIndex' кому 0.

Предположим, что у вас есть модель PDE с именем modelи метки кромок или граней [e1,e2,e3] где первая, вторая и третья компоненты решения u должны удовлетворять уравнениям 2u1 = 3, 4u2 = 5 и 6u3 = 7 соответственно. Задайте это граничное условие следующим образом.

H0 = [2 0 0;
      0 4 0;
      0 0 6];
R0 = [3;5;7];
% For 3-D geometry:
applyBoundaryCondition(model,'dirichlet', ...
                             'Face',[e1,e2,e3], ...
                             'h',H0,'r',R0);
% For 2-D geometry:
applyBoundaryCondition(model,'dirichlet', ...
                             'Edge',[e1,e2,e3], ...
                             'h',H0,'r',R0);
  • 'r' параметр должен быть числовым вектором длины N. Если не указан 'r', applyBoundaryCondition устанавливает значения как 0.

  • 'h' параметр может быть числовой матрицей N-на-N или вектором длины N2, соответствующим форме линейного индексирования матрицы N-на-N. Дополнительные сведения о форме линейного индексирования см. в разделе Индексирование массива. Если не указать 'h', applyBoundaryCondition устанавливает значение для единичной матрицы.

Граничные условия Неймана

Скалярные PDE

Обобщенные граничные условия Неймана подразумевают, что решение u на ребре или грани удовлетворяет уравнению

n · (c∇u) +qu=g

Коэффициент c совпадает с коэффициентом дифференциального оператора второго порядка в уравнении PDE

−∇⋅ (c∇u) +  au = f в домене Λ

n→ - нормальный внешний блок. q и g являются функциями, определенными на ∂Ω, и могут быть функциями пространства (x, y и, в 3-D, z), решения u и, для зависящих от времени уравнений, времени.

Предположим, что у вас есть модель PDE с именем model, и кромки или грани [e1,e2,e3] где решение u должно удовлетворять граничному условию Неймана с q = 2 и g = 3. Задайте это граничное условие следующим образом.

% For 3-D geometry:
applyBoundaryCondition(model,'neumann','Face',[e1,e2,e3],'q',2,'g',3);
% For 2-D geometry:
applyBoundaryCondition(model,'neumann','Edge',[e1,e2,e3],'q',2,'g',3);
  • Если не указать 'g', applyBoundaryCondition устанавливает его значение как 0.

  • Если не указать 'q', applyBoundaryCondition устанавливает его значение как 0.

Системы ПДЭ

Граничные условия Неймана для системы ПДЭ равны n· (c⊗∇u) + Для 2-D систем обозначение n· (c⊗∇u) означает вектор N-by-1 с (i, 1) -компонентом

∑j=1N (cos (α) ci,j,1,1∂∂x+cos (α) ci,j,1,2∂∂y+sin (α) ci,j,2,1∂∂x+sin (α) ci,j,2,2∂∂y) uj

где вектор внешней нормали границы n = (cos (α), sin (α)).

Для 3-D систем обозначение n· (c⊗∇u) означает вектор N-by-1 с (i, 1) -компонентом

∑j=1N (грех (φ), потому что (θ) ci, j, 1,1 ∂∂ x+sin (φ), потому что (θ) ci, j, 1,2 ∂∂ y+sin (φ), потому что (θ) ci, j, 1,3 ∂∂ z) uj + ∑ j=1N (грех (φ) грех (θ) ci, j, 2,1 ∂∂ x+sin (φ) грех (θ) ci, j, 2,2 ∂∂ y+sin (φ) грех (θ) ci, j, 2,3 ∂∂ z) uj + j=1N (cos (θ) ci, j, 3,1 ∂∂ x+cos (θ) ci, j, 3,2 ∂∂ y+cos (θ) ci, j, 3,3 ∂∂ z) uj

где внешний нормальный вектор границы n = (грех (φ), потому что (θ), грех (φ) грех (θ), потому что (φ)). Для каждой кромки или сегмента грани имеется в общей сложности N граничных условий.

Предположим, что у вас есть модель PDE с именем model, и кромки или грани [e1,e2,e3] где первый компонент решения u должен удовлетворять граничному условию Неймана с q = 2 и g = 3, и второй компонент должен удовлетворять граничному условию Неймана с q = 4 и g = 5. Задайте это граничное условие следующим образом.

Q = [2 0; 0 4];
G = [3;5];
% For 3-D geometry:
applyBoundaryCondition(model,'neumann','Face',[e1,e2,e3],'q',Q,'g',G);
% For 2-D geometry:
applyBoundaryCondition(model,'neumann','Edge',[e1,e2,e3],'q',Q,'g',G);
  • 'g' параметр должен быть числовым вектором длины N. Если не указан 'g', applyBoundaryCondition устанавливает значения как 0.

  • 'q' параметр может быть числовой матрицей N-на-N или вектором длины N2, соответствующим форме линейного индексирования матрицы N-на-N. Дополнительные сведения о форме линейного индексирования см. в разделе Индексирование массива. Если не указать 'q', applyBoundaryCondition устанавливает значения как 0.

Смешанные граничные условия

Если некоторые уравнения в вашей системе PDE должны удовлетворять граничному условию Дирихле, а некоторые должны удовлетворять граничному условию Неймана для той же геометрической области, используйте 'mixed' для применения граничных условий в одном вызове. Обратите внимание, что applyBoundaryCondition использует граничное условие Неймана по умолчанию с g = 0 и q = 0 для уравнений, для которых явно не задано граничное условие.

Предположим, что у вас есть модель PDE с именем modelи метки кромок или граней [e1,e2,e3] где первый компонент решения u должен быть равен 11, второй компонент должен быть равен 22, и третий компонент должен удовлетворять граничному условию Неймана с q = 3 и g = 4. Выразите это граничное условие следующим образом.

Q = [0 0 0; 0 0 0; 0 0 3];
G = [0;0;4];
% For 3-D geometry:
applyBoundaryCondition(model,'mixed','Face',[e1,e2,e3],...
                       'u',[11,22],'EquationIndex',[1,2],...
                       'q',Q,'g',G);
% For 2-D geometry:
applyBoundaryCondition(model,'mixed',...
                             'Edge',[e1,e2,e3],'u',[11,22],...
                             'EquationIndex',[1,2],'q',Q,'g',G);

Предположим, что у вас есть модель PDE с именем model, и кромки или грани [e1,e2,e3] где первый компонент решения u должен удовлетворять граничному условию Дирихле 2u1 = 3, второй компонент должен удовлетворять граничному условию Неймана с q = 4 и g = 5, и третий компонент должен удовлетворять граничному условию Неймана с q = 6 и g = 7. Выразите это граничное условие следующим образом.

h = [2 0 0; 0 0 0; 0 0 0];
r = [3;0;0];
Q = [0 0 0; 0 4 0; 0 0 6];
G = [0;5;7];
% For 3-D geometry:
applyBoundaryCondition(model,'mixed', ...
                             'Face',[e1,e2,e3], ...
                             'h',h,'r',r,'q',Q,'g',G);
% For 2-D geometry:
applyBoundaryCondition(model,'mixed', ...
                             'Edge',[e1,e2,e3], ...
                             'h',h,'r',r,'q',Q,'g',G);

Некондиционные граничные условия

Используйте функции для выражения непостоянных граничных условий.

applyBoundaryCondition(model,'dirichlet', ...
                             'Edge',1, ...
                             'r',@myrfun);
applyBoundaryCondition(model,'neumann', ...
                             'Face',2, ...
                             'g',@mygfun,'q',@myqfun);
applyBoundaryCondition(model,'mixed', ...
                             'Edge',[3,4], ...
                             'u',@myufun, ...
                             'EquationIndex',[2,3]);

Каждая функция должна иметь следующий синтаксис.

function bcMatrix = myfun(location,state)

Дифференциальное уравнение в частных производных Toolbox™ решатели пропускают location и state данные для вашей функции.

  • location - структура, содержащая следующие поля. При передаче пары имя-значение applyBoundaryCondition с Vectorized установить в значение 'on', то location может содержать несколько точек оценки. Если не установлен Vectorized или использовать Vectorized,'off'затем решатели пропускают только одну точку оценки в каждом вызове.

    • location.x - координата X точки или точек;

    • location.y - координата Y точки или точек;

    • location.z - для 3-D геометрии координата z точки или точек

    Кроме того, если есть условия Неймана, то решатели передают следующие данные в location структура.

    • location.nx - x-компонент вектора нормали в точке оценки или точках

    • location.ny - y-компонент вектора нормали в точке оценки или точках

    • location.nz - для 3-D геометрии Z-компонент вектора нормали в точке вычисления или точках

  • state - Для переходных или нелинейных проблем.

    • state.u содержит вектор решения в точках вычисления. state.u - матрица N-на-М, где каждый столбец соответствует одной точке оценки, а М - количество точек оценки.

    • state.time содержит время в точках оценки. state.time является скаляром.

Функция возвращается bcMatrix. Эта матрица имеет следующую форму в зависимости от типа граничного условия.

  • 'u' - матрица N1-by-M, где каждый столбец соответствует одной точке оценки, а М - количество точек оценки. N1 - длина 'EquationIndex' аргумент. Если нет 'EquationIndex' аргумент, то N1 = N.

  • 'r' или 'g' - матрица N-на-М, где каждый столбец соответствует одной точке оценки, а М - количество точек оценки.

  • 'h' или 'q' - матрица N2-by-M, где каждый столбец соответствует одной точке оценки посредством линейного индексирования базовой матрицы N-на-N, а М - количество точек оценки. Альтернативно, массив N-на-N-на-М, где каждая точка оценки является матрицей N-на-N. Дополнительные сведения о линейном индексировании см. в разделе Индексирование массива.

Если граничные условия зависят от state.u или state.time, убедитесь, что функция возвращает матрицу NaN правильного размера при state.u или state.time являются NaN. Решатели проверяют, является ли проблема нелинейной или зависящей от времени, проходя NaN значения состояния и поиск возвращенных NaN значения.

См. раздел Решение PDE с некондиционными граничными условиями.