Просмотр, редактирование и удаление граничных условий

Просмотр граничных условий

Модель PDE сохраняет граничные условия в своей BoundaryConditions свойство. Чтобы получить граничные условия, хранящиеся в модели PDE, называемые model, используйте следующий синтаксис:

BCs = model.BoundaryConditions;

Чтобы увидеть назначение активного граничного условия для области, вызовите findBoundaryConditions функция.

Для примера создайте модель и просмотрите геометрию.

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.

Установите нулевые условия Дирихле для всех уравнений и всех областей в модели.

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

Похожие темы