exponenta event banner

applyBoundaryCondition

Добавить граничное условие к PDEModel контейнер

Описание

пример

applyBoundaryCondition(model,'dirichlet',RegionType,RegionID,Name,Value) добавляет граничное условие Дирихле к model. Граничное условие применяется к граничным областям типа RegionType с идентификационными номерами в RegionIDи с аргументами r, h, u, EquationIndex указано в Name,Value пар. Для граничных условий Дирихле укажите оба аргумента r и hили аргумент u. При указании u, вы также можете использовать EquationIndex.

пример

applyBoundaryCondition(model,'neumann',RegionType,RegionID,Name,Value) добавляет граничное условие Неймана к model. Граничное условие применяется к граничным областям типа RegionType с идентификационными номерами в RegionIDи со значениями g и q указано в Name,Value пар.

пример

applyBoundaryCondition(model,'mixed',RegionType,RegionID,Name,Value) добавляет отдельное граничное условие для каждого уравнения в системе PDE. Граничное условие применяется к граничным областям типа RegionType с идентификационными номерами в RegionIDи со значениями, указанными в Name,Value пар. Для смешанных граничных условий можно использовать Name,Value пары из граничных условий Дирихле и Неймана по мере необходимости.

bc = applyBoundaryCondition(___) возвращает объект граничного условия.

Примеры

свернуть все

Создайте модель и геометрию PDE.

model = createpde(1);
R1 = [3,4,-1,1,1,-1,-.4,-.4,.4,.4]';
g = decsg(R1);
geometryFromEdges(model,g);

Просмотрите метки кромок.

pdegplot(model,'EdgeLabels','on')
xlim([-1.2,1.2])
axis equal

Figure contains an axes. The axes contains 5 objects of type line, text.

Примените нулевое условие Дирихле к кромке 1.

applyBoundaryCondition(model,'dirichlet','Edge',1,'u',0);

На других ребрах примените условие Dirichlet h*u = r, где h = 1 и r = 1.

applyBoundaryCondition(model,'dirichlet','Edge',2:4,'r',1,'h',1);

Создайте модель и геометрию PDE.

model = createpde(2);
R1 = [3,4,-1,1,1,-1,-.4,-.4,.4,.4]';
g = decsg(R1);
geometryFromEdges(model,g);

Просмотрите метки кромок.

pdegplot(model,'EdgeLabels','on')
xlim([-1.2,1.2])
axis equal

Figure contains an axes. The axes contains 5 objects of type line, text.

Примените следующие граничные условия Неймана к кромке 4.

applyBoundaryCondition(model,'neumann','Edge',4,'g',[0;.123],'q',[0;0;0;0]);

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

model = createpde;
importGeometry(model,'Block.stl');

Просмотр меток граней.

pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Задайте нулевые условия Дирихле на узких гранях с меткой от 1 до 4.

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

Задайте граничные условия Неймана с противоположными знаками на гранях 5 и 6.

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

Решите эллиптический PDE с этими граничными условиями и постройте график результата.

specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',0);
generateMesh(model);
results = solvepde(model);
u = results.NodalSolution;
pdeplot3D(model,'ColorMapData',u)

Создайте модель PDE и импортируйте простую геометрию блока.

model = createpde(3);
importGeometry(model,'Block.stl');

Просмотр меток граней.

pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Задайте нулевые условия Дирихле для граней 1 и 2.

applyBoundaryCondition(model,'dirichlet','Face',1:2,'u',[0,0,0]);

Задайте граничные условия Неймана с противоположными знаками на гранях 4, 5 и 6.

applyBoundaryCondition(model,'neumann','Face',4:5,'g',[1;1;1]);
applyBoundaryCondition(model,'neumann','Face',6,'g',[-1;-1;-1]);

Для грани 3 примените обобщенное граничное условие Неймана для первого уравнения и граничные условия Дирихле для второго и третьего уравнений.

h = [0 0 0;0 1 0;0 0 1];
r = [0;3;3];
q = [1 0 0;0 0 0;0 0 0];
g = [10;0;0];
applyBoundaryCondition(model,'mixed','Face',3,'h',h,'r',r,'g',g,'q',q);

Решите эллиптический PDE с этими граничными условиями и постройте график результата.

specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',[0;0;0]);
generateMesh(model);
results = solvepde(model);
u = results.NodalSolution;
pdeplot3D(model,'ColorMapData',u(:,1))

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

свернуть все

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

Пример: model = createpde

Тип геометрической области, указанный как 'Face' для 3-D геометрии или 'Edge' для 2-D геометрии.

Пример: applyBoundaryCondition(model,'dirichlet','Face',3,'u',0)

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

Идентификатор геометрической области, заданный как вектор положительных целых чисел. Поиск идентификаторов регионов с помощью pdegplot с 'FaceLabels' (3-D) или 'EdgeLabels' (2-й) набор значений к'on'.

Пример: applyBoundaryCondition(model,'dirichlet','Face',3:6,'u',0)

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

Аргументы пары «имя-значение»

Пример: applyBoundaryCondition(model,'dirichlet','Face',1:4,'u',0)

Состояние Дирихле h*u = r, заданный как вектор с N элементами или дескриптором функции. N - количество PDE в системе. Для синтаксиса формы дескриптора функции r, см. некондиционные граничные условия.

Пример: 'r',[0;4;-1]

Типы данных: double | function_handle
Поддержка комплексного номера: Да

Состояние Дирихле h*u = r, задается как матрица N-на-N, вектор с N ^ 2 элементами или дескриптор функции. N - количество PDE в системе. Для синтаксиса формы дескриптора функции h, см. некондиционные граничные условия.

Пример: 'h',[2,1;1,2]

Типы данных: double | function_handle
Поддержка комплексного номера: Да

Обобщённое состояние Неймана n·(c×u) + qu = g, заданный как вектор с N элементами или дескриптором функции. N - количество PDE в системе. Для скалярных PDE обобщенным условием Неймана является n·(cu) + qu = g. Для синтаксиса формы дескриптора функции g, см. некондиционные граничные условия.

Пример: 'g',[3;2;-1]

Типы данных: double | function_handle
Поддержка комплексного номера: Да

Обобщённое состояние Неймана n·(c×u) + qu = g, указанный как матрица N-на-N, вектор с N^2 элементы или дескриптор функции. N - количество PDE в системе. Для синтаксиса формы дескриптора функции q, см. некондиционные граничные условия.

Пример: 'q',eye(3)

Типы данных: double | function_handle
Поддержка комплексного номера: Да

Дирихлетовые условия, заданные как вектор до N элементов или как дескриптор функции. Если u имеет менее N элементов, то необходимо также использовать EquationIndex. u и EquationIndex аргументы должны иметь одинаковую длину. Если u имеет N элементов, затем задание EquationIndex является необязательным.

Для синтаксиса формы дескриптора функции u, см. некондиционные граничные условия.

Пример: applyBoundaryCondition(model,'dirichlet','Face',[2,4,11],'u',0)

Типы данных: double
Поддержка комплексного номера: Да

Индекс известного u компоненты, указанные как вектор целых чисел с записями из 1 к N. EquationIndex и u должна иметь одинаковую длину.

При использовании EquationIndex чтобы задать граничные условия Dirichlet для подмножества компонентов, используйте mixed аргумент вместо dirichlet. Остальные компоненты удовлетворяют граничному условию Неймана по умолчанию с нулевыми значениями для 'g' и 'q'.

Пример: applyBoundaryCondition(model,'mixed','Face',[2,4,11],'u',[3,-1],'EquationIndex',[2,3])

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

Оценка векторизованной функции, указанная как 'on' или 'off'. Эта оценка применяется при передаче дескриптора функции в качестве аргумента. Для экономии времени при оценке дескриптора функции укажите 'on', предполагая, что дескриптор функции вычисляется векторизированным образом. См. раздел Векторизация. Дополнительные сведения об этой оценке см. в разделе Некондиционные граничные условия.

Пример: applyBoundaryCondition(model,'dirichlet','Face',[2,4,11],'u',@ucalculator,'Vectorized','on')

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

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

свернуть все

Граничное условие, возвращаемое как объект «Свойства граничного условия». model объект содержит вектор BoundaryCondition объекты. bc является последним элементом этого вектора.

Совет

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

  • Чтобы избежать назначения граничных условий неправильной области, убедитесь, что используются правильные идентификаторы геометрических областей путем печати и визуального осмотра геометрии.

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

Представлен в R2015a