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.

This example shows how to solve the Poisson's equation, –Δ*u* = *f* using the PDE Modeler app. This problem requires configuring a 2-D
geometry with Dirichlet and Neumann boundary conditions.

To start the PDE Modeler app, type the command `pdeModeler`

at the
MATLAB^{®} prompt. The PDE Modeler app looks similar to the following figure, with
exception of the grid. Turn on the grid by selecting **Grid** from
the **Options** menu. Also, enable the “snap-to-grid”
feature by selecting **Snap** from the
**Options** menu. The “snap-to-grid” feature
simplifies aligning the solid objects.

The first step is to draw the geometry on which you want to solve the PDE. The PDE Modeler
app provides four basic types of *solid objects*: polygons, rectangles,
circles, and ellipses. The objects are used to create a *Constructive Solid
Geometry model* (CSG model). Each solid object is assigned a unique label, and
by the use of set algebra, the resulting geometry can be made up of a combination of unions,
intersections, and set differences. By default, the resulting CSG model is the union of all
solid objects.

To select a solid object, either click the button with an icon depicting the solid object
that you want to use, or select the object by using the **Draw**
pull-down menu. In this case, rectangle/square objects are selected. To draw a rectangle or
a square starting at a corner, click the rectangle button without a + sign in the middle.
The button with the + sign is used when you want to draw starting at the center. Then, put
the cursor at the desired corner, and click-and-drag using the *left*
mouse button to create a rectangle with the desired side lengths. (Use the right mouse
button to create a square.) Click and drag from (–1,.2) to (1,–.2). Notice how the
“snap-to-grid” feature forces the rectangle to line up with the grid. When you
release the mouse, the CSG model is updated and redrawn. At this stage, all you have is a
rectangle. It is assigned the label R1. If you want to move or resize the rectangle, you can
easily do so. Click-and-drag an object to move it, and double-click an object to open a
dialog box, where you can enter exact location coordinates. From the dialog box, you can
also alter the label. If you are not satisfied and want to restart, you can delete the
rectangle by clicking the **Delete** key or by selecting
**Clear** from the **Edit** menu.

Next, draw a circle by clicking the button with the ellipse icon with the + sign, and then
click-and-drag in a similar way, starting near the point (–.5,0) with radius .4, using the
*right* mouse button, starting at the circle center.

The resulting CSG model is the union of the rectangle R1 and the circle C1, described by
set algebra as R1+C1. The area where the two objects overlap is clearly visible as it is
drawn using a darker shade of gray. The object that you just drew—the
circle—has a black border, indicating that it is selected. A selected object can be
moved, resized, copied, and deleted. You can select more than one object by
**Shift**+clicking the objects that you want to select. Also,
a** Select All** option is available from the
**Edit** menu.

Finally, add two more objects, a rectangle R2 from (.5,–.6) to (1,1), and a circle C2
centered at (.5,.2) with radius .2. The desired CSG model is formed by subtracting the
circle C2 from the union of the other three objects. You do this by editing the set formula
that by default is the union of all objects: C1+R1+R2+C2. You can type any other valid set
formula into **Set formula** edit field. Click in the edit field and use
the keyboard to change the set formula to

(R1+C1+R2)-C2

If you want, you can save this CSG model as a file. Use the **Save
As** option from the **File** menu, and enter a
filename of your choice. It is good practice to continue to save your model at regular
intervals using **Save**. All the additional steps in the process of
modeling and solving your PDE are then saved to the same file. This concludes the drawing
part.

You can now define the boundary conditions for the outer boundaries. Enter the boundary
mode by clicking the ∂Ω icon or by selecting **Boundary Mode** from the
**Boundary** menu. You can now remove subdomain borders and
define the boundary conditions.

The gray edge segments are subdomain borders induced by the intersections of the original
solid objects. Borders that do not represent borders between, e.g., areas with differing
material properties, can be removed. From the **Boundary** menu,
select the **Remove All Subdomain Borders** option. All borders are
then removed from the decomposed geometry.

The boundaries are indicated by colored lines with arrows. The color reflects the type of
boundary condition, and the arrow points toward the end of the boundary segment. The
direction information is provided for the case when the boundary condition is parametrized
along the boundary. The boundary condition can also be a function of *x*
and *y*, or simply a constant. By default, the boundary condition is of
Dirichlet type: *u* = 0 on the boundary.

