exponenta event banner

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

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

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

Связанные темы