Convert symbolic PDE coefficients to
converts the symbolic objects of the structure
coeffs = pdeCoefficientsToDouble(
double-precision numbers. The output is a structure
coeffs that can then
be used to define the coefficients of a PDE model by calling
specifyCoefficients in Partial Differential Equation Toolbox™.
coeffs contains the coefficients
f for the PDE system with the form
that can be solved in PDE Toolbox. For more information, see Equations You Can Solve Using PDE Toolbox (Partial Differential Equation Toolbox).
Extract Coefficients From a Symbolic PDE
Create a symbolic PDE that represents the Laplacian of the variable
syms u(x,y) f pdeeq = laplacian(u,[x y]) == f
pdeeq(x, y) =
Extract the coefficients of the PDE as symbolic expressions and display their values.
symCoeffs = pdeCoefficients(pdeeq,u,'Symbolic',true); structfun(@disp,symCoeffs)
pdeCoefficients converts the symbolic PDE into a scalar PDE equation of the form
and extract the coefficients
f into the structure
Choose a value for
symCoeffs are symbolic objects, use
pdeCoefficientsToDouble to convert the coefficients to
double data type. The coefficients with
double data type are valid inputs for the
specifyCoefficients function in the PDE Toolbox.
symCoeffs = subs(symCoeffs,f,-3); coeffs = pdeCoefficientsToDouble(symCoeffs)
coeffs = struct with fields: a: 0 c: [4x1 double] m: 0 d: 0 f: -3
System of Several PDEs
Solve a system of two second-order PDEs. You can solve the PDE system by extracting the PDE coefficients symbolically using
pdeCoefficients, converting the coefficients to double-precision numbers using
pdeCoefficientsToDouble, and specifying the coefficients in the PDE model using
The system of PDEs represents the deflection of a clamped structural plate under a uniform pressure load. The system of PDEs with the dependent variables and is given by
where is the bending stiffness of the plate given by
and is the modulus of elasticity, is Poisson's ratio, is the plate thickness, is the transverse deflection of the plate, and is the pressure load.
Create a PDE model for the system of two equations.
model = createpde(2);
Create a square geometry. Specify the side length of the square. Then include the geometry in the PDE model.
len = 10.0; gdm = [3 4 0 len len 0 0 0 len len]'; g = decsg(gdm,'S1',('S1')'); geometryFromEdges(model,g);
Specify the values of the physical parameters of the system. Let the external pressure be a symbolic variable
pres that can take any value.
E = 1.0e6; h_thick = 0.1; nu = 0.3; D = E*h_thick^3/(12*(1 - nu^2)); syms pres
Declare the PDE system as a system symbolic equations. Extract the coefficients of the PDE and return them in symbolic form.
syms u1(x,y) u2(x,y) pdeeq = [-laplacian(u1) + u2; -D*laplacian(u2) - pres]; symCoeffs = pdeCoefficients(pdeeq,[u1 u2],'Symbolic',true)
symCoeffs = struct with fields: m: 0 a: [2x2 sym] c: [4x4 sym] f: [2x1 sym] d: 0
Display the coefficients
Substitute a value for
pres using the
subs function. Since the outputs of
subs are symbolic objects, use the
pdeCoefficientsToDouble function to convert the coefficients to the
double data type, which makes them valid inputs for the PDE Toolbox.
symCoeffs = subs(symCoeffs,pres,2); coeffs = pdeCoefficientsToDouble(symCoeffs)
coeffs = struct with fields: a: [4x1 double] c: [16x1 double] m: 0 d: 0 f: [2x1 double]
Specify the PDE coefficients for the PDE model.
specifyCoefficients(model,'m',coeffs.m,'d',coeffs.d, ... 'c',coeffs.c,'a',coeffs.a,'f',coeffs.f);
Specify spring stiffness. Specify boundary conditions by defining distributed springs on all four edges.
k = 1e7; bOuter = applyBoundaryCondition(model,'neumann','Edge',(1:4), ... 'g',[0 0],'q',[0 0; k 0]);
Specify the mesh size of the geometry and generate a mesh for the PDE model.
hmax = len/20; generateMesh(model,'Hmax',hmax);
Solve the model.
res = solvepde(model);
Access the solution at the nodal locations.
u = res.NodalSolution;
Plot the transverse deflection of the plate.
numNodes = size(model.Mesh.Nodes,2); figure; pdeplot(model,'XYData',u(1:numNodes),'contour','on') title 'Transverse Deflection'
Find the transverse deflection at the plate center.
wMax = min(u(1:numNodes,1))
wMax = -0.2763
Compare the result with the deflection at the plate center computed analytically.
pres = 2; wMax = -.0138*pres*len^4/(E*h_thick^3)
wMax = -0.2760
symCoeffs — Coefficients of PDE in symbolic form
structure of symbolic expressions
Coefficients of PDE in symbolic form, specified as a structure of symbolic expressions.
coeffs — Coefficients of PDE in double precision
structure of double-precision numbers
Coefficients of PDE in double precision, returned as a structure of double-precision numbers.
Introduced in R2021a