exponenta event banner

Граничная матрица для 2D геометрии

Примечание

ЭТОТ ПЭЙДЖ ОПИСЫВАЕТ УСТАРЕВШИЙ РАБОЧИЙ ПРОЦЕСС. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. Для соответствующего шага в рекомендуемом рабочем процессе смотрите, Задают Граничные условия.

Спецификация граничной матрицы

Матрица Граничного условия создается внутренне в приложении 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)

n·(cu)=x2

граничное условие было бы представлено вектор-столбцом

[1 0 1 5 '0' '-x.^2']' 

Никакие длины не хранятся для h или r.

Также для скалярного УЧП, граничного условия Дирихле

u = x 2y 2

хранится в вектор-столбце

[1 1 1 1 1 9 '0' '0' '1' 'x.^2-y.^2']' 

Для системы (N = 2) со смешанными граничными условиями (M = 1):

(h11h12)u=r1n·(cu)+(q11q12q21q22)u=(g1g2)+s

столбец кажется подобным следующему примеру:

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.

Создайте матрицы граничного условия программно

Следующий пример показывает вам, как создать матрицы граничного условия для граничного условия Дирихле u=x2y2 на контуре кругового диска.

  1. Создайте следующую функцию в своей рабочей папке:

    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
  2. Создайте вторую функцию в своей рабочей папке, которая находит матрицы граничного условия, 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)
  3. Запустите функциональный 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 являются всеми нулевыми разреженными матрицами, потому что проблема имеет только граничные условия Дирихле и не обобщила Неймана и не смешалась, граничные условия применяются.

Похожие темы