Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

`specifyCoefficients`

This section describes how to write the coefficient `f`

in
the equation

$$m\frac{{\partial}^{2}u}{\partial {t}^{2}}+d\frac{\partial u}{\partial t}-\nabla \xb7\left(c\nabla u\right)+au=f$$

or in similar equations. The question is how to write the coefficient `f`

for
inclusion in the PDE model via `specifyCoefficients`

.

*N* is the number of equations, see Equations You Can Solve Using PDE Toolbox.
Give `f`

as either of the following:

If

`f`

is constant, give a column vector with*N*components. For example, if*N*= 3,`f`

could be:f = [3;4;10];

If

`f`

is not constant, give a function handle. The function must be of the formfcoeffunction(location,state)

`solvepde`

passes the`location`

and`state`

structures to`fcoeffunction`

. The function must return a matrix of size*N*-by-*Nr*, where*Nr*is the number of points in the location that`solvepde`

passes.*Nr*is equal to the length of the`location.x`

or any other`location`

field. The function should evaluate`f`

at these points.Pass the coefficient to

`specifyCoefficients`

as a function handle, such asspecifyCoefficients(model,'f',@fcoeffunction,...)

`location`

is a structure with these fields:`location.x`

`location.y`

`location.z`

`location.subdomain`

The fields

`x`

,`y`

, and`z`

represent the*x*-,*y*-, and*z*- coordinates of points for which your function calculates coefficient values. The`subdomain`

field represents the subdomain numbers, which currently apply only to 2-D models. The location fields are row vectors.`state`

is a structure with these fields:`state.u`

`state.ux`

`state.uy`

`state.uz`

`state.time`

The

`state.u`

field represents the current value of the solution*u*. The`state.ux`

,`state.uy`

, and`state.uz`

fields are estimates of the solution’s partial derivatives (∂*u*/∂*x*, ∂*u*/∂*y*, and ∂*u*/∂*z*) at the corresponding points of the location structure. The solution and gradient estimates are*N*-by-*Nr*matrices. The`state.time`

field is a scalar representing time for time-dependent models.

For example, if *N* = 3, `f`

could be:

function f = fcoeffunction(location,state) N = 3; % Number of equations nr = length(location.x); % Number of columns f = zeros(N,nr); % Allocate f % Now the particular functional form of f f(1,:) = location.x - location.y + state.u(1,:); f(2,:) = 1 + tanh(state.ux(1,:)) + tanh(state.uy(3,:)); f(3,:) = (5 + state.u(3,:)).*sqrt(location.x.^2 + location.y.^2);

This represents the coefficient function

$$f=\left[\begin{array}{c}x-y+u(1)\\ 1+\mathrm{tanh}(\partial u(1)/\partial x)+\mathrm{tanh}(\partial u(3)/\partial y)\\ (5+u(3))\sqrt{{x}^{2}+{y}^{2}}\end{array}\right]$$