exponenta event banner

Просмотр, редактирование и удаление коэффициентов PDE

Просмотреть коэффициенты

Модель PDE хранит коэффициенты в своей EquationCoefficients собственность. Предположим model - имя модели. Получить коэффициенты:

coeffs = model.EquationCoefficients;

Для просмотра назначения активного коэффициента для региона вызовите findCoefficients функция. Например, создайте модель и просмотрите геометрию.

model = createpde();
geometryFromEdges(model,@lshapeg);
pdegplot(model,'FaceLabels','on')
ylim([-1.1,1.1])
axis equal

Figure contains an axes. The axes contains 4 objects of type line, text.

Задайте постоянные коэффициенты для всех областей модели.

specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',2);

Укажите другое f коэффициент для каждого субрегиона.

specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',3,'Face',2);
specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',4,'Face',3);

Изменение спецификации на ненулевую a на область 2.

specifyCoefficients(model,'m',0,'d',0,'c',1,'a',1,'f',3,'Face',2);

Просмотрите назначение коэффициентов для области 2.

coeffs = model.EquationCoefficients;
findCoefficients(coeffs,'Face',2)
ans = 
  CoefficientAssignment with properties:

    RegionType: 'face'
      RegionID: 2
             m: 0
             d: 0
             c: 1
             a: 1
             f: 3

Здесь отображается признак «last assignment wins».

Просмотрите назначение коэффициентов для области 1.

findCoefficients(coeffs,'Face',1)
ans = 
  CoefficientAssignment with properties:

    RegionType: 'face'
      RegionID: [1 2 3]
             m: 0
             d: 0
             c: 1
             a: 0
             f: 2

Назначение активного коэффициента для области 1 включает в себя все три области, хотя это назначение больше не активно для областей 2 и 3.

Удалить существующие коэффициенты

Чтобы удалить все коэффициенты в модели PDE, используйте delete. Предположим model - имя модели. Удалить все коэффициенты из model.

delete(model.EquationCoefficients)

Чтобы удалить определенные назначения коэффициентов, удалите их из model.EquationCoefficients.CoefficientAssignments вектор.

coefv = model.EquationCoefficients.CoefficientAssignments;
delete(coefv(2))

Совет

Удалять коэффициенты не требуется; их можно переопределить, позвонив по телефону specifyCoefficients снова. Однако удаление неиспользуемых назначений может уменьшить размер модели.

Изменение назначения коэффициентов

Для изменения назначения коэффициента требуется дескриптор коэффициента. Чтобы получить дескриптор коэффициента:

  • Сохранить дескриптор при использовании specifyCoefficients. Например,

    coefh1 = specifyCoefficients(model,'m',m,'d',d,'c',c,'a',a,'f',f);
  • Получить дескриптор с помощью findCoefficients. Например,

    coeffs = model.EquationCoefficients;
    coefh1 = findCoefficients(coeffs,'face',2);

Можно изменить любое свойство дескриптора коэффициента. Например,

coefh1.RegionID = [1,3];
coefh1.a = 2;
coefh1.c = @ccoeffun;

Примечание

Редактирование существующего назначения таким образом не изменяет его приоритет. Например, если активный коэффициент в области 3 был назначен после coefh1, затем редактирование coefh1 включение области 3 не делает coefh1 активный коэффициент в области 3.