exponenta event banner

assemb

(Не рекомендуемый), Собирают вклады граничного условия

assemb не рекомендуется. Используйте assembleFEMatrices вместо этого.

Синтаксис

[Q,G,H,R] = assemb(model)
[Q,G,H,R] = assemb(b,p,e)
[Q,G,H,R] = assemb(___,[],sdl)

Описание

пример

[Q,G,H,R] = assemb(model) собирает матрицы Q и H и векторы G и R. Q должен быть добавлен к системной матрице и содержит вклады от смешанных граничных условий.

пример

[Q,G,H,R] = assemb(b,p,e) собирает матрицы на основе граничных условий, заданных в b и данных о mesh в p и e.

[Q,G,H,R] = assemb(___,[],sdl), для любого из предыдущих входных параметров, ограничивает матрицы конечного элемента теми, которые включают субдомен, заданный метками субдомена в sdl. Пустой аргумент требуется в этом синтаксисе по причинам совместимости и историческому.

Примеры

свернуть все

Соберите матрицы граничного условия для эллиптического УЧП.

УЧП является уравнением Пуассона,

-u=1.

Partial Differential Equation Toolbox™ решает уравнения формы

-(cu)+au=f.

Так, представляйте уравнение Пуассона в синтаксисе тулбокса установкой c = 1, a = 0, и f = 1.

c = 1;
a = 0;
f = 1;

Создайте контейнер модели PDE. Импортируйте файл ForearmLink.stl в модель и исследуйте геометрию.

model = createpde;
importGeometry(model,'Block.stl'); 
h = pdegplot(model,'FaceLabels','on');
h(1).FaceAlpha = 0.5;

Установите нуль граничные условия Дирихле на узких поверхностях (пронумеровал 1 - 4).

applyBoundaryCondition(model,'Face',1:4,'u',0);

Установите Нейманово условие с g =-1 на поверхности 6, и g = 1 на поверхности 5.

applyBoundaryCondition(model,'Face',6,'g',-1);
applyBoundaryCondition(model,'Face',5,'g',1);

Создайте mesh для модели.

generateMesh(model);

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

[Q,G,H,R] = assemb(model);

Матрица H довольно разреженна. Матрица Q не имеет никаких ненулевых записей.

disp(['Fraction of nonzero entries in H is ',num2str(nnz(H)/numel(H))])
Fraction of nonzero entries in H is 7.8796e-05
disp(['Number of nonzero entries in Q is ',num2str(nnz(Q))])
Number of nonzero entries in Q is 0

Соберите матрицы граничного условия для 2D L-образной области с граничными условиями Дирихле, с помощью [p, e, t] представление mesh.

Задайте геометрию и граничные условия с помощью функций, включенных в программное обеспечение.

g = @lshapeg;
b = @lshapeb;

Создайте mesh для геометрии.

[p,e,t] = initmesh(g);

Создайте граничные матрицы.

[Q,G,H,R] = assemb(b,p,e);

Только одна из получившихся матриц является ненулевой, а именно, H. Матрица H довольно разреженна.

disp(['Fraction of nonzero entries in H is ',num2str(nnz(H)/numel(H))])
Fraction of nonzero entries in H is 0.0066667

Входные параметры

свернуть все

Модель PDE, заданная как объект PDEModel.

Пример: model = createpde

Граничные условия, заданные как граничная матрица или массив данных граничных условий. Передайте массив данных граничных условий как указатель на функцию или как имя файла.

Пример: b = 'circleb1', b = "circleb1" или b = @circleb1

Типы данных: double | char | string | function_handle

Поймайте в сети точки, заданные как 2 Np матрицей точек, где Np является числом точек в mesh. Для описания (p, e, t) матрицы, смотрите Данные о Mesh.

Как правило, вы используете p, e и данные t, экспортированные из приложения PDE Modeler или сгенерированные initmesh или refinemesh.

Пример: [p,e,t] = initmesh(gd)

Типы данных: double

Поймайте в сети ребра, заданные как 7-by-Ne матрица ребер, где Ne является количеством ребер в mesh. Для описания (p, e, t) матрицы, смотрите Данные о Mesh.

Как правило, вы используете p, e и данные t, экспортированные из приложения PDE Modeler или сгенерированные initmesh или refinemesh.

Пример: [p,e,t] = initmesh(gd)

Типы данных: double

Метки субдомена, заданные как вектор положительных целых чисел. Для 2D геометрии только. Просмотрите метки субдомена в своей геометрии с помощью команды

pdegplot(g,'SubdomainLabels','on')

Пример: sdl = [1,3:5];

Типы данных: double

Выходные аргументы

свернуть все

Нейманова матрица граничного условия, возвращенная как разреженная матрица. Смотрите Эллиптические уравнения.

Как правило, вы используете Q в последующем вызове решателя, такого как assempde или hyperbolic.

Нейманов вектор граничного условия, возвращенный как разреженный вектор. Смотрите Эллиптические уравнения.

Как правило, вы используете G в последующем вызове решателя, такого как assempde или hyperbolic.

Матрица Дирихле, возвращенная как разреженная матрица. См. Алгоритмы.

Как правило, вы используете H в последующем вызове assempde.

Вектор Дирихле, возвращенный как разреженный вектор. См. Алгоритмы.

Как правило, вы используете R в последующем вызове assempde.

Алгоритмы

Как объяснено в Эллиптических уравнениях, матрицы конечного элемента и векторы соответствуют reduced linear system и следующие.

  • Q является интегралом граничного условия q против основных функций.

  • G является интегралом граничного условия g против основных функций.

  • H является матрицей условия Дирихле представление hu = r.

  • R является вектором условия Дирихле для Hu = R.

Для получения дополнительной информации об уменьшаемой форме линейной системы матриц конечного элемента смотрите раздел assempde Definitions и подход линейной алгебры, детализированный в Системах УЧП.

Смотрите также

Представлено до R2006a