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

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

Модель 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 assignation 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.