Dirichlet boundary conditions are indicated by red color. The boundary conditions can also
be of a generalized Neumann (blue) or mixed (green) type. For scalar *u*,
however, all boundary conditions are either of Dirichlet or the generalized Neumann type.
You select the boundary conditions that you want to change by clicking to select one
boundary segment, by **Shift**+clicking to select multiple segments, or by
using the **Edit** menu option **Select All**
to select all boundary segments. The selected boundary segments are indicated by black
color.

For this problem, change the boundary condition for all the circle arcs. Select them by
using the mouse and **Shift**+click those boundary segments.

Double-clicking anywhere on the selected boundary segments opens the Boundary Condition
dialog box. Here, you select the type of boundary condition, and enter the boundary
condition as a MATLAB expression. Change the boundary condition along the selected boundaries to a
Neumann condition, ∂*u*/∂*n* = –5. This means that the solution has a slope of –5 in the normal direction
for these boundary segments.

In the Boundary Condition dialog box, select the **Neumann** condition
type, and enter `-5`

in the edit box for the boundary condition parameter
`g`

. To define a pure Neumann condition, leave the `q`

parameter at its default value, `0`

. When you click the
**OK** button, notice how the selected boundary segments change to
blue to indicate Neumann boundary condition.

Next, specify the PDE itself through a dialog box that is accessed by clicking the button
with the **PDE** icon or by selecting **PDE
Specification** from the **PDE** menu. In PDE mode,
you can also access the PDE Specification dialog box by double-clicking a subdomain. That
way, different subdomains can have different PDE coefficient values. This problem, however,
consists of only one subdomain.

In the dialog box, you can select the type of PDE (elliptic, parabolic, hyperbolic, or eigenmodes) and define the applicable coefficients depending on the PDE type. This problem consists of an elliptic PDE defined by the equation

$$-\nabla \cdot \left(c\nabla u\right)+au=f$$

with *c* = 1.0, *a* = 0.0, and *f* = 10.0.

Finally, create the triangular mesh that Partial Differential Equation Toolbox™ software uses in the Finite Element Method (FEM) to solve the PDE. The
triangular mesh is created and displayed when clicking the button with the icon or by selecting the **Mesh**
menu option **Initialize Mesh**. If you want a more accurate
solution, the mesh can be successively refined by clicking the button with the four triangle
icon (the **Refine** button) or by selecting the **Refine
Mesh** option from the **Mesh** menu.

Using the **Jiggle Mesh** option, the mesh can be jiggled to
improve the triangle quality. Parameters for controlling the jiggling of the mesh, the
refinement method, and other mesh generation parameters can be found in a dialog box that is
opened by selecting **Parameters** from the
**Mesh** menu. You can undo any change to the mesh by selecting
the **Mesh** menu option **Undo Mesh
Change**.

Initialize the mesh, then refine it once and finally jiggle it once.

We are now ready to solve the problem. Click the **=** button or select
**Solve PDE** from the **Solve** menu to
solve the PDE. The solution is then plotted. By default, the plot uses interpolated coloring
and a linear color map. A color bar is also provided to map the different shades to the
numerical values of the solution. If you want, the solution can be exported as a vector to
the MATLAB main workspace.

There are many more plot modes available to help you visualize the solution. Click the
button with the 3-D solution icon or select **Parameters** from the
**Plot** menu to access the dialog box for selection of the
different plot options. Several plot styles are available, and the solution can be plotted
in the PDE Modeler app or in a separate figure as a 3-D plot.

Now, select a plot where the color and the height both represent *u*.
Choose interpolated shading and use the continuous (interpolated) height option. The default
colormap is the `cool`

colormap; a pop-up menu lets you select from a
number of different colormaps. Finally, click the **Plot** button to plot
the solution; click the **Close** button to save the plot setup as the
current default. The solution is plotted as a 3-D plot in a separate figure window.

The following solution plot is the result. You can use the mouse to rotate the plot in 3-D. By clicking-and-dragging the axes, the angle from which the solution is viewed can be changed.