Модель PDE сохраняет граничные условия в своей BoundaryConditions
свойство. Чтобы получить граничные условия, хранящиеся в модели PDE, называемые model
, используйте следующий синтаксис:
BCs = model.BoundaryConditions;
Чтобы увидеть назначение активного граничного условия для области, вызовите findBoundaryConditions
функция.
Для примера создайте модель и просмотрите геометрию.
model = createpde(3); importGeometry(model,'Block.stl'); pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)
Установите нулевые условия Дирихле для всех уравнений и всех областей в модели.
applyBoundaryCondition(model,'dirichlet','Face',1:6,'u',[0,0,0]);
На грани 3 установите граничное условие Неймана для уравнения 1 и граничное условие Дирихле для уравнений 2 и 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);
Просмотрите назначение граничных условий для грани 3. Результат показывает, что активное граничное условие является последним назначением.
BCs = model.BoundaryConditions;
findBoundaryConditions(BCs,'Face',3)
ans = BoundaryCondition with properties: BCType: 'mixed' RegionType: 'Face' RegionID: 3 r: [3x1 double] h: [3x3 double] g: [3x1 double] q: [3x3 double] u: [] EquationIndex: [] Vectorized: 'off'
Просмотр назначения граничных условий для грани 1.
findBoundaryConditions(BCs,'Face',1)
ans = BoundaryCondition with properties: BCType: 'dirichlet' RegionType: 'Face' RegionID: [1 2 3 4 5 6] r: [] h: [] g: [] q: [] u: [0 0 0] EquationIndex: [] Vectorized: 'off'
Назначение активных граничных условий для грани 1 включает все шесть граней, хотя это назначение больше не активно для грани 3.
Чтобы удалить все граничные условия в модели PDE, вызываемые pdem
, использование delete
.
delete(pdem.BoundaryConditions)
Удаление определенных назначений граничных условий из pdem
, удалите их из pdem.BoundaryConditions.BoundaryConditionAssignments
вектор. Для примера,
BCv = pdem.BoundaryConditions.BoundaryConditionAssignments; delete(BCv(2))
Совет
Вам не нужно удалять граничные условия; можно переопределить их, позвонив applyBoundaryCondition
снова. Однако удаление неиспользованных назначений может сделать вашу модель более краткой.
Чтобы изменить назначение граничных условий, вам нужен указатель на граничное условие. Чтобы получить указатель на граничное условие:
Сохраните указатель при использовании applyBoundaryCondition
. Для примера,
bc1 = applyBoundaryCondition(model,'dirichlet', ... 'Face',1:6, ... 'u',[0 0 0]);
Получите указатель используя findBoundaryConditions
. Для примера,
BCs = model.BoundaryConditions;
bc1 = findBoundaryConditions(BCs,'Face',2)
bc1 = BoundaryCondition with properties: BCType: 'dirichlet' RegionType: 'Face' RegionID: [1 2 3 4 5 6] r: [] h: [] g: [] q: [] u: [0 0 0] EquationIndex: [] Vectorized: 'off'
Можно изменить любое свойство указателя на граничные условия. Для примера,
bc1.BCType = 'neumann';
bc1.u = [];
bc1.g = [0 0 0];
bc1.q = [0 0 0];
bc1
bc1 = BoundaryCondition with properties: BCType: 'neumann' RegionType: 'Face' RegionID: [1 2 3 4 5 6] r: [] h: [] g: [0 0 0] q: [0 0 0] u: [] EquationIndex: [] Vectorized: 'off'
Примечание
Изменение существующего назначения таким образом не меняет его приоритет. Например, если активное граничное условие было назначено после bc1
, затем редактирование bc1
не делает bc1
активное граничное условие.