Модель 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
активное граничное условие.