Модель PDE хранит коэффициенты в своей EquationCoefficients
свойство. Предположим model
- имя вашей модели. Получите коэффициенты:
coeffs = model.EquationCoefficients;
Чтобы увидеть назначение активных коэффициентов для области, вызовите findCoefficients
функция. Для примера создайте модель и просмотрите геометрию.
model = createpde(); geometryFromEdges(model,@lshapeg); pdegplot(model,'FaceLabels','on') ylim([-1.1,1.1]) axis equal
Задайте постоянные коэффициенты по всем областям в модели.
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.