View, Edit, and Delete PDE Coefficients
View Coefficients
A PDE model stores coefficients in its EquationCoefficients
property. Suppose model
is the name of your model. Obtain the coefficients:
coeffs = model.EquationCoefficients;
To see the active coefficient assignment for a region, call the findCoefficients
function. For example, create a model and view the geometry.
model = createpde(); geometryFromEdges(model,@lshapeg); pdegplot(model,FaceLabels="on") ylim([-1.1,1.1]) axis equal
Specify constant coefficients over all the regions in the model.
specifyCoefficients(model,m=0,d=0,c=1,a=0,f=2);
Specify a different f
coefficient on each subregion.
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);
Change the specification to have nonzero a
on region 2.
specifyCoefficients(model,m=0,d=0,c=1,a=1,f=3,Face=2);
View the coefficient assignment for region 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
This shows the "last assignment wins" characteristic.
View the coefficient assignment for region 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
The active coefficient assignment for region 1 includes all three regions, though this assignment is no longer active for regions 2 and 3.
Delete Existing Coefficients
To delete all the coefficients in your PDE model, use delete
.
Suppose model
is the name of your model. Remove all coefficients from
model
.
delete(model.EquationCoefficients)
To delete specific coefficient assignments, delete them from the
model.EquationCoefficients.CoefficientAssignments
vector.
coefv = model.EquationCoefficients.CoefficientAssignments; delete(coefv(2))
Tip
You do not need to delete coefficients; you can override them by calling
specifyCoefficients
again. However, deleting unused
assignments can make your model smaller.
Change a Coefficient Assignment
To change a coefficient assignment, you need the coefficient handle. To get the coefficient handle:
Retain the handle when using
specifyCoefficients
. For example,coefh1 = specifyCoefficients(model,m=m,d=d,c=c,a=a,f=f);
Obtain the handle using
findCoefficients
. For example,coeffs = model.EquationCoefficients; coefh1 = findCoefficients(coeffs,Face=2);
You can change any property of the coefficient handle. For example,
coefh1.RegionID = [1,3]; coefh1.a = 2; coefh1.c = @ccoeffun;
Note
Editing an existing assignment in this way does not change its priority. For
example, if the active coefficient in region 3 was assigned after
coefh1
, then editing coefh1
to include
region 3 does not make coefh1
the active coefficient in region
3.