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

Просмотрите граничные условия

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

Похожие темы