A PDE model stores boundary conditions in its BoundaryConditions
property. To obtain the boundary conditions stored in the PDE model called model
, use this syntax:
BCs = model.BoundaryConditions;
To see the active boundary condition assignment for a region, call the findBoundaryConditions
function.
For example, create a model and view the geometry.
model = createpde(3); importGeometry(model,'Block.stl'); pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)
Set zero Dirichlet conditions for all equations and all regions in the model.
applyBoundaryCondition(model,'dirichlet','Face',1:6,'u',[0,0,0]);
On face 3, set the Neumann boundary condition for equation 1 and Dirichlet boundary condition for equations 2 and 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);
View the boundary condition assignment for face 3. The result shows that the active boundary condition is the last assignment.
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'
View the boundary conditions assignment for face 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'
The active boundary conditions assignment for face 1 includes all six faces, though this assignment is no longer active for face 3.
To remove all the boundary conditions in the PDE model called pdem
,
use delete
.
delete(pdem.BoundaryConditions)
To remove specific boundary conditions assignments from pdem
,
delete them from the pdem.BoundaryConditions.BoundaryConditionAssignments
vector.
For example,
BCv = pdem.BoundaryConditions.BoundaryConditionAssignments; delete(BCv(2))
Tip
You do not need to delete boundary conditions; you can override
them by calling applyBoundaryCondition
again.
However, removing unused assignments can make your model more concise.
To change a boundary conditions assignment, you need the boundary condition’s handle. To get the boundary condition’s handle:
Retain the handle when using applyBoundaryCondition
.
For example,
bc1 = applyBoundaryCondition(model,'dirichlet', ... 'Face',1:6, ... 'u',[0 0 0]);
Obtain the handle using findBoundaryConditions
.
For example,
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'
You can change any property of the boundary conditions handle. For example,
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'
Note
Editing an existing assignment in this way does not change its
priority. For example, if the active boundary condition was assigned
after bc1
, then editing bc1
does
not make bc1
the active boundary condition.