pdetool - NC State: WWW4 Server

pdetool - NC State: WWW4 Server
Partial Differential Equation Toolbox™ 1
User’s Guide
How to Contact The MathWorks
Web
Newsgroup
www.mathworks.com/contact_TS.html Technical Support
www.mathworks.com
comp.soft-sys.matlab
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Product enhancement suggestions
Bug reports
Documentation error reports
Order status, license renewals, passcodes
Sales, pricing, and general information
508-647-7000 (Phone)
508-647-7001 (Fax)
The MathWorks, Inc.
3 Apple Hill Drive
Natick, MA 01760-2098
For contact information about worldwide offices, see the MathWorks Web site.
Partial Differential Equation Toolbox™ User’s Guide
© COPYRIGHT 1995–2009 The MathWorks, Inc.
The software described in this document is furnished under a license agreement. The software may be used
or copied only under the terms of the license agreement. No part of this manual may be photocopied or
reproduced in any form without prior written consent from The MathWorks, Inc.
FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation
by, for, or through the federal government of the United States. By accepting delivery of the Program
or Documentation, the government hereby agrees that this software or documentation qualifies as
commercial computer software or commercial computer software documentation as such terms are used
or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and
conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and govern
the use, modification, reproduction, release, performance, display, and disclosure of the Program and
Documentation by the federal government (or other entity acquiring for or through the federal government)
and shall supersede any conflicting contractual terms or conditions. If this License fails to meet the
government’s needs or is inconsistent in any respect with federal procurement law, the government agrees
to return the Program and Documentation, unused, to The MathWorks, Inc.
Trademarks
MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See
www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand
names may be trademarks or registered trademarks of their respective holders.
Patents
The MathWorks products are protected by one or more U.S. patents. Please see
www.mathworks.com/patents for more information.
Revision History
August 1995
February 1996
July 2002
September 2002
June 2004
October 2004
March 2005
August 2005
September 2005
March 2006
March 2007
September 2007
March 2008
October 2008
March 2009
September 2009
First printing
Second printing
Online only
Third printing
Online only
Online only
Online only
Fourth printing
Online only
Online only
Online only
Online only
Online only
Online only
Online only
Online only
New for Version 1.0
Revised for Version 1.0.1
Revised for Version 1.0.4 (Release 13)
Minor Revision for Version 1.0.4
Revised for Version 1.0.5 (Release 14)
Revised for Version 1.0.6 (Release 14SP1)
Revised for Version 1.0.6 (Release 14SP2)
Minor Revision for Version 1.0.6
Revised for Version 1.0.7 (Release 14SP3)
Revised for Version 1.0.8 (Release 2006a)
Revised for Version 1.0.10 (Release 2007a)
Revised for Version 1.0.11 (Release 2007b)
Revised for Version 1.0.12 (Release 2008a)
Revised for Version 1.0.13 (Release 2008b)
Revised for Version 1.0.14 (Release 2009a)
Revised for Version 1.0.15 (Release 2009b)
Contents
Getting Started
1
Product Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Can I Use Partial Differential Equation Toolbox
Software? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
What Problems Can I Solve? . . . . . . . . . . . . . . . . . . . . . . . .
In Which Areas Can Partial Differential Equation Toolbox
Software Be Used? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
How Do I Define a PDE Problem? . . . . . . . . . . . . . . . . . . . .
How Can I Solve a PDE Problem? . . . . . . . . . . . . . . . . . . . .
Can I Use Partial Differential Equation Toolbox Software
for Nonstandard Problems? . . . . . . . . . . . . . . . . . . . . . . .
How Can I Visualize My Results? . . . . . . . . . . . . . . . . . . . .
Are There Any Applications Already Implemented? . . . . . .
Can I Extend the Functionality of the Software? . . . . . . . .
How Can I Solve 3-D Problems by 2-D Models? . . . . . . . . .
1-2
1-2
Solving a PDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-10
Basics of the Finite Element Method . . . . . . . . . . . . . . . .
1-22
Using the pdetool GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The GUI Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The CSG Model and the Set Formula . . . . . . . . . . . . . . . . .
Creating Rounded Corners . . . . . . . . . . . . . . . . . . . . . . . . . .
Suggested Modeling Method . . . . . . . . . . . . . . . . . . . . . . . . .
Object Selection Methods . . . . . . . . . . . . . . . . . . . . . . . . . . .
Display Additional Information . . . . . . . . . . . . . . . . . . . . . .
Entering Parameter Values as MATLAB Expressions . . . .
Using Earlier Version Partial Differential Equation Toolbox
Model M-Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-27
1-27
1-29
1-30
1-31
1-32
1-33
1-35
1-39
1-40
1-40
1-2
1-3
1-5
1-6
1-6
1-7
1-7
1-7
1-8
1-8
1-41
v
Using Command-Line Functions . . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Structures and Utility Functions . . . . . . . . . . . . . . . .
Hints and Suggestions for Using Command-Line
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-42
1-42
1-42
1-47
Common PDE Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-49
Elliptic Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-49
Parabolic Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-64
Hyperbolic Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-71
Eigenvalue Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-75
Application Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-84
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-118
Graphical User Interface
2
vi
Contents
Using the pdetool Menus . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
File Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Edit Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Options Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Draw Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boundary Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PDE Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mesh Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Solve Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Plot Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Window Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Help Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-2
2-2
2-3
2-5
2-7
2-10
2-12
2-16
2-20
2-22
2-27
2-34
2-34
The Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-35
3
4
Finite Element Method
The Elliptic Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-2
The Elliptic System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-10
The Parabolic Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reducing the Parabolic Equation to Elliptic Equations . . .
Solving the Parabolic Equation in Stages . . . . . . . . . . . . . .
3-13
3-13
3-15
The Hyperbolic Equation . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-18
The Eigenvalue Equation . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-19
Nonlinear Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-23
Adaptive Mesh Refinement . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The Error Indicator Function . . . . . . . . . . . . . . . . . . . . . . . .
The Mesh Refiner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The Termination Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-29
3-29
3-30
3-31
3-31
Fast Solution of Poisson’s Equation . . . . . . . . . . . . . . . . .
3-32
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-34
Function Reference
PDE Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-1
User-Interface Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2
Geometry Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2
vii
Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-3
Utility Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-3
User-Defined Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-4
Functions — Alphabetical List
5
Index
viii
Contents
1
Getting Started
• “Product Overview” on page 1-2
• “Solving a PDE” on page 1-10
• “Basics of the Finite Element Method” on page 1-22
• “Using the pdetool GUI” on page 1-27
• “Using Command-Line Functions” on page 1-42
• “Common PDE Problems” on page 1-49
1
Getting Started
Product Overview
In this section...
“Introduction” on page 1-2
“Can I Use Partial Differential Equation Toolbox Software?” on page 1-2
“What Problems Can I Solve?” on page 1-3
“In Which Areas Can Partial Differential Equation Toolbox Software Be
Used?” on page 1-5
“How Do I Define a PDE Problem?” on page 1-6
“How Can I Solve a PDE Problem?” on page 1-6
“Can I Use Partial Differential Equation Toolbox Software for Nonstandard
Problems?” on page 1-7
“How Can I Visualize My Results?” on page 1-7
“Are There Any Applications Already Implemented?” on page 1-7
“Can I Extend the Functionality of the Software?” on page 1-8
“How Can I Solve 3-D Problems by 2-D Models?” on page 1-8
Introduction
The objectives of Partial Differential Equation Toolbox™ software are to
provide you with tools that:
• Define a PDE problem, e.g., define 2-D regions, boundary conditions, and
PDE coefficients.
• Numerically solve the PDE problem, e.g., generate unstructured meshes,
discretize the equations, and produce an approximation to the solution.
• Visualize the results.
Can I Use Partial Differential Equation Toolbox
Software?
Partial Differential Equation Toolbox software is designed for both beginners
and advanced users.
1-2
Product Overview
The minimal requirement is that you can formulate a PDE problem on paper
(draw the domain, write the boundary conditions, and the PDE). At the
MATLAB® command line, type
pdetool
This invokes the graphical user interface (GUI), which is a self-contained
graphical environment for PDE solving. For common applications you can use
the specific physical terms rather than abstract coefficients. Using pdetool
requires no knowledge of the mathematics behind the PDE, the numerical
schemes, or MATLAB. “Solving a PDE” on page 1-10 guides you through an
example step by step.
Advanced applications are also possible by downloading the domain geometry,
boundary conditions, and mesh description to the MATLAB workspace. From
the command line (or M-files) you can call functions to do the hard work,
e.g., generate meshes, discretize your problem, perform interpolation, plot
data on unstructured grids, etc., while you retain full control over the global
numerical algorithm.
What Problems Can I Solve?
The basic equation addressed by the software is the PDE
expressed in !, which we shall refer to as the elliptic equation, regardless of
whether its coefficients and boundary conditions make the PDE problem
elliptic in the mathematical sense. Analogously, we shall use the terms
parabolic equation and hyperbolic equation for equations with spatial
operators like the previous one, and first and second order time derivatives,
respectively. ! is a bounded domain in the plane. c, a, f, and the unknown u
are scalar, complex valued functions defined on !. c can be a 2-by-2 matrix
function on !. The software can also handle the parabolic PDE
the hyperbolic PDE
1-3
1
Getting Started
and the eigenvalue problem
where d is a complex valued function on !, and " is an unknown eigenvalue.
For the parabolic and hyperbolic PDE the coefficients c, a, f, and d can depend
on time. A nonlinear solver is available for the nonlinear elliptic PDE
where c, a, and f are functions of the unknown solution u.
Note Before solving a nonlinear PDE, from the Solve menu in the pdetool
GUI, select Parameters. Then, select the Use nonlinear solver check
box and click OK.
All solvers can handle the system case
You can work with systems of arbitrary dimension from the command
line. For the elliptic problem, an adaptive mesh refinement algorithm is
implemented. It can also be used in conjunction with the nonlinear solver. In
addition, a fast solver for Poisson’s equation on a rectangular grid is available.
The following boundary conditions are defined for scalar u:
• Dirichlet: hu = r on the boundary
• Generalized Neumann:
.
on
.
is the outward unit normal. g, q, h, and r are complex-valued functions
defined on
. (The eigenvalue problem is a homogeneous problem, i.e., g = 0,
1-4
Product Overview
r = 0.) In the nonlinear case, the coefficients g, q, h, and r can depend on u,
and for the hyperbolic and parabolic PDE, the coefficients can depend on time.
For the two-dimensional system case, Dirichlet boundary condition is
the generalized Neumann boundary condition is
and the mixed boundary condition is
where µ is computed such that the Dirichlet boundary condition is satisfied.
Dirichlet boundary conditions are also called essential boundary conditions,
and Neumann boundary conditions are also called natural boundary
conditions. See Chapter 3, “Finite Element Method” for the general system
case.
In Which Areas Can Partial Differential Equation
Toolbox Software Be Used?
The PDEs implemented in Partial Differential Equation Toolbox software
are used as a mathematical model for a wide variety of phenomena in all
branches of engineering and science. The following is by no means a complete
list of examples.
The elliptic and parabolic equations are used for modeling:
• Steady and unsteady heat transfer in solids
• Flows in porous media and diffusion problems
1-5
1
Getting Started
• Electrostatics of dielectric and conductive media
• Potential flow
The hyperbolic equation is used for:
• Transient and harmonic wave propagation in acoustics and
electromagnetics
• Transverse motions of membranes
The eigenvalue problems are used for:
• Determining natural vibration states in membranes and structural
mechanics problems
Last, but not least, the toolbox can be used for educational purposes as a
complement to understanding the theory of the FEM.
How Do I Define a PDE Problem?
The simplest way to define a PDE problem is using the GUI, implemented
in pdetool. There are three modes that correspond to different stages of
defining a PDE problem:
• In draw mode, you create !, the geometry, using the constructive solid
geometry (CSG) model paradigm. A set of solid objects (rectangle, circle,
ellipse, and polygon) is provided. You can combine these objects using
set formulas.
• In boundary mode, you specify the boundary conditions. You can have
different types of boundary conditions on different boundary segments.
• In PDE mode, you interactively specify the type of PDE and the coefficients
c, a, f, and d. You can specify the coefficients for each subdomain
independently. This may ease the specification of, e.g., various material
properties in a PDE model.
How Can I Solve a PDE Problem?
Most problems can be solved from the GUI. There are two major modes that
help you solve a problem:
1-6
Product Overview
• In mesh mode, you generate and plot meshes. You can control the
parameters of the automated mesh generator.
• In solve mode, you can invoke and control the nonlinear and adaptive
solvers for elliptic problems. For parabolic and hyperbolic problems, you
can specify the initial values, and the times for which the output should
be generated. For the eigenvalue solver, you can specify the interval in
which to search for eigenvalues.
After solving a problem, you can return to the mesh mode to further refine
your mesh and then solve again. You can also employ the adaptive mesh
refiner and solver. This option tries to find a mesh that fits the solution.
Can I Use Partial Differential Equation Toolbox
Software for Nonstandard Problems?
For advanced, nonstandard applications you can transfer the description of
domains, boundary conditions etc. to your MATLAB workspace. From there
you use Partial Differential Equation Toolbox functions for managing data
on unstructured meshes. You have full access to the mesh generators, FEM
discretizations of the PDE and boundary conditions, interpolation functions,
etc. You can design your own solvers or use FEM to solve subproblems of more
complex algorithms. See also “Using Command-Line Functions” on page 1-42.
How Can I Visualize My Results?
From the graphical user interface you can use plot mode, where you have a
wide range of visualization possibilities. You can visualize both inside the
pdetool GUI and in separate figures. You can plot three different solution
properties at the same time, using color, height, and vector field plots. Surface,
mesh, contour, and arrow (quiver) plots are available. For surface plots, you
can choose between interpolated and flat rendering schemes. The mesh may
be hidden or exposed in all plot types. For parabolic and hyperbolic equations,
you can even produce an animated movie of the solution’s time dependence.
All visualization functions are also accessible from the command line.
Are There Any Applications Already Implemented?
Partial Differential Equation Toolbox software is easy to use in the most
common areas due to the application interfaces. Eight application interfaces
1-7
1
Getting Started
are available, in addition to the generic scalar and system (vector valued
u) cases:
• “Structural Mechanics — Plane Stress” on page 1-86
• “Structural Mechanics — Plane Strain” on page 1-92
• “Electrostatics” on page 1-93
• “Magnetostatics” on page 1-96
• “AC Power Electromagnetics” on page 1-103
• “Conductive Media DC” on page 1-108
• “Heat Transfer” on page 1-114
• “Diffusion” on page 1-117
These interfaces have dialog boxes where the PDE coefficients, boundary
conditions, and solution are explained in terms of physical entities. The
application interfaces enable you to enter specific parameters, such as Young’s
modulus in the structural mechanics problems. Also, visualization of the
relevant physical variables is provided.
Several nontrivial examples are included in this manual. Many examples are
solved both by using the GUI and in command-line mode.
The toolbox contains a number of demonstration M-files. They illustrate some
ways in which you can write your own applications.
Can I Extend the Functionality of the Software?
Partial Differential Equation Toolbox software is written using the MATLAB
open system philosophy. There are no black-box functions, although some
functions may not be easy to understand at first glance. The data structures
and formats are documented. You can examine the existing functions and
create your own as needed.
How Can I Solve 3-D Problems by 2-D Models?
Partial Differential Equation Toolbox software solves problems in two space
dimensions and time, whereas reality has three space dimensions. The
1-8
Product Overview
reduction to 2-D is possible when variations in the third space dimension
(taken to be z) can be accounted for in the 2-D equation. In some cases, like
the plane stress analysis, the material parameters must be modified in the
process of dimensionality reduction.
When the problem is such that variation with z is negligible, all z-derivatives
drop out and the 2-D equation has exactly the same units and coefficients
as in 3-D.
Slab geometries are treated by integration through the thickness. The result
is a 2-D equation for the z-averaged solution with the thickness, say D(x,y),
multiplied onto all the PDE coefficients, c, a, d, and f, etc. For instance, if
you want to compute the stresses in a sheet welded together from plates of
different thickness, multiply Young’s modulus E, volume forces, and specified
surface tractions by D(x,y). Similar definitions of the equation coefficients are
called for in other slab geometry examples and application modes.
1-9
1
Getting Started
Solving a PDE
To get you started, let us use the graphical user interface (GUI) pdetool,
which is a part of Partial Differential Equation Toolbox software, to solve
a PDE step by step. The problem that we would like to solve is Poisson’s
equation,
. The 2-D geometry on which we would like to solve the
PDE is quite complex. The boundary conditions are of Dirichlet and Neumann
types.
To start the GUI, type the command pdetool at the MATLAB prompt. It
can take a minute or two for the GUI to start. The GUI 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.
1-10
Solving a PDE
The first step is to draw the geometry on which you want to solve the PDE.
The GUI 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.)
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, using the right mouse
button, starting at the circle center.
1-11
1
Getting Started
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.
1-12
Solving a PDE
Finally, add two more objects, a rectangle R2 and a circle C2. 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 an M-file. Use the Save Asoption
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 M-file. This concludes the drawing part.
1-13
1
Getting Started
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 parameterized 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.
1-14
Solving a PDE
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
. This means that the solution has a slope of -5 in the
condition,
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.
1-15
1
Getting Started
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
with c = 1.0, a = 0.0, and f = 10.0
1-16
Solving a PDE
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.
1-17
1
Getting Started
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.
1-18
Solving a PDE
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 GUI
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 Done button to save the plot setup as the current default.
The solution is plotted as a 3-D plot in a separate figure window.
1-19
1
Getting Started
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.
1-20
Solving a PDE
This concludes the first example of solving a PDE by using the pdetool GUI.
Many more examples in “Common PDE Problems” on page 1-49 focus on
solving particular problems involving different kinds of PDEs, geometries and
boundary conditions and covering a range of different applications.
1-21
1
Getting Started
Basics of the Finite Element Method
The solutions of simple PDEs on complicated geometries can rarely be
expressed in terms of elementary functions. You are confronted with two
problems: First you need to describe a complicated geometry and generate
a mesh on it. Then you need to discretize your PDE on the mesh and build
an equation for the discrete approximation of the solution. The pdetool
graphical user interface provides you with easy-to-use graphical tools to
describe complicated domains and generate triangular meshes. It also
discretizes PDEs, finds discrete solutions and plots results. You can access the
mesh structures and the discretization functions directly from the command
line (or M-file) and incorporate them into specialized applications.
Here is an overview of the Finite Element Method (FEM). The purpose of
this presentation is to get you acquainted with the elementary FEM notions.
Here you find the precise equations that are solved and the nature of the
discrete solution. Different extensions of the basic equation implemented in
Partial Differential Equation Toolbox software are presented. A more detailed
description can be found in Chapter 3, “Finite Element Method”.
You start by approximating the computational domain ! with a union of
simple geometric objects, in this case triangles. The triangles form a mesh and
each vertex is called a node. You are in the situation of an architect designing
a dome. He has to strike a balance between the ideal rounded forms of the
original sketch and the limitations of his simple building-blocks, triangles or
quadrilaterals. If the result does not look close enough to a perfect dome, the
architect can always improve his work using smaller blocks.
Next you say that your solution should be simple on each triangle.
Polynomials are a good choice: they are easy to evaluate and have good
approximation properties on small domains. You can ask that the solutions in
neighboring triangles connect to each other continuously across the edges.
You can still decide how complicated the polynomials can be. Just like an
architect, you want them as simple as possible. Constants are the simplest
choice but you cannot match values on neighboring triangles. Linear functions
come next. This is like using flat tiles to build a waterproof dome, which
is perfectly possible.
1-22
Basics of the Finite Element Method
A Triangular Mesh (left) and a Continuous Piecewise Linear Function on That Mesh
Now you use the basic elliptic equation (expressed in !)
If uh is the piecewise linear approximation to u, it is not clear what the second
derivative term means. Inside each triangle,
is a constant (because uh is
flat) and thus the second-order term vanishes. At the edges of the triangles,
is in general discontinuous and a further derivative makes no sense.
What you are looking for is the best approximation of u in the class of
continuous piecewise polynomials. Therefore you test the equation for uh
against all possible functions v of that class. Testing means formally to
multiply the residual against any function and then integrate, i.e., determine
uh such that
for all possible v. The functions v are usually called test functions.
Partial integration (Green’s formula) yields that uh should satisfy
1-23
1
Getting Started
!
∫Ω ( ( c∇uh ) ⋅ ∇v + auhv) dx − ∫∂Ω n ⋅ ( c∇uh ) v ds = ∫Ω f v dx
∀v,
where
is the boundary of ! and is the outward pointing normal on
. The integrals of this formulation are well-defined even if uh and v are
piecewise linear functions.
Boundary conditions are included in the following way. If uh is known at some
boundary points (Dirichlet boundary conditions), we restrict the test functions
to v = 0 at those points, and require uh to attain the desired value at that
point. At all the other points we ask for Neumann boundary conditions, i.e.,
!
( c∇uh ) ⋅ n + quh = g . The FEM formulation reads: Find uh such that
∫Ω ( ( c∇uh ) ⋅ ∇v + auhv) dx + ∫∂Ω
1
quh v ds =
∫Ω f v dx + ∫∂Ω
gv ds ∀v,
1
where
is the part of the boundary with Neumann conditions. The test
functions v must be zero on
.
Any continuous piecewise linear uh is represented as a combination
where #i are some special piecewise linear basis functions and Ui are scalar
coefficients. Choose !i like a tent, such that it has the “height” 1 at the node
i and the height 0 at all other nodes. For any fixed v, the FEM formulation
yields an algebraic equation in the unknowns Ui. You want to determine N
unknowns, so you need N different instances of v. What better candidates
than v = !"# j = 1, 2, . . . , N? You find a linear system KU = F where the
matrix K and the right side F contain integrals in terms of the test functions
!i, !"# and the coefficients defining the problem: c, a, f, q, and g. The solution
vector U contains the expansion coefficients of uh, which are also the values of
uh at each node xi since uh(xi) = Ui.
If the exact solution u is smooth, then FEM computes uh with an error of the
same size as that of the linear interpolation. It is possible to estimate the
error on each triangle using only uh and the PDE coefficients (but not the
exact solution u, which in general is unknown).
1-24
Basics of the Finite Element Method
There are Partial Differential Equation Toolbox functions that assemble K and
F. This is done automatically in the graphical user interface, but you also have
direct access to the FEM matrices from the command-line function assempde.
To summarize, the FEM approach is to approximate the PDE solution u by a
piecewise linear function
is expanded in a basis of test-functions !i,
and the residual is tested against all the basis functions. This procedure
yields a linear system KU = F. The components of U are the values of uh at
the nodes. For x inside a triangle, uh(x) is found by linear interpolation from
the nodal values.
FEM techniques are also used to solve more general problems. The following
are some generalizations that you can access both through the graphical user
interface and with command-line functions.
• Time-dependent problems are easy to implement in the FEM context. The
solution u(x,t) of the equation
can be approximated by
• This yields a system of ordinary differential equations (ODE)
which you integrate using ODE solvers. Two time derivatives yield a
second order ODE
etc. The toolbox supports problems with one or two time derivatives (the
functions parabolic and hyperbolic).
• Eigenvalue problems: Solve
1-25
1
Getting Started
for the unknowns u and " (" is a complex number). Using the FEM
discretization, you solve the algebraic eigenvalue problem KU = "hMU to
find uh and "h as approximations to u and ". A robust eigenvalue solver
is implemented in pdeeig.
• If the coefficients c, a, f, q, or g are functions of u, the PDE is called
nonlinear and FEM yields a nonlinear system K(U) U= F(U). You can use
iterative methods for solving the nonlinear system. The toolbox provides a
nonlinear solver called pdenonlin using a damped Gauss-Newton method.
• Small triangles are needed only in those parts of the computational domain
where the error is large. In many cases the errors are large in a small
region and making all triangles small is a waste of computational effort.
Making small triangles only where needed is called adapting the mesh
refinement to the solution. An iterative adaptive strategy is the following:
For a given mesh, form and solve the linear system KU = F. Then estimate
the error and refine the triangles in which the error is large. The iteration
is controlled by adaptmesh and the error is estimated by pdejmps.
Although the basic equation is scalar, systems of equations are also handled
by the toolbox. The interactive environment accepts u as a scalar or 2-vector
function. In command-line mode, systems of arbitrary size are accepted.
If c $ % > 0 and a $ 0, under rather general assumptions on the domain ! and
the boundary conditions, the solution u exists and is unique. The FEM linear
system has a unique solution which converges to u as the triangles become
smaller. The matrix K and the right side F make sense even when u does
not exist or is not unique. It is advisable that you devise checks to problems
with questionable solutions.
1-26
Using the pdetool GUI
Using the pdetool GUI
In this section...
“Introduction” on page 1-27
“The Menus” on page 1-29
“The Toolbar” on page 1-30
“The GUI Modes” on page 1-31
“The CSG Model and the Set Formula” on page 1-32
“Creating Rounded Corners” on page 1-33
“Suggested Modeling Method” on page 1-35
“Object Selection Methods” on page 1-39
“Display Additional Information” on page 1-40
“Entering Parameter Values as MATLAB Expressions” on page 1-40
“Using Earlier Version Partial Differential Equation Toolbox Model
M-Files” on page 1-41
Introduction
Partial Differential Equation Toolbox software includes a complete graphical
user interface (GUI), which covers all aspects of the PDE solution process.
You start it by typing
pdetool
at the MATLAB command line. It may take a while the first time you launch
pdetool during a MATLAB session. The following figure shows the pdetool
GUI as it looks when you start it.
1-27
1
Getting Started
At the top, the GUI has a pull-down menu bar that you use to control the
modeling. It conforms to common pull-down menu standards. Menu items
followed by a right arrow lead to a submenu. Menu items followed by an
ellipsis lead to a dialog box. Stand-alone menu items lead to direct action.
Below the menu bar, a toolbar with icon buttons provide quick and easy access
to some of the most important functions.
To the right of the toolbar is a pop-up menu that indicates the current
application mode. You can also use it to change the application mode. The
upper right part of the GUI also provides the x- and y-coordinates of the
current cursor position. It is updated when you move the cursor inside the
main axes area in the middle of the GUI. The edit box for the set formula
contains the active set formula. In the main axes you draw the 2-D geometry,
display the mesh, plot the solution, etc. At the bottom of the GUI, an
information line provides information about the current activity. It can also
display help information about the toolbar buttons.
1-28
Using the pdetool GUI
The Menus
There are 11 different pull-down menus in the GUI. See Chapter 2, “Graphical
User Interface” for a more detailed description of the menus and the dialog
boxes:
• File menu. From the File menu you can Open and Save model M-files
that contain a command sequence that reproduces your modeling session.
You can also print the current graphics and exit the GUI.
• Edit menu. From the Edit menu you can cut, clear, copy, and paste the
solid objects. There is also a Select All option.
• Options menu. The Options menu contains options such as toggling the
axis grid, a “snap-to-grid” feature, and zoom. You can also adjust the axis
limits and the grid spacing, select the application mode, and refresh the
GUI.
• Draw menu. From the Draw menu you can select the basic solid objects
such as circles and polygons. You can then draw objects of the selected
type using the mouse. From the Draw menu you can also rotate the solid
objects and export the geometry to the MATLAB main workspace.
• Boundary menu. From the Boundary menu you access a dialog box
where you define the boundary conditions. Additionally, you can label
edges and subdomains, remove borders between subdomains, and export
the decomposed geometry and the boundary conditions to the workspace.
• PDE menu. The PDE menu provides a dialog box for specifying the PDE,
and there are menu options for labeling subdomains and exporting PDE
coefficients to the workspace.
• Mesh menu. From the Mesh menu you create and modify the triangular
mesh. You can initialize, refine, and jiggle the mesh, undo previous mesh
changes, label nodes and triangles, display the mesh quality, and export
the mesh to the workspace.
• Solve menu. From the Solve menu you solve the PDE. You can also open
a dialog box where you can adjust the solve parameters, and you can export
the solution to the workspace.
• Plot menu. From the Plot menu you can plot a solution property. A dialog
box lets you select which property to plot, which plot style to use and
several other plot parameters. If you have recorded a movie (animation) of
the solution, you can export it to the workspace.
1-29
1
Getting Started
• Window menu. The Window menu lets you select any currently open
MATLAB figure window. The selected window is brought to the front.
• Help menu. The Help menu provides a brief help window.
The Toolbar
The toolbar underneath the main menu at the top of the GUI contains icon
buttons that provide quick and easy access to some of the most important
functions.
The five leftmost buttons are draw mode buttons and they represent, from
left to right:
Draw a rectangle/square starting at a corner.
Draw a rectangle/square starting at the center.
Draw an ellipse/circle starting at the perimeter.
Draw an ellipse/circle starting at the center.
Draw a polygon. Click-and-drag to create polygon sides. You can
close the polygon by clicking the right mouse button. Clicking at
the starting vertex also closes the polygon.
The draw mode buttons can only be activated one at the time and they all
work the same way: single-clicking a button allows you to draw one solid
object of the selected type. Double-clicking a button makes it “stick,” and
you can then continue to draw solid objects of the selected type until you
single-click the button to “release” it. Using the right mouse button or
Ctrl+click, the drawing is constrained to a square or a circle.
The second group of six buttons includes the following analysis buttons.
1-30
Using the pdetool GUI
Enters the boundary mode.
Opens the PDE Specification dialog box.
Initializes the triangular mesh.
Refines the triangular mesh.
Solves the PDE.
3-D solution opens the Plot Selection dialog box.
The
button toggles the zoom function on/off.
The GUI Modes
The PDE solving process can be divided into several steps:
1 Define the geometry (2-D domain).
2 Define the boundary conditions.
3 Define the PDE.
4 Create the triangular mesh.
5 Solve the PDE.
6 Plot the solution and other physical properties calculated from the solution
(post processing).
The pdetool GUI is designed in a similar way. You work in six different
modes, each corresponding to one of the steps in the PDE solving process:
• In draw mode, you can create the 2-D geometry using the constructive solid
geometry (CSG) model paradigm. A set of solid objects (rectangle, circle,
ellipse, and polygon) is provided. These objects can be combined using set
formulas in a flexible way.
1-31
1
Getting Started
• In boundary mode, you can specify the boundary conditions. You can have
different types of boundary conditions on different boundaries. In this
mode, the original shapes of the solid objects constitute borders between
subdomains of the model. Such borders can be eliminated in this mode.
• In PDE mode, you can interactively specify the type of PDE problem, and
the PDE coefficients. You can specify the coefficients for each subdomain
independently. This makes it easy to specify, e.g., various material
properties in a PDE model.
• In mesh mode, you can control the automated mesh generation and plot
the mesh.
• In solve mode, you can invoke and control the nonlinear and adaptive
solver for elliptic problems. For parabolic and hyperbolic PDE problems,
you can specify the initial values, and the times for which the output
should be generated. For the eigenvalue solver, you can specify the interval
in which to search for eigenvalues.
• In plot mode, there is a wide range of visualization possibilities. You can
visualize both in the pdetool GUI and in a separate figure window. You
can visualize three different solution properties at the same time, using
color, height, and vector field plots. There are surface, mesh, contour, and
arrow (quiver) plots available. For parabolic and hyperbolic equations, you
can animate the solution as it changes with time.
The CSG Model and the Set Formula
Partial Differential Equation Toolbox functions use the Constructive Solid
Geometry (CSG) model paradigm for modeling. You can draw solid objects
that can overlap. There are four types of solid objects:
• Circle object — Represents the set of points inside and on a circle.
• Polygon object — Represents the set of points inside and on a polygon
given by a set of line segments.
• Rectangle object — Represents the set of points inside and on a rectangle.
• Ellipse object — Represents the set of points inside and on an ellipse.
The ellipse can be rotated.
Each solid object is automatically given a unique name by the GUI. The
default names are C1, C2, C3, etc., for circles; P1, P2, P3, etc. for polygons; R1,
1-32
Using the pdetool GUI
R2, R3, etc., for rectangles; E1, E2, E3, etc., for ellipses. Squares, although
a special case of rectangles, are named SQ1, SQ2, SQ3, etc. The name is
displayed on the solid object itself. You can use any unique name, as long
as it contains no blanks. In draw mode, you can alter the names and the
geometries of the objects by double-clicking them, which opens a dialog box.
The following figure shows an object dialog box for a circle.
You can use the name of the object to refer to the corresponding set of points
in a set formula. The operators +, *, and - are used to form the set of points
! in the plane over which the differential equation is solved. The operators
+, the set union operator, and *, the set intersection operator, have the
same precedence. The operator -, the set difference operator, has higher
precedence. The precedence can be controlled by using parentheses. The
resulting geometrical model, !, is the set of points for which the set formula
evaluates to true. By default, it is the union of all solid objects. We often refer
to the area ! as the decomposed geometry.
Creating Rounded Corners
As an example of how to use the set formula, let us model a plate with
rounded corners (fillets).
Start the GUI and turn on the grid and the “snap-to-grid” feature using the
Options menu. Also, change the grid spacing to -1.5:0.1:1.5 for the x-axis
and -1:0.1:1 for the y-axis.
Select Rectangle/square from the Draw menu or click the button with the
rectangle icon. Then draw a rectangle with a width of 2 and a height of 1
using the mouse, starting at (-1,0.5). To get the round corners, add circles,
one in each corner. The circles should have a radius of 0.2 and centers at
1-33
1
Getting Started
a distance that is 0.2 units from the left/right and lower/upper rectangle
boundaries ((-0.8,-0.3), (-0.8,0.3), (0.8,-0.3), and (0.8,0.3)). To draw several
circles, double-click the button for drawing ellipses/circles (centered). Then
draw the circles using the right mouse button or Ctrl+click starting at the
circle centers. Finally, at each of the rectangle corners, draw four small
squares with a side of 0.1.
The following figure shows the complete drawing.
Now you have to edit the set formula. To get the rounded corners, subtract
the small squares from the rectangle and then add the circles. As a set
formula, this is expressed as
R1-(SQ1+SQ2+SQ3+SQ4)+C1+C2+C3+C4
1-34
Using the pdetool GUI
Enter the set formula into the edit box at the top of the GUI. Then enter the
Boundary mode by clicking the
button or by selecting the Boundary
Mode option from the Boundary menu. The CSG model is now decomposed
using the set formula, and you get a rectangle with rounded corners, as shown
in the following figure.
Because of the intersection of the solid objects used in the initial CSG model,
a number of subdomain borders remain. They are drawn using gray lines. If
this is a model of, e.g., a homogeneous plate, you can remove them. Select the
Remove All Subdomain Borders option from the Boundary menu. The
subdomain borders are removed and the model of the plate is now complete.
Suggested Modeling Method
Although Partial Differential Equation Toolbox software offers you a great
deal of flexibility in the ways that you can approach the problems and interact
1-35
1
Getting Started
with the toolbox functions, there is a suggested method of choice for modeling
and solving your PDE problems using the pdetool GUI. There are also a
number of shortcuts that you can use in certain situations.
Note There are platform-dependent keyboard accelerators available for many
of the most common pdetool GUI activities. Learning to use the accelerator
keys may improve the efficiency of your pdetool sessions.
The basic flow of actions is indicated by the way the graphical buttons and
the menus are ordered from left to right. You work your way from left to
right in the process of modeling, defining, and solving your PDE problem
using the pdetool GUI:
• When you start, pdetool is in draw mode, where you can use the four basic
solid objects to draw your Constructive Solid Geometry (CSG) model. You
can also edit the set formula. The solid objects are selected using the five
leftmost buttons (or from the Draw menu).
• To the right of the draw mode buttons you find buttons through which you
can access all the functions that you need to define and solve the PDE
problem: define boundary conditions, design the triangular mesh, solve the
PDE, and plot the solution.
The following sequence of actions covers all the steps of a normal pdetool
session:
1 Use pdetool as a drawing tool to make a drawing of the 2-D geometry on
which you want to solve your PDE. Make use of the four basic solid objects
and the grid and the “snap-to-grid” feature. The GUI starts in the draw
mode, and you can select the type of object that you want to use by clicking
the corresponding button or by using the Draw menu. Combine the solid
objects and the set algebra to build the desired CSG model.
2 Save the geometry to a model file. The model file is an M-file, so if you
want to continue working using the same geometry at your next Partial
Differential Equation Toolbox session, simply type the name of the model
file at the MATLAB prompt. The pdetool GUI then starts with the model
file’s solid geometry loaded. If you save the PDE problem at a later stage of
1-36
Using the pdetool GUI
the solution process, the model file also contains commands to recreate the
boundary conditions, the PDE coefficients, and the mesh.
3 Move to the next step in the PDE solving process by clicking the
button.
The outer boundaries of the decomposed geometry are displayed with the
default boundary condition indicated. If the outer boundaries do not match
the geometry of your problem, reenter the draw mode. You can then correct
your CSG model by adding, removing or altering any of the solid objects, or
change the set formula used to evaluate the CSG model.
Note The set formula can only be edited while you are in the draw mode.
If the drawing process resulted in any unwanted subdomain borders,
remove them by using the Remove Subdomain Border or Remove All
Subdomain Borders option from the Boundary menu.
You can now define your problem’s boundary conditions by selecting
the boundary to change and open a dialog box by double-clicking the
boundary or by using the Specify Boundary Conditions option from
the Boundary menu.
4 Initialize the triangular mesh. Click the & button or use the corresponding
Mesh menu option Initialize Mesh. Normally, the mesh algorithm’s
default parameters generate a good mesh. If necessary, they can be
accessed using the Parameters menu item.
5 If you need a finer mesh, the mesh can be refined by clicking the Refine
button. Clicking the button several times causes a successive refinement
of the mesh. The cost of a very fine mesh is a significant increase in the
number of points where the PDE is solved and, consequently, a significant
increase in the time required to compute the solution. Do not refine unless
it is required to achieve the desired accuracy. For each refinement, the
number of triangles increases by a factor of four. A better way to increase
the accuracy of the solution to elliptic PDE problems is to use the adaptive
solver, which refines the mesh in the areas where the estimated error of
the solution is largest. See the adaptmesh reference page for an example of
how the adaptive solver can solve a Laplace equation with an accuracy that
requires more than 10 times as many triangles when regular refinement
is used.
1-37
1
Getting Started
6 Specify the PDE from the PDE Specification dialog box. You can access
that dialog box using the PDE button or the PDE Specification menu
item from the PDE menu.
Note This step can be performed at any time prior to solving the PDE
since it is independent of the CSG model and the boundaries. If the PDE
coefficients are material dependent, they are entered in the PDE mode by
double-clicking the different subdomains.
7 Solve the PDE by clicking the = button or by selecting Solve PDE from
the Solve menu. If you do not want an automatic plot of the solution, or if
you want to change the way the solution is presented, you can do that from
the Plot Selection dialog box prior to solving the PDE. You open the Plot
Selection dialog box by clicking the button with the 3-D solution plot icon or
by selecting the Parameters menu item from the Plot menu.
8 Now, from here you can choose one of several alternatives:
• Export the solution and/or the mesh to the MATLAB main workspace
for further analysis.
• Visualize other properties of the solution.
• Change the PDE and recompute the solution.
• Change the mesh and recompute the solution. If you select Initialize
Mesh, the mesh is initialized; if you select Refine Mesh, the current
mesh is refined. From the Mesh menu, you can also jiggle the mesh
and undo previous mesh changes.
• Change the boundary conditions. To return to the mode where you can
select boundaries, use the
button or the Boundary Mode option
from the Boundary menu.
• Change the CSG model. You can reenter the draw mode by selecting
Draw Mode from the Draw menu or by clicking one of the Draw Mode
icons to add another solid object. Back in the draw mode, you are able to
add, change, or delete solid objects and also to alter the set formula.
1-38
Using the pdetool GUI
In addition to the recommended path of actions, there are a number of
shortcuts, which allow you to skip over one or more steps. In general, the
pdetool GUI adds the necessary steps automatically.
• If you have not yet defined a CSG model, and leave the draw mode with
an empty model, pdetool creates an L-shaped geometry with the default
boundary condition and then proceeds to the action called for, performing
all the steps necessary.
• If you are in draw mode and click the & button to initialize the mesh,
pdetool first decomposes the geometry using the current set formula and
assigns the default boundary condition to the outer boundaries. After that,
an initial mesh is created.
• If you click the refine button to refine the mesh before the mesh has
been initialized, pdetool first initializes the mesh (and decomposes the
geometry, if you were still in the draw mode).
• If you click the = button to solve the PDE and you have not yet created a
mesh, pdetool initializes a mesh before solving the PDE.
• If you select a plot type and choose to plot the solution, pdetool checks to
see if there is a solution to the current PDE available. If not, pdetool first
solves the current PDE. The solution is then displayed using the selected
plot options.
• If you have not defined your PDE, pdetool solves the default PDE, which
is Poisson’s equation:
(This corresponds to the generic elliptic PDE with c = 1, a = 0, and f = 10.)
For the different application modes, different default PDE settings apply.
Object Selection Methods
Throughout the GUI, similar principles apply for selecting objects such as
solid objects, subdomains, and boundaries.
• To select a single object, click it using the left mouse button.
• To select several objects and to deselect objects, Shift+click (or click using
the middle mouse button) on the desired objects.
1-39
1
Getting Started
• Clicking in the intersection of several objects selects all the intersecting
objects.
• To open an associated dialog box, double-click an object. If the object is not
selected, it is selected before opening the dialog box.
• In draw mode and PDE mode, clicking outside of objects deselects all
objects.
• To select all objects, use the Select All option from the Edit menu.
• When defining boundary conditions and the PDE via the menu items from
the Boundary and PDE menus, and no boundaries or subdomains are
selected, the entered values applies to all boundaries and subdomains by
default.
Display Additional Information
In mesh mode, you can use the mouse to display the node number and the
triangle number at the position where you click. Press the left mouse button
to display the node number on the information line. Press the middle mouse
button (or use the left mouse button and the Shift key) to display the triangle
number on the information line.
In plot mode, you can use the mouse to display the numerical value of the
plotted property at the position where you click. Press the left mouse button
to display the triangle number and the value of the plotted property on the
information line.
The information remains on the information line until you release the mouse
button.
Entering Parameter Values as MATLAB Expressions
When entering parameter values, e.g., as a function of x and y, the entered
string must be a MATLAB expression to be evaluated for x and y defined on
the current mesh, i.e., x and y are MATLAB row vectors. For example, the
function 4 x y should be entered as 4*x.*y and not as 4*x*y, which normally
is not a valid MATLAB expression.
1-40
Using the pdetool GUI
Using Earlier Version Partial Differential Equation
Toolbox Model M-Files
You can convert Model M-files created using an earlier version of Partial
Differential Equation Toolbox software for use with the current versions of
MATLAB and Partial Differential Equation Toolbox software. The old Model
M-files cannot be used directly in the current version of Partial Differential
Equation Toolbox software.
To convert your old Model M-files, use the conversion utility pdemdlcv. For
example, to convert a Model M-file called model42.m to a compatible Model
M-file called model5.m, type the following at the MATLAB command line:
pdemdlcv model42 model5
1-41
1
Getting Started
Using Command-Line Functions
In this section...
“Introduction” on page 1-42
“Data Structures and Utility Functions” on page 1-42
“Hints and Suggestions for Using Command-Line Functions” on page 1-47
Introduction
Although the pdetool GUI provides a convenient working environment, there
are situations where the flexibility of using the command-line functions is
needed. These include:
• Geometrical shapes other than straight lines, circular arcs, and elliptical
arcs
• Nonstandard boundary conditions
• Complicated PDE or boundary condition coefficients
• More than two dependent variables in the system case
• Nonlocal solution constraints
• Special solution data processing and presentation itemize
The GUI can still be a valuable aid in some of the situations presented
previously, if part of the modeling is done using the GUI and then made
available for command-line use through the extensive data export facilities
of the GUI.
Data Structures and Utility Functions
The process of defining your problem and solving it is reflected in the design of
the GUI. A number of data structures define different aspects of the problem,
and the various processing stages produce new data structures out of old
ones. See the following figure.
The rectangles are functions, and ellipses are data represented by matrices or
M-files. Arrows indicate data necessary for the functions.
1-42
Using Command-Line Functions
As there is a definite direction in this diagram, you can cut into it by
presenting the needed data sets, and then continue downward. In the
following sections, we give pointers to descriptions of the precise formats of
the various data structures and M-files.
1-43
1
Getting Started
Geometry
Description
matrix
decsg
Decomposed
Geometry
matrix
Geometry
M-file
initmesh
Boundary
Condition
matrix
Boundary
M-file
Mesh
data
assempde
Solution
data
pdeplot
1-44
refinemesh
Coefficient
matrix
Coefficient
M-file
Using Command-Line Functions
Constructive Solid Geometry Model
A Constructive Solid Geometry (CSG) model is specified by a Geometry
Description matrix, a set formula, and a Name Space matrix. For a description
of these data structures, see the reference page for decsg. At this level,
the problem geometry is defined by overlapping solid objects. These can be
created by drawing the CSG model in the GUI and then exporting the data
using the Export Geometry Description, Set Formula, Labels option
from the Draw menu.
Decomposed Geometry
A decomposed geometry is specified by either a Decomposed Geometry matrix,
or by a Geometry M-file. Here, the geometry is described as a set of disjoint
minimal regions bounded by boundary segments and border segments. A
Decomposed Geometry matrix can be created from a CSG model by using the
function decsg. It can also be exported from the GUI by selecting the Export
Decomposed Geometry, Boundary Cond’s option from the Boundary
menu. A Geometry M-file equivalent to a given Decomposed Geometry matrix
can be created using the wgeom function. A decomposed geometry can be
visualized with the pdegplot function. For descriptions of the data structures
of the Decomposed Geometry matrix and Geometry M-file, see the respective
reference pages for decsg and pdegeom.
Boundary Conditions
These are specified by either a Boundary Condition matrix, or a Boundary
M-file. Boundary conditions are given as functions on boundary segments.
A Boundary Condition matrix can be exported from the GUI by selecting
the Export Decomposed Geometry, Boundary Cond’s option from
the Boundary menu. A Boundary M-file equivalent to a given Boundary
Condition matrix can be created using the wbound function. For a description
of the data structures of the Boundary Condition matrix and Boundary M-file,
see the respective reference pages for assemb and pdebound.
Equation Coefficients
The PDE is specified by either a Coefficient matrix or a Coefficient M-file for
each of the PDE coefficients c, a, f, and d. The coefficients are functions on
the subdomains. Coefficients can be exported from the GUI by selecting the
1-45
1
Getting Started
Export PDE Coefficient option from the PDE menu. For the details on the
equation coefficient data structures, see the reference page for assempde.
Mesh
A triangular mesh is described by the mesh data which consists of a Point
matrix, an Edge matrix, and a Triangle matrix. In the mesh, minimal regions
are triangulated into subdomains, and border segments and boundary
segments are broken up into edges. Mesh data is created from a decomposed
geometry by the function initmesh and can be altered by the functions
refinemesh and jigglemesh. The Export Mesh option from the Mesh menu
provides another way of creating mesh data. The adaptmesh function creates
mesh data as part of the solution process. The mesh may be plotted with
the pdemesh function. For details on the mesh data representation, see the
reference page for initmesh.
Solution
The solution of a PDE problem is represented by the solution vector. A
solution gives the value at each mesh point of each dependent variable,
perhaps at several points in time, or connected with different eigenvalues.
Solution vectors are produced from the mesh, the boundary conditions, and
the equation coefficients by assempde, pdenonlin, adaptmesh, parabolic,
hyperbolic, and pdeeig. The Export Solution option from the Solve menu
exports solutions to the workspace. Since the meaning of a solution vector
is dependent on its corresponding mesh data, they are always used together
when a solution is presented. For details on solution vectors, see the reference
page for assempde.
Post Processing and Presentation
Given a solution/mesh pair, a variety of tools is provided for the visualization
and processing of the data. pdeintrp and pdeprtni can be used to interpolate
between functions defined at triangle nodes and functions defined at triangle
midpoints. tri2grid interpolates a functions from a triangular mesh to a
rectangular grid. pdegrad and pdecgrad compute gradients of the solution.
pdeplot has a large number of options for plotting the solution. pdecont and
pdesurf are convenient shorthands for pdeplot.
1-46
Using Command-Line Functions
Hints and Suggestions for Using Command-Line
Functions
Several examples of command-line function usage are given in “Common
PDE Problems” on page 1-49.
Use the export facilities of the GUI as much as you can. They provide data
structures with the correct syntax, and these are good starting points that
you can modify to suit your needs.
A good way to produce a Geometry M-file describing a geometry outside of
the possibilities provided by the GUI is to draw a similar geometry using the
GUI, export the Decomposed Geometry matrix, and write a Geometry M-file
with wgeom. The special segments can then be edited by hand. An example
of a hand-tailored Geometry M-file is cardg. See also the reference page
for pdegeom.
Working with the system matrices and vectors produced by assema and
assemb can sometimes be valuable. When solving the same equation for
different loads or boundary conditions, it pays to assemble the stiffness matrix
only once. Point loads on a particular node can be implemented by adding the
load to the corresponding row in the right side vector. A nonlocal constraint
can be incorporated into the H and R matrices.
An example of a handwritten Coefficient M-file is circlef.m, which produces
a point load. You can find the full example in pdedemo7 and on the assempde
reference page.
The routines for adaptive mesh generation and solution are powerful but can
lead to dense meshes and thus long computation times. Setting the Ngen
parameter to one limits you to a single refinement step. This step can then be
repeated to show the progress of the refinement. The Maxt parameter helps
you stop before the adaptive solver generates too many triangles. An example
of a handwritten triangle selection function is circlepick, used in pdedemo7.
Remember that you always need a decomposed geometry with adaptmesh.
Deformed meshes are easily plotted by adding offsets to the Point matrix p.
Assuming two variables stored in the solution vector u:
np=size(p,2);
pdemesh(p+scale*[u(1:np) u(np+1:np+np)]',e,t)
1-47
1
Getting Started
The time evolution of eigenmodes is obtained by, e.g.,
u1=u(:,mode)*cos(sqrt(l(mode))*tlist)
% hyperbolic
for positive eigenvalues in hyperbolic problems, or
u1=u(:,mode)*exp(-l(mode)*tlist);
% parabolic
in parabolic problems. This makes nice animations, perhaps together with
deformed mesh plots.
1-48
Common PDE Problems
Common PDE Problems
In this section...
“Elliptic Problems” on page 1-49
“Parabolic Problems” on page 1-64
“Hyperbolic Problem” on page 1-71
“Eigenvalue Problems” on page 1-75
“Application Modes” on page 1-84
“References” on page 1-118
Elliptic Problems
This topic describes the solution of some elliptic PDE problems. The last
problem, a minimal surface problem, is nonlinear and illustrates the use
of the nonlinear solver. The problems are solved using both the Partial
Differential Equation Toolbox graphical user interface and command-line
functions. The topics include:
• “Poisson’s Equation on Unit Disk” on page 1-49
• “A Scattering Problem” on page 1-53
• “A Minimal Surface Problem” on page 1-58
• “Domain Decomposition” on page 1-60
Poisson’s Equation on Unit Disk
As a first example of an elliptic problem, let us use the simplest elliptic PDE
of all—Poisson’s equation.
The problem formulation is
-&U = 1 in !, U = 0 on
where ! is the unit disk. In this case, the exact solution is
1-49
1
Getting Started
so the error of the numeric solution can be evaluated for different meshes.
Using the Graphical User Interface. With the pdetool graphical user
interface (GUI) started, perform the following steps using the generic scalar
mode:
1 Using some of the Option menu features, add a grid and turn on the
“snap-to-grid” feature. Draw a circle by clicking the button with the ellipse
icon with the + sign, and then click-and-drag from the origin, using the
right mouse button, to a point at the circle’s perimeter. If the circle that you
create is not a perfect unit circle, double-click the circle. This opens a dialog
box where you can specify the exact center location and radius of the circle.
2 Enter the boundary mode by clicking the button with the
icon. The
boundaries of the decomposed geometry are plotted, and the outer
boundaries are assigned a default boundary condition (Dirichlet boundary
condition, u = 0 on the boundary). In this case, this is what we want. If the
boundary condition is different, double-click the boundary to open a dialog
box through which you can enter and display the boundary condition.
3 To define the partial differential equation, click the PDE button. This
opens a dialog box, where you can define the PDE coefficients c, a, and f.
In this simple case, they are all constants: c = 1, f = 1, and a = 0.
4 Click the & button or select Initialize Mesh from the Mesh menu. This
initializes and displays a triangular mesh.
5 Click the Refine button or select Refine Mesh from the Mesh menu. This
causes a refinement of the initial mesh, and the new mesh is displayed.
6 To solve the system, just click the = button. The toolbox assembles the
PDE problem and solves the linear system. It also provides a plot of the
solution. Using the Plot Selection dialog box, you can select different types
of solution plots.
1-50
Common PDE Problems
7 To compare the numerical solution to the exact solution, select the user
entry in the Property pop-up menu for Color in the Plot Selection dialog
box. Then input the MATLAB expression u-(1-x.^2-y.^2)/4 in the user
entry edit field. You obtain a plot of the absolute error in the solution.
You can also compare the numerical solution to the exact solution by entering
some simple command-line-oriented commands. It is easy to export the mesh
data and the solution to the MATLAB main workspace by using the Export
options from the Mesh and Solve menus. To refine the mesh and solve the
PDE successively, simply click the refine and = buttons until the desired
accuracy is achieved. (Another possibility is to use the adaptive solver.)
1-51
1
Getting Started
Using Command-Line Functions. First you must create a MATLAB
function that parameterizes the 2-D geometry—in this case a unit circle.
The M-file circleg.m returns the coordinates of points on the unit circle’s
boundary. The file conforms to the file format described on the reference page
for pdegeom. You can display the M-file by typing type circleg.
Also, you need a function that describes the boundary condition. This is
a Dirichlet boundary condition where u = 0 on the boundary. The M-file
circleb1.m provides the boundary condition. The file conforms to the file
format described on the reference page for pdebound. You can display the
M-file by typing type circleb1.
Now you can start working from the MATLAB command line:
[p,e,t]=initmesh('circleg','Hmax',1);
error=[]; err=1;
while err > 0.001,
[p,e,t]=refinemesh('circleg',p,e,t);
u=assempde('circleb1',p,e,t,1,0,1);
exact=-(p(1,:).^2+p(2,:).^2-1)/4;
err=norm(u-exact',inf);
error=[error err];
end
pdemesh(p,e,t)
pdesurf(p,t,u)
pdesurf(p,t,u-exact')
The first MATLAB command creates the initial mesh using the
parameterizing function circleg.
Also, initialize a vector error for the maximum norm errors of the successive
solutions and set the initial error err to 1. The loop then runs until the error
of the solution is smaller than 10-3.
1 Refine the mesh. The current triangular mesh, defined by the geometry
circleg, the point matrix p, the edge matrix e, and the triangle matrix t,
is refined, and the mesh is returned using the same matrix variables.
1-52
Common PDE Problems
2 Assemble and solve the linear system. The coefficients of the elliptic PDE
are constants (c = f = 1, a = 0) for this simple case. circleb1 contains
a description of the boundary conditions, and p, e, and t define the
triangular mesh.
3 Find the error of the numerical solution produced by Partial Differential
Equation Toolbox solver. The vector exact contains the exact solution at
the nodes, and what you actually find is the max-norm error of the solution
at the nodes.
4 Plot the mesh, the solution, and the error. The plot function pdesurf as
third argument can take any vector of values on the mesh given by p and t,
not just the solution. In this case you are also plotting the error function.
−4
x 10
4
3
2
1
0
1
1
0.5
0.5
0
0
−0.5
−0.5
−1
−1
The Error Function
pdedemo1 performs all the previous steps.
A Scattering Problem
The scattering problem is to compute the waves reflected from an object
illuminated by incident waves. For this problem consider an infinite
horizontal membrane subjected to small vertical displacements U. The
membrane is fixed at the object boundary.
1-53
1
Getting Started
r
V
We assume that the medium is homogeneous so that the wave speed is
constant, c.
Note Do not confuse this c with the parameter c appearing in Partial
Differential Equation Toolbox functions.
When the illumination is harmonic in time, we can compute the field by
solving a single steady problem. With U(x,y,t) = u(x,y)e–i!t, the wave equation
∂ 2U
∂t2
− c2 ∆U = 0
turns into –' 2u – c2&u = 0 or the Helmholtz’s equation
–&u – k2u = 0,
where k, the wave number, is related to the angular frequency ', the
frequency f, and the wavelength " by
k=
! 2" f 2"
=
=
.
c
c
#
We have yet to specify the boundary conditions. Let the incident wave be a
!
plane wave traveling in the direction a = (cos(a), sin(a)):
1-54
Common PDE Problems
! !
i ka⋅ x −! t )
V ( x, y, t) = e (
= v( x, y) e−i!t ,
where
! !
v( x, y) = eika⋅ x .
u is the sum of v and the reflected wave r,
u=v+r
The boundary condition for the object’s boundary is easy: u = 0, i.e.,
r = –v(x,y)
For acoustic waves, where v is the pressure disturbance, the proper condition
would be
∂u
= 0.
∂n
The reflected wave r travels outward from the object. The condition at the
outer computational boundary should be chosen to allow waves to pass
without reflection. Such conditions are usually called nonreflecting, and we
!
use the classical Sommerfeld radiation condition. As x approaches infinity, r
approximately satisfies the one-way wave equation
which allows waves moving in the positive (-direction only (( is the radial
distance from the object). With the time-harmonic solution, this turns into the
generalized Neumann boundary condition
For simplicity, let us make the outward normal of the computational domain
approximate the outward (-direction.
1-55
1
Getting Started
Using the Graphical User Interface. You can now use pdetool to solve
this scattering problem. Using the generic scalar mode, start by drawing the
2-D geometry of the problem. Let the illuminated object be a square SQ1
with a side of 0.1 units and center in [0.8 0.5] and rotated 45 degrees, and
let the computational domain be a circle C1 with a radius of 0.45 units and
the same center location. The Constructive Solid Geometry (CSG) model is
then given by C1-SQ1.
For the outer boundary (the circle perimeter), the boundary condition is a
generalized Neumann condition with q = -ik. The wave number k = 60, which
corresponds to a wavelength of about 0.1 units, so enter -60i as a constant q
and 0 as a constant g.
For the square object’s boundary, you have a Dirichlet boundary condition:
In this problem, the incident wave is traveling in the -x direction, so the
boundary condition is simply
r = -e-ikx
Enter this boundary condition in the Boundary Condition dialog box as
a Dirichlet condition: h=1, r=-exp(-i*60*x). The real part of this is a
sinusoid.
For sufficient accuracy, about 10 finite elements per wavelength are needed.
The outer boundary should be located a few object diameters from the object
itself. An initial mesh generation and two successive mesh refinements give
approximately the desired resolution.
Although originally a wave equation, the transformation into a Helmholtz’s
equation makes it—in the Partial Differential Equation Toolbox context,
but not strictly mathematically—an elliptic equation. The elliptic PDE
coefficients for this problem are c = 1, a = -k2 = -3600, and f = 0. Open the PDE
Specification dialog box and enter these values.
The problem can now be solved, and the solution is complex. For a complex
solution, the real part is plotted and a warning message is issued.
1-56
Common PDE Problems
The propagation of the reflected waves is computed as
Re(r(x,y)e–i!t),
which is the reflex of
(
! !
i ka⋅ x −! t )
Re e (
).
To see the whole field, plot
((
! !
)
)
Re r( x, y) + eika⋅ x e−i!t .
The reflected waves and the “shadow” behind the object are clearly visible
when you plot the reflected wave.
To make an animation of the reflected wave, the solution and the mesh data
must first be exported to the main workspace. Then make a script M-file or
type the following commands at the MATLAB prompt:
h=newplot; hf=get(h,'Parent'); set(hf,'Renderer','zbuffer')
axis tight, set(gca,'DataAspectRatio',[1 1 1]); axis off
M=moviein(10,hf);
maxu=max(abs(u));
colormap(cool)
for j=1:10,
ur=real(exp(-j*2*pi/10*sqrt(-1))*u));
pdeplot(p,e,t,'xydata',ur,'colorbar','off','mesh','off');
caxis([-maxu maxu]);
axis tight, set(gca,'DataAspectRatio',[1 1 1]); axis off
M(:,j)=getframe;
end
movie(hf,M,50);
pdedemo2 contains a full command-line demonstration of the scattering
problem.
1-57
1
Getting Started
A Minimal Surface Problem
In many problems the coefficients c, a, and f do not only depend on x and y,
but also on the solution u itself. Consider the equation


1
−∇ ⋅ 
∇u  = 0
 1 + ∇u 2



on the unit disk ! = {(x, y) | x2 + y2 ) 1}, with u = x2 on *!.
This problem is nonlinear and cannot be solved with the regular elliptic
solver. Instead, the nonlinear solver pdenonlin is used.
Let us solve this minimal surface problem using the pdetool GUI and
command-line functions.
Using the Graphical User Interface. Make sure that the application mode
in the pdetool GUI is set to Generic Scalar. The problem domain is simply
a unit circle. Draw it and move to the boundary mode to define the boundary
conditions. Use Select All from the Edit menu to select all boundaries. Then
double-click a boundary to open the Boundary Condition dialog box. The
Dirichlet condition u = x2 is entered by typing x.^2 into the r edit box. Next,
open the PDE Specification dialog box to define the PDE. This is an elliptic
equation with
1-58
Common PDE Problems
c=
1
1 + ∇u
2
, a = 0, and f = 0.
The nonlinear c is entered into the c edit box as
1./sqrt(1+ux.^2+uy.^2)
Initialize a mesh and refine it once.
Before solving the PDE, select Parameters from the Solve menu and check
the Use nonlinear solver option. Also, set the tolerance parameter to 0.001.
Click the = button to solve the PDE. Use the Plot Selection dialog box to plot
the solution in 3-D (check u and continuous selections in the Height column)
to visualize the saddle shape of the solution.
Using Command-Line Functions. Working from the command line, the
following sequence of commands solves the minimal surface problem and
plots the solution. The M-files circleg and circleb2 contain the geometry
specification and boundary condition functions, respectively.
g='circleg';
b='circleb2';
c='1./sqrt(1+ux.^2+uy.^2)';
rtol=1e-3;
[p,e,t]=initmesh(g);
[p,e,t]=refinemesh(g,p,e,t);
u=pdenonlin(b,p,e,t,c,0,0,'Tol',rtol);
pdesurf(p,t,u)
You can run this example by typing pdedemo3.
1-59
1
Getting Started
1
0.8
0.6
0.4
0.2
0
1
1
0.5
0.5
0
0
−0.5
−0.5
−1
−1
Domain Decomposition
Partial Differential Equation Toolbox software is designed to deal with
one-level domain decomposition. If ! has a complicated geometry, it is often
useful to decompose it into the union of more subdomains of simpler structure.
Such structures are often introduced by pdetool.
Assume now that ! is the disjoint union of some subdomains !1, !2, . . . ,
!n. Then you could renumber the nodes of a mesh on ! such that the indices
of the nodes of each subdomain are grouped together, while all the indices of
nodes common to two or more subdomains come last. Since K has nonzero
entries only at the lines and columns that are indices of neighboring nodes,
the stiffness matrix is partitioned as follows:
1-60
Common PDE Problems
while the right side is
The Partial Differential Equation Toolbox function assempde can assemble
the matrices Kj, Bj, fj, and C separately. You have full control over the storage
and further processing of these matrices.
Furthermore, the structure of the linear system
Ku = F
is simplified by decomposing K into the partitioned matrix.
Now consider the geometry of the L-shaped membrane. You can plot the
geometry of the membrane by typing
pdegplot('lshapeg')
Notice the borders between the subdomains. There are three subdomains.
Thus the matrix formulas with n = 3 can be used. Now generate a mesh for
the geometry:
[p,e,t]=initmesh('lshapeg');
[p,e,t]=refinemesh('lshapeg',p,e,t);
[p,e,t]=refinemesh('lshapeg',p,e,t);
So for this case, with n = 3, you have
1-61
1
Getting Started
and the solution is given by block elimination:
(C − B1 K1−1 B1T − B2 K 2−1 B2T − B3 K 3−1 B3T )uc = fc − B1 K1−1 f1 − B2 K 2−1 f2 − B3 K 3−1 f3
u1 = K1−1 ( f1 − B1T uc )
"
In the following MATLAB solution, a more efficient algorithm using Cholesky
factorization is used:
time=[];
np=size(p,2);
% Find common points
c=pdesdp(p,e,t);
nc=length(c);
C=zeros(nc,nc);
FC=zeros(nc,1);
[i1,c1]=pdesdp(p,e,t,1);ic1=pdesubix(c,c1);
[K,F]=assempde('lshapeb',p,e,t,1,0,1,time,1);
K1=K(i1,i1);d=symamd(K1);i1=i1(d);
K1=chol(K1(d,d));B1=K(c1,i1);a1=B1/K1;
C(ic1,ic1)=C(ic1,ic1)+K(c1,c1)-a1*a1';
f1=F(i1);e1=K1'\f1;FC(ic1)=FC(ic1)+F(c1)-a1*e1;
[i2,c2]=pdesdp(p,e,t,2);ic2=pdesubix(c,c2);
[K,F]=assempde('lshapeb',p,e,t,1,0,1,time,2);
K2=K(i2,i2);d=symamd(K2);i2=i2(d);
K2=chol(K2(d,d));B2=K(c2,i2);a2=B2/K2;
C(ic2,ic2)=C(ic2,ic2)+K(c2,c2)-a2*a2';
f2=F(i2);e2=K2'\f2;FC(ic2)=FC(ic2)+F(c2)-a2*e2;
1-62
Common PDE Problems
[i3,c3]=pdesdp(p,e,t,3);ic3=pdesubix(c,c3);
[K,F]=assempde('lshapeb',p,e,t,1,0,1,time,3);
K3=K(i3,i3);d=symamd(K3);i3=i3(d);
K3=chol(K3(d,d));B3=K(c3,i3);a3=B3/K3;
C(ic3,ic3)=C(ic3,ic3)+K(c3,c3)-a3*a3';
f3=F(i3);e3=K3'\f3;FC(ic3)=FC(ic3)+F(c3)-a3*e3;
% Solve
u=zeros(np,1);
u(c)=C\ FC;
u(i1)=K1\(e1-a1'*u(c1));
u(i2)=K2\(e2-a2'*u(c2));
u(i3)=K3\(e3-a3'*u(c3));
The problem can also be solved by typing
% Compare with solution not using subdomains
[K,F]=assempde('lshapeb',p,e,t,1,0,1);u1=K\F;
norm(u-u1,'inf')
pdesurf(p,t,u)
You can run this entire example by typing pdedemo4.
1-63
1
Getting Started
0.15
0.1
0.05
0
1
1
0.5
0.5
0
0
−0.5
−0.5
−1
−1
Parabolic Problems
This section describes the solution of some parabolic PDE problems. The
problems are solved using both the Partial Differential Equation Toolbox
graphical user interface and the command-line functions. The topics include:
• “The Heat Equation: A Heated Metal Block” on page 1-64
• “Heat Distribution in Radioactive Rod” on page 1-69
The Heat Equation: A Heated Metal Block
A common parabolic problem is the heat equation:
The heat equation describes the diffusion of heat in a body of some kind. See
“Application Modes” on page 1-84 for more information about heat transfer
and diffusion problems.
1-64
Common PDE Problems
This first example studies a heated metal block with a rectangular crack or
cavity. The left side of the block is heated to 100 degrees centigrade. At the
right side of the metal block, heat is flowing from the block to the surrounding
air at a constant rate. All the other block boundaries are isolated. This leads
to the following set of boundary conditions (when proper scaling of t is chosen):
•
•
•
on the left side (Dirichlet condition)
on the right side (Neumann condition)
on all other boundaries (Neumann condition)
Also, for the heat equation we need an initial value: the temperature in the
metal block at the starting time t0. In this case, the temperature of the block
is 0 degrees at the time we start applying heat.
Finally, to complete the problem formulation, we specify that the starting
time is 0 and that we want to study the heat distribution during the first
five seconds.
Using the Graphical User Interface. Once you have started the pdetool
GUI and selected the Generic Scalar mode, drawing the CSG model can be
done very quickly: Draw a rectangle (R1) with the corners in x = [-0.5 0.5
0.5 -0.5] and y = [-0.8 -0.8 0.8 0.8]. Draw another rectangle (R2) to
represent the rectangular cavity. Its corners should have the coordinates x =
[-0.05 0.05 0.05 -0.05] and y = [-0.4 -0.4 0.4 0.4]. To assist in
drawing the narrow rectangle representing the cavity, open the Grid Spacing
dialog box from the Options and enter x-axis extra ticks at -0.05 and 0.05.
Then turn on the grid and the “snap-to-grid” feature. A rectangular cavity
with the correct dimensions is then easy to draw.
1-65
1
Getting Started
The CSG model of the metal block is now simply expressed as the set formula
R1-R2.
Leave the draw mode and enter the boundary mode by clicking the
button,
and continue by selecting boundaries and specifying the boundary conditions.
Using the Select All option from the Edit menu and then defining the
Neumann condition
∂u
=0
∂n
for all boundaries first is a good idea since that leaves only the leftmost and
rightmost boundaries to define individually.
The next step is to open the PDE Specification dialog box and enter the PDE
coefficients.
The generic parabolic PDE that Partial Differential Equation Toolbox
functions solve is
with initial values u0 = u(t0) and the times at which to compute a solution
specified in the array tlist.
1-66
Common PDE Problems
For this case, you have d = 1, c = 1, a = 0, and f = 0.
Initialize the mesh by clicking the & button. If you want, you can refine the
mesh by clicking the Refine button.
The initial values u0 = 0, and the list of times is entered as the MATLAB
array [0:0.5:5]. They are entered into the Solve Parameters dialog box,
which is accessed by selecting Parameters from the Solve menu.
The problem can now be solved. Pressing the = button solves the heat
equation at 11 different times from 0 to 5 seconds. By default, an interpolated
plot of the solution, i.e., the heat distribution, at the end of the time span
is displayed.
A more interesting way to visualize the dynamics of the heat distribution
process is to animate the solution. To start an animation, check the
Animation check box in the Plot selection dialog box. Also, select the
colormap hot. Click the Plot button to start a recording of the solution
plots in a separate figure window. The recorded animation is then “played”
five times.
The temperature in the block rises very quickly. To improve the animation
and focus on the first second, try to change the list of times to the MATLAB
expression logspace(-2,0.5,20).
Also, try to change the heat capacity coefficient d and the heat flow at the
rightmost boundary to see how they affect the heat distribution.
1-67
1
Getting Started
Using Command-Line Functions. First, you must create geometry and
boundary condition M-files. The M-files used here were created using
pdetool. The geometry of the metal block is described in crackg.m, and the
boundary conditions can be found in crackb.m.
To create an initial mesh, call initmesh:
» [p,e,t]=initmesh('crackg');
The heat equation can now be solved using the Partial Differential Equation
Toolbox function parabolic. The generic parabolic PDE that parabolic
solves is
with initial value u0 = u(t0) and the times at which to compute a solution
specified in the array tlist. For this case, you have d = 1, c = 1, a = 0, and
f = 0. The initial value u0 = 0, and the list of times, tlist, is set to the
MATLAB array 0:0.5:5.
To compute the solution, call parabolic:
u=parabolic(0,0:0.5:5,'crackb',p,e,t,1,0,0,1);
1-68
Common PDE Problems
The solution u created this way a matrix with 11 columns, where each column
corresponds to the solution at the 11 points in time 0,0.5, . . . ,4.5,5.0.
Let us plot the solution at t = 5.0 seconds using interpolated shading and a
hidden mesh. Use the hot colormap:
pdeplot(p,e,t,'xydata',u(:,11),'mesh','off',...
'colormap','hot')
Heat Distribution in Radioactive Rod
This heat distribution problem is an example of a 3-D parabolic PDE problem
that is reduced to a 2-D problem by using cylindrical coordinates.
Consider a cylindrical radioactive rod. At the left end, heat is continuously
added. The right end is kept at a constant temperature. At the outer
boundary, heat is exchanged with the surroundings by transfer. At the
same time, heat is uniformly produced in the whole rod due to radioactive
processes. Assume that the initial temperature is zero. This leads to the
following problem:
where + is the density, C is the rod’s thermal capacity, k is the thermal
conductivity, and f is the radioactive heat source.
The density for this metal rod is 7800 kg/m3, the thermal capacity is 500
Ws/kgºC, and the thermal conductivity is 40 W/mºC. The heat source is
20000 W/m3. The temperature at the right end is 100 ºC. The surrounding
temperature at the outer boundary is 100 ºC, and the heat transfer coefficient
is 50 W/m2ºC. The heat flux at the left end is 5000 W/m2.
But this is a cylindrical problem, so you need to transform the equation, using
the cylindrical coordinates r, z, and ,. Due to symmetry, the solution is
independent of ,, so the transformed equation is
The boundary conditions are:
1-69
1
Getting Started
•
= 5000 at the left end of the rod (Neumann condition). Since the
generalized Neumann condition in Partial Differential Equation Toolbox
software is
+ qu = g, and c depends on r in this problem (c = kr),
= 5000r
this boundary condition is expressed as
• u = 100 at the right end of the rod (Dirichlet condition).
•
= 50(100-u) at the outer boundary (generalized Neumann
condition). In Partial Differential Equation Toolbox software, this must be
expressed as
+ 50r · u = 50r · 100.
• The cylinder axis r = 0 is not a boundary in the original problem, but in
our 2-D treatment it has become one. We must give the artificial boundary
condition
here.
The initial value is u(t0) = 0.
Using the Graphical User Interface. Solve this problem using the pdetool
GUI. Model the rod as a rectangle with its base along the x-axis, and let the
x-axis be the z direction and the y-axis be the r direction. A rectangle with
corners in (-1.5,0), (1.5,0), (1.5,0.2), and (-1.5,0.2) would then model a rod
with length 3 and radius 0.2.
Enter the boundary conditions by double-clicking the boundaries to open the
Boundary Condition dialog box. For the left end, use Neumann conditions
with 0 for q and 5000*y for g. For the right end, use Dirichlet conditions
with 1 for h and 100 for r. For the outer boundary, use Neumann conditions
with 50*y for q and 50*y*100 for g. For the axis, use Neumann conditions
with 0 for q and g.
Enter the coefficients into the PDE Specification dialog box: c is 40*y, a is
zero, d is 7800*500*y, and f is 20000*y.
Animate the solution over a span of 20000 seconds (computing the solution
every 1000 seconds). We can see how heat flows in over the right and outer
boundaries as long as u < 100, and out when u > 100. You can also open
the PDE Specification dialog box, and change the PDE type to Elliptic.
This shows the solution when u does not depend on time, i.e., the steady
state solution. The profound effect of cooling on the outer boundary can be
demonstrated by setting the heat transfer coefficient to zero.
1-70
Common PDE Problems
Hyperbolic Problem
This section describes the solution of a hyperbolic PDE problem. The problem
is solved using the Partial Differential Equation Toolbox graphical user
interface (GUI) and command-line functions.
The Wave Equation
As an example of a hyperbolic PDE, let us solve the wave equation
for transverse vibrations of a membrane on a square with corners in (-1,-1),
(-1,1), (1,-1), and (1,1). The membrane is fixed (u = 0) at the left and right
sides, and is free
at the upper and lower sides. Additionally, we need initial values for
u(t0) and
The initial values need to match the boundary conditions for the solution to
be well-behaved. If we start at t=0,
and
are initial values that satisfy the boundary conditions. The reason for the
arctan and exponential functions is to introduce more modes into the solution.
1-71
1
Getting Started
Using the Graphical User Interface. Use the pdetool GUI in the generic
scalar mode. Draw the square using the Rectangle/square option from
the Draw menu or the button with the rectangle icon. Proceed to define
the boundary conditions by clicking the
button and then double-click the
boundaries to define the boundary conditions.
Initialize the mesh by clicking the & button or by selecting Initialize mesh
from the Mesh menu.
Also, define the hyperbolic PDE by opening the PDE Specification dialog box,
selecting the hyperbolic PDE, and entering the appropriate coefficient values.
The general hyperbolic PDE is described by
so for the wave equation you get c = 1, a = 0, f = 0, and d = 1.
Before solving the PDE, select Parameters from the Solve menu to open the
Solve Parameters dialog box. As a list of times, enter linspace(0,5,31)
and as initial values for u:
atan(cos(pi/2*x))
and for
, enter
3*sin(pi*x).*exp(sin(pi/2*y))
1-72
Common PDE Problems
Finally, click the = button to compute the solution. The best plot for viewing
the waves moving in the x and y directions is an animation of the whole
sequence of solutions. Animation is a very real time and memory consuming
feature, so you may have to cut down on the number of times at which to
compute a solution. A good suggestion is to check the Plot in x-y grid option.
Using an x-y grid can speed up the animation process significantly.
Using Command-Line Functions. From the command line, solve the
equation with the preceding boundary conditions and the initial values,
starting at time 0 and then every 0.05 seconds for five seconds.
The geometry is described in the file squareg.m and the boundary conditions
in the file squareb3.m. The following sequence of commands then generates a
solution and animates it. First, create a mesh and define the initial values
and the times for which you want to solve the equation:
[p,e,t]=initmesh('squareg');
x=p(1,:)'; y=p(2,:)';
u0=atan(cos(pi/2*x));
ut0=3*sin(pi*x).*exp(sin(pi/2*y));
n=31;
1-73
1
Getting Started
tlist=linspace(0,5,n); % list of times
You are now ready to solve the wave equation. The general form for the
hyperbolic PDE in Partial Differential Equation Toolbox software is
so here you have d = 1, c = 1, a = 0, and f = 0:
uu=hyperbolic(u0,ut0,tlist,'squareb3',p,e,t,1,0,0,1);
To visualize the solution, you can animate it. Interpolate to a rectangular
grid to speed up the plotting:
delta=-1:0.1:1;
[uxy,tn,a2,a3]=tri2grid(p,t,uu(:,1),delta,delta);
gp=[tn;a2;a3];
umax=max(max(uu));
umin=min(min(uu));
newplot
M=moviein(n);
for i=1:n,
pdeplot(p,e,t,'xydata',uu(:,i),'zdata',uu(:,i),...
'mesh','off','xygrid','on','gridparam',gp,...
'colorbar','off','zstyle','continuous');
axis([-1 1 -1 1 umin umax]); caxis([umin umax]);
M(:,i)=getframe;
end
movie(M,10);
You can find a complete demo of this problem, including animation, in
pdedemo6. If you have lots of memory, you can try increasing n, the number of
frames in the movie.
1-74
Common PDE Problems
Animation of the Solution to the Wave Equation
Eigenvalue Problems
This section describes the solution of some eigenvalue PDE problems. The
problems are solved using thePartial Differential Equation Toolbox graphical
user interface (GUI) and command-line functions. The problems include:
• “Eigenvalues and Eigenfunctions for the L-Shaped Membrane” on page 1-75
• “L-Shaped Membrane with Rounded Corner” on page 1-80
• “Eigenvalues and Eigenmodes of a Square” on page 1-81
Eigenvalues and Eigenfunctions for the L-Shaped Membrane
The problem of finding the eigenvalues and the corresponding eigenfunctions
of an L-shaped membrane is of interest to all MATLAB users, since the plot
of the first eigenfunction is the logo of The MathWorks™. In fact, you can
compare the eigenvalues and eigenfunctions computed by Partial Differential
1-75
1
Getting Started
Equation Toolbox software to the ones produced by the MATLAB function
membrane.
The problem is to compute all eigenmodes with eigenvalues < 100 for the
eigenmode PDE problem
-&u = "u
on the geometry of the L-shaped membrane. u = 0 on the boundary (Dirichlet
condition).
Using the Graphical User Interface. With the pdetool GUI active, check
that the current mode is set to Generic Scalar. Then draw the L-shape as a
polygon with corners in (0,0), (-1,0), (-1,-1), (1,-1), (1,1), and (0,1).
There is no need to define any boundary conditions for this problem since the
default condition—u = 0 on the boundary—is the correct one. Therefore, you
can continue to the next step: to initialize the mesh. Refine the initial mesh
twice. Defining the eigenvalue PDE problem is also easy. Open the PDE
Specification dialog box and select Eigenmodes. The default values for the
PDE coefficients, c = 1, a = 0, d = 1, all match the problem description, so you
can exit the PDE Specification dialog box by clicking the OK button.
Open the Solve Parameters dialog box by selecting Parameters from the
Solve menu. The dialog box contains an edit box for entering the eigenvalue
search range. The default entry is [0 100], which is just what you want.
Finally, solve the L-shaped membrane problem by clicking the = button. The
solution displayed is the first eigenfunction. The value of the first (smallest)
eigenvalue is also displayed. You find the number of eigenvalues on the
information line at the bottom of the GUI. You can open the Plot Selection
dialog box and choose which eigenfunction to plot by selecting from a pop-up
menu of the corresponding eigenvalues.
Using Command-Line Functions. The geometry of the L-shaped membrane
is described in the file lshapeg.m and the boundary conditions in the file
lshapeb.m.
First, initialize the mesh and refine it twice using the command line functions
at the MATLAB prompt:
1-76
Common PDE Problems
[p,e,t]=initmesh('lshapeg');
[p,e,t]=refinemesh('lshapeg',p,e,t);
[p,e,t]=refinemesh('lshapeg',p,e,t);
Recall the general eigenvalue PDE problem description:
This means that in this case you have c = 1, a = 0, and d = 1. The syntax of
pdeeig, the Partial Differential Equation Toolbox eigenvalue solver, is
[v,l]=pdeeig(b,p,e,t,c,a,d,r)
The input argument r is a two-element vector indicating the interval on the
real axis where pdeeig searches for eigenvalues. Here you are looking for
eigenvalues < 100, so the interval you use is [0 100].
Now you can call pdeeig and see how many eigenvalues you find:
[v,l]=pdeeig('lshapeb',p,e,t,1,0,1,[0 100]);
There are 19 eigenvalues smaller than 100. Plot the first eigenmode and
compare it to the MATLAB membrane function:
pdesurf(p,t,v(:,1))
figure
membrane(1,20,9,9)
membrane can produce the first 12 eigenfunctions for the L-shaped membrane.
Compare also the 12th eigenmodes:
figure
pdesurf(p,t,v(:,12))
figure
membrane(12,20,9,9)
Looking at the following eigenmodes, you can see how the number of
oscillations increases. The eigenfunctions are symmetric or antisymmetric
around the diagonal from (0,0) to (1,-1), which divides the L-shaped membrane
into two mirror images. In a practical computation, you could take advantage
of such symmetries in the PDE problem, and solve over a region half the size.
The eigenvalues of the full L-shaped membrane are the union of those of the
1-77
1
Getting Started
half with Dirichlet boundary condition along the diagonal (eigenvalues 2, 4, 7,
11, 13, 16, and 17) and those with Neumann boundary condition (eigenvalues
1, 3, 5, 6, 10, 12, 14, and 15).
The eigenvalues "8 and "9 make up a double eigenvalue for the PDE at around
49.64. Also, the eigenvalues "18 and "19 make up another double eigenvalue at
around 99.87. You may have gotten two different but close values. The default
triangulation made by initmesh is not symmetric around the diagonal, but
a symmetric grid gives a matrix with a true double eigenvalue. Each of the
eigenfunctions u8 and u9 consists of three copies of eigenfunctions over the
unit square, corresponding to its double second eigenvalue. You may not have
obtained the zero values along a diagonal of the square—any line through
the center of the square may have been computed. This shows a general
fact about multiple eigenvalues for symmetric matrices; namely that any
vector in the invariant subspace is equally valid as an eigenvector. The two
eigenfunctions u8 and u9 are orthogonal to each other if the dividing lines
make right angles. Check your solutions for that.
Actually, the eigenvalues of the square can be computed exactly. They are
(m2+n2)-2
e.g., the double eigenvalue "18 and "19 is 10-2, which is pretty close to 100.
If you compute the FEM approximation with only one refinement, you
would only find 16 eigenvalues, and you obtain the wrong solution to the
original problem. You can of course check for this situation by computing the
eigenvalues over a slightly larger range than the original problem.
You get some information from the printout in the MATLAB command window
that is printed during the computation. For this problem, the algorithm
computed a new set of eigenvalue approximations and tested for convergence
every third step. In the output, you get the step number, the time in seconds
since the start of the eigenvalue computation, and the number of converged
eigenvalues with eigenvalues both inside and outside the interval counted.
Here is what MATLAB wrote:
Basis= 10,
Basis= 13,
1-78
Time=
Time=
2.70,
3.50,
New conv eig=
New conv eig=
0
0
Common PDE Problems
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
End of sweep: Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
Basis=
End of sweep: Basis=
16,
19,
22,
25,
28,
31,
34,
37,
40,
43,
46,
49,
52,
55,
58,
61,
64,
67,
70,
70,
32,
35,
38,
41,
44,
47,
50,
53,
53,
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
Time=
4.36,
5.34,
6.46,
7.61,
8.86,
10.23,
11.69,
13.28,
14.97,
16.77,
18.70,
20.73,
22.90,
25.13,
27.58,
30.13,
32.83,
35.64,
38.62,
38.62,
43.29,
44.70,
46.22,
47.81,
49.52,
51.35,
53.27,
55.30,
55.30,
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
New
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
conv
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
eig=
0
1
2
3
3
5
5
7
8
9
11
11
13
14
14
15
16
18
22
22
0
0
0
0
0
0
0
0
0
You can see that two Arnoldi runs were made. In the first, 22 eigenvalues
converged after a basis of size 70 was computed; in the second, where
the vectors were orthogonalized against all the 22 converged vectors, the
smallest eigenvalue stabilized at a value outside of the interval [0, 100], so
the algorithm signaled convergence. Of the 22 converged eigenvalues, 19
were inside the search interval.
1-79
1
Getting Started
L-Shaped Membrane with Rounded Corner
An extension of this problem is to compute the eigenvalues for an L-shaped
membrane where the inner corner at the “knee” is rounded. The roundness
is created by adding a circle so that the circle’s arc is a part of the L-shaped
membrane’s boundary. By varying the circle’s radius, the degree of roundness
can be controlled. The M-file lshapec is an extension of an ordinary model
file created using pdetool. It contains the lines
pdepoly([-1, 1, 1, 0, 0, -1],...
[-1, -1, 1, 1, 0, 0],'P1');
pdecirc(-a,a,a,'C1');
pderect([-a 0 a 0],'SQ1');
The extra circle and rectangle that are added using pdecirc and pderect
to create the rounded corner are affected by the added input argument a
through a couple of extra lines of MATLAB code. This is possible since
Partial Differential Equation Toolbox software is a part of the open MATLAB
environment.
With lshapec you can create L-shaped rounded geometries with different
degrees of roundness. If you use lshapec without an input argument, a
default radius of 0.5 is used. Otherwise, use lshapec(a), where a is the
radius of the circle.
Experimenting using different values for the radius a shows you that the
eigenvalues and the frequencies of the corresponding eigenmodes decrease
as the radius increases, and the shape of the L-shaped membrane becomes
more rounded. In the following figure, the first eigenmode of an L-shaped
membrane with a rounded corner is plotted.
1-80
Common PDE Problems
First Eigenmode for an L-Shaped Membrane with a Rounded Corner
Eigenvalues and Eigenmodes of a Square
Let us study the eigenvalues and eigenmodes of a square with an interesting
set of boundary conditions. The square has corners in (-1,-1), (-1,1), (1,1), and
(1,-1). The boundary conditions are as follows:
• On the left boundary, the Dirichlet condition u = 0
• On the upper and lower boundary, the Neumann condition
• On the right boundary, the generalized Neumann condition
1-81
1
Getting Started
The eigenvalue PDE problem is
-&u = "u
We are interested in the eigenvalues smaller than 10 and the corresponding
eigenmodes, so the search range is [-Inf 10]. The sign in the generalized
Neumann condition is such that there are negative eigenvalues.
Using the Graphical User Interface. Using the pdetool GUI in the generic
scalar mode, draw the square using the Rectangle/square option from the
Draw menu or the button with the rectangle icon. Then define the boundary
conditions by clicking the
button and then double-click the boundaries
to define the boundary conditions. On the right side boundary, you have
the generalized Neumann conditions, and you enter them as constants: g
= 0 and q = -3/4.
Initialize the mesh and refine it once by clicking the & and refine buttons or
by selecting the corresponding options from the Mesh menu.
Also, define the eigenvalue PDE problem by opening the PDE Specification
dialog box and selecting the Eigenmodes option. The general eigenvalue
PDE is described by
so for this problem you use the default values c = 1, a = 0, and d = 1. Also, in
the Solve Parameters dialog box, enter the eigenvalue range as the MATLAB
vector [-Inf 10].
Finally, click the = button to compute the solution. By default, the first
eigenfunction is plotted. You can plot the other eigenfunctions by selecting the
corresponding eigenvalue from a pop-up menu in the Plot Selection dialog box.
The pop-up menu contains all the eigenvalues found in the specified range.
You can also export the eigenfunctions and eigenvalues to the MATLAB main
workspace by using the Export Solution option from the Solve menu.
1-82
Common PDE Problems
Using Command-Line Functions. The geometry description file and
boundary condition file for this problem are called squareg.m and squareb2.m,
respectively. Use the following sequence of commands to find the eigenvalues
in the specified range and the corresponding eigenfunctions:
[p,e,t]=initmesh('squareg');
[p,e,t]=refinemesh('squareg',p,e,t);
The eigenvalue PDE coefficients c, a, and d for this problem are c = 1, a = 0,
and d = 1. You can enter the eigenvalue range r as the MATLAB vector [-Inf
10]. pdeeig returns two output arguments, the eigenvalues as an array l and
a matrix v of corresponding eigenfunctions:
[v,l]=pdeeig('squareb2',p,e,t,1,0,1,[-Inf 10]);
To plot the fourth eigenfunction as a surface plot, type
pdesurf(p,t,v(:,4))
This problem is separable, i.e.,
The functions f and g are eigenfunctions in the x and y directions, respectively.
In the x direction, the first eigenmode is a slowly increasing exponential
function. The higher modes include sinusoids. In the y direction, the first
eigenmode is a straight line (constant), the second is half a cosine, the third is
a full cosine, the fourth is one and a half full cosines, etc. These eigenmodes in
the y direction are associated with the eigenvalues:
There are five eigenvalues smaller than 10 for this problem, and the first one
is even negative (-0.4145). It is possible to trace the preceding eigenvalues in
the eigenvalues of the solution. Looking at a plot of the first eigenmode, you
can see that it is made up of the first eigenmodes in the x and y directions.
The second eigenmode is made up of the first eigenmode in the x direction and
the second eigenmode in the y direction.
Look at the difference between the first and the second eigenvalue:
1-83
1
Getting Started
l(2)-l(1)
ans =
2.4740
pi*pi/4
ans =
2.4674
Likewise, the fifth eigenmode is made up of the first eigenmode in the x
direction and the third eigenmode in the y direction. As expected, l(5)-l(1)
is approximately equal to -2. You can explore higher modes by increasing the
search range to include eigenvalues greater than 10.
Application Modes
In this section we describe the application modes of the pdetool graphical
user interface (GUI). Examples are given for a variety of applications to
different engineering problems.
The Application Modes and the GUI
Partial Differential Equation Toolbox software can be applied to a great
number of problems in engineering and science. To help you in using the
pdetool GUI for some important and common applications, eight different
application modes are available in addition to the generic scalar and system
modes.
The available application modes are:
• Generic scalar (the default mode)
• Generic system
• “Structural Mechanics — Plane Stress” on page 1-86
• “Structural Mechanics — Plane Strain” on page 1-92
• “Electrostatics” on page 1-93
• “Magnetostatics” on page 1-96
• “AC Power Electromagnetics” on page 1-103
• “Conductive Media DC” on page 1-108
1-84
Common PDE Problems
• “Heat Transfer” on page 1-114
• “Diffusion” on page 1-117
Note From the GUI, the system PDEs are restricted to problems with vector
valued u of dimension two. Using command-line functions, there is no formal
restriction on the dimension of u.
The application mode can be selected directly from the pop-up menu in
the upper right part of the GUI or by selecting an application from the
Application submenu in the Options menu. Changing the application
resets all PDE coefficients and boundary conditions to the default values for
that specific application mode.
When using an application mode, the generic PDE coefficients are replaced
by application-specific parameters such as Young’s modulus for problems in
structural mechanics. The application-specific parameters are entered by
selecting Parameters from the PDE menu or by clicking the PDE button.
You can also access the PDE parameters by double-clicking a subdomain, if
you are in the PDE mode. That way it is possible to define PDE parameters
for problems with regions of different material properties. The Boundary
condition dialog box is also altered so that the Description column reflects the
physical meaning of the different boundary condition coefficients. Finally,
the Plot Selection dialog box allows you to visualize the relevant physical
variables for the selected application.
Note In the User entry options in the Plot Selection dialog box, the solution
and its derivatives are always referred to as u, ux, and uy (v, vx, and vy for
the system cases) even if the application mode is nongeneric and the solution
of the application-specific PDE normally is named, e.g., V or T.
In the remaining part of this section, we explain each of the application modes
in more detail and give examples of how to solve application specific problems
using Partial Differential Equation Toolbox functions.
1-85
1
Getting Started
Structural Mechanics — Plane Stress
In structural mechanics, the equations relating stress and strain arise from
the balance of forces in the material medium. Plane stress is a condition that
prevails in a flat plate in the xy plane, loaded only in its own plane and
without z-direction restraint.
The stress-strain relation can then be written, assuming isotropic and
isothermal conditions
where .x and .y are the stresses in the x and y directions, and /xy is the
shear stress. The material properties are expressed as a combination of E, the
elastic modulus or Young’s modulus, and #, Poisson’s ratio.
The deformation of the material is described by the displacements in the x
and y directions, u and v, from which the strains are defined as
The balance of force equations are
where Kx and Ky are volume forces (body forces).
Combining the preceding relations, we arrive at the displacement equations,
which can be written
−∇ ⋅ ( c ⊗ ∇u) = k
1-86
Common PDE Problems
where c is a rank four tensor, which can be written as four 2-by-2 matrices
c11, c12, c21, and c22:
where G, the shear modulus, is defined by
and µ in turn is defined by
are volume forces.
This is an elliptic PDE of system type (u is two-dimensional), but you need
only to set the application mode to Structural Mechanics, Plane Stress
and then enter the material-dependent parameters E and # and the volume
forces k into the PDE Specification dialog box.
In this mode, you can also solve the eigenvalue problem, which is described by
1-87
1
Getting Started
−∇ ⋅ ( c ⊗ ∇u) = λdu
ρ 0
d=

0 ρ
+, the density, can also be entered using the PDE Specification dialog box.
In the Plot Selection dialog box, the x- and y-displacements, u and v, and the
absolute value of the displacement vector (u,v) can be visualized using color,
contour lines, or z-height, and the displacement vector field (u,v) can be plotted
using arrows or a deformed mesh. In addition, for visualization using color,
contour lines, or height, you can choose from 15 scalar tensor expressions:
•
•
•
•
• exx, the x-direction strain (0x)
• eyy, the y-direction strain (0y)
• exy, the shear strain (1xy)
• sxx, the x-direction stress (.x)
• syy, the y-direction stress (.y)
• sxy, the shear stress (/xy)
• e1, the first principal strain (01)
• e2, the second principal strain (02)
• s1, the first principal stress (.1)
• s2, the second principal stress (.2)
• von Mises, the von Mises effective stress
1-88
Common PDE Problems
For a more detailed discussion on the theory of stress-strain relations and
applications of FEM to problems in structural mechanics, see Cook, Robert D.,
David S. Malkus, and Michael E. Plesha, Concepts and Applications of Finite
Element Analysis, 3rd edition, John Wiley & Sons, New York, 1989.
Example. Consider a steel plate that is clamped along a right-angle inset
at the lower-left corner, and pulled along a rounded cut at the upper-right
corner. All other sides are free.
The steel plate has the following properties: Dimension: 1-by-1 meters;
thickness 1 mm; inset is 1/3-by-1/3 meters. The rounded cut runs from (2/3, 1)
to (1, 2/3). Young’s modulus: 196 · 103 (MN/m2), Poisson’s ratio: 0.31.
The curved boundary is subjected to an outward normal load of 500 N/m.
We need to specify a surface traction; we therefore divide by the thickness
1 mm, thus the surface tractions should be set to 0.5 MN/m2. We will use
the force unit MN in this example.
We want to compute a number of interesting quantities, such as the x- and
y-direction strains and stresses, the shear stress, and the von Mises effective
stress.
Using the Graphical User Interface. Using the pdetool GUI, set the
application mode to Structural Mechanics, Plane Stress.
The CSG model can be made very quickly by drawing a polygon with corners
in x=[0 2/3 1 1 1/3 1/3 0] and y=[1 1 2/3 0 0 1/3 1/3] and a circle
with center in x=2/3, y=2/3 and radius 1/3.
The polygon is normally labeled P1 and the circle C1, and the CSG model
of the steel plate is simply P1+C1.
Next, select Boundary Mode to specify the boundary conditions. First,
remove all subdomain borders by selecting Remove All Subdomain
Borders from the Boundary menu. The two boundaries at the inset in the
lower left are clamped, i.e., Dirichlet conditions with zero displacements. The
rounded cut is subject to a Neumann condition with q=0 and g1=0.5*nx,
1-89
1
Getting Started
g2=0.5*ny. The remaining boundaries are free (no normal stress), that is, a
Neumann condition with q=0 and g=0.
The next step is to open the PDE Specification dialog box and enter the PDE
parameters.
The E and # (nu) parameters are Young’s modulus and Poisson’s ratio,
respectively. There are no volume forces, so Kx and Ky are zero. + (rho) is
not used in this mode. The material is homogeneous, so the same E and [[2
apply to the whole 2-D domain.
Initialize the mesh by clicking the & button. If you want, you can refine the
mesh by clicking the Refine button.
The problem can now be solved by clicking the = button.
A number of different strain and stress properties can be visualized, such as
the displacements u and v, the x- and y-direction strains and stresses, the
shear stress, the von Mises effective stress, and the principal stresses and
strains. All these properties can be selected from pop-up menus in the Plot
Selection dialog box. A combination of scalar and vector properties can be
plotted simultaneously by selecting different properties to be represented by
color, height, vector field arrows, and displacements in a 3-D plot.
1-90
Common PDE Problems
Select to plot the von Mises effective stress using color and the displacement
vector field (u,v) using a deformed mesh. Select the Color and Deformed
mesh plot types. To plot the von Mises effective stress, select von Mises from
the pop-up menu in the Color row.
In areas where the gradient of the solution (the stress) is large, you need to
refine the mesh to increase the accuracy of the solution. Select Parameters
from the Solve menu and select the Adaptive mode check box. You can use
the default options for adaptation, which are the Worst triangles triangle
selection method with the Worst triangle fraction set to 0.5. Now solve
the plane stress problem again. Select the Show Mesh option in the Plot
Selection dialog box to see how the mesh is refined in areas where the stress
is large.
1-91
1
Getting Started
Visualization of the von Mises Effective Stress and the Displacements Using
Deformed Mesh
Structural Mechanics — Plane Strain
A deformation state where there are no displacements in the z-direction,
and the displacements in the x- and y-directions are functions of x and y
but not z is called plane strain. You can solve plane strain problems with
Partial Differential Equation Toolbox software by setting the application
mode to Structural Mechanics, Plane Strain. The stress-strain relation
is only slightly different from the plane stress case, and the same set of
material parameters is used. The application interfaces are identical for the
two structural mechanics modes.
1-92
Common PDE Problems
The places where the plane strain equations differ from the plane stress
equations are:
• The µ parameter in the c tensor is defined as
• The von Mises effective stress is computed as
Plane strain problems are less common than plane stress problems. An
example is a slice of an underground tunnel that lies along the z-axis. It
deforms in essentially plane strain conditions.
Electrostatics
Applications involving electrostatics include high voltage apparatus,
electronic devices, and capacitors. The “statics” implies that the time rate of
change is slow, and that wavelengths are very large compared to the size of
the domain of interest. In electrostatics, the electrostatic scalar potential V is
related to the electric field E by E = -∇V and, using one of Maxwell’s equations,
∇ · D = + and the relationship D = 0E, we arrive at the Poisson equation
where 0 is the coefficient of dielectricity and + is the space charge density.
Note 0 should really be written as 000, where 00 is the coefficient of
dielectricity or permittivity of vacuum (8.854 · 10-12 farad/meter) and 0 is
the relative coefficient of dielectricity that varies among different dielectrics
(1.00059 in air, 2.24 in transformer oil, etc.).
Using the Partial Differential Equation Toolbox electrostatics application
mode, you can solve electrostatic problems modeled by the preceding equation.
The PDE Specification dialog box contains entries for 0 and +.
1-93
1
Getting Started
The boundary conditions for electrostatic problems can be of Dirichlet or
Neumann type. For Dirichlet conditions, the electrostatic potential V is
specified on the boundary. For Neumann conditions, the surface charge n ·
(0∇V) is specified on the boundary.
For visualization of the solution to an electrostatic problem, the plot selections
include the electrostatic potential V, the electric field E, and the electric
displacement field D.
For a more in-depth discussion of problems in electrostatics, see Popovic,
Branko D., Introductory Engineering Electromagnetics, Addison-Wesley,
Reading, MA, 1971.
Example. Let us consider the problem of determining the electrostatic
potential in an air-filled quadratic “frame,” bounded by a square with side
length of 0.2 in the center and by outer limits with side length of 0.5. At the
inner boundary, the electrostatic potential is 1000V. At the outer boundary,
the electrostatic potential is 0V. There is no charge in the domain. This leads
to the problem of solving the Laplace equation
&V = 0
with the Dirichlet boundary conditions V = 1000 at the inner boundary, and V
= 0 at the outer boundary.
Using the Graphical User Interface. After setting the application mode to
Electrostatics, the 2-D area is most easily drawn by first drawing a square
with sides of length 0.2 (use the Snap option and adjust the grid spacing if
necessary). Then draw another square with sides of length 0.5 using the same
center position. The 2-D domain is then simply SQ2-SQ1, if the first square is
named SQ1 and the second square is named SQ2. Enter the expression into
the Set formula edit box, and proceed to define the boundary conditions. Use
Shift+click to select all the inner boundaries. Then double-click an inner
boundary and enter 1000 as the Dirichlet boundary condition for the inner
boundaries.
Next, open the PDE Specification dialog box, and enter 0 into the space charge
density (rho) edit field. The coefficient of dielectricity can be left at 1, since it
does not affect the result as long as it is constant.
1-94
Common PDE Problems
Initialize the mesh, and click the = button to solve the equation. Using the
adaptive mode, you can improve the accuracy of the solution by refining
the mesh close to the reentrant corners where the gradients are steep. For
example, use the triangle selection method picking the worst triangles and set
the maximum number of triangles to 500. Add one uniform mesh refinement
by clicking the Refine button once. Finally turn adaptive mode off, and click
the = button once more.
To look at the equipotential lines, select a contour plot from the Plot
Selection dialog box. To display equipotential lines at every 100th volt, enter
0:100:1000 into the Contour plot levels edit box.
Equipotential Lines in Air-Filled Frame
1-95
1
Getting Started
Magnetostatics
Magnets, electric motors, and transformers are areas where problems
involving magnetostatics can be found. The “statics” implies that the time
rate of change is slow, so we start with Maxwell’s equations for steady cases,
∇×H = J
∇⋅B = 0
and the relationship
B = µH
where B is the magnetic flux density, H is the magnetic field intensity, J is
the current density, and µ is the material’s magnetic permeability.
Since ∇ ⋅ B = 0 , there exists a magnetic vector potential A such that
B = ∇× A
and
The plane case assumes that the current flows are parallel to the z-axis, so
only the z component of A is present,
A = (0, 0, A), J = (0, 0, J )
and the preceding equation can be simplified to the scalar elliptic PDE
where J = J(x,y).
For the 2-D case, we can compute the magnetic flux density B as
1-96
Common PDE Problems
 ∂A ∂A 
B=
,−
,0 
∂x 
 ∂y
and the magnetic field H, in turn, is given by
H=
1
B
µ
The interface condition across subdomain borders between regions of different
material properties is that H x n be continuous. This implies the continuity of
and does not require special treatment since we are using the variational
formulation of the PDE problem.
In ferromagnetic materials, µ is usually dependent on the field strength |B|
= |∇A|, so the nonlinear solver is needed.
The Dirichlet boundary condition specifies the value of the magnetostatic
potential A on the boundary. The Neumann condition specifies the value
of the normal component of
on the boundary. This is equivalent to specifying the tangential value of the
magnetic field H on the boundary.
Visualization of the magnetostatic potential A, the magnetic field H, and the
magnetic flux density B is available. B and H can be plotted as vector fields.
For a more detailed discussion on Maxwell’s equations and magnetostatics,
see Popovic, Branko D., Introductory Engineering Electromagnetics,
Addison-Wesley, Reading, MA, 1971.
1-97
1
Getting Started
Example. As an example of a problem in magnetostatics, consider
determining the static magnetic field due to the stator windings in a two-pole
electric motor. The motor is considered to be long, and when end effects are
neglected, a 2-D computational model suffices.
The domain consists of three regions:
• Two ferromagnetic pieces, the stator and the rotor
• The air gap between the stator and the rotor
• The armature coil carrying the DC current
The magnetic permeability µ is 1 in the air and in the coil. In the stator and
the rotor, µ is defined by
µmax = 5000, µmin = 200, and c = 0.05 are values that could represent
transformer steel.
The current density J is 0 everywhere except in the coil, where it is 1.
The geometry of the problem makes the magnetic vector potential A
symmetric with respect to y and antisymmetric with respect to x, so you can
limit the domain to x $ 0,y$0 with the Neumann boundary condition
on the x-axis and the Dirichlet boundary condition A = 0 on the y-axis.
The field outside the motor is neglected leading to the Dirichlet boundary
condition A = 0 on the exterior boundary.
1-98
Common PDE Problems
Using the Graphical User Interface. The geometry is complex, involving
five circular arcs and two rectangles. Using the pdetool GUI, set the x-axis
limits to [-1.5 1.5] and the y-axis limits to [-1 1]. Set the application mode to
Magnetostatics, and use a grid spacing of 0.1. The model is a union of circles
and rectangles; the reduction to the first quadrant is achieved by intersection
with a square. Using the “snap-to-grid” feature, you can draw the geometry
using the mouse, or you can draw it by entering the following commands:
pdecirc(0,0,1,'C1')
pdecirc(0,0,0.8,'C2')
pdecirc(0,0,0.6,'C3')
pdecirc(0,0,0.5,'C4')
pdecirc(0,0,0.4,'C5')
pderect([-0.2 0.2 0.2 0.9],'R1')
pderect([-0.1 0.1 0.2 0.9],'R2')
pderect([0 1 0 1],'SQ1')
You should get a CSG model similar to the one in the following plot.
1-99
1
Getting Started
Enter the following set formula to reduce the model to the first quadrant:
(C1+C2+C3+C4+C5+R1+R2)*SQ1
In boundary mode you need to remove a number of subdomain borders. Using
Shift+click, select borders and remove them using the Remove Subdomain
Border option from the Boundary menu until the geometry consists of four
subdomains: the stator, the rotor, the coil, and the air gap. In the following
plot, the stator is subdomain 1, the rotor is subdomain 2, the coil is subdomain
3, and the air gap is subdomain 4. The numbering of your subdomains may
be different.
1-100
Common PDE Problems
Before moving to the PDE mode, select the boundaries along the x-axis and
set the boundary condition to a Neumann condition with g = 0 and q = 0.
In the PDE mode, turn on the labels by selecting the Show Subdomain
Labels option from the PDE menu. Double-click each subdomain to define
the PDE parameters:
• In the coil both µ and J are 1, so the default values do not need to be
changed.
• In the stator and the rotor µ is nonlinear and defined by the preceding
equation. Enter µ as
5000./(1+0.05*(ux.^2+uy.^2))+200
ux.^2+uy.^2 is equal to |∇A |2. J is 0 (no current).
1-101
1
Getting Started
• In the air gap µ is 1, and J is 0.
Initialize the mesh, and continue by opening the Solve Parameters dialog box
by selecting Parameters from the Solve menu. Since this is a nonlinear
problem, the nonlinear solver must be invoked by checking the Use
nonlinear solver. If you want, you can adjust the tolerance parameter. The
adaptive solver can be used together with the nonlinear solver. Solve the
PDE and plot the magnetic flux density B using arrows and the equipotential
lines of the magnetostatic potential A using a contour plot. The plot clearly
shows, as expected, that the magnetic flux is parallel to the equipotential
lines of the magnetostatic potential.
Equipotential Lines and Magnetic Flux in a Two-Pole Motor
1-102
Common PDE Problems
AC Power Electromagnetics
AC power electromagnetics problems are found when studying motors,
transformers and conductors carrying alternating currents.
Let us start by considering a homogeneous dielectric, with coefficient of
dielectricity 0 and magnetic permeability µ, with no charges at any point. The
fields must satisfy a special set of the general Maxwell’s equations:
For a more detailed discussion on Maxwell’s equations, see Popovic, Branko
D., Introductory Engineering Electromagnetics, Addison-Wesley, Reading,
MA, 1971.
In the absence of current, we can eliminate H from the first set and E from
the second set and see that both fields satisfy wave equations with wave speed
We move on to studying a charge-free homogeneous dielectric, with coefficient
of dielectrics $, magnetic permeability µ, and conductivity %. The current
density then is
J = σE
and the waves are damped by the Ohmic resistance,
and similarly for H .
1-103
1
Getting Started
The case of time harmonic fields is treated by using the complex form,
replacing E by
Ec e jωt
The plane case of this Partial Differential Equation Toolbox mode has
(
)
Ec = ( 0, 0, Ec ) , J = 0, 0, Jeiωt , and the magnetic field
The scalar equation for Ec becomes
This is the equation used by Partial Differential Equation Toolbox software in
the AC power electromagnetics application mode. It is a complex Helmholtz’s
equation, describing the propagation of plane electromagnetic waves in
imperfect dielectrics and good conductors (% » !$). A complex permittivity 0c
can be defined as 0c = 0-j./'. The conditions at material interfaces with abrupt
changes of 0 and µ are the natural ones for the variational formulation and
need no special attention.
The PDE parameters that have to be entered into the PDE Specification
dialog box are the angular frequency ', the magnetic permeability µ, the
conductivity %, and the coefficient of dielectricity $.
The boundary conditions associated with this mode are a Dirichlet boundary
condition, specifying the value of the electric field Ec on the boundary, and a
Neumann condition, specifying the normal derivative of Ec. This is equivalent
to specifying the tangential component of the magnetic field H:
Interesting properties that can be computed from the solution—the electric
field E—are the current density J = .E and the magnetic flux density
1-104
Common PDE Problems
The electric field E, the current density J, the magnetic field H and the
magnetic flux density B are available for plots. Additionally, the resistive
heating rate
is also available. The magnetic field and the magnetic flux density can be
plotted as vector fields using arrows.
Example. The example demonstrates the skin effect when AC current is
carried by a wire with circular cross section. The conductivity of copper is 57
· 106, and the permeability is 1, i.e., µ = 4-10-7. At the line frequency (50
Hz) the '20-term is negligible.
Due to the induction, the current density in the interior of the conductor is
smaller than at the outer surface where it is set to JS = 1, a Dirichlet condition
for the electric field, Ec = 1/.. For this case an analytical solution is available,
where
R is the radius of the wire, r is the distance from the center line, and J0(x) is
the first Bessel function of zeroth order.
Using the Graphical User Interface. Start the pdetool GUI and set the
application mode toAC Power Electromagnetics. Draw a circle with radius
0.1 to represent a cross section of the conductor, and proceed to the boundary
mode to define the boundary condition. Use the Select All option to select all
boundaries and enter 1/57E6 into the r edit field in the Boundary Condition
dialog box to define the Dirichlet boundary condition (E = J/.).
1-105
1
Getting Started
Open the PDE Specification dialog box and enter the PDE parameters. The
angular frequency ! = 2 · - · 50.
Initialize the mesh and solve the equation. Due to the skin effect, the current
density at the surface of the conductor is much higher than in the conductor’s
interior. This is clearly visualized by plotting the current density J as a 3-D
plot. To improve the accuracy of the solution close to the surface, you need
to refine the mesh. Open the Solve Parameters dialog box and select the
Adaptive mode check box. Also, set the maximum numbers of triangles to
Inf, the maximum numbers of refinements to 1, and use the triangle selection
method that picks the worst triangles. Recompute the solution several times.
Each time the adaptive solver refines the area with the largest errors. The
number of triangles is printed on the command line. The following mesh is
the result of successive adaptations and contains 1548 triangles.
1-106
Common PDE Problems
The Adaptively Refined Mesh
The solution of the AC power electromagnetics equation is complex. The
plots show the real part of the solution (a warning message is issued), but
the solution vector, which can be exported to the main workspace, is the full
complex solution. Also, you can plot various properties of the complex solution
by using the user entry. imag(u) and abs(u) are two examples of valid user
entries.
The skin effect is an AC phenomenon. Decreasing the frequency of the
alternating current results in a decrease of the skin effect. Approaching DC
1-107
1
Getting Started
conditions, the current density is close to uniform (experiment using different
angular frequencies).
The Current Density in an AC Wire
Conductive Media DC
For electrolysis and computation of resistances of grounding plates, we have
a conductive medium with conductivity . and a steady current. The current
density J is related to the electric field E through J = .E. Combining the
continuity equation ∇ · J = Q, where Q is a current source, with the definition
of the electric potential V yields the elliptic Poisson’s equation
-∇ · (.∇V) = Q
The only two PDE parameters are the conductivity . and the current source Q.
The Dirichlet boundary condition assigns values of the electric potential V
to the boundaries, usually metallic conductors. The Neumann boundary
condition requires the value of the normal component of the current density
1-108
Common PDE Problems
(n · (. ∇(V))) to be known. It is also possible to specify a generalized Neumann
condition defined by n · (. ∇V) + qV = g, where q can be interpreted as a film
conductance for thin plates.
The electric potential V, the electric field E , and the current density J are
all available for plotting. Interesting quantities to visualize are the current
lines (the vector field of J ) and the equipotential lines of V. The equipotential
lines are orthogonal to the current lines when . is isotropic.
Example. Two circular metallic conductors are placed on a plane, thin
conductor like a blotting paper wetted by brine. The equipotentials can be
traced by a voltmeter with a simple probe, and the current lines can be traced
by strongly colored ions, such as permanganate ions.
The physical model for this problem consists of the Laplace equation
-∇ · (.∇V) = 0
for the electric potential V and the boundary conditions:
• V = 1 on the left circular conductor
• V = -1 on the right circular conductor
• The natural Neumann boundary condition on the outer boundaries
The conductivity . = 1 (constant).
1 Open the Partial Differential Equation Toolbox GUI by typing
pdetool
at the MATLAB command prompt.
2 Click Options > Application > Conductive Media DC.
3 Click Options > Grid Spacing..., deselect the Auto check boxes for
X-axis linear spacing and Y-axis linear spacing, and choose a spacing
1-109
1
Getting Started
of 0.3, as pictured. Ensure the Y-axis goes from –0.9 to 0.9. Click Apply,
and then Done.
4 Click Options > Snap
5 Click
and draw the blotting paper as a rectangle with corners in
(-1.2,-0.6), (1.2,-0.6), (1.2,0.6), and (-1.2,0.6).
6 Click
and add two circles with radius 0.3 that represent the circular
conductors. Place them symmetrically with centers in (-0.6,0) and (0.6,0).
7 To express the 2-D domain of the problem, enter
R1-(C1+C2)
for the Set formula parameter.
8 To decompose the geometry and enter the boundary mode, click
1-110
.
Common PDE Problems
9 Hold down Shift and click to select the outer boundaries. Double-click the
last boundary to open the Boundary Condition dialog box.
10 Select Neumann and click OK.
11 Hold down Shift and click to select the left circular conductor boundaries.
Double-click the last boundary to open the Boundary Condition dialog box.
12 Set the parameters as follows and then click OK:
• Condition type = Dirichlet
• h=1
• r=1
1-111
1
Getting Started
13 Hold down Shift and click to select the right circular conductor boundaries.
Double-click the last boundary to open the Boundary Condition dialog box.
14 Set the parameters as follows and then click OK:
• Condition type = Dirichlet
• h=1
• r = -1
15 Open the PDE Specification dialog box by clicking PDE > PDE
Specification.
16 Set the current source, q, parameter to 0.
1-112
Common PDE Problems
17 Initialize the mesh by clicking Mesh > Initialize Mesh.
18 Refine the mesh by clicking Mesh > Refine Mesh twice.
19 Improve the triangle quality by clicking Mesh > Jiggle Mesh.
20 Solve the PDE by clicking
.
The resulting potential is zero along the y-axis, which is a vertical line
of anti-symmetry for this problem.
21 Visualize the current density J by clicking Plot > Parameters, selecting
Contour and Arrows check box, and clicking Plot.
The current flows, as expected, from the conductor with a positive potential
to the conductor with a negative potential.
1-113
1
Getting Started
The Current Density Between Two Metallic Conductors
Heat Transfer
The heat equation is a parabolic PDE:
It describes the heat transfer process for plane and axisymmetric cases, and
uses the following parameters:
• Density &
• Heat capacity C
• Coefficient of heat conduction k
1-114
Common PDE Problems
• Heat source Q
• Convective heat transfer coefficient h
• External temperature Text
The term h · (Text - T) is a model of transversal heat transfer from the
surroundings, and it may be useful for modeling heat transfer in thin cooling
plates etc.
For the steady state case, the elliptic version of the heat equation,
is also available.
The boundary conditions can be of Dirichlet type, where the temperature on
the boundary is specified, or of Neumann type where the heat flux, n ⋅ (k∇(T )) ,
is specified. A generalized Neumann boundary condition can also be used. The
generalized Neumann boundary condition equation is n ⋅ (k∇(T )) + qT = g ,
where q is the heat transfer coefficient.
Visualization of the temperature, the temperature gradient, and the heat
flux k∇T is available. Plot options include isotherms and heat flux vector
field plots.
Example. In the following example, a heat transfer problem with differing
material parameters is solved.
The problem’s 2-D domain consists of a square with an embedded diamond (a
square with 45 degrees rotation). The square region consists of a material with
coefficient of heat conduction of 10 and a density of 2. The diamond-shaped
region contains a uniform heat source of 4, and it has a coefficient of heat
conduction of 2 and a density of 1. Both regions have a heat capacity of 0.1.
Using the Graphical User Interface. Start the pdetool GUI and set the
application mode to Heat Transfer. In draw mode, set the x- and y-axis limits
to [-0.5 3.5] and select the Axis Equal option from the Options menu. The
square region has corners in (0,0), (3,0), (3,3), and (0,3). The diamond-shaped
region has corners in (1.5,0.5), (2.5,1.5), (1.5,2.5), and (0.5,1.5).
1-115
1
Getting Started
The temperature is kept at 0 on all the outer boundaries, so you do not have
to change the default boundary conditions. Move on to define the PDE
parameters (make sure to set the application mode to Heat Transfer in the
PDE mode by double-clicking each of the two regions and enter the PDE
parameters. You want to solve the parabolic heat equation, so make sure that
the Parabolic option is selected. In the square region, enter a density of 2,
a heat capacity of 0.1, and a coefficient of heat conduction of 10. There is no
heat source, so set it to 0. In the diamond-shaped region, enter a density of 1,
a heat capacity of 0.1, and a coefficient of heat conduction of 2. Enter 4 in the
edit field for the heat source. The transversal heat transfer term h · (Text - T)
is not used, so set h, the convective heat transfer coefficient, to 0.
Since you are solving a dynamic PDE, you have to define an initial value, and
the times at which you want to solve the PDE. Open the Solve Parameters
dialog box by selecting Parameters from the Solve menu. The dynamics for
this problem is very fast—the temperature reaches steady state in about
0.1 time units. To capture the interesting part of the dynamics, enter
logspace(-2,-1,10) as the vector of times at which to solve the heat
equation. logspace(-2,-1,10) gives 10 logarithmically spaced numbers
between 0.01 and 0.1. Set the initial value of the temperature to 0. If the
boundary conditions and the initial value differ, the problem formulation
contains discontinuities.
Solve the PDE. By default, the temperature distribution at the last time is
plotted. The best way to visualize the dynamic behavior of the temperature
is to animate the solution. When animating, turn on the Height (3-D plot)
option to animate a 3-D plot. Also, select the Plot in x-y grid option. Using a
rectangular grid instead of a triangular grid speeds up the animation process
significantly.
Other interesting visualizations are made by plotting isothermal lines using a
contour plot, and by plotting the heat flux vector field using arrows.
1-116
Common PDE Problems
Visualization of the Temperature and the Heat Flux
Diffusion
Since heat transfer is a diffusion process, the generic diffusion equation has
the same structure as the heat equation:
where c is the concentration, D is the diffusion coefficient and Q is a volume
source. If diffusion process is anisotropic, in which case D is a 2-by-2 matrix,
you must solve the diffusion equation using the generic system application
mode of the pdetool GUI. For more information, see “PDE Menu” on page
2-16.
The boundary conditions can be of Dirichlet type, where the concentration on
the boundary is specified, or of Neumann type, where the flux, n ⋅ ( D∇(c)) , is
1-117
1
Getting Started
specified. It is also possible to specify a generalized Neumann condition. It is
defined by n ⋅ ( D∇(c)) + qc = g , where q is a transfer coefficient.
Visualization of the concentration, its gradient, and the flux is available from
the Plot Selection dialog box.
References
[1] Cook, Robert D., David S. Malkus, and Michael E. Plesha, Concepts and
Applications of Finite Element Analysis, 3rd edition, John Wiley & Sons,
New York, 1989.
[2] Popovic, Branko D., Introductory Engineering Electromagnetics,
Addison-Wesley, Reading, MA, 1971.
1-118
2
Graphical User Interface
This chapter discusses the graphical user interface (GUI) pdetool. The main
components of the GUI are the menus, the dialog boxes, and the toolbar.
• “Using the pdetool Menus” on page 2-2
• “The Toolbar” on page 2-35
2
Graphical User Interface
Using the pdetool Menus
In this section...
“Introduction” on page 2-2
“File Menu” on page 2-3
“Edit Menu” on page 2-5
“Options Menu” on page 2-7
“Draw Menu” on page 2-10
“Boundary Menu” on page 2-12
“PDE Menu” on page 2-16
“Mesh Menu” on page 2-20
“Solve Menu” on page 2-22
“Plot Menu” on page 2-27
“Window Menu” on page 2-34
“Help Menu” on page 2-34
Introduction
The graphical user interface (GUI) has a pull-down menu bar that you can use
to control the modeling. It conforms to common pull-down menu standards.
Menu items followed by a right arrow lead to a submenu. Menu items followed
by an ellipsis lead to a dialog box. Stand-alone menu items lead to direct
action. Some menu items can be executed by using keyboard accelerators.
pdetool also contains a toolbar with icon buttons for quick and easy access
to some of the most important pdetool functions.
The following sections describe the contents of the pdetool menus and the
dialog boxes associated with menu items.
2-2
Using the pdetool Menus
File Menu
New
Create a new (empty) Constructive Solid Geometry (CSG)
model.
Open
Load a model M-file from disk.
Save
Save the GUI session to a model M-file.
Save As
Save the GUI session to a new model M-file.
Print
Print a hardcopy of a figure.
Exit
Exit the pdetool graphical user interface.
New
New deletes the current CSG model and creates a new, empty model called
“Untitled.”
Open
Open displays a dialog box with a list of existing M-files from which you can
select the file that you want to load. You can list the contents of a different
folder by changing the path in the Selection text box. You can use the scroll
bar to display more filenames. You can select a file by double-clicking the
filename or by clicking the filename and then clicking the Done button.
When you select a file, the CSG model that is stored in the model M-file is
loaded into the workspace and displayed. Also, the equation, the boundary
conditions, and information about the mesh and the solution are loaded if
present, and the modeling and solution process continues to the same status
as when you saved the file.
2-3
2
Graphical User Interface
Save As
Save As displays a dialog box in which you can specify the name of the file
in which to save the CSG model and other information regarding the GUI
session. You can also change the folder in which it is saved. If the filename is
given without a .m extension, .m is appended automatically.
The GUI session is stored in a model M-file, which contains a sequence of
drawing commands and commands to recreate the modeling environment
(axes scaling, grid, etc.). If you have already defined boundary conditions,
PDE coefficients, created a triangular mesh, and solved the PDE, further
commands to recreate the modeling and solution of the PDE problem are
also included in the model M-file. The pdetool GUI can be started from the
command line by entering the name of a model M-file. The model in the file
is then directly loaded into the GUI.
Print
Print displays a dialog box for printing a hardcopy of a figure. Only the main
part of the figure is printed, not the upper and lower menu and information
parts. In the dialog box, you can enter any device option that is available for
the MATLAB print command. The default device option is -dps (PostScript®
2-4
Using the pdetool Menus
for black and white printers). The paper orientation can be set to portrait,
landscape, or tall, and you can print to a printer or to file.
Edit Menu
Undo
Undo the last line when drawing a polygon.
Cut
Move the selected solid objects to the Clipboard.
Copy
Copy the selected objects to the Clipboard, leaving them
intact in their original location.
Paste
Copy the contents of the Clipboard to the current CSG model.
Clear
Delete the selected objects.
Select All
Select all solid objects in the current CSG model. Also, select
all outer boundaries or select all subdomains.
2-5
2
Graphical User Interface
Paste
Paste displays a dialog box for pasting the contents of the Clipboard on to the
current CSG model. The Clipboard contents can be repeatedly pasted adding
a specified x- and y-axis displacement to the positions of the Clipboard objects.
Using the default values—zero displacement and one repetition—the
Clipboard contents is inserted at its original position.
2-6
Using the pdetool Menus
Options Menu
Grid
Turn grid on/off.
Grid Spacing
Adjust the grid spacing.
Snap
Turn the “snap-to-grid” feature on/off.
Axis Limits
Change the scaling of the drawing axes.
Axis Equal
Turn the “axis equal” feature on/off.
Turn off Toolbar Help
Turn off help texts for the toolbar buttons.
Zoom
Turn zoom feature on/off.
Application
Select application mode.
Refresh
Redisplay all graphical objects in the pdetool
graphical user interface.
2-7
2
Graphical User Interface
Grid Spacing
In the Grid Spacing dialog box, you can adjust the x-axis and y-axis grid
spacing. By default, the MATLAB automatic linear grid spacing is used. If
you turn off the Auto check box, the edit fields for linear spacing and extra
ticks are enabled. For example, the default linear spacing -1.5:0.5:1.5 can
be changed to -1.5:0.2:1.5. In addition, you can add extra ticks so that the
grid can be customized to aid in drawing the desired 2-D domain. Extra tick
entries can be separated using spaces, commas, semicolons, or brackets.
Examples:
pi
2/3, 0.78, 1.1
-0.123; pi/4
Clicking the Apply button applies the entered grid spacing; clicking the Done
button ends the Grid Spacing dialog.
2-8
Using the pdetool Menus
Axes Limits
In the Axes Limits dialog box, the range of the x-axis and the y-axis can be
adjusted. The axis range should be entered as a 1-by-2 MATLAB vector such
as [-10 10]. If you select the Auto check box, automatic scaling of the axis
is used.
Clicking the Apply button applies the entered axis ranges; clicking the Close
button ends the Axes Limits dialog.
Application
From the Application submenu, you can select from 10 available application
modes. The application modes can also be selected using the pop-up menu in
the upper right corner of the GUI.
The available application modes are:
2-9
2
Graphical User Interface
• Generic Scalar (the default mode)
• Generic System
• Structural Mechanics — Plane Stress
• Structural Mechanics — Plane Strain
• Electrostatics
• Magnetostatics
• AC Power Electromagnetics
• Conductive Media DC
• Heat Transfer
• Diffusion
See “Application Modes” on page 1-84 for more details.
Draw Menu
2-10
Draw Mode
Enter draw mode.
Rectangle/square
Draw a rectangle/square starting at a
corner. Using the left mouse button,
click-and-drag to create a rectangle.
Using the right mouse button (or
Ctrl+click), click-and-drag to create a
square.
Using the pdetool Menus
Rectangle/square (centered)
Draw a rectangle/square starting at the
center. Using the left mouse button,
click-and-drag to create a rectangle.
Using the right mouse button (or
Ctrl+click), click-and-drag to create a
square.
Ellipse/circle
Draw an ellipse/circle starting at the
perimeter. Using the left mouse button,
click-and-drag to create an ellipse. Using
the right mouse button (or Ctrl+click),
click-and-drag to create a circle.
Ellipse/circle (centered)
Draw an ellipse/circle starting at the
center. Using the left mouse button,
click-and-drag to create an ellipse. Using
the right mouse button (or Ctrl+click),
click-and-drag to create a circle.
Polygon
Draw a polygon. You can close the
polygon by pressing the right mouse
button. Clicking at the starting vertex
also closes the polygon.
Rotate
Rotate selected objects.
Export Geometry
Description, Set Formula,
gd, the set formula string sf, and the
Export the Geometry Description matrix
2-11
2
Graphical User Interface
Labels
Name Space matrix ns (labels) to the
main workspace.
Rotate
Rotate opens a dialog box where you can enter the angle of rotation in
degrees. The selected objects are then rotated by the number of degrees
that you specify. The rotation is done counter clockwise for positive rotation
angles. By default, the rotation center is the center-of-mass of the selected
objects. If the Use center-of-mass option is not selected, you can enter a
rotation center (xc,yc) as a 1-by-2 MATLAB vector such as [-0.4 0.3].
Boundary Menu
2-12
Using the pdetool Menus
Boundary Mode
Enter the boundary mode.
Specify Boundary Conditions
Specify boundary conditions for the
selected boundaries. If no boundaries
are selected, the entered boundary
condition applies to all boundaries.
Show Edge Labels
Toggle the labeling of the edges (outer
boundaries and subdomain borders)
on/off. The edges are labeled using the
column number in the Decomposed
Geometry matrix.
Show Subdomains
Labels
Toggle the labeling of the subdomains
on/off. The subdomains are labeled
using the subdomain numbering in the
Decomposed Geometry matrix.
Remove Subdomain Border
Remove selected subdomain borders.
Remove All Subdomain
Borders
Remove all subdomain borders.
Export Decomposed
Geometry, Boundary Cond’s
Export the Decomposed Geometry
matrix g and the Boundary Condition
matrix b to the main workspace.
2-13
2
Graphical User Interface
Specify Boundary Conditions
Specify boundary conditions displays a dialog box in which you can
specify the boundary condition for the selected boundary segments. There
are three different condition types:
• Generalized Neumann conditions, where the boundary condition is
determined by the coefficients q and g according to the following equation:
In the system cases, q is a 2-by-2 matrix and g is a 2-by-1 vector.
• Dirichlet conditions: u is specified on the boundary. The boundary
condition equation is hu = r, where h is a weight factor that can be applied
(normally 1).
In the system cases, h is a 2-by-2 matrix and r is a 2-by-1 vector.
• Mixed boundary conditions (system cases only), which is a mix of Dirichlet
and Neumann conditions. q is a 2-by-2 matrix, g is a 2-by-1 vector, h is
a 1-by-2 vector, and r is a scalar.
The following figure shows the boundary condition dialog box for the generic
system PDE.
2-14
Using the pdetool Menus
For boundary condition entries you can use the following variables in a valid
MATLAB expression:
• The 2-D coordinates x and y.
• A boundary segment parameter s, proportional to arc length. s is 0 at
the start of the boundary segment and increases to 1 along the boundary
segment in the direction indicated by the arrow.
• The outward normal vector components nx and ny. If you need the
tangential vector, it can be expressed using nx and ny since tx = -ny and
t y = n x.
• The solution u.
• The time t.
Note If the boundary condition is a function of the solution u, you must use
the nonlinear solver. If the boundary condition is a function of the time t, you
must choose a parabolic or hyperbolic PDE.
2-15
2
Graphical User Interface
Examples: (100-80*s).*nx, and cos(x.^2)
In the nongeneric application modes, the Description column contains
descriptions of the physical interpretation of the boundary condition
parameters.
PDE Menu
2-16
PDE Mode
Enter the partial differential equation
mode.
Show Subdomain Labels
Toggle the labeling of the subdomains
on/off. The subdomains are labeled
using the subdomain numbering in the
decomposed geometry matrix.
PDE Specification
Open dialog box for entering PDE
coefficients and types.
Export PDE Coefficients
Export current PDE coefficients to the
main workspace. The resulting workspace
variables are strings.
Using the pdetool Menus
PDE Specification
PDE Specification opens a dialog box where you enter the type of partial
differential equation and the applicable parameters. The dimension of
the parameters is dependent on the dimension of the PDE. The following
description applies to scalar PDEs. If a nongeneric application mode is
selected, application-specific PDEs and parameters replace the standard PDE
coefficients. For a thorough description of the different application modes, see
“Application Modes” on page 1-84.
Each of the coefficients c, a, f, and d can be given as a valid MATLAB
expression for computing coefficient values at the triangle centers of mass.
The following variables are available:
• x and y: The x- and y-coordinates
• u: The solution
• ux, uy: The x and y derivatives of the solution
• t: The time
Note If the PDE coefficient is a function of the solution u or its derivatives ux
and uy, you must use the nonlinear solver. If the PDE coefficient is a function
of the time t, you must choose a parabolic or hyperbolic PDE.
2-17
2
Graphical User Interface
You can also enter the name of a user-defined MATLAB function that accepts
the arguments (p,t,u,time). For an example, type the function circlef.
c can be a scalar or a 2-by-2 matrix. The matrix c can be used to model, e.g.,
problems with anisotropic material properties.
If c contains two rows, they are the c1,1 and c2,2 elements of a 2-by-2 symmetric
matrix
If c contains three rows, they are the c1,1, c1,2, and c2,2 elements of a 2-by-2
symmetric matrix (c2,1 = c1,2)
If c contains four rows, they are the c1,1, c2,1, c1,2, and c2,2 elements of the
2-by-2 preceding matrix.
The available types of PDEs are
• Elliptic. The basic form of the elliptic PDE is
The parameter d does not apply to the elliptic PDE.
• Parabolic. The basic form of the parabolic PDE is
with initial values u0 = u(t0).
• Hyperbolic. The basic form of the hyperbolic PDE is
2-18
Using the pdetool Menus
with initial values u0 = u(t0) and ut0 =
(t0)
• Eigenmodes. The basic form of the PDE eigenvalue problem is
The parameter f does not apply to the eigenvalue PDE.
In the system case, c is a rank four tensor, which can be represented by
four 2-by-2 matrices, c11, c12, c21, and c22. They can be entered as one,
two, three, or four rows—see the preceding scalar case. a and d are 2-by-2
matrices, and f is a 2-by-1 vector. The PDE Specification dialog box for the
system case is shown in the following figure.
2-19
2
Graphical User Interface
Mesh Menu
2-20
Mesh Mode
Enter mesh mode.
Initialize Mesh
Build and display an initial triangular mesh.
Refine Mesh
Uniformly refine the current triangular mesh.
Jiggle Mesh
Jiggle the mesh.
Undo Mesh Change
Undo the last mesh change. All mesh
generations are saved, so repeated Undo
Mesh Change eventually brings you back to
the initial mesh.
Display Triangle Quality
Display a plot of the triangular mesh where
the individual triangles are colored according
to their quality. The quality measure is a
number between 0 and 1, where triangles
with a quality measure greater than 0.6 are
acceptable. For details on the triangle quality
measure, see pdetriq.
Show Node Labels
Toggle the mesh node labels on/off. The node
labels are the column numbers in the Point
matrix p.
Show Triangle Labels
Toggle the mesh triangle labels on/off. The
triangle labels are the column numbers in the
triangle matrix t.
Using the pdetool Menus
Parameters
Open dialog box for modification of mesh
generation parameters.
Export Mesh
Export Point matrix p, Edge matrix e, and
Triangle matrix t to the main workspace.
Parameters
Parameters opens a dialog box containing mesh generation parameters. The
parameters used by the mesh initialization algorithm initmesh are:
• Maximum edge size: Largest triangle edge length (approximately). This
parameter is optional and must be a real positive number.
• Mesh growth rate: The rate at which the mesh size increases away from
small parts of the geometry. The value must be between 1 and 2. The
default value is 1.3, i.e., the mesh size increases by 30%.
2-21
2
Graphical User Interface
• Jiggle mesh: Toggles automatic jiggling of the initial mesh on/off.
The parameters used by the mesh jiggling algorithm jigglemesh are:
• Jiggle mode: Select a jiggle mode from a pop-up menu. Available modes
are on, optimize minimum, and optimize mean. on jiggles the mesh once.
Using the jiggle mode optimize minimum, the jiggling process is repeated
until the minimum triangle quality stops increasing or until the iteration
limit is reached. The same applies for the optimize mean option, but it
tries to increase the mean triangle quality.
• Number of jiggle iterations: Iteration limit for the optimize minimum
and optimize mean modes. Default: 20.
Finally, for the mesh refinement algorithm refinemesh, the Refinement
method can be regular or longest. The default refinement method is
regular, which results in a uniform mesh. The refinement method longest
always refines the longest edge on each triangle.
Solve Menu
2-22
Solve PDE
Solve the partial differential equation for the
current CSG model and triangular mesh, and plot
the solution (the automatic solution plot can be
disabled).
Parameters
Open dialog box for entry of PDE solve parameters.
Export Solution
Export the PDE solution vector u and, if applicable,
the computed eigenvalues l to the main workspace.
Using the pdetool Menus
Parameters
Solve Parameters Dialog Box for Elliptic PDEs
Parameters opens a dialog box where you can enter the solve parameters.
The set of solve parameters differs depending on the type of PDE.
• Elliptic PDEs. By default, no specific solve parameters are used, and
the elliptic PDEs are solved using the basic elliptic solver assempde.
Optionally, the adaptive mesh generator and solver adaptmesh can be used.
For the adaptive mode, the following parameters are available:
-
Adaptive mode. Toggle the adaptive mode on/off.
Maximum number of triangles. The maximum number of new
triangles allowed (can be set to Inf). A default value is calculated based
on the current mesh.
2-23
2
Graphical User Interface
-
-
-
Maximum number of refinements. The maximum number of
successive refinements attempted.
Triangle selection method. There are two triangle selection methods,
described below. You can also supply your own function.
•
Worst triangles. This method picks all triangles that are worse than
a fraction of the value of the worst triangle (default: 0.5). For more
details, see pdetriq.
•
Relative tolerance. This method picks triangles using a relative
tolerance criterion (default: 1E-3). For more details, see pdeadgsc.
•
User-defined function. Enter the name of a user-defined triangle
selection method. See pdedemo7 for an example of a user-defined
triangle selection method.
Function parameter. The function parameter allows fine-tuning of the
triangle selection methods. For the worst triangle method (pdeadworst),
it is the fraction of the worst value that is used to determine which
triangles to refine. For the relative tolerance method, it is a tolerance
parameter that controls how well the solution fits the PDE.
Refinement method. Can be regular or longest. See the Parameters
dialog box description in “Mesh Menu” on page 2-20.
If the problem is nonlinear, i.e., parameters in the PDE are directly
dependent on the solution u, a nonlinear solver must be used. The following
parameters are used:
-
Use nonlinear solver. Toggle the nonlinear solver on/off.
Nonlinear tolerance. Tolerance parameter for the nonlinear solver.
Initial solution. An initial guess. Can be a constant or a function of
x and y given as a MATLAB expression that can be evaluated on the
nodes of the current mesh.
Examples: 1, and exp(x.*y). Optional parameter, defaults to zero.
-
2-24
Jacobian. Jacobian approximation method: fixed (the default), a fixed
point iteration, lumped, a “lumped” (diagonal) approximation, or full,
the full Jacobian.
Using the pdetool Menus
-
Norm. The type of norm used for computing the residual. Enter as
energy for an energy norm, or as a real scalar p to give the lp norm. The
default is Inf, the infinity (maximum) norm.
Note The adaptive mode and the nonlinear solver can be used together.
-
Parabolic PDEs. The solve parameters for the parabolic PDEs are:
•
Time. A MATLAB vector of times at which a solution to the parabolic
PDE should be generated. The relevant time span is dependent on the
dynamics of the problem.
Examples: 0:10, and logspace(-2,0,20)
•
u(t0). The initial value u(t0) for the parabolic PDE problem The initial
value can be a constant or a column vector of values on the nodes
of the current mesh.
•
Relative tolerance. Relative tolerance parameter for the ODE
solver that is used for solving the time-dependent part of the parabolic
PDE problem.
•
Absolute tolerance. Absolute tolerance parameter for the ODE
solver that is used for solving the time-dependent part of the parabolic
PDE problem.
2-25
2
Graphical User Interface
Solve Parameters Dialog Box for Hyperbolic PDEs
-
Hyperbolic PDEs. The solve parameters for the hyperbolic PDEs are:
•
Time. A MATLAB vector of times at which a solution to the hyperbolic
PDE should be generated. The relevant time span is dependent on the
dynamics of the problem.
Examples: 0:10, and logspace(-2,0,20)
2-26
•
u(t0). The initial value u(t0) for the hyperbolic PDE problem. The
initial value can be a constant or a column vector of values on the
nodes of the current mesh.
•
u’(t0). The initial value (t0) for the hyperbolic PDE problem. You can
use the same formats as for u(t0).
•
Relative tolerance. Relative tolerance parameter for the ODE solver
that is used for solving the time-dependent part of the hyperbolic
PDE problem.
•
Absolute tolerance. Absolute tolerance parameter for the ODE
solver that is used for solving the time-dependent part of the
hyperbolic PDE problem.
Using the pdetool Menus
Solve Parameters Dialog Box for Eigenvalue PDEs
-
Eigenvalue problems. For the eigenvalue PDE, the only solve parameter
is the Eigenvalue search range, a two-element vector, defining an
interval on the real axis as a search range for the eigenvalues. The left
side can be -Inf.
Examples: [0 100], [-Inf 50]
Plot Menu
Plot Solution
Display a plot of the solution.
Parameters
Open dialog box for plot selection.
Export Movie
If a movie has been recorded, the movie matrix M is
exported to the main workspace.
2-27
2
Graphical User Interface
Parameters
Plot Selection Dialog Box
Parameters opens a dialog box containing options controlling the plotting
and visualization.
The upper part of the dialog box contains four columns:
• Plot type (far left) contains a row of six different plot types, which can be
used for visualization:
-
2-28
Color. Visualization of a scalar property using colored surface objects.
Contour. Visualization of a scalar property using colored contour lines.
The contour lines can also enhance the color visualization when both
plot types (Color and Contour) are checked. The contour lines are
then drawn in black.
Arrows. Visualization of a vector property using arrows.
Deformed mesh. Visualization of a vector property by deforming the
mesh using the vector property. The deformation is automatically scaled
to 10% of the problem domain. This plot type is primarily intended for
Using the pdetool Menus
visualizing x- and y-displacements (u and v) for problems in structural
mechanics. If no other plot type is selected, the deformed triangular
mesh is displayed.
-
-
Height (3-D plot). Visualization of a scalar property using height
(z-axis) in a 3-D plot. 3-D plots are plotted in separate figure windows. If
the Color and Contour plot types are not used, the 3-D plot is simply
a mesh plot. You can visualize another scalar property simultaneously
using Color and/or Contour, which results in a 3-D surface or contour
plot.
Animation. Animation of time-dependent solutions to parabolic and
hyperbolic problems. If you select this option, the solution is recorded
and then animated in a separate figure window using the MATLAB
movie function.
A color bar is added to the plots to map the colors in the plot to the magnitude
of the property that is represented using color or contour lines.
• Property contains four pop-up menus containing lists of properties that
are available for plotting using the corresponding plot type. From the first
pop-up menu you control the property that is visualized using color and/or
contour lines. The second and third pop-up menus contain vector valued
properties for visualization using arrows and deformed mesh, respectively.
From the fourth pop-up menu, finally, you control which scalar property to
visualize using z-height in a 3-D plot. The lists of properties are dependent
on the current application mode. For the generic scalar mode, you can
select the following scalar properties:
-
u. The solution itself.
abs(grad(u)). The absolute value of ∇u, evaluated at the center of each
triangle.
abs(c*grad(u)). The absolute value of c · ∇u, evaluated at the center
of each triangle.
user entry. A MATLAB expression returning a vector of data defined on
the nodes or the triangles of the current triangular mesh. The solution
u, its derivatives ux and uy, the x and y components of c · ∇u, cux and
cuy, and x and y are all available in the local workspace. You enter the
expression into the edit box to the right of the Property pop-up menu
in the User entry column.
2-29
2
Graphical User Interface
Examples: u.*u, x+y
The vector property pop-up menus contain the following properties in the
generic scalar case:
-
-grad(u). The negative gradient of u, -∇u.
-c*grad(u). c times the negative gradient of u, -c · ∇u.
user entry. A MATLAB expression [px; py] returning a 2-by-ntri
matrix of data defined on the triangles of the current triangular mesh
(ntri is the number of triangles in the current mesh). The solution u, its
derivatives ux and uy, the x and y components of c · ∇u, cux and cuy,
and x and y are all available in the local workspace. Data defined on the
nodes is interpolated to triangle centers. You enter the expression into
the edit field to the right of the Property pop-up menu in the User
entry column.
Examples: [ux;uy], [x;y]
For the generic system case, the properties available for visualization using
color, contour lines, or z-height are u, v, abs(u,v), and a user entry. For
visualization using arrows or a deformed mesh, you can choose (u,v) or a
user entry. For applications in structural mechanics, u and v are the x- and
y-displacements, respectively.
For the visualization options in the other application modes, see “Application
Modes” on page 1-84. The variables available in the local workspace for a user
entered expression are the same for all scalar and system modes (the solution
is always referred to as u and, in the system case, v).
• User entry contains four edit fields where you can enter your own
expression, if you select the user entry property from the corresponding
pop-up menu to the left of the edit fields. If the user entry property is not
selected, the corresponding edit field is disabled.
• Plot style contains three pop-up menus from which you can control the
plot style for the color, arrow, and height plot types respectively. The
available plot styles for color surface plots are
-
2-30
Interpolated shading. A surface plot using the selected colormap and
interpolated shading, i.e., each triangular area is colored using a linear,
interpolated shading (the default).
Using the pdetool Menus
-
Flat shading. A surface plot using the selected colormap and flat
shading, i.e., each triangular area is colored using a constant color.
You can use two different arrow plot styles:
-
Proportional. The length of the arrow corresponds to the magnitude of
the property that you visualize (the default).
Normalized. The lengths of all arrows are normalized, i.e., all arrows
have the same length. This is useful when you are interested in the
direction of the vector field. The direction is clearly visible even in areas
where the magnitude of the field is very small.
For height (3-D plots), the available plot styles are:
-
Continuous. Produces a “smooth” continuous plot by interpolating data
from triangle midpoints to the mesh nodes (the default).
Discontinuous. Produces a discontinuous plot where data and z-height
are constant on each triangle.
A total of three properties of the solution—two scalar properties and one
vector field—can be visualized simultaneously. If the Height (3-D plot)
option is turned off, the solution plot is a 2-D plot and is plotted in the main
axes of the pdetool GUI. If the Height (3-D plot) option is used, the solution
plot is a 3-D plot in a separate figure window. If possible, the 3-D plot uses
an existing figure window. If you would like to plot in a new figure window,
simply type figure at the MATLAB command line.
Additional Plot Control Options
In the middle of the dialog box are a number of additional plot control options:
• Plot in x-y grid. If you select this option, the solution is converted from
the original triangular grid to a rectangular x-y grid. This is especially
useful for animations since it speeds up the process of recording the movie
frames significantly.
• Show mesh. In the surface plots, the mesh is plotted using black color if
you select this option. By default, the mesh is hidden.
• Contour plot levels. For contour plots, the number of level curves, e.g.,
15 or 20 can be entered. Alternatively, you can enter a MATLAB vector of
2-31
2
Graphical User Interface
levels. The curves of the contour plot are then drawn at those levels. The
default is 20 contour level curves.
Examples: [0:100:1000], logspace(-1,1,30)
• Colormap. Using the Colormap pop-up menu, you can select from a
number of different colormaps: cool, gray, bone, pink, copper, hot, jet,
hsv, and prism.
• Plot solution automatically. This option is normally selected. If turned
off, there will not be a display of a plot of the solution immediately upon
solving the PDE. The new solution, however, can be plotted using this
dialog box.
For the parabolic and hyperbolic PDEs, the bottom right portion of the Plot
Selection dialog box contains the Time for plot parameter.
Time for plot. A pop-up menu allows you to select which of the solutions
to plot by selecting the corresponding time. By default, the last solution is
plotted.
Also, the Animation plot type is enabled. In its property field you find an
Options button. If you press it, an additional dialog box appears. It contains
parameters that control the animation:
2-32
Using the pdetool Menus
• Animation rate (fps). For the animation, this parameter controls the
speed of the movie in frames per second (fps).
• Number of repeats. The number of times the movie is played.
• Replay movie. If you select this option, the current movie is replayed
without rerecording the movie frames. If there is no current movie, this
option is disabled.
For eigenvalue problems, the bottom right part of the dialog box contains a
pop-up menu with all eigenvalues. The plotted solution is the eigenvector
associated with the selected eigenvalue. By default, the smallest eigenvalue is
selected.
You can rotate the 3-D plots by clicking the plot and, while keeping the mouse
button down, moving the mouse. For guidance, a surrounding box appears.
When you release the mouse, the plot is redrawn using the new viewpoint.
Initially, the solution is plotted using -37.5 degrees horizontal rotation and
30 degrees elevation.
2-33
2
Graphical User Interface
If you click the Plot button, the solution is plotted immediately using the
current plot setup. If there is no current solution available, the PDE is first
solved. The new solution is then plotted. The dialog box remains on the screen.
If you click the Done button, the dialog box is closed. The current setup is
saved but no additional plotting takes place.
If you click the Cancel button, the dialog box is closed. The setup remains
unchanged since the last plot.
Window Menu
From the Window menu, you can select all currently open MATLAB figure
windows. The selected window is brought to the front.
Help Menu
2-34
Help
Display a brief help window.
About
Display a window with some program information.
The Toolbar
The Toolbar
The toolbar underneath the main menu at the top of the GUI contains icon
buttons that provide quick and easy access to some of the most important
functions. They do not offer any additional functionality; all toolbar buttons
functions are also available using menu items. The toolbar consists of three
different parts: the five leftmost buttons for draw mode functions, the next six
buttons for different boundary, mesh, solution, and plot functions, and finally
the rightmost button for activating the zoom feature.
The draw mode buttons represent, from left to right:
• Draw a rectangle/square starting at a corner. Using the left mouse button,
click-and-drag to create a rectangle. Using the right mouse button (or
Ctrl+click), click-and-drag to create a square.
• Draw a rectangle/square starting at the center. Using the left mouse
button, click-and-drag to create a rectangle. Using the right mouse button
(or Ctrl+click), click-and-drag to create a square.
• Draw an ellipse/circle starting at the perimeter. Using the left mouse
button, click-and-drag to create an ellipse. Using the right mouse button
(or Ctrl+click), click-and-drag to create a circle.
• Draw an ellipse/circle starting at the center. Using the left mouse button,
click-and-drag to create an ellipse. Using the right mouse button (or
Ctrl+click), click-and-drag to create a circle.
• Draw a polygon. Click-and-drag to create polygon edges. You can close
the polygon by pressing the right mouse button. Clicking at the starting
vertex also closes the polygon.
The draw mode buttons can only be activated one at a time and they all work
the same way: single-clicking a button allows you to draw one solid object of
the selected type. Double-clicking a button makes it “stick,” and you can then
continue to draw solid objects of the selected type until you single-click the
button to “release” it.
If you are not in the draw mode when you click one of the draw mode buttons,
the GUI enters the draw mode automatically.
2-35
2
Graphical User Interface
The second group of buttons includes the following buttons, from left to right:
Enters the boundary mode.
Opens the PDE Specification dialog box.
Initializes the triangular mesh
Refines the triangular mesh.
Solves the PDE.
Opens the Solution Plot Selection dialog box.
The buttons in the second group are of the “flash” type; single-clicking them
initiates the associated function.
The last, rightmost button with the magnifier icon toggles the zoom function
on/off.
2-36
3
Finite Element Method
The core Partial Differential Equation Toolbox algorithm is a PDE solver
that uses the Finite Element Method (FEM) for problems defined on bounded
domains in the plane. Partial Differential Equation Toolbox software provides
a user-friendly interface between the MATLAB computing environment and
the FEM technical procedures.
• “The Elliptic Equation” on page 3-2
• “The Elliptic System” on page 3-10
• “The Parabolic Equation” on page 3-13
• “The Hyperbolic Equation” on page 3-18
• “The Eigenvalue Equation” on page 3-19
• “Nonlinear Equations” on page 3-23
• “Adaptive Mesh Refinement” on page 3-29
• “Fast Solution of Poisson’s Equation” on page 3-32
• “References” on page 3-34
3
Finite Element Method
The Elliptic Equation
The basic elliptic equation handled by the software is
in !
where ! is a bounded domain in the plane. c, a, f, and the unknown solution u
are complex functions defined on !. c can also be a 2-by-2 matrix function
on !. The boundary conditions specify a combination of u and its normal
derivative on the boundary:
• Dirichlet: hu = r on the boundary
• Generalized Neumann:
.
· (c∇u) + qu = g on
.
• Mixed: Only applicable to systems. A combination of Dirichlet and
generalized Neumann.
is the outward unit normal. g, q, h, and r are functions defined on
.
Our nomenclature deviates slightly from the tradition for potential theory,
where a Neumann condition usually refers to the case q = 0 and our Neumann
would be called a mixed condition. In some contexts, the generalized Neumann
boundary conditions is also referred to as the Robin boundary conditions. In
variational calculus, Dirichlet conditions are also called essential boundary
conditions and restrict the trial space. Neumann conditions are also called
natural conditions and arise as necessary conditions for a solution. The
variational form of the Partial Differential Equation Toolbox equation with
Neumann conditions is given below.
The approximate solution to the elliptic PDE is found in three steps:
1 Describe the geometry of the domain ! and the boundary conditions. This
can be done either interactively using pdetool (see Chapter 2, “Graphical
User Interface”) or through M-files (see pdegeom and pdebound).
2 Build a triangular mesh on the domain !. The software has mesh
generating and mesh refining facilities. A mesh is described by three
matrices of fixed format that contain information about the mesh points,
the boundary segments, and the triangles.
3-2
The Elliptic Equation
3 Discretize the PDE and the boundary conditions to obtain a linear system
Ku = F. The unknown vector u contains the values of the approximate
solution at the mesh points, the matrix K is assembled from the coefficients
c, a, h, and q and the right-hand side F contains, essentially, averages of
f around each mesh point and contributions from g. Once the matrices K
and F are assembled, you have the entire MATLAB environment at your
disposal to solve the linear system and further process the solution.
More elaborate applications make use of the Finite Element Method (FEM)
specific information returned by the different functions of the software.
Therefore we quickly summarize the theory and technique of FEM solvers to
enable advanced applications to make full use of the computed quantities.
FEM can be summarized in the following sentence: Project the weak form of
the differential equation onto a finite-dimensional function space. The rest of
this section deals with explaining the preceding statement.
We start with the weak form of the differential equation. Without restricting
the generality, we assume generalized Neumann conditions on the whole
boundary, since Dirichlet conditions can be approximated by generalized
Neumann conditions. In the simple case of a unit matrix h, setting g = qr and
then letting
yields the Dirichlet condition because division with a very
large q cancels the normal derivative terms. The actual implementation is
different, since the preceding procedure may create conditioning problems.
The mixed boundary condition of the system case requires a more complicated
treatment, described in “The Elliptic System” on page 3-10.
Assume that u is a solution of the differential equation. Multiply the equation
with an arbitrary test function v and integrate on !:
Integrate by parts (i.e., use Green’s formula) to obtain
The boundary integral can be replaced by the boundary condition:
3-3
3
Finite Element Method
Replace the original problem with Find u such that
This equation is called the variational, or weak, form of the differential
equation. Obviously, any solution of the differential equation is also a solution
of the variational problem. The reverse is true under some restrictions on
the domain and on the coefficient functions. The solution of the variational
problem is also called the weak solution of the differential equation.
The solution u and the test functions v belong to some function space V. The
next step is to choose an Np-dimensional subspace
. Project the weak
form of the differential equation onto a finite-dimensional function space
simply means requesting u and v to lie in
rather than V. The solution of
that lies
the finite dimensional problem turns out to be the element of
closest to the weak solution when measured in the energy norm. Convergence
is guaranteed if the space
tends to V as
. Since the differential
operator is linear, we demand that the variational equation is satisfied for
Np test-functions #i
that form a basis, i.e.,
Expand u in the same basis of
u( x) =
Np
∑ U j$ j ( x),
j =1
and obtain the system of equations
3-4
The Elliptic Equation
Use the following notations:
(Stiffness matrix)
(Mass matrix)
and rewrite the system in the form (K + M + Q)U = F + G.
K, M, and Q are Np-by-Np matrices, and F and G are Np-vectors. K, M, and F
are produced by assema, while Q, G are produced by assemb. When it is not
necessary to distinguish K, M, and Q or F and G, we collapse the notations to
KU = F, which form the output of assempde.
When the problem is self-adjoint and elliptic in the usual mathematical
sense, the matrix K + M + Q becomes symmetric and positive definite. Many
common problems have these characteristics, most notably those that can also
be formulated as minimization problems. For the case of a scalar equation, K,
M, and Q are obviously symmetric. If c(x) $ % > 0, a(x) $ 0 and q(x) $ 0 with
q(x) > 0 on some part of
, then, if U 3 0.
UT(K + M + Q)U is the energy norm. There are many choices of the
test-function spaces. The software uses continuous functions that are linear
3-5
3
Finite Element Method
on each triangle of the mesh. Piecewise linearity guarantees that the integrals
defining the stiffness matrix K exist. Projection onto
is nothing more
than linear interpolation, and the evaluation of the solution inside a triangle
is done just in terms of the nodal values. If the mesh is uniformly refined,
approximates the set of smooth functions on !.
is the set of “tent” or “hat” functions #i. These are
A suitable basis for
linear on each triangle and take the value 0 at all nodes xj except for xi.
Requesting #i(xi) = 1 yields the very pleasant property
That is, by solving the FEM system we obtain the nodal values of the
approximate solution. The basis function #i vanishes on all the triangles that
do not contain the node xi. The immediate consequence is that the integrals
appearing in Ki,j, Mi,j, Qi,j, Fi and Gi only need to be computed on the triangles
that contain the node xi. Secondly, it means that Ki,j and Mi,j are zero unless
xi and xj are vertices of the same triangle and thus K and M are very sparse
matrices. Their sparse structure depends on the ordering of the indices of
the mesh points.
The integrals in the FEM matrices are computed by adding the contributions
from each triangle to the corresponding entries (i.e., only if the corresponding
mesh point is a vertex of the triangle). This process is commonly called
assembling, hence the name of the function assempde.
The assembling routines scan the triangles of the mesh. For each triangle
they compute the so-called local matrices and add their components to the
correct positions in the sparse matrices or vectors. (The local 3-by-3 matrices
contain the integrals evaluated only on the current triangle. The coefficients
are assumed constant on the triangle and they are evaluated only in the
triangle barycenter.) The integrals are computed using the midpoint rule.
This approximation is optimal since it has the same order of accuracy as
the piecewise linear interpolation.
Consider a triangle given by the nodes P1, P2, and P3 as in the following figure.
3-6
The Elliptic Equation
P
1
Pb
Pc
P2
y
P
3
x
1
1
The Local Triangle P1P2P3
Note The local 3-by-3 matrices contain the integrals evaluated only on the
current triangle. The coefficients are assumed constant on the triangle and
they are evaluated only in the triangle barycenter.
The simplest computations are for the local mass matrix m:
where Pc is the center of mass of & P1P2P3, i.e.,
The contribution to the right side F is just
For the local stiffness matrix we have to evaluate the gradients of the basis
functions that do not vanish on P1P2P3. Since the basis functions are linear on
3-7
3
Finite Element Method
the triangle P1P2P3, the gradients are constants. Denote the basis functions
#1, #2, and #3 such that #(Pi) = 1. If P2 - P3 = [x1,y1]T then we have that
and after integration (taking c as a constant matrix on the triangle)
, they contribute to the
If two vertices of the triangle lie on the boundary
line integrals associated to the boundary conditions. If the two boundary
points are P1 and P2, then we have
and
where Pb is the midpoint of P1P2.
For each triangle the vertices Pm of the local triangle correspond to the indices
im of the mesh points. The contributions of the individual triangle are added
to the matrices such that, e.g.,
This is done by the function assempde. The gradients and the areas of the
triangles are computed by the function pdetrg.
The Dirichlet boundary conditions are treated in a slightly different manner.
They are eliminated from the linear system by a procedure that yields a
symmetric, reduced system. The function assempde can return matrices K,
3-8
The Elliptic Equation
F, B, and ud such that the solution is u = Bv + ud where Kv = F. u is an
Np-vector, and if the rank of the Dirichlet conditions is rD, then v has Np rD components.
3-9
3
Finite Element Method
The Elliptic System
Partial Differential Equation Toolbox software can also handle systems of N
partial differential equations over the domain . We have the elliptic system
the parabolic system
the hyperbolic system
d
∂ 2u
∂t2
− ∇ ⋅ ( c ⊗ ∇ u) + a u = f
and the eigenvalue system
where c is an N-by-N-by-2-by-2 tensor. By the notation ∇ ⋅ (c ⊗ ∇u) , we mean
the N-by-1 matrix with (i,1)-component.
The symbols a and d denote N-by-N matrices, and u denotes column
vectors of length N.
The elements cijkl, aij, dij, and fi of c , a , d , and f are stored row-wise in
the MATLAB matrices c, a, d, and f. The case of identity, diagonal, and
symmetric matrices are handled as special cases. For the tensor cijkl this
applies both to the indices i and j, and to the indices k and l.
3-10
The Elliptic System
Partial Differential Equation Toolbox software does not check the ellipticity of
the problem, and it is quite possible to define a system that is not elliptic in
the mathematical sense. The preceding procedure that describes the scalar
case is applied to each component of the system, yielding a symmetric positive
definite system of equations whenever the differential system possesses
these characteristics.
The boundary conditions now in general are mixed, i.e., for each point on the
boundary a combination of Dirichlet and generalized Neumann conditions,
By the notation
we mean the N-by-1 matrix with (i,1)-component
where the outward normal vector of the boundary is
.
There are M Dirichlet conditions and the h -matrix is M-by-N, M $ 0. The
generalized Neumann condition contains a source h'µ , where the Lagrange
multipliers µ are computed such that the Dirichlet conditions become
satisfied. In a structural mechanics problem, this term is exactly the reaction
force necessary to satisfy the kinematic constraints described by the Dirichlet
conditions.
The rest of this section details the treatment of the Dirichlet conditions and
may be skipped on a first reading.
Partial Differential Equation Toolbox software supports two implementations
of Dirichlet conditions. The simplest is the “Stiff Spring” model, so named for
its interpretation in solid mechanics. See “The Elliptic Equation” on page
3-2 for the scalar case, which is equivalent to a diagonal h-matrix. For the
general case, Dirichlet conditions
hu = r
3-11
3
Finite Element Method
are approximated by adding a term
L(h'hu − h'r)
to the equations KU = F, where L is a large number such as 104 times a
representative size of the elements of K.
When this number is increased, hu = r will be more accurately satisfied,
but the potential ill-conditioning of the modified equations will become more
serious.
The second method is also applicable to general mixed conditions with
nondiagonal h , and is free of the ill-conditioning, but is more involved
computationally. Assume that there are N p nodes in the triangulation. Then
the number of unknowns is NpN = Nu. When Dirichlet boundary conditions
fix some of the unknowns, the linear system can be correspondingly reduced.
This is easily done by removing rows and columns when u values are given,
but here we must treat the case when some linear combinations of the
components of u are given, hu = r . These are collected into HU = R where H
is an M-by-Nu matrix and R is an M-vector.
With the reaction force term the system becomes
KU +H´ µ = F
HU = R
The constraints can be solved for m of the U-variables, the remaining called
V, an Nu - m vector. The null space of H is spanned by the columns of B,
and U = BV + ud makes U satisfy the Dirichlet conditions. A permutation
to block-diagonal form exploits the sparsity of H to speed up the following
computation to find B in a numerically stable way. µ can be eliminated by
premultiplying by B´ since, by the construction, HB = 0 or B´H´ = 0. The
reduced system becomes
B´ KBV= B´ F - B´Kud
which is symmetric and positive definite if K is.
3-12
The Parabolic Equation
The Parabolic Equation
In this section...
“Reducing the Parabolic Equation to Elliptic Equations” on page 3-13
“Solving the Parabolic Equation in Stages” on page 3-15
Reducing the Parabolic Equation to Elliptic Equations
The elliptic solver allows other types of equations to be more easily
implemented. In this section, we show how the parabolic equation can
be reduced to solving elliptic equations. This is done using the function
parabolic.
Consider the equation
with the initial condition
and boundary conditions of the same kind as for the elliptic equation on
.
The heat equation reads
in the presence of distributed heat loss to the surroundings. + is the density, C
is the thermal capacity, k is the thermal conductivity, h is the film coefficient,
u4 is the ambient temperature, and f is the heat source.
For time-independent coefficients, the steady-state solution of the equation is
the solution to the standard elliptic equation
-∇ · (c∇u) + au = f
3-13
3
Finite Element Method
Assuming a triangular mesh on ! and t $ 0, expand the solution to the PDE
(as a function of x) in the Finite Element Method basis:
Plugging the expansion into the PDE, multiplying with a test function
#j, integrating over !, and applying Green’s formula and the boundary
conditions yield
In matrix notation, we have to solve the linear, large and sparse ODE system
This method is traditionally called method of lines semidiscretization.
Solving the ODE with the initial value
Ui(0) = u0(xi)
yields the solution to the PDE at each node xi and time t. K andF are the
stiffness matrix and the right-hand side of the elliptic problem
-∇ · (c∇u) + au = f in !
with the original boundary conditions while M is just the mass matrix of
the problem
-∇ · (0∇u) + du = 0 in !
When the Dirichlet conditions are time dependent, F contains contributions
from time derivatives of h h and r. These derivatives are evaluated by finite
differences of the user-specified data.
3-14
The Parabolic Equation
The ODE system is ill conditioned. Explicit time integrators are forced by
stability requirements to very short time steps while implicit solvers can
be expensive since they solve an elliptic problem at every time step. The
numerical integration of the ODE system is performed by the MATLAB
ODE Suite functions, which are efficient for this class of problems. The time
step is controlled to satisfy a tolerance on the error, and factorizations of
coefficient matrices are performed only when necessary. When coefficients
are time dependent, the necessity of reevaluating and refactorizing the
matrices each time step may still make the solution time consuming, although
parabolic reevaluates only that which varies with time. In certain cases a
time-dependent Dirichlet matrix h(t) may cause the error control to fail, even
if the problem is mathematically sound and the solution u(t) is smooth. This
can happen because the ODE integrator looks only at the reduced solution v
with u = Bv + ud. As h changes, the pivoting scheme employed for numerical
stability may change the elimination order from one step to the next. This
means that B,v and ud all change discontinuously, although u itself does not.
Solving the Parabolic Equation in Stages
The following example shows you how to solve a parabolic equation in stages
and how to set an initial condition as a variable:
1 At the MATLAB command prompt, type pdetool.
2 Draw a rectangle in the GUI axes.
3 From the Draw menu, select Export Geometry Description, Set
Formula, Labels.
4 In the Export dialog box, enter gd sf ns. Click OK.
The exported variables are available in the MATLAB workspace.
5 From the Boundary menu, select Boundary Mode.
6 From the Boundary menu, select Specify Boundary Conditions.
7 Set the Neumann and Dirichlet boundary conditions. If these conditions
are not the same for all the stages, set the conditions accordingly.
3-15
3
Finite Element Method
8 From the Boundary menu, select Export Decomposed Geometry,
Boundary Cond’s.
9 In the Export dialog box, enter g b. Click OK.
10 From the PDE menu, select PDE Mode.
11 From the PDE menu, select PDE Specification.
12 Set the partial differential equation (PDE) coefficients, which are the same
for any value of time.
13 From the PDE menu, select Export PDE Coefficients.
14 In the Export dialog box, enter c a f d. Click OK.
15 From the Mesh menu, select Mesh Mode.
16 From the Mesh menu, select Parameters.
17 Verify the initial mesh, jiggle mesh, and refine mesh values. The mesh
is fixed for all stages.
18 From the Mesh menu, select Export Mesh.
19 In the Export dialog box, enter p e t. Click OK.
20 Save the workspace variables into a MAT-file by typing save data.mat
at the MATLAB command prompt.
21 Save the following code as an M-file:
clear all;
close all;
load data
%For the first stage you need to specify an
%initial condition, U0.
U0 = 0; %U0 expands to the correct size automatically.
%Divide the time range into 4 stages.
time = {0:.01:1, 1:.05:3, 3:.1:5, 5:.5:20};
3-16
The Parabolic Equation
for i = 1:4
U1 = parabolic(U0,time{i},b,p,e,t,c,a,f,d);
for j = 1:size(U1,2)
H =pdeplot(p,e,t,'xydata',U1(:,j),'zdata',...
U1(:,j),'mesh','off');
set(gca,'ZLim',[-80 0]);
drawnow
end
%Reset the initial condition at all points.
U0 = U1(:,1);
end
This M-file uses the variables you defined in the MATLAB workspace to
solve a parabolic equation in stages. Within this M-file, you set the initial
condition as a variable.
3-17
3
Finite Element Method
The Hyperbolic Equation
Using the same ideas as for the parabolic equation, hyperbolic implements
the numerical solution of
with the initial conditions
and usual boundary conditions. In particular, solutions of the equation utt c&u = 0 are waves moving with speed .
Using a given triangulation of !, the method of lines yields the second order
ODE system
with the initial conditions
after we eliminate the unknowns fixed by Dirichlet boundary conditions. As
before, the stiffness matrix K and the mass matrix M are assembled with the
aid of the function assempde from the problems
-∇ · (c∇u) + au = f and -∇ · (0∇u) + du = 0
3-18
The Eigenvalue Equation
The Eigenvalue Equation
Partial Differential Equation Toolbox software handles the following basic
eigenvalue problem:
-∇ · (c∇u) + au = "du
where " is an unknown complex number. In solid mechanics, this is a problem
associated with wave phenomena describing, e.g., the natural modes of a
vibrating membrane. In quantum mechanics " is the energy level of a bound
state in the potential well a(x).
The numerical solution is found by discretizing the equation and solving
the resulting algebraic eigenvalue problem. Let us first consider the
discretization. Expand u in the FEM basis, multiply with a basis element, and
integrate on the domain !. This yields the generalized eigenvalue equation
KU = "MU
where the mass matrix corresponds to the right side, i.e.,
The matrices K and M are produced by calling assema for the equations
-∇ · (c∇u) + au = 0 and -∇ · (0∇u) + du = 0
In the most common case, when the function d(x) is positive, the mass matrix
M is positive definite symmetric. Likewise, when c(x) is positive and we have
Dirichlet boundary conditions, the stiffness matrix K is also positive definite.
The generalized eigenvalue problem, KU = "MU, is now solved by the Arnoldi
algorithm applied to a shifted and inverted matrix with restarts until all
eigenvalues in the user-specified interval have been found.
Let us describe how this is done in more detail. You may want to look at the
example provided in the section “Eigenvalue Problems” on page 1-75, where
an actual run is reported.
3-19
3
Finite Element Method
First a shift µ is determined close to where we want to find the eigenvalues.
When both K and M are positive definite, it is natural to take µ = 0, and
get the smallest eigenvalues; in other cases take any point in the interval
[lb,ub] where eigenvalues are sought. Subtract µM from the eigenvalue
equation and get (K - µM)U = (" - µ)MU. Then multiply with the inverse of
this shifted matrix and get
This is a standard eigenvalue problem AU = ,U, with the matrix
A = (K - µM)-1M and eigenvalues
where i = 1, . . ., n. The largest eigenvalues ,i of the transformed matrix A
now correspond to the eigenvalues "i = µ + 1/'i of the original pencil (K,M)
closest to the shift µ.
The Arnoldi algorithm computes an orthonormal basis V where the shifted
and inverted operator A is represented by a Hessenberg matrix H,
(The subscripts mean that Vj and Ej have j columns and
has j rows and
columns. When no subscripts are used we deal with vectors and matrices of
size n.)
Some of the eigenvalues of this Hessenberg matrix
eventually give good
approximations to the eigenvalues of the original pencil (K,M) when the
basis grows in dimension j, and less and less of the eigenvector is hidden in
the residual matrix Ej.
The basisV is built one column vj at a time. The first vector v1 is chosen at
random, as n normally distributed random numbers. In step j, the first j
vectors are already computed and form the n × j matrix Vj. The next vector
vj+1 is computed by first letting A operate on the newest vector vj, and then
making the result orthogonal to all the previous vectors.
3-20
The Eigenvalue Equation
This is formulated as h j +1v j +1 = Av j − V j h j , where the column vector hj
consists of the Gram-Schmidt coefficients, and
is the normalization
factor that gives vj + 1 unit length. Put the corresponding relations from
previous steps in front of this and get
where
is a j × j Hessenberg matrix with the vectors hj as columns. The
second term on the right-hand side has nonzeros only in the last column; the
.
earlier normalization factors show up in the subdiagonal of
The eigensolution of the small Hessenberg matrix H gives approximations to
some of the eigenvalues and eigenvectors of the large matrix operator Aj,j in
the following way. Compute eigenvalues $i and eigenvectors si of
,
Then yi = Vjsi is an approximate eigenvector of A, and its residual is
ri = Ayi − yi θi = AV j si − V j si θi = ( AV j − V j H j, j ) si = v j +1 h j +1, j si, j
This residual has to be small in norm for $i to be a good eigenvalue
approximation. The norm of the residual is
, the product of
the last subdiagonal element of the Hessenberg matrix and the last element
of its eigenvector. It seldom happens that
gets particularly small, but
after sufficiently many steps j there are always some eigenvectors si with
small last elements. The long vector Vj + 1 is of unit norm.
It is not necessary to actually compute the eigenvector approximation yi to get
the norm of the residual; we only need to examine the short vectors si, and flag
those with tiny last components as converged. In a typical case n may be 2000,
while j seldom exceeds 50, so all computations that involve only matrices and
vectors of size j are much cheaper than those involving vectors of length n.
This eigenvalue computation and test for convergence is done every few
steps j, until all approximations to eigenvalues inside the interval [lb,ub]
are flagged as converged. When n is much larger than j, this is done very
3-21
3
Finite Element Method
often, for smaller n more seldom. When all eigenvalues inside the interval
have converged, or when j has reached a prescribed maximum, the converged
eigenvectors, or more appropriately Schur vectors, are computed and put
in the front of the basis V.
After this, the Arnoldi algorithm is restarted with a random vector, if all
approximations inside the interval are flagged as converged, or else with the
best unconverged approximate eigenvector yi. In each step j of this second
Arnoldi run, the vector is made orthogonal to all vectors in V including the
converged Schur vectors from the previous runs. This way, the algorithm
is applied to a projected matrix, and picks up a second copy of any double
eigenvalue there may be in the interval. If anything in the interval converges
during this second run, a third is attempted and so on, until no more
approximate eigenvalues $i show up inside. Then the algorithm signals
convergence. If there are still unconverged approximate eigenvalues after a
prescribed maximum number of steps, the algorithm signals nonconvergence
and reports all solutions it has found.
This is a heuristic strategy that has worked well on both symmetric,
nonsymmetric, and even defective eigenvalue problems. There is a tiny
theoretical chance of missing an eigenvalue, if all the random starting vectors
happen to be orthogonal to its eigenvector. Normally, the algorithm restarts p
times, if the maximum multiplicity of an eigenvalue is p. At each restart a
new random starting direction is introduced.
The shifted and inverted matrix A = (K - µM)-1M is needed only to operate
on a vector vj in the Arnoldi algorithm. This is done by computing an LU
factorization,
P(K - µM)Q = LU
using the sparse MATLAB command lu (P and Q are permutations that make
the triangular factors L and U sparse and the factorization numerically
stable). This factorization needs to be done only once, in the beginning, then x
= Avj is computed as,
x = QU-1L-1PMvj
with one sparse matrix vector multiplication, a permutation, sparse forwardand back-substitutions, and a final renumbering.
3-22
Nonlinear Equations
Nonlinear Equations
The low-level Partial Differential Equation Toolbox functions are aimed at
solving linear equations. Since many interesting computational problems
are nonlinear, the software contains a nonlinear solver built on top of the
assempde function.
Note Before solving a nonlinear PDE, from the Solve menu in the pdetool
GUI, select Parameters. Then, select the Use nonlinear solver check
box and click OK.
The basic idea is to use Gauss-Newton iterations to solve the nonlinear
equations. Say you are trying to solve the equation
r(u) = -∇ · (c(u)∇u) + a(u)u - f(u) = 0.
In the FEM setting you solve the weak form of r(u) = 0. Set as usual
u( x) = ∑ U j φ j
then, multiply the equation by an arbitrary test function !i, integrate on the
domain !, and use Green’s formula and the boundary conditions to obtain
which has to hold for all indices i.
The residual vector +(U) can be easily computed as
+(U) = (K + M + Q)U - (F + G)
3-23
3
Finite Element Method
where the matrices K, M, Q and the vectors F and G are produced by
assembling the problem
-∇ · (c(U)∇u) + a(U)u = f(U)
Assume that you have a guess U(n)of the solution. If U(n) is close enough to
the exact solution, an improved approximation U(n + 1) is obtained by solving
the linearized problem
where 5 is a positive number. (It is not necessary that &(U)=0 have a solution
even if &(u) = 0 has. In this case, the Gauss-Newton iteration tends to be the
minimizer of the residual, i.e., the solution of minU ||+(U)||).
It is well known that for sufficiently small (
||ρ(U (n+1) )||<||ρ(U (n) )||
and
is called a descent direction for ||+(U)||, where ||· || is the l2-norm. The
iteration is
U(n +1) = U(n) + 5pn
where 5 ) 1 is chosen as large as possible such that the step has a reasonable
descent.
The Gauss-Newton method is local, and convergence is assured only when U(0)
is close enough to the solution. In general, the first guess may be outside the
region of convergence. To improve convergence from bad initial guesses, a
damping strategy is implemented for choosing 5, the Armijo-Goldstein line
search. It chooses the largest damping coefficient 5 out of the sequence 1, 1/2,
1/4, . . . such that the following inequality holds:
3-24
Nonlinear Equations
||ρ(U (n) )|| − ||ρ(U (n) + αpn )||≥
α
||ρ(U (n) )||
2
which guarantees a reduction of the residual norm by at least 1 - 5/2. Each
step of the line-search algorithm requires an evaluation of the residual +(U(n)+
5pn).
An important point of this strategy is that when U(n) approaches the solution,
then
and thus the convergence rate increases. If there is a solution to
+(U) = 0, the scheme ultimately recovers the quadratic convergence rate of the
standard Newton iteration.
Closely related to the preceding problem is the choice of the initial guess
U(0). By default, the solver sets U(0) and then assembles the FEM matrices K
and F and computes
U(1) = K-1F
The damped Gauss-Newton iteration is then started with U(1), which should
be a better guess than U(0). If the boundary conditions do not depend on the
solution u, then U(1) satisfies them even if U(0) does not. Furthermore, if the
equation is linear, then U(1) is the exact FEM solution and the solver does not
enter the Gauss-Newton loop.
There are situations where U(0) = 0 makes no sense or convergence is
impossible.
In some situations you may already have a good approximation and the
nonlinear solver can be started with it, avoiding the slow convergence regime.
This idea is used in the adaptive mesh generator. It computes a solution on
a mesh, evaluates the error, and may refine certain triangles. The interpolant
of is a very good starting guess for the solution on the refined mesh.
In general the exact Jacobian
3-25
3
Finite Element Method
is not available. Approximation of Jn by finite differences in the following way
is expensive but feasible. The ith column of Jn can be approximated by
which implies the assembling of the FEM matrices for the triangles containing
grid point i. A very simple approximation to Jn, which gives a fixed point
iteration, is also possible as follows. Essentially, for a given U(n), compute
the FEM matrices K and F and set
U(n + 1) = K-1F
This is equivalent to approximating the Jacobian with the stiffness matrix.
Indeed, since +(U(n)) = KU(n) - F, putting Jn = K yields
In many cases the convergence rate is slow, but the cost of each iteration
is cheap.
The Partial Differential Equation Toolbox nonlinear solver also provides
for a compromise between the two extremes. To compute the derivative of
the mapping
, proceed as follows. The a term has been omitted for
clarity, but appears again in the final result.
The first integral term is nothing more than Ki,j.
The second term is “lumped,” i.e., replaced by a diagonal matrix that contains
the row sums. Since 6j!j = 1, the second term is approximated by
3-26
Nonlinear Equations
which is the ith component of K(c’)U, where K(c’) is the stiffness matrix
rather than c. The same reasoning can be
associated with the coefficient
. The derivative of the
applied to the derivative of the mapping
is exactly
mapping
which is the mass matrix associated with the coefficient
of the residual +(U) is approximated by
. Thus the Jacobian
where the differentiation is with respect to u K and M designate stiffness and
mass matrices and their indices designate the coefficients with respect to
which they are assembled. At each Gauss-Newton iteration, the nonlinear
solver assembles the matrices corresponding to the equations
−∇ ⋅ (c∇u) + (a − f')u = 0
−∇ ⋅ (c'∇u) + a'u = 0
and then produces the approximate Jacobian. The differentiations of the
coefficients are done numerically.
In the general setting of elliptic systems, the boundary conditions are
appended to the stiffness matrix to form the full linear system:
where the coefficients of and may depend on the solution . The “lumped”
approach approximates the derivative mapping of the residual by
3-27
3
Finite Element Method
The nonlinearities of the boundary conditions and the dependencies of
the coefficients on the derivatives of are not properly linearized by this
scheme. When such nonlinearities are strong, the scheme reduces to the
fix-point iteration and may converge slowly or not at all. When the boundary
conditions are linear, they do not affect the convergence properties of the
iteration schemes. In the Neumann case they are invisible (H is an empty
matrix) and in the Dirichlet case they merely state that the residual is zero on
the corresponding boundary points.
3-28
Adaptive Mesh Refinement
Adaptive Mesh Refinement
In this section...
“Introduction” on page 3-29
“The Error Indicator Function” on page 3-30
“The Mesh Refiner” on page 3-31
“The Termination Criteria” on page 3-31
Introduction
Partial Differential Equation Toolbox software has a function for global,
uniform mesh refinement. It divides each triangle into four similar triangles
by creating new corners at the midsides, adjusting for curved boundaries. You
can assess the accuracy of the numerical solution by comparing results from a
sequence of successively refined meshes. If the solution is smooth enough,
more accurate results may be obtained by extrapolation.
The solutions of equations often have geometric features like localized strong
gradients. An example of engineering importance in elasticity is the stress
concentration occurring at reentrant corners such as the MATLAB L-shaped
membrane. Then it is more economical to refine the mesh selectively, i.e.,
only where it is needed. When the selection is based on estimates of errors
in the computed solutions, a posteriori estimates, we speak of adaptive mesh
refinement. See adaptmesh for an example of the computational savings
where global refinement needs more than 6000 elements to compete with an
adaptively refined mesh of 500 elements.
The adaptive refinement generates a sequence of solutions on successively
finer meshes, at each stage selecting and refining those elements that are
judged to contribute most to the error. The process is terminated when the
maximum number of elements is exceeded or when each triangle contributes
less than a preset tolerance. You need to provide an initial mesh, and choose
selection and termination criteria parameters. The initial mesh can be
produced by the initmesh function. The three components of the algorithm
are the error indicator function, which computes an estimate of the element
error contribution, the mesh refiner, which selects and subdivides elements,
and the termination criteria.
3-29
3
Finite Element Method
The Error Indicator Function
The adaptation is a feedback process. As such, it is easily applied to a
larger range of problems than those for which its design was tailored. You
want estimates, selection criteria, etc., to be optimal in the sense of giving
the most accurate solution at fixed cost or lowest computational effort for
a given accuracy. Such results have been proved only for model problems,
but generally, the equidistribution heuristic has been found near optimal.
Element sizes should be chosen such that each element contributes the same
to the error. The theory of adaptive schemes makes use of a priori bounds for
solutions in terms of the source function f. For nonelliptic problems such a
bound may not exist, while the refinement scheme is still well defined and
has been found to work well.
The error indicator function used in the software is an element-wise
estimate of the contribution, based on the work of C. Johnson et al. [5], [6].
For Poisson’s equation -&u = f on !, the following error estimate for the
FEM-solution uh holds in the L2-norm || · ||:
|| ∇(u - uh) || ) 5 || hf || + 7Dh(uh)
where h = h(x) is the local mesh size, and
The braced quantity is the jump in normal derivative of v across edge /,
hr is the length of edge /, and the sum runs over Ei, the set of all interior
edges of the triangulation. The coefficients 5 and 7 are independent of the
triangulation. This bound is turned into an element-wise error indicator
function E(K) for element K by summing the contributions from its edges. The
final form for the equation
-∇ · (c∇u) + au = f
becomes
3-30
Adaptive Mesh Refinement
where n τ is the unit normal of edge τ and the braced term is the jump in flux
across the element edge. The L2 norm is computed over the element K. This
error indicator is computed by the pdejmps function.
The Mesh Refiner
Partial Differential Equation Toolbox software is geared to elliptic problems.
For reasons of accuracy and ill-conditioning, they require the elements
not to deviate too much from being equilateral. Thus, even at essentially
one-dimensional solution features, such as boundary layers, the refinement
technique must guarantee reasonably shaped triangles.
When an element is refined, new nodes appear on its midsides, and if the
neighbor triangle is not refined in a similar way, it is said to have hanging
nodes. The final triangulation must have no hanging nodes, and they are
removed by splitting neighbor triangles. To avoid further deterioration of
triangle quality in successive generations, the “longest edge bisection” scheme
Rosenberg-Stenger [8] is used, in which the longest side of a triangle is always
split, whenever any of the sides have hanging nodes. This guarantees that no
angle is ever smaller than half the smallest angle of the original triangulation.
Two selection criteria can be used. One, pdeadworst, refines all elements
with value of the error indicator larger than half the worst of any element.
The other, pdeadgsc, refines all elements with an indicator value exceeding a
user-defined dimensionless tolerance. The comparison with the tolerance is
properly scaled with respect to domain and solution size, etc.
The Termination Criteria
For smooth solutions, error equidistribution can be achieved by the
pdeadgsc selection if the maximum number of elements is large enough.
The pdeadworst adaptation only terminates when the maximum number of
elements has been exceeded. This mode is natural when the solution exhibits
singularities. The error indicator of the elements next to the singularity may
never vanish, regardless of element size, and equidistribution is too much
to hope for.
3-31
3
Finite Element Method
Fast Solution of Poisson’s Equation
While the general strategy of Partial Differential Equation Toolbox software
is to use the MATLAB built-in solvers for sparse systems, there are situations
where faster solution algorithms are available. One such example is found
when solving Poisson’s equation
-&u = f in !
with Dirichlet boundary conditions, where ! is a rectangle.
For the fast solution algorithms to work, the mesh on the rectangle must be a
regular mesh. In this context it means that the first side of the rectangle is
divided into N1 segments of length h1, the second into N2 segments of length
h2, and (N1 + 1) by (N2 + 1) points are introduced on the regular grid thus
defined. The triangles are all congruent with sides h1, h2 and a right angle
in between.
The Dirichlet boundary conditions are eliminated in the usual way, and the
resulting problem for the interior nodes is Kv = F. If the interior nodes are
numbered from left to right, and then from bottom to top, the K matrix is
block tridiagonal. The N2 - 1 diagonal blocks, here called T, are themselves
tridiagonal (N1 - 1) by (N1 - 1) matrices, with 2(h1/h2 + h2/h1) on the diagonal
and -h2/h1 on the subdiagonals. The subdiagonal blocks, here called I, are
-h1/h2 times the unit N1 - 1 matrix.
The key to the solution of the problem Kv = F is that the problem Tw
= f is possible to solve using the discrete sine transform. Let S be the
(N1 - 1) by (N1 - 1) matrix with Sij = sin(-ij/N1). Then S-1TS = 8, where 8 is
a diagonal matrix with diagonal entries 2(h1/h2 + h2/h1) - 2h2/h1 cos(-i/N1).
w = S8-1S-1 f, but multiplying with S is nothing more than taking the discrete
sine transform, and multiplying with S-1 is the same as taking the inverse
discrete sine transform. The discrete sine transform can be efficiently
calculated using the fast Fourier transform on a sequence of length 2N1.
Solving Tw = f using the discrete sine transform would not be an advantage in
itself, since the system is tridiagonal and should be solved as such. However,
for the full system Kv = F, a transformation of the blocks in K turns it into
N1 - 1 decoupled tridiagonal systems of size N2 - 1. Thus, a solution algorithm
would look like
3-32
Fast Solution of Poisson’s Equation
1 Divide F into N2 - 1 blocks of length N1 - 1, and perform an inverse discrete
sine transform on each block.
2 Reorder the elements and solve N1 - 1 tridiagonal systems of size N2 - 1,
with 2(h1/h2 + h2/h1) - 2h2/h1 cos(-i/N1) on the diagonal, and -h1/h2 on the
subdiagonals.
3 Reverse the reordering, and perform N2 - 1 discrete sine transforms on
the blocks of length N1 - 1.
When using a fast solver such as this one, time and memory are also saved
since the matrix K in fact never has to be assembled. A drawback is that since
the mesh has to be regular, it is impossible to do adaptive mesh refinement.
The fast elliptic solver for Poisson’s equation is implemented in poisolv. The
discrete sine transform and the inverse discrete sine transform are computed
by dst and idst, respectively.
3-33
3
Finite Element Method
References
[1] Bank, Randolph E., PLTMG: A Software Package for Solving Elliptic
Partial Differential Equations, User’s Guide 6.0, Society for Industrial and
Applied Mathematics, Philadelphia, PA, 1990.
[2] Dahlquist, Germund, and Björk, Åke, Numerical Methods, 2nd edition,
1995, in print.
[3] Golub, Gene H., and Charles F. Van Loan, Matrix Computations, 2nd
edition, John Hopkins University Press, Baltimore, MD, 1989.
[4] George, P.L., Automatic Mesh Generation — Application to Finite Element
Methods, Wiley, 1991.
[5] Johnson, C., Numerical Solution of Partial Differential Equations by the
Finite Element Method, Studentlitteratur, Lund, Sweden, 1987.
[6] Johnson, C., and Eriksson, K., Adaptive Finite Element Methods for
Parabolic Problems I: A Linear Model Problem, SIAM J. Numer. Anal, 28,
(1991), pp. 43–77.
[7] Saad, Yousef, Variations on Arnoldi’s Method for Computing
Eigenelements of Large Unsymmetric Matrices, Linear Algebra and its
Applications, Vol 34, 1980, pp. 269–295.
[8] Rosenberg, I.G., and F. Stenger, A lower bound on the angles of triangles
constructed by bisecting the longest side, Math. Comp. 29 (1975), pp 390–395.
[9] Strang, Gilbert, Introduction to Applied Mathematics,
Wellesley-Cambridge Press, Cambridge, MA, 1986.
[10] Strang, Gilbert, and Fix, George, An Analysis of the Finite Element
Method, Prentice-Hall Englewoood Cliffs, N.J., USA, 1973.
3-34
4
Function Reference
PDE Algorithms (p. 4-1)
Solve various PDE problems
User-Interface Algorithms (p. 4-2)
Draw shapes and open the Partial
Differential Equation Toolbox GUI
Geometry Algorithms (p. 4-2)
Specify geometry of PDE problems
Plots (p. 4-3)
Display PDE solutions
Utility Algorithms (p. 4-3)
Compute intermediate results
User-Defined Algorithms (p. 4-4)
Specify boundary conditions and
geometry of PDE problems
PDE Algorithms
adaptmesh
Adaptive mesh generation and PDE
solution
assema
Assemble area integral contributions
assemb
Assemble boundary condition
contributions
assempde
Assemble stiffness matrix and right
side of PDE problem
hyperbolic
Solve hyperbolic PDE problem
parabolic
Solve parabolic PDE problem
pdeeig
Solve eigenvalue PDE problem
4
Function Reference
pdenonlin
Solve nonlinear PDE problem
poisolv
Fast solution of Poisson’s equation
on rectangular grid
User-Interface Algorithms
pdecirc
Draw circle
pdeellip
Draw ellipse
pdemdlcv
Convert Partial Differential
Equation Toolbox 1.0 model M-files
to 1.0.2 format
pdepoly
Draw polygon
pderect
Draw rectangle
pdetool
Open GUI
Geometry Algorithms
4-2
csgchk
Check validity of Geometry
Description matrix
csgdel
Delete borders between minimal
regions
decsg
Decompose Constructive Solid
Geometry into minimal regions
initmesh
Create initial triangular mesh
jigglemesh
Jiggle internal points of triangular
mesh
pdearcl
Interpolation between parametric
representation and arc length
Plots
poimesh
Make regular mesh on rectangular
geometry
refinemesh
Refine triangular mesh
wbound
Write boundary condition
specification file
wgeom
Write geometry specification
function
pdecont
Shorthand command for contour plot
pdegplot
Plot PDE geometry
pdemesh
Plot PDE triangular mesh
pdeplot
Generic plot function
pdesurf
Shorthand command for surface plot
Plots
Utility Algorithms
dst, idst
Discrete sine transform
pdeadgsc
Select triangles using relative
tolerance criterion
pdeadworst
Select triangles relative to worst
value
pdecgrad
Flux of PDE solution
pdeent
Indices of triangles neighboring
given set of triangles
pdegrad
Gradient of PDE solution
4-3
4
Function Reference
pdeintrp
Interpolate from node data to
triangle midpoint data
pdejmps
Error estimates for adaptation
pdeprtni
Interpolate from triangle midpoint
data to node data
pdesdp, pdesde, pdesdt
Indices of points/edges/triangles in
set of subdomains
pdesmech
Calculate structural mechanics
tensor functions
pdetrg
Triangle geometry data
pdetriq
Triangle quality measure
poiasma
Boundary point matrix contributions
for fast solvers of Poisson’s equation
poicalc
Fast solver for Poisson’s equation on
rectangular grid
poiindex
Indices of points in canonical
ordering for rectangular grid
sptarn
Solve generalized sparse eigenvalue
problem
tri2grid
Interpolate from PDE triangular
mesh to rectangular grid
User-Defined Algorithms
4-4
pdebound
Boundary M-file
pdegeom
Geometry M-file
5
Functions — Alphabetical
List
adaptmesh
Purpose
Adaptive mesh generation and PDE solution
Syntax
[u,p,e,t]=adaptmesh(g,b,c,a,f)
[u,p,e,t]=adaptmesh(g,b,c,a,f,'PropertyName',PropertyValue,)
Description
[u,p,e,t]=adaptmesh(g,b,c,a,f)
[u,p,e,t]=adaptmesh(g,b,c,a,f,'PropertyName',PropertyValue,)
performs adaptive mesh generation and PDE solution. Optional
arguments are given as property name/property value pairs.
The function produces a solution u to the elliptic scalar PDE problem
-∇ · (c∇u) + au = f on !
or the elliptic system PDE problem
−∇ ⋅ (c ⊗ ∇u) + au = f
on
Ω
with the problem geometry and boundary conditions given by g and b.
The mesh is described by the p, e, and t.
The solution u is represented as the solution vector u. For details on the
representation of the solution vector, see assempde.
The algorithm works by solving a sequence of PDE problems using
refined triangular meshes. The first triangular mesh generation is
obtained either as an optional argument to adaptmesh or by a call to
initmesh without options. The following generations of triangular
meshes are obtained by solving the PDE problem, computing an error
estimate, selecting a set of triangles based on the error estimate, and
then finally refining these triangles. The solution to the PDE problem
is then recomputed. The loop continues until no triangles are selected
by the triangle selection method, or until the maximum number
of triangles is attained, or until the maximum number of triangle
generations has been generated.
g describes the decomposed geometry of the PDE problem. g can either
be a Decomposed Geometry matrix or the name of a Geometry M-file.
5-2
adaptmesh
The formats of the Decomposed Geometry matrix and Geometry M-file
are described in the entries on decsg and pdegeom, respectively.
b describes the boundary conditions of the PDE problem. b can be either
a Boundary Condition matrix or the name of a Boundary M-file. The
formats of the Boundary Condition matrix and Boundary M-file are
described in the entries on assemb and pdebound, respectively.
The adapted triangular mesh of the PDE problem is given by the mesh
data p, e, and t. For details on the mesh data representation, see
initmesh.
The coefficients c, a, and f of the PDE problem can be given in a wide
variety of ways. In the context of adaptmesh the coefficients can depend
on u if the nonlinear solver is enabled using the property nonlin. The
coefficients cannot depend on t, the time. For a complete listing of all
options, see assempde.
The following table lists the property name/property value pairs, their
default values, and descriptions of the properties.
Property
Property
Default
Description
Maxt
positive integer
inf
Maximum number of new
triangles
Ngen
positive integer
10
Maximum number of
triangle generations
Mesh
p1, e1, t1
initmesh
Initial mesh
Tripick
MATLAB function
pdeadworst
Triangle selection method
Par
numeric
0.5
Function parameter
Rmethod
longest|regular
longest
Triangle refinement method
Nonlin
on|off
off
Use nonlinear solver
Toln
numeric
1e-4
Nonlinear tolerance
Init
u0
0
Nonlinear initial value
5-3
adaptmesh
Property
Property
Default
Description
Jac
fixed|lumped|full
fixed
Nonlinear Jacobian
calculation
norm
numeric|inf|energy
inf
Nonlinear residual norm
Par is passed to the Tripick function, which is described later.
Normally it is used as tolerance of how well the solution fits the
equation.
No more than Ngen successive refinements are attempted. Refinement
is also stopped when the number of triangles in the mesh exceeds Maxt.
p1, e1, and t1 are the input mesh data. This triangular mesh is used as
starting mesh for the adaptive algorithm. For details on the mesh data
representation, see initmesh. If no initial mesh is provided, the result
of a call to initmesh with no options is used as the initial mesh.
The triangle selection method, Tripick, is a user-definable triangle
selection method. Given the error estimate computed by the function
pdejmps, the triangle selection method selects the triangles to be
refined in the next triangle generation. The function is called using
the arguments p, t, cc, aa, ff, u, errf, and par. p and t represent
the current generation of triangles, cc, aa, and ff are the current
coefficients for the PDE problem, expanded to triangle midpoints, u is
the current solution, errf is the computed error estimate, and par, the
function parameter, given to adaptmesh as optional argument. The
matrices cc, aa, ff, and errf all have Nt columns, where Nt is the
current number of triangles. The number of rows in cc, aa, and ff are
exactly the same as the input arguments c, a, and f. errf has one
row for each equation in the system. There are two standard triangle
selection methods—pdeadworst and pdeadgsc. pdeadworst selects
triangles where errf exceeds a fraction (default: 0.5) of the worst value,
and pdeadgsc selects triangles using a relative tolerance criterion.
The refinement method is either longest or regular. For details on the
refinement method, see refinemesh.
5-4
adaptmesh
The adaptive algorithm can also solve nonlinear PDE problems. For
nonlinear PDE problems, the Nonlin parameter must be set to on.
The nonlinear tolerance Toln, nonlinear initial value u0, nonlinear
Jacobian calculation Jac, and nonlinear residual norm Norm are passed
to the nonlinear solver pdenonlin. For details on the nonlinear solver,
see pdenonlin.
Examples
Solve the Laplace equation over a circle sector, with Dirichlet boundary
conditions u = cos(2/3atan2(y,x)) along the arc, and u = 0 along the
straight lines, and compare to the exact solution. We refine the
triangles using the worst error criterion until we obtain a mesh with at
least 500 triangles:
[u,p,e,t]=adaptmesh('cirsg','cirsb',1,0,0,'maxt',500,...
'tripick','pdeadworst','ngen',inf);
x=p(1,:); y=p(2,:);
exact=((x.^2+y.^2).^(1/3).*cos(2/3*atan2(y,x)))';
max(abs(u-exact))
ans =
0.0028
size(t,2)
ans =
629
pdemesh(p,e,t)
5-5
adaptmesh
The maximum absolute error is 0.0028, with 629 triangles.
We test how many refinements we have to use with a uniform triangle
net:
[p,e,t]=initmesh('cirsg');
[p,e,t]=refinemesh('cirsg',p,e,t);
u=assempde('cirsb',p,e,t,1,0,0);
x=p(1,:); y=p(2,:);
exact=((x.^2+y.^2).^(1/3).*cos(2/3*atan2(y,x)))';
max(abs(u-exact))
ans =
0.0121
size(t,2)
5-6
adaptmesh
ans =
788
[p,e,t]=refinemesh('cirsg',p,e,t);
u=assempde('cirsb',p,e,t,1,0,0);
x=p(1,:); y=p(2,:);
exact=((x.^2+y.^2).^(1/3).*cos(2/3*atan2(y,x)))';
max(abs(u-exact))
ans =
0.0078
size(t,2)
ans =
3152
pdemesh(p,e,t)
5-7
adaptmesh
Uniform refinement with 3152 triangles produces an error of 0.0078.
This error is over three times as large as that produced by the adaptive
method (0.0028) with many fewer triangles (629). For a problem with
regular solution, we expect a O(h2) error, but this solution is singular
since u ≈ r1 / 3 at the origin.
Diagnostics
Upon termination, one of the following messages is displayed:
• Adaption completed (This means that the Tripick function
returned zero triangles to refine.)
• Maximum number of triangles obtained
• Maximum number of refinement passes obtained
See Also
5-8
assempde
Partial Differential Equation Toolbox
initmesh
Partial Differential Equation Toolbox
pdeadgsc
Partial Differential Equation Toolbox
pdeadworst
Partial Differential Equation Toolbox
pdejmps
Partial Differential Equation Toolbox
refinemesh
Partial Differential Equation Toolbox
assema
Purpose
Assemble area integral contributions
Syntax
[K,M,F]=assema(p,t,c,a,f)
[K,M,F]=assema(p,t,c,a,f,u0)
[K,M,F]=assema(p,t,c,a,f,u0,time)
[K,M,F]=assema(p,t,c,a,f,u0,time,sdl)
[K,M,F]=assema(p,t,c,a,f,time)
[K,M,F]=assema(p,t,c,a,f,time,sdl)
Description
[K,M,F]=assema(p,t,c,a,f) assembles the stiffness matrix K, the
mass matrix M, and the right-hand side vector F.
The input parameters p, t, c, a, f, u0, time, and sdl have the same
meaning as in assempde.
See Also
assempde
Partial Differential Equation Toolbox
5-9
assemb
Purpose
Assemble boundary condition contributions
Syntax
[Q,G,H,R]=assemb(b,p,e)
[Q,G,H,R]=assemb(b,p,e,u0)
[Q,G,H,R]=assemb(b,p,e,u0,time)
[Q,G,H,R]=assemb(b,p,e,u0,time,sdl)
[Q,G,H,R]=assemb(b,p,e,time)
[Q,G,H,R]=assemb(b,p,e,time,sdl)
Description
[Q,G,H,R]=assemb(b,p,e) assembles the matrices Q and H, and the
vectors G and R. Q should be added to the system matrix and contains
contributions from mixed boundary conditions. G should be added to
the right side and contains contributions from generalized Neumann
and mixed boundary conditions. The equation H*u=R represents the
Dirichlet type boundary conditions.
The input parameters p, e, u0, time, and sdl have the same meaning
as in assempde.
b describes the boundary conditions of the PDE problem. b can be
either a Boundary Condition matrix or the name of a Boundary M-file.
The format of the Boundary Condition matrix is described later.
Partial Differential Equation Toolbox software treats the following
boundary condition types:
• On a generalized Neumann boundary segment, q and g are related to
the normal derivative value by:
• On a Dirichlet boundary segment, hu = r.
The software can also handle systems of partial differential equations
over the domain !. Let the number of variables in the system be N. The
general boundary condition is hu = r .
5-10
assemb
The notation
(i,1)-component
N

indicates that the N by 1 matrix with
∂
∂
∂
∂ 
∑  cos(% )ci, j,1,1 ∂x + cos(% )ci, j,1,2 ∂y + sin(% )ci, j,2,1 ∂x + sin(% )ci, j,2,2 ∂y  u
j =1
where 5 is the angle of the normal vector of the boundary, pointing in
the direction out from !, the domain.
The Boundary Condition matrix is created internally in pdetool
(actually a function called by pdetool) and then used from the function
assemb for assembling the contributions from the boundary to the
matrices Q, G, H, and R. The Boundary Condition matrix can also be saved
onto a file as a boundary M-file for later use with the wbound function.
For each column in the Decomposed Geometry matrix there must be a
corresponding column in the Boundary Condition matrix. The format of
each column is according to the following list:
• Row one contains the dimension N of the system.
• Row two contains the number M of Dirichlet boundary conditions.
• Row three to 3 + N2 - 1 contain the lengths for the strings representing
. The lengths are stored in column-wise order with respect to .
• Row 3 + N2 to 3 + N2 +N- 1 contain the lengths for the strings
representing g .
• Row 3 + N2 + N to 3 + N2 + N + MN - 1 contain the lengths for the
strings representing h. The lengths are stored in columnwise order
with respect to h .
• Row 3 + N2 + N + NM to 3 + N2 + N + MN + M - 1 contain the lengths
for the strings representing r .
5-11
assemb
The following rows contain text expressions representing the actual
boundary condition functions. The text strings have the lengths
according to above. The MATLAB text expressions are stored in
columnwise order with respect to matrices h and . There are no
separation characters between the strings. You can insert MATLAB
expressions containing the following variables:
• The 2-D coordinates x and y.
• A boundary segment parameter s, proportional to arc length. s is 0
at the start of the boundary segment and increases to 1 along the
boundary segment in the direction indicated by the arrow.
• The outward normal vector components nx and ny. If you need the
tangential vector, it can be expressed using nx and ny since tx = -ny
and ty = nx.
• The solution u (only if the input argument u has been specified).
• The time t (only if the input argument time has been specified).
It is not possible to explicitly refer to the time derivative of the solution
in the boundary conditions.
Example 1
The following examples describe the format of the boundary condition
matrix for one column of the Decomposed Geometry matrix. For a
boundary in a scalar PDE (N = 1) with Neumann boundary condition
(M = 0)
the boundary condition would be represented by the column vector
[1 0 1 5 '0' '-x.^2']'
No lengths are stored for h or r.
Also for a scalar PDE, the Dirichlet boundary condition
5-12
assemb
u = x2-y2
is stored in the column vector
[1 1 1 1 1 9 '0' '0' '1' 'x.^2-y.^2']'
For a system (N = 2) with mixed boundary conditions (M = 1):
the column appears similar to the following example:
2
1
lq11
lq21
lq12
lq22
lg1
lg2
lh11
lh12
lr1
q11 ...
q21 ...
q12 ...
q22 ...
g1 ...
g2 ...
h11 ...
h12 ...
r1 ...
Where lq11, lq21, . . . denote lengths of the MATLAB text expressions,
and q11, q21, . . . denote the actual expressions.
5-13
assemb
You can easily create your own examples by trying out pdetool. Enter
boundary conditions by double-clicking on boundaries in boundary
mode, and then export the Boundary Condition matrix to the MATLAB
workspace by selecting the Export Decomposed Geometry,
Boundary Cond’s option from the Boundary menu.
Example 2
The following example shows you how to find the boundary condition
matrices for the Dirichlet boundary condition u = x2 − y2 on the
boundary of a circular disk.
1 Create the following function in your working folder:
function [x,y]=circ_geom(bs,s)
%CIRC_GEOM Creates a geometry file for a unit circle.
% Number of boundary segments
nbs=4;
if nargin==0 % Number of boundary segments
x=nbs;
elseif nargin==1 % Create 4 boundary segments
dl=[0
pi/2 pi
3*pi/2
pi/2 pi
3*pi/2 2*pi
1
1
1
1
0
0
0
0];
x=dl(:,bs);
else % Coordinates of edge segment points
z=exp(i*s);
x=real(z);
y=imag(z);
end
2 Create a second function in your working folder that finds the
boundary condition matrices, Q, G, H, and R:
function assemb_example
5-14
assemb
% Use ASSEMB to find the boundary condition matrices.
% Describe the geometry using four boundary segments
figure(1)
pdegplot('circ_geom')
axis equal
% Initialize the mesh
[p,e,t]=initmesh('circ_geom','Hmax',0.4);
figure(2)
% Plot the mesh
pdemesh(p,e,t)
axis equal
% Define the boundary condition vector, b,
% for the boundary condition u=x^2-y^2.
% For each boundary segment, the boundary
% condition vector is
b=[1 1 1 1 1 9 '0' '0' '1' 'x.^2-y.^2']';
% Create a boundary condition matrix that
% represents all of the boundary segments.
b = repmat(b,1,4);
% Use ASSEMB to find the boundary condition
% matrices. Since there are only Dirichlet
% boundary conditions, Q and G are empty.
[Q,G,H,R]=assemb(b,p,e)
3 Run the function assemb_example.m.
The function returns the four boundary condition matrices.
Q =
All zero sparse: 41-by-41
5-15
assemb
G =
All zero sparse: 41-by-1
H =
(1,1)
(2,2)
(3,3)
(4,4)
(5,5)
(6,6)
(7,7)
(8,8)
(9,9)
(10,10)
(11,11)
(12,12)
(13,13)
(14,14)
(15,15)
(16,16)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
R =
(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
(6,1)
(7,1)
(8,1)
(9,1)
(10,1)
(11,1)
5-16
1.0000
-1.0000
1.0000
-1.0000
0.0000
-0.0000
0.0000
-0.0000
0.7071
-0.7071
-0.7071
assemb
(12,1)
(13,1)
(14,1)
(15,1)
(16,1)
0.7071
0.7071
-0.7071
-0.7071
0.7071
Q and G are all zero sparse matrices because the problem has only
Dirichlet boundary conditions and neither generalized Neumann nor
mixed boundary conditions apply.
See Also
assempde
Partial Differential Equation Toolbox
pdebound
Partial Differential Equation Toolbox
5-17
assempde
Purpose
Assemble stiffness matrix and right side of PDE problem
Syntax
u=assempde(b,p,e,t,c,a,f)
u=assempde(b,p,e,t,c,a,f,u0)
u=assempde(b,p,e,t,c,a,f,u0,time)
u=assempde(b,p,e,t,c,a,f,time)
[K,F]=assempde(b,p,e,t,c,a,f)
[K,F]=assempde(b,p,e,t,c,a,f,u0)
[K,F]=assempde(b,p,e,t,c,a,f,u0,time)
[K,F]=assempde(b,p,e,t,c,a,f,u0,time,sdl)
[K,F]=assempde(b,p,e,t,c,a,f,time)
[K,F]=assempde(b,p,e,t,c,a,f,time,sdl)
[K,F,B,ud]=assempde(b,p,e,t,c,a,f)
[K,F,B,ud]=assempde(b,p,e,t,c,a,f,u0)
[K,F,B,ud]=assempde(b,p,e,t,c,a,f,u0,time)
[K,F,B,ud]=assempde(b,p,e,t,c,a,f,time)
[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f)
[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f,u0)
[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f,u0,time)
[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f,u0,time,sdl)
[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f,time)
[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f,time,sdl)
u=assempde(K,M,F,Q,G,H,R)
[K1,F1]=assempde(K,M,F,Q,G,H,R)
[K1,F1,B,ud]=assempde(K,M,F,Q,G,H,R)
Description
assempde is the basic Partial Differential Equation Toolbox function.
It assembles a PDE problem by using the FEM formulation described
in Chapter 3, “Finite Element Method”. The command assempde
assembles the scalar PDE problem
-∇ · (c∇u) + au = f on !
or the system PDE problem
−∇ ⋅ (c ⊗ ∇u) + au = f
5-18
on
Ω
assempde
The command can optionally produce a solution to the PDE problem.
For the scalar case the solution vector u is represented as a column
vector of solution values at the corresponding node points from p. For
a system of dimension N with np node points, the first np values of u
describe the first component of u, the following np values of u describe
the second component of u, and so on. Thus, the components of u are
placed in the vector u as N blocks of node point values.
u=assempde(b,p,e,t,c,a,f) assembles and solves the PDE problem
by eliminating the Dirichlet boundary conditions from the system of
linear equations.
[K,F]=assempde(b,p,e,t,c,a,f) assembles the PDE problem by
approximating the Dirichlet boundary condition with stiff springs (see
“The Elliptic System” on page 3-10 for details). K and F are the stiffness
matrix and right-hand side, respectively. The solution to the FEM
formulation of the PDE problem is u=K\F.
[K,F,B,ud]=assempde(b,p,e,t,c,a,f) assembles the PDE problem
by eliminating the Dirichlet boundary conditions from the system of
linear equations. u1=K\F returns the solution on the non-Dirichlet
points. The solution to the full PDE problem can be obtained as the
MATLAB expression u=B*u1+ud.
[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f) gives a split
representation of the PDE problem.
u=assempde(K,M,F,Q,G,H,R) collapses the split representation into
the single matrix/vector form, and then solves the PDE problem by
eliminating the Dirichlet boundary conditions from the system of linear
equations.
[K1,F1]=assempde(K,M,F,Q,G,H,R) collapses the split representation
into the single matrix/vector form, by fixing the Dirichlet boundary
condition with large spring constants.
[K1,F1,B,ud]=assempde(K,M,F,Q,G,H,R) collapses the split
representation into the single matrix/vector form by eliminating the
Dirichlet boundary conditions from the system of linear equations.
5-19
assempde
b describes the boundary conditions of the PDE problem. b can be either
a Boundary Condition matrix or the name of a Boundary M-file. The
formats of the Boundary Condition matrix and Boundary M-file are
described in the entries on assemb and pdebound, respectively.
The geometry of the PDE problem is given by the mesh data p, e, and t.
For details on the mesh data representation, see initmesh.
The optional list of subdomain labels, sdl, restricts the assembly
process to the subdomains denoted by the labels in the list. The optional
input arguments u0 and time are used for the nonlinear solver and time
stepping algorithms, respectively. The tentative input solution vector
u0 has the same format as u.
PDE Coefficients for Scalar Case
The coefficients c, a, and f in the scalar PDE problem can be represented
in the MATLAB variables c, a, and f in the following ways:
• A constant.
• A row vector of values at the triangle centers of mass.
• A MATLAB text expression for computing coefficient values at
the triangle centers of mass. The expression is evaluated in a
context where the variables x, y, sd, u, ux, uy, and t are row vectors
representing values at the triangle centers of mass (t is a scalar). The
row vectors contain x- and y-coordinates, subdomain label, solution, x
and y derivatives of the solution, and time. u, ux, and uy can only
be used if u0 has been passed to assempde. The same applies to the
scalar t, which is passed to assempde as time.
• A sequence of MATLAB text expressions separated by exclamation
marks !. The syntax of each of the text expressions must be according
to the preceding item. The number of expressions in the sequence
must equal the number of subdomain labels in the triangle list t.
(This number can be checked by typing max(t(4,:)).)
• The name of a user-defined MATLAB function that accepts the
arguments (p,t,u,t0). u and time are empty matrices if the
corresponding parameter is not passed to assempde. p and t are
5-20
assempde
mesh data, u is the u0 input argument, and t0 is the time input
to assempde. If time is NaN and the function depends on time, the
function must return a matrix of correct size, containing NaNs in all
positions.
We refer to the preceding matrices as coefficient matrix, and the
user-defined MATLAB function as coefficient M-file.
If c contains two rows with data according to any of the preceding items,
they are the c1,1, and c2,2, elements of the 2-by-2 diagonal matrix
If c contains four rows, they are the c1,1, c2,1, c1,2, and c2,2 elements of a
2-by-2 matrix.
PDE Coefficients for System Case
Let N be the dimension of the PDE system. Now c is an
N-by-N-by-2-by-2 tensor, a an N-by-N-matrix, and f a column vector of
length N. The elements cijkl, aij, dij, and fi of c , a , d , and f are stored
row-wise in the MATLAB matrices c, a, d, and f. Each row in these
matrices is similar in syntax to the scalar case. There is one difference,
however: At the point of evaluation of MATLAB text expressions, the
variables u, ux, and uy contain matrices with N rows, one row for each
component. The cases of identity, diagonal, and symmetric matrices are
handled as special cases. For the tensor cijkl this applies both to the
indices i and j, and to the indices k and l.
The number of rows in f determines the dimension N of the system.
Row i in f represents the component fi in f.
The number of rows na in a is related to the components aij of a
according to the following table. For the symmetric case assume that j $
i. All elements aij that cannot be formed are assumed to be zero.
5-21
assempde
na
Symmetric
aij
Row in a
1
No
aii
1
N
No
aii
i
N(N + 1)/2
Yes
aij
j(j - 1)/2 + i
N2
No
aij
N(j - 1) + i
The coding of c in c is determined by the dimension N and the number
of rows nc in c. The number of rows nc in c is matched to the function of
N in the first column in the following table—sequentially from the first
line to the last line. The first match determines the type of coding of c .
This actually means that for some small values, 2 ) N ) 4, the coding is
only determined by the order in which the tests are performed. For the
symmetric case assume that j $ i, and l $ k. All elements cijkl that can
not be formed are assumed to be zero.
nc
Symmetric
cijkl
Row in c
1
No
ciikk
1
2
No
ciikk
k
3
Yes
ciikl
l+k-1
4
No
ciikl
2l + k - 2
N
No
ciikk
i
2N
No
ciikk
2i + k - 2
3N
Yes
ciikl
3i + l + k - 4
4N
No
ciikl
4i + 2l + k - 6
2N(2N + 1)/2
Yes
ciikl
2i2 + i+ l + k - 4
cijkl, i<j
2j2 - 3j + 4i + 2l + k - 5
cijkl
4N(j - 1)+ 4i + 2l + k - 6
4N2
5-22
No
assempde
Notice
You can use MATLAB functions in expressions for boundary conditions
and PDE coefficients. For example, the c coefficient can be a string
containing the MATLAB function call fun(x,y) that interpolates
measured data to the coordinates x and y. The function must return
a matrix of exactly the same size as x or y, and should contain the
interpolated data in the corresponding point.
Examples
Example 1
Solve the equation
on the geometry defined by the L-shaped
membrane. Use Dirichlet boundary conditions u = 0 on
. Finally
plot the solution.
[p,e,t]=initmesh('lshapeg','Hmax',0.2);
[p,e,t]=refinemesh('lshapeg',p,e,t);
u=assempde('lshapeb',p,e,t,1,0,1);
pdesurf(p,t,u)
Example 2
Consider Poisson’s equation on the unit circle with unit point source
at the origin. The exact solution
is known for this problem. We define the function
f=circlef(p,t,u,time) for computing the right-hand side.
circlef returns zero for all triangles except for the one located at the
origin; for that triangle it returns 1/a, where a is the triangle area.
pdedemo7 performs a full demonstration of the problem with adaptive
solution.
5-23
assempde
1
0.8
0.6
0.4
0.2
0
1
1
0.5
0.5
0
0
−0.5
−0.5
−1
−1
Example 3
We study how the matrices a (and also d ) are stored in the MATLAB
matrix a for system case N = 3.
na = 1:
a(1)
0
0
0
a(1)
0
0
na = 3:
a(1)
0
0
0
0
a(2)
0
a(1)
0
0
a(3)
The bullet symbol (•) means that the matrix is symmetric.
na = 6:
a(1)
a(2)
a(4)
•
a(3)
•
•
na = 9:
a(1)
a(4)
a(7)
a(5)
a(2)
a(5)
a(8)
a(6)
a(3)
a(6)
a(9)
We study how the tensor c is stored in the MATLAB matrix c for the
system case. N=3
5-24
assempde
nc = 1:
nc = 2:
c(1)
0
0
0
0
0
0
c(1)
0
0
0
0
0
0
c(1)
0
0
0
0
0
0
c(1)
0
0
0
0
0
0
c(1)
0
0
0
0
0
0
c(1)
c(1)
0
0
0
0
0
0
c(2)
0
0
0
0
0
0
c(1)
0
0
0
0
0
0
c(2)
0
0
0
0
0
0
c(1)
0
0
0
0
0
0
c(2)
The bullet symbol (•) means that the matrix is symmetric.
nc = 3:
c(1)
c(2)
0
0
0
0
•
c(3)
0
0
0
0
0
0
c(1)
c(2)
0
0
0
0
•
c(3)
0
0
0
0
0
0
c(1)
c(2)
0
0
0
0
•
c(3)
5-25
assempde
nc = 4:
c(1)
c(3)
0
0
0
0
c(2)
c(4)
0
0
0
0
0
0
c(1)
c(3)
0
0
0
0
c(2)
c(4)
0
0
0
0
0
0
c(1)
c(3)
0
0
0
0
c(2)
c(4)
The case nc = 3 takes precedence over the case nc = N, and the form nc
= N thus cannot be used.
nc = 6:
nc = 9:
5-26
c(1)
0
0
0
0
0
0
c(2)
0
0
0
0
0
0
c(3)
0
0
0
0
0
0
c(4)
0
0
0
0
0
0
c(5)
0
0
0
0
0
0
c(6)
c(1)
c(2)
0
0
0
0
•
c(3)
0
0
0
0
0
0
c(4)
c(5)
0
0
0
0
•
c(6)
0
0
0
0
0
0
c(7)
c(8)
0
0
0
0
•
c(9)
assempde
nc = 12:
nc = 21:
nc = 36:
c(1)
c(3)
0
0
0
0
c(2)
c(4)
0
0
0
0
0
0
c(5)
c(7)
0
0
0
0
c(6)
c(8)
0
0
0
0
0
0
c(9)
c(11)
0
0
0
0
c(10)
c(12)
c(1)
c(2)
c(4)
c(6)
c(11)
c(13)
•
c(3)
c(5)
c(7)
c(12)
c(14)
•
•
c(8)
c(9)
c(15)
c(17)
•
•
•
c(10)
c(16)
c(18)
•
•
•
•
c(19)
c(20)
•
•
•
•
•
c(21)
c(1)
c(3)
c(13)
c(15)
c(25)
c(27)
c(2)
c(4)
c(14)
c(16)
c(26)
c(28)
c(5)
c(7)
c(17)
c(19)
c(29)
c(31)
c(6)
c(8)
c(18)
c(20)
c(30)
c(32)
c(9)
c(11)
c(21)
c(23)
c(33)
c(35)
c(10)
c(12)
c(22)
c(24)
c(34)
c(36)
Example 4
For structural mechanics problems, consider the following equations
for plane stress
5-27
assempde
∂ 
∂u  ∂ 
∂v 
∂u  ∂ 
∂v  ∂ 
 −  c1212  −  c1221  = Fx
 c1111
 −  c1122
∂x 
∂x  ∂y 
∂x 
∂y  ∂x 
∂y  ∂y 
∂v  ∂ 
∂v 
∂ 
∂u  ∂ 
∂u  ∂ 
−  c2112
 −  c2121
 −  c2211  −  c2222  = Fy
∂x  ∂y 
∂y 
∂x 
∂y  ∂y 
∂x  ∂x 
−
If you assume that c1221 = c2112 and c2121 = c1212 , you can use the
following commands to set up the variables for the c tensors and f vector:
c = 'c1111|0|c1122|0|c1221|0|c1212|c2211|0|c2222';
f = 'Fx|Fy';
See Also
5-28
assema
Partial Differential Equation Toolbox
assemb
Partial Differential Equation Toolbox
initmesh
Partial Differential Equation Toolbox
pdebound
Partial Differential Equation Toolbox
refinemesh
Partial Differential Equation Toolbox
csgchk
Purpose
Check validity of Geometry Description matrix
Syntax
gstat=csgchk(gd,xlim,ylim)
gstat=csgchk(gd)
Description
gstat=csgchk(gd,xlim,ylim) checks if the solid objects in the
Geometry Description matrix gd are valid, given optional real numbers
xlim and ylim as current length of the x- and y-axis, and using a special
format for polygons. For a polygon, the last vertex coordinate can be
equal to the first one, to indicate a closed polygon. If xlim and ylim are
specified and if the first and the last vertices are not equal, the polygon
is considered as closed if these vertices are within a certain “closing
distance.” These optional input arguments are meant to be used only
when calling csgchk from pdetool.
gstat=csgchk(gd) is identical to the preceding call, except for using
the same format of gd that is used by decsg. This call is recommended
when using csgchk as a command-line function.
gstat is a row vector of integers that indicates the validity status of the
corresponding solid objects, i.e., columns, in gd.
For a circle solid, gstat=0 indicates that the circle has a positive radius,
1 indicates a nonpositive radius, and 2 indicates that the circle is not
unique.
For a polygon, gstat=0 indicates that the polygon is closed and does
not intersect itself, i.e., it has a well-defined, unique interior region.
1 indicates an open and non-self-intersecting polygon, 2 indicates
a closed and self-intersecting polygon, and 3 indicates an open and
self-intersecting polygon.
For a rectangle solid, gstat is identical to that of a polygon. This is so
because a rectangle is considered as a polygon by csgchk.
For an ellipse solid, gstat=0 indicates that the ellipse has positive
semiaxes, 1 indicates that at least one of the semiaxes is nonpositive,
and 2 indicates that the ellipse is not unique.
5-29
csgchk
If gstat consists of zero entries only, then gd is valid and can be used as
input argument by decsg.
See Also
5-30
decsg
Partial Differential Equation Toolbox
csgdel
Purpose
Delete borders between minimal regions
Syntax
[dl1,bt1]=csgdel(dl,bt,bl)
[dl1,bt1]=csgdel(dl,bt)
Description
[dl1,bt1]=csgdel(dl,bt,bl) deletes the border segments in the
list bl. If the consistency of the Decomposed Geometry matrix is not
preserved by deleting the elements in the list bl, additional border
segments are deleted. Boundary segments cannot be deleted.
For an explanation of the concepts or border segments, boundary
segments, and minimal regions, see decsg.
dl and dl1 are Decomposed Geometry matrices. For a description of the
Decomposed Geometry matrix, see decsg. The format of the Boolean
tables bt and bt1 is also described in the entry on decsg.
[dl1,bt1]=csgdel(dl,bt) deletes all border segments.
See Also
csgchk
Partial Differential Equation Toolbox
decsg
Partial Differential Equation Toolbox
5-31
decsg
Purpose
Decompose Constructive Solid Geometry into minimal regions
Syntax
dl=decsg(gd,sf,ns)
dl=decsg(gd)
[dl,bt]=decsg(gd)
[dl,bt]=decsg(gd,sf,ns)
[dl,bt,dl1,bt1,msb]=decsg(gd)
[dl,bt,dl1,bt1,msb]=decsg(gd,sf,ns)
Description
This function analyzes the Constructive Solid Geometry model (CSG
model) that you draw. It analyzes the CSG model, constructs a set of
disjoint minimal regions, bounded by boundary segments and border
segments, and optionally evaluates a set formula in terms of the objects
in the CSG model. We often refer to the set of minimal regions as the
decomposed geometry. The decomposed geometry makes it possible for
other Partial Differential Equation Toolbox functions to “understand”
the geometry you specify. For plotting purposes a second set of minimal
regions with a connected boundary is constructed.
The graphical user interface pdetool uses decsg for many purposes.
Each time a new solid object is drawn or changed, pdetool calls decsg
to be able to draw the solid objects and minimal regions correctly. The
Delaunay triangulation algorithm, initmesh, also uses the output of
decsg to generate an initial mesh.
dl=decsg(gd,sf,ns) decomposes the CSG model gd into the
decomposed geometry dl. The CSG model is represented by the
Geometry Description matrix, and the decomposed geometry is
represented by the Decomposed Geometry matrix. decsg returns the
minimal regions that evaluate to true for the set formula sf. The Name
Space matrix ns is a text matrix that relates the columns in gd to
variable names in sf.
dl=decsg(gd) returns all minimal regions. (The same as letting sf
correspond to the union of all objects in gd.)
[dl,bt]=decsg(gd) and [dl,bt]=decsg(gd,sf,ns) additionally
return a Boolean table that relates the original solid objects to the
5-32
decsg
minimal regions. A column in bt corresponds to the column with the
same index in gd. A row in bt corresponds to a minimal region index.
[dl,bt,dl1,bt1,msb]=decsg(gd) and
[dl,bt,dl1,bt1,msb]=decsg(gd,sf,ns) return a second set of
minimal regions dl1 with a corresponding Boolean table bt1. This
second set of minimal regions all have a connected boundary. These
minimal regions can be plotted by using MATLAB patch objects. The
second set of minimal regions have borders that may not have been
induced by the original solid objects. This occurs when two or more
groups of solid objects have nonintersecting boundaries.
The calling sequences additionally return a sequence msb of drawing
commands for each second minimal region. The first row contains
the number of edge segment that bounds the minimal region. The
additional rows contain the sequence of edge segments from the
Decomposed Geometry matrix that constitutes the bound. If the
index edge segment label is greater than the total number of edge
segments, it indicates that the total number of edge segments should be
subtracted from the contents to get the edge segment label number and
the drawing direction is opposite to the one given by the Decomposed
Geometry matrix.
Geometry Description Matrix
The Geometry Description matrix gd describes the CSG model that you
draw using pdetool. The current Geometry Description matrix can be
made available to the MATLAB workspace by selecting the Export
Geometry Description, Set Formula, Labels option from the Draw
menu in pdetool.
Each column in the Geometry Description matrix corresponds to an
object in the CSG model. Four types of solid objects are supported. The
object type is specified in row 1:
• For the circle solid, row one contains 1, and the second and third
row contain the center x- and y-coordinates, respectively. Row four
contains the radius of the circle.
5-33
decsg
• For a polygon solid, row one contains 2, and the second row contains
the number, n, of line segments in the boundary of the polygon. The
following n rows contain the x-coordinates of the starting points of
the edges, and the following n rows contain the y-coordinates of the
starting points of the edges.
• For a rectangle solid, row one contains 3. The format is otherwise
identical to the polygon format.
• For an ellipse solid, row one contains 4, the second and third row
contains the center x- and y-coordinates, respectively. Rows four
and five contain the semiaxes of the ellipse. The rotational angle of
the ellipse is stored in row six.
Set Formula
sf contains a set formula expressed with the set of variables listed
in ns. The operators ‘+’, ‘*’, and ‘-’ correspond to the set operations
union, intersection, and set difference, respectively. The precedence
of the operators ‘+’ and ‘*’ is the same. ‘-’ has higher precedence. The
precedence can be controlled with parentheses.
Name Space Matrix
The Name Space matrix ns relates the columns in gd to variable
names in sf. Each column in ns contains a sequence of characters,
padded with spaces. Each such character column assigns a name to the
corresponding geometric object in gd. This way we can refer to a specific
object in gd in the set formula sf.
Decomposed Geometry Matrix
The Decomposed Geometry matrix dl contains a representation of the
decomposed geometry in terms of disjointed minimal regions that
have been constructed by the decsg algorithm. Each edge segment
of the minimal regions corresponds to a column in dl. We refer to
edge segments between minimal regions as border segments and outer
boundaries as boundary segments. In each such column rows two and
three contain the starting and ending x-coordinate, and rows four and
five the corresponding y-coordinate. Rows six and seven contain left
and right minimal region labels with respect to the direction induced
5-34
decsg
by the start and end points (counter clockwise direction on circle and
ellipse segments). There are three types of possible edge segments in a
minimal region:
• For circle edge segments row one is 1. Rows eight and nine contain
the coordinates of the center of the circle. Row 10 contains the radius.
• For line edge segments row one is 2.
• For ellipse edge segments row one is 4. Rows eight and nine contain
the coordinates of the center of the ellipse. Rows 10 and 11 contain
the semiaxes of the ellipse, respectively. The rotational angle of the
ellipse is stored in row 12.
Examples
The following command sequence starts pdetool and draws a unit
circle and a unit square.
pdecirc(0,0,1)
pderect([0 1 0 1])
Insert the set formula C1-SQ1. Export the Geometry Description matrix,
set formula, and Name Space matrix to the MATLAB workspace by
selecting the Export Geometry Description option from the Draw
menu. Then type
[dl,bt]=decsg(gd,sf,ns);
dl =
2.0000
2.0000
1.0000
0
0
-1.0000
1.0000
0
0.0000
0
1.0000
-0.0000
0
0
-1.0000
0
0
1.0000
1.0000
1.0000
0
0
0
0
0
0
0
0
0
1.0000
1.0000
0.0000
1.0000
-1.0000
0
1.0000
0
0
0
1.0000
1.0000
0.0000
-1.0000
1.0000
-0.0000
1.0000
0
0
0
1.0000
5-35
decsg
bt =
1
0
There is one minimal region, with five edge segments, three circle edge
segments, and two line edge segments.
Algorithm
The algorithm consists of the following steps:
1 Determine the intersection points between the borders of the model
objects.
2 For each intersection point, sort the incoming edge segments on
angle and curvature.
3 Determine if the induced graph is connected. If not, add some
appropriate edges, and redo algorithm from step 1.
4 Cycle through edge segments of minimal regions.
5 For each original region, determine minimal regions inside it.
6 Organize output and remove the additional edges.
Note The input CSG model is not checked for correctness. It is assumed
that no circles or ellipses are identical or degenerated and that no
lines have zero length. Polygons must not be self-intersecting. Use the
function csgchk to check the CSG model.
Diagnostics
See Also
5-36
NaN is returned if the set formula sf cannot be evaluated.
csgchk
Partial Differential Equation Toolbox
csgdel
Partial Differential Equation Toolbox
pdebound
Partial Differential Equation Toolbox
decsg
pdecirc
Partial Differential Equation Toolbox
pdeellip
Partial Differential Equation Toolbox
pdegeom
Partial Differential Equation Toolbox
pdepoly
Partial Differential Equation Toolbox
pderect
Partial Differential Equation Toolbox
pdetool
Partial Differential Equation Toolbox
wbound
Partial Differential Equation Toolbox
wgeom
Partial Differential Equation Toolbox
5-37
dst, idst
Purpose
Discrete sine transform
Syntax
y=dst(x)
y=dst(x,n)
x=idst(y)
x=idst(y,n)
Description
The dst function implements the following equation:
y(k) =
N
kn
∑ x(n) sin(π N + 1), k = 1,..., N
n=1
y=dst(x) computes the discrete sine transform of the columns of x.
For best performance speed, the number of rows in x should be 2m - 1,
for some integer m.
y=dst(x,n) pads or truncates the vector x to length n before
transforming.
If x is a matrix, the dst operation is applied to each column.
The idst function implements the following equation:
y(k) =
2 N
kn
∑ x(n) sin(π N + 1), k = 1,..., N
N + 1 n=1
x=idst(y) calculates the inverse discrete sine transform of the columns
of y. For best performance speed, the number of rows in y should be
2m - 1, for some integer m.
x=idst(y,n) pads or truncates the vector y to length n before
transforming.
If y is a matrix, the idst operation is applied to each column.
For more information about this algorithm, see “Fast Solution of
Poisson’s Equation” on page 3-32.
5-38
dst, idst
See Also
poiasma
Partial Differential Equation Toolbox
poiindex
Partial Differential Equation Toolbox
poisolv
Partial Differential Equation Toolbox
5-39
hyperbolic
Purpose
Solve hyperbolic PDE problem
Syntax
u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d)
u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d,rtol)
u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d,rtol,atol)
u1=hyperbolic(u0,ut0,tlist,K,F,B,ud,M)
u1=hyperbolic(u0,ut0,tlist,K,F,B,ud,M,rtol)
u1=hyperbolic(u0,ut0,tlist,K,F,B,ud,M,rtol,atol)
Description
u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d) produces the
solution to the FEM formulation of the scalar PDE problem
or the system PDE problem
on a mesh described by p, e, and t, with boundary conditions given by b,
and with initial value u0 and initial derivative ut0.
In the scalar case, each row in the solution matrix u1 is the solution at
the coordinates given by the corresponding column in p. Each column in
u1 is the solution at the time given by the corresponding item in tlist.
For a system of dimension N with n p node points, the first np rows of
u1 describe the first component of u, the following np rows of u1 describe
the second component of u, and so on. Thus, the components of u are
placed in blocks u as N blocks of node point rows.
b describes the boundary conditions of the PDE problem. b can be either
a Boundary Condition matrix or the name of a Boundary M-file. The
boundary conditions can depend on t, the time. The formats of the
Boundary Condition matrix and Boundary M-file are described in the
entries on assemb and pdebound, respectively.
5-40
hyperbolic
The geometry of the PDE problem is given by the mesh data p, e, and t.
For details on the mesh data representation, see initmesh.
The coefficients c, a, d, and f of the PDE problem can be given in a
variety of ways. The coefficients can depend on t, the time. For a
complete listing of all options, see assempde.
atol and rtol are absolute and relative tolerances that are passed
to the ODE solver.
u1=hyperbolic(u0,ut0,tlist,K,F,B,ud,M) produces the solution
to the ODE problem
with initial values for u being u0 and ut0.
Examples
Solve the wave equation
on a square geometry -1 ) x,y ) 1 (squareg), with Dirichlet boundary
conditions u = 0 for x = ±1, and Neumann boundary conditions
for y = ±1 (squareb3). Choose
and
Compute the solution at times 0, 1/6, 1/3, ... , 29/6, 5.
5-41
hyperbolic
[p,e,t]=initmesh('squareg');
x=p(1,:)';
y=p(2,:)';
u0=atan(cos(pi/2*x));
ut0=3*sin(pi*x).*exp(cos(pi*y));
tlist=linspace(0,5,31);
uu=hyperbolic(u0,ut0,tlist,'squareb3',p,e,t,1,0,0,1);
The file pdedemo6 contains a complete example with animation.
Note In expressions for boundary conditions and PDE coefficients,
the symbol t is used to denote time. The variable t is often used to
store the triangle matrix of the mesh. You can use any variable to store
the triangle matrix, but in the Partial Differential Equation Toolbox
expressions, t always denotes time.
See Also
5-42
assempde
Partial Differential Equation Toolbox
parabolic
Partial Differential Equation Toolbox
initmesh
Purpose
Create initial triangular mesh
Syntax
[p,e,t]=initmesh(g)
[p,e,t]=initmesh(g,'PropertyName',PropertyValue,...)
Description
[p,e,t]=initmesh(g) returns a triangular mesh using the geometry
specification function g. It uses a Delaunay triangulation algorithm.
The mesh size is determined from the shape of the geometry.
g describes the geometry of the PDE problem. g can either be a
Decomposed Geometry matrix or the name of a Geometry M-file. The
formats of the Decomposed Geometry matrix and Geometry M-file are
described in the entries on decsg and pdegeom, respectively.
The outputs p, e, and t are the mesh data.
In the Point matrix p, the first and second rows contain x- and
y-coordinates of the points in the mesh.
In the Edge matrix e, the first and second rows contain indices of
the starting and ending point, the third and fourth rows contain the
starting and ending parameter values, the fifth row contains the edge
segment number, and the sixth and seventh row contain the left- and
right-hand side subdomain numbers.
In the Triangle matrix t, the first three rows contain indices to the
corner points, given in counter clockwise order, and the fourth row
contains the subdomain number.
The following property name/property value pairs are allowed.
Property
Value
Default
Description
Hmax
numeric
estimate
Maximum edge size
Hgrad
numeric
1.3
Mesh growth rate
Box
on|off
off
Preserve bounding box
Init
on|off
off
Edge triangulation
5-43
initmesh
Property
Value
Default
Jiggle
off|mean|min mean
JiggleIter
numeric
10
Description
Call jigglemesh
Maximum iterations
The Hmax property controls the size of the triangles on the mesh.
initmesh creates a mesh where no triangle side exceeds Hmax.
The Hgrad property determines the mesh growth rate away from a
small part of the geometry. The default value is 1.3, i.e., a growth rate
of 30%. Hgrad must be between 1 and 2.
Both the Box and Init property are related to the way the mesh
algorithm works. By turning on Box you can get a good idea of how
the mesh generation algorithm works within the bounding box. By
turning on Init you can see the initial triangulation of the boundaries.
By using the command sequence
[p,e,t]=initmesh(dl,'hmax',inf,'init','on');
[uxy,tn,a2,a3]=tri2grid(p,t,zeros(size(p,2)),x,y);
n=t(4,tn);
you can determine the subdomain number n of the point xy. If the
point is outside the geometry, tn is NaN and the command n=t(4,tn)
results in a failure.
The Jiggle property is used to control whether jiggling of the mesh
should be attempted (see jigglemesh for details). Jiggling can be
done until the minimum or the mean of the quality of the triangles
decreases. JiggleIter can be used to set an upper limit on the number
of iterations.
Algorithm
initmesh implements a Delaunay triangulation algorithm:
1 Place node points on the edges.
2 Enclose geometry in bounding box.
5-44
initmesh
3 Triangulate edges.
4 Check that the triangulation respects boundaries.
5 Insert node points into centers of circumscribed circles of large
triangles.
6 Repeat from step 4 if Hmax not yet achieved.
7 Remove bounding box.
Examples
Make a simple triangular mesh of the L-shaped membrane in pdetool.
Before you do anything in pdetool, set the Maximum edge size to inf
in the Mesh Parameters dialog box. You open the dialog box by selecting
the Parameters option from the Mesh menu. Also select the items
Show Node Labels and Show Triangle Labels in the Mesh menu.
Then create the initial mesh by pressing the button. (This can also be
done by selecting the Initialize Mesh option from the Mesh menu.)
The following figure appears.
5-45
initmesh
1
4
3
0.8
3
0.6
0.4
0.2
0
6
5
2
−0.2
4
−0.4
−0.6
1
−0.8
−1
1
−1.5
2
−1
−0.5
0
0.5
1
1.5
The corresponding mesh data structures can be exported to the main
workspace by selecting the Export Mesh option from the Mesh menu.
p
p =
-1
-1
1
-1
1
1
0
1
0
0
-1
0
e
e =
1
2
0
1
1
1
0
5-46
2
3
0
1
2
1
0
3
4
0
1
3
1
0
4
5
0
1
4
1
0
5
6
0
1
5
1
0
6
1
0
1
6
1
0
initmesh
t
t =
1
2
5
1
Reference
See Also
2
3
5
1
3
4
5
1
1
5
6
1
George, P. L., Automatic Mesh Generation — Application to Finite
Element Methods, Wiley, 1991.
decsg
Partial Differential Equation Toolbox
jigglemesh
Partial Differential Equation Toolbox
pdegeom
Partial Differential Equation Toolbox
refinemesh
Partial Differential Equation Toolbox
5-47
jigglemesh
Purpose
Jiggle internal points of triangular mesh
Syntax
p1=jigglemesh(p,e,t)
p1=jigglemesh(p,e,t,'PropertyName',PropertyValue,...)
Description
p1=jigglemesh(p,e,t) jiggles the triangular mesh by adjusting the
node point positions. The quality of the mesh normally increases.
The following property name/property value pairs are allowed.
Property Value
Default
Description
Opt
off|mean|min
mean
Optimization
method
Iter
numeric
1 or 20 (see the
following bullets)
Maximum
iterations
Each mesh point that is not located on an edge segment is moved
toward the center of mass of the polygon formed by the adjacent
triangles. This process is repeated according to the settings of the Opt
and Iter variables:
• When Opt is set to off this process is repeated Iter times (default: 1).
• When Opt is set to mean the process is repeated until the mean
triangle quality does not significantly increase, or until the bound
Iter is reached (default: 20).
• When Opt is set to min the process is repeated until the minimum
triangle quality does not significantly increase, or until the bound
Iter is reached (default: 20).
Examples
Create a triangular mesh of the L-shaped membrane, first without
jiggling, and then jiggle the mesh.
[p,e,t]=initmesh('lshapeg','jiggle','off');
q=pdetriq(p,t);
pdeplot(p,e,t,'xydata',q,'colorbar','on','xystyle','flat')
5-48
jigglemesh
p1=jigglemesh(p,e,t,'opt','mean','iter',inf);
q=pdetriq(p1,t);
pdeplot(p1,e,t,'xydata',q,'colorbar','on','xystyle','flat')
See Also
initmesh
Partial Differential Equation Toolbox
pdetriq
Partial Differential Equation Toolbox
5-49
parabolic
Purpose
Solve parabolic PDE problem
Syntax
u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d)
u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d,rtol)
u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d,rtol,atol)
u1=parabolic(u0,tlist,K,F,B,ud,M)
u1=parabolic(u0,tlist,K,F,B,ud,M,rtol)
u1=parabolic(u0,tlist,K,F,B,ud,M,rtol,atol)
Description
u1=parabolic(u0,tlist,g,b,p,e,t,c,a,f,d) produces the solution
to the FEM formulation of the scalar PDE problem
or the system PDE problem
on a mesh described by p, e, and t, with boundary conditions given by b,
and with initial value u0.
For the scalar case, each row in the solution matrix u1 is the solution at
the coordinates given by the corresponding column in p. Each column in
u1 is the solution at the time given by the corresponding item in tlist.
For a system of dimension N with np node points, the first np rows of u1
describe the first component of u, the following np rows of u1 describe
the second component of u, and so on. Thus, the components of u are
placed in the vector u as N blocks of node point rows.
b describes the boundary conditions of the PDE problem. b can be either
a Boundary Condition matrix or the name of a Boundary M-file. The
boundary conditions can depend on t, the time. The formats of the
Boundary Condition matrix and Boundary M-file are described in the
entries on assemb and pdebound, respectively.
The geometry of the PDE problem is given by the mesh data p, e, and t.
For details on the mesh data representation, see initmesh.
5-50
parabolic
The coefficients c, a, d, and f of the PDE problem can be given in a
variety of ways. The coefficients can depend on t, the time. For a
complete listing of all options, see initmesh.
atol and rtol are absolute and relative tolerances that are passed
to the ODE solver.
u1=parabolic(u0,tlist,K,F,B,ud,M) produces the solution to the
ODE problem
with initial value for u being u0.
Examples
Solve the heat equation
on a square geometry -1 ) x,y ) 1 (squareg). Choose u(0) = 1 on the disk
x2 +y2 < 0.42, and u(0) = 0 otherwise. Use Dirichlet boundary conditions
u = 0 (squareb1). Compute the solution at times linspace(0,0.1,20).
[p,e,t]=initmesh('squareg');
[p,e,t]=refinemesh('squareg',p,e,t);
u0=zeros(size(p,2),1);
ix=find(sqrt(p(1,:).^2+p(2,:).^2)<0.4);
u0(ix)=ones(size(ix));
tlist=linspace(0,0.1,20);
u1=parabolic(u0,tlist,'squareb1',p,e,t,1,0,1,1);
Note In expressions for boundary conditions and PDE coefficients,
the symbol t is used to denote time. The variable t is often used to
store the triangle matrix of the mesh. You can use any variable to store
the triangle matrix, but in the Partial Differential Equation Toolbox
expressions, t always denotes time.
5-51
parabolic
See Also
5-52
assempde
Partial Differential Equation Toolbox
hyperbolic
Partial Differential Equation Toolbox
pdeadgsc
Purpose
Select triangles using relative tolerance criterion
Syntax
bt=pdeadgsc(p,t,c,a,f,u,errf,tol)
Description
bt=pdeadgsc(p,t,c,a,f,u,errf,tol) returns indices of triangles to
be refined in bt. Used from adaptmesh to select the triangles to be
further refined. The geometry of the PDE problem is given by the mesh
data p and t. For more details, see the entry on initmesh.
c,a, and f are PDE coefficients. For details, see assempde.
u is the current solution, given as a column vector. For details, see
assempde.
errf is the error indicator, as calculated by pdejmps.
tol is a tolerance parameter.
Triangles are selected using the criterion errf>tol*scale, where
scale is calculated as follows:
Let cmax, amax, fmax, and umax be the maximum of c, a, f, and u,
respectively. Let l be the side of the smallest axis-aligned square that
contains the geometry.
Then scale=max(fmax*l^2,amax*umax*l^2,cmax*umax). The scaling
makes the tol parameter independent of the scaling of the equation
and the geometry.
See Also
adaptmesh
Partial Differential Equation Toolbox
pdejmps
Partial Differential Equation Toolbox
5-53
pdeadworst
Purpose
Select triangles relative to worst value
Syntax
bt=pdeadworst(p,t,c,a,f,u,errf,wlevel)
Description
bt=pdeadworst(p,t,c,a,f,u,errf,wlevel) returns indices of
triangles to be refined in bt. Used from adaptmesh to select the
triangles to be further refined.
The geometry of the PDE problem is given by the mesh data p and t.
For details, see initmesh.
c, a, and f are PDE coefficients. For details, see assempde.
u is the current solution, given as a column vector. For details, see
assempde.
errf is the error indicator, as calculated by pdejmps.
wlevel is the error level relative to the worst error. wlevel must be
between 0 and 1.
Triangles are selected using the criterion errf>wlevel*max(errf).
See Also
5-54
adaptmesh
Partial Differential Equation Toolbox
pdejmps
Partial Differential Equation Toolbox
pdearcl
Purpose
Interpolation between parametric representation and arc length
Syntax
pp=pdearcl(p,xy,s,s0,s1)
Description
pp=pdearcl(p,xy,s,s0,s1) returns parameter values for a
parameterized curve corresponding to a given set of arc length values.
p is a monotone row vector of parameter values and xy is a matrix with
two rows giving the corresponding points on the curve.
The first point of the curve is given the arc length value s0 and the last
point the value s1.
On return, pp contains parameter values corresponding to the arc
length values specified in s.
The arc length values s, s0, and s1 can be an affine transformation of
the arc length.
Examples
See Also
See the example cardg on the reference page for pdegeom.
pdegeom
Partial Differential Equation Toolbox
5-55
pdebound
Purpose
Boundary M-file
Syntax
[q,g,h,r]=pdebound(p,e,u,time)
Description
The Boundary M-file specifies the boundary conditions of a PDE
problem.
The most general form of boundary conditions that we can handle is
hu = r
#!
n ⋅ (c ⊗ ∇u) + qu = g + h'µ
#!
By the notation n ⋅ (c ⊗ ∇u) we mean the N-by-1 matrix, where N is the
dimension of the system, with (i,1)-component
where the outward normal vector of the boundary
.
There are M Dirichlet conditions and the h-matrix is M-by-N, M $ 0.
The generalized Neumann condition contains a source h'm where the
Lagrange multipliers µ is computed such that the Dirichlet conditions
become satisfied.
The data that you specify is q, g, h, and r.
For M = 0 we say that we have a generalized Neumann boundary
condition, for M = N a Dirichlet boundary condition, and for 0 < M < N a
mixed boundary condition.
The Boundary M-file [q,g,h,r]=pdebound(p,e,u,time) computes the
values of q, g, h, and r, on the a set of edges e.
The matrices p and e are mesh data. e needs only to be a subset of the
edges in the mesh. Details on the mesh data representation can be
found in the entry on initmesh.
5-56
pdebound
The input arguments u and time are used for the nonlinear solver and
time stepping algorithms, respectively. u and time are empty matrices
if the corresponding parameter is not passed to assemb. If time is NaN
and any of the function q, g, h, and r depends on time, pdebound must
return a matrix of correct size, containing NaNs in all positions, in the
corresponding output argument. It is not possible to explicitly refer to
the time derivative of the solution in the boundary conditions.
The solution u is represented by the solution vector u. Details on the
representation can be found in the entry on assempde.
q and g must contain the value of q and g on the midpoint of each
boundary. Thus we have size(q)=[N^2 ne], where N is the dimension
of the system, and ne the number of edges in e, and size(g)=[N ne].
For the Dirichlet case, the corresponding values must be zeros.
h and r must contain the values of h and r at the first point on each
edge followed by the value at the second point on each edge. Thus we
have size(h)=[N^2 2*ne], where N is the dimension of the system, and
ne the number of edges in e, and size(r)=[N 2*ne]. When M < N, h
and r must be padded with N - M rows of zeros.
The elements of the matrices q and h are stored in column-wise ordering
in the MATLAB matrices q and h.
Examples
For the boundary conditions
the following values should be stored in q, g, h, and r
1
q=[ ... 2 ... ]
2
0
5-57
pdebound
g=[ ... 3 ... ]
4
1
1
h=[ ... 0 ... 0 ... ]
-1
-1
0
0
r=[ ... 2 ... 2 ... ]
0
0
See Also
5-58
initmesh
Partial Differential Equation Toolbox
pdeent
Partial Differential Equation Toolbox
pdegeom
Partial Differential Equation Toolbox
pdesdt
Partial Differential Equation Toolbox
pdecgrad
Purpose
Flux of PDE solution
Syntax
[cgxu,cgyu]=pdecgrad(p,t,c,u)
[cgxu,cgyu]=pdecgrad(p,t,c,u,time)
[cgxu,cgyu]=pdecgrad(p,t,c,u,time,sdl)
Description
[cgxu,cgyu]=pdecgrad(p,t,c,u) returns the flux, c ⊗ ∇u , evaluated
at the center of each triangle.
Row i of cgxu contains
Row i of cgyu contains
There is one column for each triangle in t in both cgxu and cgyu.
The geometry of the PDE problem is given by the mesh data p and t.
Details on the mesh data representation can be found in the entry on
initmesh.
The coefficient c of the PDE problem can be given in a variety of ways.
A complete listing of all options can be found in the entry on assempde.
The format for the solution vector u is described in assempde.
The scalar optional argument time is used for parabolic and hyperbolic
problems, if c depends on t, the time.
The optional argument sdl restricts the computation to the subdomains
in the list sdl.
See Also
assempde
Partial Differential Equation Toolbox
5-59
pdecirc
Purpose
Draw circle
Syntax
pdecirc(xc,yc,radius)
pdecirc(xc,yc,radius,label)
Description
pdecirc(xc,yc,radius) draws a circle with center in (xc,yc) and
radius radius. If the pdetool GUI is not active, it is automatically
started, and the circle is drawn in an empty geometry model.
The optional argument label assigns a name to the circle (otherwise
a default name is chosen).
The state of the Geometry Description matrix inside pdetool is updated
to include the circle. You can export the Geometry Description matrix
from pdetool by using the Export Geometry Description option
from the Draw menu. For a details on the format of the Geometry
Description matrix, see decsg.
Examples
The following command starts pdetool and draws a unit circle.
pdecirc(0,0,1)
See Also
5-60
pdeellip
Partial Differential Equation Toolbox
pdepoly
Partial Differential Equation Toolbox
pderect
Partial Differential Equation Toolbox
pdetool
Partial Differential Equation Toolbox
pdecont
Purpose
Shorthand command for contour plot
Syntax
pdecont(p,t,u)
pdecont(p,t,u,n)
pdecont(p,t,u,v)
h=pdecont(p,t,u)
h=pdecont(p,t,u,n)
h=pdecont(p,t,u,v)
Description
pdecont(p,t,u) draws 10 level curves of the PDE node or triangle
data u. h=pdecont(p,t,u) additionally returns handles to the drawn
axes objects.
If u is a column vector, node data is assumed. If u is a row vector,
triangle data is assumed. Triangle data is converted to node data using
the function pdeprtni.
The geometry of the PDE problem is given by the mesh data p and t.
For details on the mesh data representation, see initmesh.
pdecont(p,t,u,n) plots using n levels.
pdecont(p,t,u,v) plots using the levels specified by v.
This command is just shorthand for the call
pdeplot(p,[],t,'xydata',u,'xystyle','off','contour',...
'on','levels',n,'colorbar','off');
If you want to have more control over your contour plot, use pdeplot
instead of pdecont.
Examples
Plot the contours of the solution to the equation
over the
geometry defined by the L-shaped membrane. Use Dirichlet boundary
conditions u = 0 on
.
[p,e,t]=initmesh('lshapeg');
[p,e,t]=refinemesh('lshapeg',p,e,t);
u=assempde('lshapeb',p,e,t,1,0,1);
pdecont(p,t,u)
5-61
pdecont
See Also
5-62
pdemesh
Partial Differential Equation Toolbox
pdeplot
Partial Differential Equation Toolbox
pdesurf
Partial Differential Equation Toolbox
pdeeig
Purpose
Solve eigenvalue PDE problem
Syntax
[v,l]=pdeeig(b,p,e,t,c,a,d,r)
[v,l]=pdeeig(K,B,M,r)
Description
[v,l]=pdeeig(b,p,e,t,c,a,d,r) produces the solution to the FEM
formulation of the scalar PDE eigenvalue problem
-& · (c∇u) + au = "du on !
or the system PDE eigenvalue problem
−∇ ⋅ (c ⊗ ∇u) + au = λdu
on
Ω
on a geometry described by p, e, and t, and with boundary conditions
given by b.
r is a two-element vector, indicating an interval on the real axis. (The
left-hand side can be -Inf.) The algorithm returns all eigenvalues in
this interval in l, up to a maximum of 99 eigenvalues.
v is an eigenvector matrix. For the scalar case each column in v is an
eigenvector of solution values at the corresponding node points from p.
For a system of dimension N with np node points, the first np rows of
v describe the first component of v, the following np rows of v describe
the second component of v, and so on. Thus, the components of v are
placed in blocks v as N blocks of node point rows.
b describes the boundary conditions of the PDE problem. b can be either
a Boundary Condition matrix or the name of a Boundary M-file. The
formats of the Boundary Condition matrix and Boundary M-file are
described in the entries on assemb and pdebound, respectively. The
eigenvalue PDE problem is a homogeneous problem, i.e., only boundary
conditions where g = 0 and r = 0 can be used. The nonhomogeneous part
is removed automatically.
The geometry of the PDE problem is given by the mesh data p, e, and t.
For details on the mesh data representation, see initmesh.
5-63
pdeeig
The coefficients c, a, d of the PDE problem can be given in a wide
variety of ways. In the context of pdeeig the coefficients cannot depend
on u nor t, the time. For a complete listing of all options, see assempde.
[v,l]=pdeeig(K,B,M,r) produces the solution to the generalized
sparse matrix eigenvalue problem
K ui = "B´MBui u = Bui
with Real(") in the interval in r.
Examples
Compute the eigenvalues less than 100 and corresponding eigenmodes
for
-∇u = "u,
on the geometry of the L-shaped membrane. Then display the first
and sixteenth eigenmodes.
[p,e,t]=initmesh('lshapeg');
[p,e,t]=refinemesh('lshapeg',p,e,t);
[p,e,t]=refinemesh('lshapeg',p,e,t);
[v,l]=pdeeig('lshapeb',p,e,t,1,0,1,[-Inf 100]);
l(1)
% first eigenvalue
pdesurf(p,t,v(:,1))
% first eigenmode
figure
membrane(1,20,9,9)
% the MATLAB function
figure
l(16)
% sixteenth eigenvalue
pdesurf(p,t,v(:,16))
% sixteenth eigenmode
5-64
Algorithm
pdeeig calls sptarn to calculate eigenvalues. For details of the
algorithm, see the sptarn reference pages.
Caution
In the standard case c and d are positive in the entire region. All
eigenvalues are positive, and 0 is a good choice for a lower bound of the
interval. The cases where either c or d is zero are discussed next.
pdeeig
• If d = 0 in a subregion, the mass matrix M becomes singular. This
does not cause any trouble, provided that c > 0 everywhere. The
pencil (K,M) has a set of infinite eigenvalues.
• If c = 0 in a subregion, the stiffness matrix K becomes singular,
and the pencil (K,M) has many zero eigenvalues. With an interval
containing zero, pdeeig goes on for a very long time to find all the
zero eigenvalues. Choose a positive lower bound away from zero but
below the smallest nonzero eigenvalue.
• If there is a region where both c = 0 and d = 0, we get a singular
pencil. The whole eigenvalue problem is undetermined, and any
value is equally plausible as an eigenvalue.
Some of the awkward cases are detected by pdeeig. If the shifted matrix
is singular, another shift is attempted. If the matrix with the new shift
is still singular a good guess is that the entire pencil (K,M) is singular.
If you try any problem not belonging to the standard case, you must use
your knowledge of the original physical problem to interpret the results
from the computation.
See Also
sptarn
Partial Differential Equation Toolbox
5-65
pdeellip
Purpose
Draw ellipse
Syntax
pdeellip(xc,yc,a,b,phi)
pdeellip(xc,yc,a,b,phi,label)
Description
pdeellip(xc,yc,a,b,phi) draws an ellipse with center in (xc,yc)
and semiaxes a and b. The rotation of the ellipse (in radians) is given by
phi. If the pdetool GUI is not active, it is automatically started, and
the ellipse is drawn in an empty geometry model.
The optional argument label assigns a name to the ellipse (otherwise
a default name is chosen.)
The state of the Geometry Description matrix inside pdetool is updated
to include the ellipse. You can export the Geometry Description matrix
from pdetool by selecting the Export Geometry Description option
from the Draw menu. For a details on the format of the Geometry
Description matrix, see decsg.
Examples
The following command starts pdetool and draws an ellipse.
pdeellip(0,0,1,0.3,pi/4)
See Also
5-66
pdecirc
Partial Differential Equation Toolbox
pdepoly
Partial Differential Equation Toolbox
pderect
Partial Differential Equation Toolbox
pdetool
Partial Differential Equation Toolbox
pdeent
Purpose
Indices of triangles neighboring given set of triangles
Syntax
ntl=pdeent(t,tl)
Description
Given triangle data t and a list of triangle indices tl, ntl contains
indices of the triangles in tl and their immediate neighbors, i.e., those
whose intersection with tl is nonempty.
See Also
refinemesh
Partial Differential Equation Toolbox
5-67
pdegeom
Purpose
Geometry M-file
Syntax
ne=pdegeom
d=pdegeom(bs)
[x,y]=pdegeom(bs,s)
Description
We represent 2-D regions by parameterized edge segments. Both the
regions and edge segments are assigned unique positive numbers
as labels. The edge segments cannot overlap. The full 2-D problem
description can contain several nonintersecting regions, and they can
have common border segments. The boundary of a region can consist of
several edge segments. All edge segment junctions must coincide with
edge segment endpoints. We sometimes refer to an edge segment as a
boundary segment or a border segment. A boundary segment is located
on the outer boundary of the union of the minimal regions, and a border
segment is located on the border between minimal regions.
There are two options for specifying the problem geometry:
• Create a Decomposed Geometry matrix with the function decsg.
This is done automatically from pdetool. Using the Decomposed
Geometry matrix restricts the edge segments to be straight lines,
circle, or ellipse segments. The Decomposed Geometry matrix can be
used instead of the Geometry M-file.
• Create a Geometry M-file. By creating your own Geometry M-file,
you can create a geometry that follows any mathematical function
exactly. The following is an example of how to create a cardioid.
ne=pdegeom is the number of edge segments.
d=pdegeom(bs) is a matrix with one column for each edge segment
specified in bs.
• Row 1 contains the start parameter value.
• Row 2 contains the end parameter value.
5-68
pdegeom
• Row 3 contains the label of the left-hand region (left with respect to
direction induced by start and end from row 1 and 2).
• Row 4 contains the label of the right-hand region.
The complement of the union of all regions is assigned the region
number 0.
[x,y]=pdegeom(bs,s) produces coordinates of edge segment points.
bs specifies the edge segments and s the corresponding parameter
values. bs can be a scalar. The parameter s should be approximately
proportional to the curve length. All minimal regions should have at
least two, and preferably three, edge segments in their boundary.
Examples
The function cardg defines the geometry of a cardioid
r = 2(1+cos(#)).
function [x,y]=cardg(bs,s)
%CARDG Geometry File defining the geometry of a cardioid.
nbs=4;
if nargin==0
x=nbs;
return
end
dl=[ 0
pi/2
1
0
pi/2
pi
1
0
pi
3*pi/2
1
0
3*pi/2
2*pi
1
0];
if nargin==1
x=dl(:,bs);
return
end
x=zeros(size(s));
y=zeros(size(s));
5-69
pdegeom
[m,n]=size(bs);
if m==1 & n==1,
bs=bs*ones(size(s)); % expand bs
elseif m~=size(s,1) | n~=size(s,2),
error('bs must be scalar or of same size as s');
end
nth=400;
th=linspace(0,2*pi,nth);
r=2*(1+cos(th));
xt=r.*cos(th);
yt=r.*sin(th);
th=pdearcl(th,[xt;yt],s,0,2*pi);
r=2*(1+cos(th));
x(:)=r.*cos(th);
y(:)=r.*sin(th);
We use the function pdearcl to make the parameter s proportional to
arc length. You can test the function by typing
pdegplot('cardg'), axis equal
[p,e,t]=initmesh('cardg');
pdemesh(p,e,t), axis equal
Then solve the PDE problem
on the geometry defined by the
cardioid. Use Dirichlet boundary conditions u = 0 on
. Finally plot
the solution.
u=assempde('cardb',p,e,t,1,0,1);
pdesurf(p,t,u);
Caution
5-70
The parameter s should be approximately proportional to the curve
length. All minimal regions should have at least two, and preferably
three, edge segments in their boundary.
pdegeom
See Also
initmesh
Partial Differential Equation Toolbox
pdearcl
Partial Differential Equation Toolbox
refinemesh
Partial Differential Equation Toolbox
5-71
pdegplot
Purpose
Plot PDE geometry
Syntax
pdegplot(g)
h=pdegplot(g)
Description
pdegplot(g) plots the geometry of a PDE problem.
h=pdegplot(g) returns handles to the plotted axes objects.
g describes the geometry of the PDE problem. g can either be a
Decomposed Geometry matrix or the name of a Geometry M-file. The
formats of the Decomposed Geometry matrix and Geometry M-file are
described in the entries on decsg and pdegeom, respectively.
Examples
Plot the geometry of the L-shaped membrane
pdegplot('lshapeg')
See Also
5-72
initmesh
Partial Differential Equation Toolbox
pdearcl
Partial Differential Equation Toolbox
refinemesh
Partial Differential Equation Toolbox
pdegrad
Purpose
Gradient of PDE solution
Syntax
[ux,uy]=pdegrad(p,t,u)
[ux,uy]=pdegrad(p,t,u,sdl)
Description
[ux,uy]=pdegrad(p,t,u) returns the gradient of u evaluated at the
center of each triangle.
Row i from 1 to N of ux contains
Row i from 1 to N of uy contains
There is one column for each triangle in t in both ux and uy.
The geometry of the PDE problem is given by the mesh data p and t.
For details on the mesh data representation, see initmesh.
For a description of the format for the solution vector u, see assempde.
The optional argument sdl restricts the computation to the subdomains
in the list sdl.
See Also
assempde
Partial Differential Equation Toolbox
5-73
pdeintrp
Purpose
Interpolate from node data to triangle midpoint data
Syntax
ut=pdeintrp(p,t,un)
Description
ut=pdeintrp(p,t,un) gives linearly interpolated values at triangle
midpoints from the values at node points.
The geometry of the PDE problem is given by the mesh data p and t.
For details on the mesh data representation, see initmesh.
Let N be the dimension of the PDE system, np the number of node
points, and nt the number of triangles. The components of the node
data are stored in un either as N columns of length np or as an ordinary
solution vector. The first np values of un describe the first component,
the following np values of un describe the second component, and so on.
The components of triangle data are stored in ut as N rows of length nt.
Caution
See Also
5-74
pdeprtni and pdeintrp are not inverse functions. The interpolation
introduces some averaging.
assempde
Partial Differential Equation Toolbox
initmesh
Partial Differential Equation Toolbox
pdeprtni
Partial Differential Equation Toolbox
pdejmps
Purpose
Error estimates for adaptation
Syntax
errf=pdejmps(p,t,c,a,f,u,alfa,beta,m)
Description
errf=pdejmps(p,t,c,a,f,u,alfa,beta,m) calculates the error
indication function used for adaptation. The columns of errf correspond
to triangles, and the rows correspond to the different equations in the
PDE system.
p andt are mesh data. For details, see initmesh.
c, a, and f are PDE coefficients. See assempde for details. c, a, and f
must be expanded, so that columns correspond to triangles.
u is the solution vector. For details, see assempde.
The formula for computing the error indicator E(K) for each triangle K is
where n τ is the unit normal of edge τ and the braced term is the jump
in flux across the element edge, where 5 and 7 are weight indices and
m is an order parameter. The norm is an L2 norm computed over the
element K. The error indicator is stored in errf as column vectors, one
for each triangle in t. More information can be found in the section
“Adaptive Mesh Refinement” on page 3-29.
See Also
adaptmesh
Partial Differential Equation Toolbox
pdeadgsc
Partial Differential Equation Toolbox
pdeadworst
Partial Differential Equation Toolbox
5-75
pdemdlcv
5-76
Purpose
Convert Partial Differential Equation Toolbox 1.0 model M-files to 1.0.2
format
Syntax
pdemdlcv(infile,outfile)
Description
pdemdlcv(infile,outfile) converts the Partial Differential Equation
Toolbox 1.0 model M-file infile to a Partial Differential Equation
Toolbox 1.0.2 compatible model M-file. The resulting M-file is saved
as outfile. If the .m extension is missing in outfile, it is added
automatically.
Examples
pdedmdlcv('model42.m','model5.m') converts the Partial Differential
Equation Toolbox 1.0 Model M-file model42.m and saves the converted
model in model5.m.
pdemesh
Purpose
Plot PDE triangular mesh
Syntax
pdemesh(p,e,t)
pdemesh(p,e,t,u)
h=pdemesh(p,e,t)
h=pdemesh(p,e,t,u)
Description
pdemesh(p,e,t) plots the mesh specified by the mesh data p, e, and t.
h=pdemesh(p,e,t) additionally returns handles to the plotted axes
objects.
pdemesh(p,e,t,u) plots PDE node or triangle data u using a mesh
plot. If u is a column vector, node data is assumed. If u is a row vector,
triangle data is assumed. This command plots substantially faster than
the pdesurf command.
The geometry of the PDE problem is given by the mesh data p, e, and t.
For details on the mesh data representation, see initmesh.
This command is just shorthand for the calls
pdeplot(p,e,t)
pdeplot(p,e,t,'zdata',u)
If you want to have more control over your mesh plot, use pdeplot
instead of pdemesh.
Examples
Plot the mesh for the geometry of the L-shaped membrane.
[p,e,t]=initmesh('lshapeg');
[p,e,t]=refinemesh('lshapeg',p,e,t);
pdemesh(p,e,t)
Now solve Poisson’s equation -&u = 1 over the geometry defined by the
L-shaped membrane. Use Dirichlet boundary conditions u = 0 on
,
and plot the result.
u=assempde('lshapeb',p,e,t,1,0,1);
5-77
pdemesh
pdemesh(p,e,t,u)
See Also
5-78
pdecont
Partial Differential Equation Toolbox
pdeplot
Partial Differential Equation Toolbox
pdesurf
Partial Differential Equation Toolbox
pdenonlin
Purpose
Solve nonlinear PDE problem
Syntax
[u,res]=pdenonlin(b,p,e,t,c,a,f)
[u,res]=pdenonlin(b,p,e,t,c,a,f,'PropertyName', 'PropertyValue',...)
Description
[u,res]=pdenonlin(b,p,e,t,c,a,f) solves the nonlinear PDE scalar
PDE problem
-∇ · (c∇u) + au = f on !
or the nonlinear system PDE problem
−∇ ⋅ (c ⊗ ∇u) + au = f
on
Ω
where the coefficients c, a, and f may depend on u. The algorithm
solves the equation by using damped Newton iteration with the
Armijo-Goldstein line search strategy.
The solution u is represented as the solution vector u. For details on the
representation of the solution vector, see assempde. res is the norm of
the Newton step residuals.
The triangular mesh of the PDE problem is given by the mesh data p, e,
and t. For details on the mesh data representation, see initmesh.
b describes the boundary conditions of the PDE problem. b can be
either a Boundary Condition matrix or the name of a Boundary M-file.
The formats of the Boundary Condition matrix and Boundary M-file
are described in the entries on assemb and pdebound, respectively,
respectively. For the general call to pdebound, the boundary conditions
can also depend on u. A fixed-point iteration strategy is employed to
solve for the nonlinear boundary conditions.
The coefficients c, a, f of the PDE problem can be given in a wide variety
of ways. In the context of pdenonlin the coefficients can depend on u.
The coefficients cannot depend on t, the time. For a complete listing of
all format options, see assempde.
5-79
pdenonlin
The solver can be fine-tuned by setting some of the options described
next.
Property Name
Property Value
Default
Description
Jacobian
fixed|lumped|full
fixed
Approximation of Jacobian
U0
string or numeric
0
Initial solution guess
Tol
positive scalar
1e-4
Residual size at termination
MaxIter
positive integer
25
Maximum Gauss-Newton
iterations
MinStep
positive scalar
1/2^16
Minimum damping of search
direction
Report
on|off
off
Print convergence
information
Norm
string or numeric
Inf
Residual norm
There are three methods currently implemented to compute the
Jacobian:
• Numerical evaluation of the full Jacobian based on the sparse version
of the function numjac
• A “lumped” approximation described in Chapter 3, “Finite Element
Method” based on the numerical differentiation of the coefficients
• A fixed-point iteration matrix where the Jacobian is approximated by
the stiffness matrix
Select the desired method by setting the Jacobian property to full,
lumped, or fixed, bearing in mind that the more precise methods are
computationally more expensive.
U0 is the starting guess that can be given as an expression, a generic
scalar, or a vector. By default it is set to 0, but this is useless in
problems such as ∇(1/u∇u) = 0 with Dirichlet boundary conditions u
= ex+y. Tol fixes the exit criterion from the Gauss-Newton iteration,
5-80
pdenonlin
i.e., the iterations are terminated when the residual norm is less than
Tol. The norm in which the residual is computed is selected through
Norm. This can be any admissible MATLAB vector norm or energy for
the energy norm.
MaxIter and MinStep are safeguards against infinite Gauss-Newton
loops and they bound the number of iterations and the step size used
in each iteration. Setting Report to on forces printing of convergence
information.
Diagnostics
See Also
If the Newton iteration does not converge, the error message Too many
iterations or Stepsize too small is displayed. If the initial guess
produces matrices containing NaN or Inf elements, the error message
Unsuitable initial guess U0 (default: U0=0) is printed.
assempde
Partial Differential Equation Toolbox
pdebound
Partial Differential Equation Toolbox
5-81
pdeplot
Purpose
Generic plot function
Syntax
pdeplot(p,e,t,'PropertyName',PropertyValue,)
h=pdeplot(p,e,t,'PropertyName',PropertyValue,)
Description
pdeplot(p,e,t,p1,v1,...) is the generic Partial Differential
Equation Toolbox plot function. It can display several functions of a
PDE solution at the same time.
The geometry of the PDE problem is given by the mesh data p, e, and t.
For details on the mesh data representation, see initmesh.
Valid property/value pairs include the following.
Property Name
Property Value/Default
Description
xydata
data
Triangle data
xystyle
off|flat|{interp}
x-y data plot style
contour
{off}|on
Show contours
zdata
data
Node or triangle data
zstyle
off|{continuous}|
discontinuous
3-D height plot style
flowdata
data
Node or triangle data
flowstyle
off|{arrow}
Flow plot style
colormap
colormap cool
x-y data colormap name or colormap
matrix
xygrid
{off}|on
Convert to x-y grid before plotting
gridparam
[tn; a2; a3]
Triangle index and interpolation
parameters from earlier call to
tri2grid
5-82
mesh
{off}|on
Show mesh in plot
colorbar
off|{on}
Show color bar
pdeplot
Property Name
Property Value/Default
Description
title
"
Plot title text
levels
10
Number of levels or a vector
specifying levels
The pdeplot is used both from inside the pdetool GUI and from the
command line. It is able to display three entities simultaneously.
xydata can be visualized by a surface plot. Either flat or interpolated
(default) shading can be used for the surface plots. A contour plot can
be superimposed on the surface plot (in black) or plotted independently
(in colors) by setting contour to on. zdata is visualized by displaying
height. The triangles can be either tilted by interpolation (default) or
flat. Flow data can be visualized by plotting arrows like the MATLAB
quiver plot. All data types can be either node data or triangle data
(flow data can only be triangle data). Node data is represented by a
column vector of length size(p,2) and triangle data is represented by
a row vector of length size(t,2). If no xydata, zdata, or flowdata is
supplied, pdeplot plots the mesh specified by p, e, and t.
The option mesh displays or hides (default) the triangle mesh in the
plot. The option xygrid first converts the data to x-y data (using
tri2grid), and then uses a standard MATLAB plotting algorithm.
The property gridparam passes the tri2grid data to pdeplot. This
speeds up animation (see pdedemo5 and pdedemo6). The property
colormap renders the plot using any MATLAB colormap or color matrix.
colorbar adds a color bar to the plot. title inserts a title into the plot.
levels only applies to contour plots: Given a scalar integer value, it
plots that number of equally spaced contour levels; given a vector of
level values, it plots those contour lines on the levels in the vector.
h=pdeplot(p,t,u) additionally returns handles to the drawn axes
objects.
Examples
The following command sequence plots the solution to Poisson’s
equation on the L-shaped membrane in 3-D.
[p,e,t]=initmesh('lshapeg');
5-83
pdeplot
u=assempde('lshapeb',p,e,t,1,0,1);
pdeplot(p,e,t,'xydata',u,'zdata',u,'mesh','off');
See Also
5-84
pdecont
Partial Differential Equation Toolbox
pdegplot
Partial Differential Equation Toolbox
pdemesh
Partial Differential Equation Toolbox
pdesurf
Partial Differential Equation Toolbox
pdepoly
Purpose
Draw polygon
Syntax
pdepoly(x,y)
pdepoly(x,y,label)
Description
pdepoly(x,y) draws a polygon with corner coordinates defined by x
and y. If the pdetool GUI is not active, it is automatically started, and
the polygon is drawn in an empty geometry model.
The optional argument label assigns a name to the polygon (otherwise
a default name is chosen).
The state of the Geometry Description matrix inside pdetool is updated
to include the polygon. You can export the Geometry Description matrix
from pdetool by using the Export Geometry Description option
from the Draw menu. For a details on the format of the Geometry
Description matrix, see decsg.
Examples
The command
pdepoly([-1 0 0 1 1 -1],[0 0 1 1 -1 -1]);
creates the L-shaped membrane geometry as one polygon.
See Also
pdecirc
Partial Differential Equation Toolbox
pderect
Partial Differential Equation Toolbox
pdetool
Partial Differential Equation Toolbox
5-85
pdeprtni
Purpose
Interpolate from triangle midpoint data to node data
Syntax
un=pdeprtni(p,t,ut)
Description
un=pdeprtni(p,t,ut) gives linearly interpolated values at node points
from the values at triangle midpoints.
The geometry of the PDE problem is given by the mesh data p and t.
For details on the mesh data representation, see initmesh.
Let N be the dimension of the PDE system, np the number of node
points, and nt the number of triangles. The components of triangle data
in ut are stored as N rows of length nt. The components of the node
data are stored in un as N columns of length np.
Caution
See Also
5-86
pdeprtni and pdeintrp are not inverse functions. The interpolation
introduces some averaging.
assempde
Partial Differential Equation Toolbox
initmesh
Partial Differential Equation Toolbox
pdeintrp
Partial Differential Equation Toolbox
pderect
Purpose
Draw rectangle
Syntax
pderect(xy)
pderect(xy,label)
Description
pderect(xy) draws a rectangle with corner coordinates defined by
xy=[xmin xmax ymin ymax]. If the pdetool GUI is not active, it is
automatically started, and the rectangle is drawn in an empty geometry
model.
The optional argument label assigns a name to the rectangle
(otherwise a default name is chosen).
The state of the Geometry Description matrix inside pdetool is updated
to include the rectangle. You can export the Geometry Description
matrix from pdetool by selecting the Export Geometry Description
option from the Draw menu. For details on the format of the Geometry
Description matrix, see decsg.
Examples
The following command sequence starts pdetool and draws the
L-shaped membrane as the union of three squares.
pderect([-1 0 -1 0])
pderect([0 1 -1 0])
pderect([0 1 0 1])
See Also
pdecirc
Partial Differential Equation Toolbox
pdeellip
Partial Differential Equation Toolbox
pdepoly
Partial Differential Equation Toolbox
pdetool
Partial Differential Equation Toolbox
5-87
pdesdp, pdesde, pdesdt
Purpose
Indices of points/edges/triangles in set of subdomains
Syntax
c=pdesdp(p,e,t)
[i,c]=pdesdp(p,e,t)
c=pdesdp(p,e,t,sdl)
[i,c]=pdesdp(p,e,t,sdl)
i=pdesdt(t)
i=pdesdt(t,sdl)
i=pdesde(e)
i=pdesde(e,sdl)
Description
[i,c]=pdesdp(p,e,t,sdl) given mesh data p, e, and t and a list of
subdomain numbers sdl, the function returns all points belonging
to those subdomains. A point can belong to several subdomains,
and the points belonging to the domains in sdl are divided into two
disjoint sets. i contains indices of the points that wholly belong to the
subdomains listed in sdl, and c lists points that also belongs to the
other subdomains.
c=pdesdp(p,e,t,sdl) returns indices of points that belong to more
than one of the subdomains in sdl.
i=pdesdt(t,sdl) given triangle data t and a list of subdomain numbers
sdl, i contains indices of the triangles inside that set of subdomains.
i=pdesde(e,sdl) given edge data e, it extracts indices of outer
boundary edges of the set of subdomains.
If sdl is not given, a list of all subdomains is assumed.
5-88
pdesmech
Purpose
Calculate structural mechanics tensor functions
Syntax
ux=pdesmech(p,t,c,u,'PropertyName',PropertyValue,...)
Description
ux=pdesmech(p,t,c,u,p1,v1,...) returns a tensor expression
evaluated at the center of each triangle. The tensor expressions are
stresses and strains for structural mechanics applications with plane
stress or plane strain conditions. pdesmech is intended to be used for
postprocessing of a solution computed using the structural mechanics
application modes of the pdetool GUI, after exporting the solution, the
mesh, and the PDE coefficients to the MATLAB workspace. Poisson’s
ratio, nu, has to be supplied explicitly for calculations of shear stresses
and strains, and for the von Mises effective stress in plane strain mode.
Valid property name/property value pairs include the following.
Property Name
Property Value/Default
Description
tensor
ux|uy|vx|vy|exx|eyy|exy|sxx|syy|sxy|e1|
e2|s1|s2|{von Mises}
Tensor expression
application
{ps}|pn
Plane stress|plane
strain
nu
Scalar or string expression {0.3}
Poisson’s ratio
The available tensor expressions are
•
•
•
•
• exx, the x-direction strain (0x)
5-89
pdesmech
• eyy, the y-direction strain (0y)
• exy, the shear strain ()xy)
• sxx, the x-direction stress (.x)
• syy, the y-direction stress (.y)
• sxy, the shear stress (*xy)
• e1, the first principal strain (01)
• e2, the second principal strain (02)
• s1, the first principal stress (.1)
• s2, the second principal stress (.2)
• von Mises, the von Mises effective stress, for plane stress conditions
or for plane strain conditions
Examples
Assuming that a problem has been solved using the application
mode “Structural Mechanics, Plane Stress,” discussed in “Structural
Mechanics — Plane Stress” on page 1-86, and that the solution u, the
mesh data p and t, and the PDE coefficient c all have been exported to
the MATLAB workspace, the x-direction strain is computed as
sx=pdesmech(p,t,c,u,'tensor','sxx');
To compute the von Mises effective stress for a plane strain problem
with Poisson’s ratio equal to 0.3, type
mises=pdesmech(p,t,c,u,'tensor','von Mises',...
'application','pn','nu',0.3);
5-90
pdesurf
Purpose
Shorthand command for surface plot
Syntax
pdesurf(p,t,u)
Description
pdesurf(p,t,u) plots a 3-D surface of PDE node or triangle data. If
u is a column vector, node data is assumed, and continuous style and
interpolated shading are used. If u is a row vector, triangle data is
assumed, and discontinuous style and flat shading are used.
h=pdesurf(p,t,u) additionally returns handles to the drawn axes
objects.
For node data, this command is just shorthand for the call
pdeplot(p,[],t,'xydata',u,'xystyle','interp',...
'zdata',u,'zstyle','continuous',...
'colorbar','off');
and for triangle data it is
pdeplot(p,[],t,'xydata',u,'xystyle','flat',...
'zdata',u,'zstyle','discontinuous',...
'colorbar','off');
If you want to have more control over your surface plot, use pdeplot
instead of pdesurf.
Examples
Surface plot of the solution to the equation -&u = 1 over the geometry
defined by the L-shaped membrane. Use Dirichlet boundary conditions
u = 0 on
.
[p,e,t]=initmesh('lshapeg');
[p,e,t]=refinemesh('lshapeg',p,e,t);
u=assempde('lshapeb',p,e,t,1,0,1);
pdesurf(p,t,u)
5-91
pdesurf
See Also
5-92
pdecont
Partial Differential Equation Toolbox
pdemesh
Partial Differential Equation Toolbox
pdeplot
Partial Differential Equation Toolbox
pdetool
Purpose
Open GUI
Syntax
pdetool
Description
pdetool provides the Partial Differential Equation Toolbox graphical
user interface (GUI). Call pdetool without arguments to start the
application. You should not call pdetool with arguments.
The GUI helps you to draw the 2-D domain and to define boundary
conditions for a PDE problem. It also makes it possible to specify the
partial differential equation, to create, inspect and refine the mesh, and
to compute and display the solution from the GUI.
pdetool contains several different modes:
In draw mode, you construct a Constructive Solid Geometry model (CSG
model) of the geometry. You can draw solid objects that can overlap.
There are four types of solid objects:
• Circle object — represents the set of points inside a circle.
• Polygon object — represents the set of points inside the polygon
given by a set of line segments.
• Rectangle object — represents the set of points inside the rectangle
given by a set of line segments.
• Ellipse object — represents the set of points inside an ellipse. The
ellipse can be rotated.
The solid objects can be moved and rotated. Operations apply to
groups of objects by doing multiple selects. (A Select all option is also
available.) You can cut and paste among the selected objects. The model
can be saved and restored. pdetool can be started by just typing the
name of the model. (This starts the corresponding M-file that contains
the MATLAB commands necessary to create the model.)
The solid objects can be combined by typing a set formula. Each object
is automatically assigned a unique name, which is displayed in the
GUI on the solid object itself. The names refer to the object in the set
5-93
pdetool
formula. More specifically, in the set formula, the name refers to the set
of points inside the object. The resulting geometrical model is the set of
points for which the set formula evaluates to true. (For a description
of the syntax of the set formula, see decsg.) By default, the resulting
geometrical model is the union of all objects.
A “snap-to-grid” function is available. This means that objects align to
the grid. The grid can be turned on and off, and the scaling and the
grid spacing can be changed.
In boundary mode, you can specify the boundary conditions. You can
have different types of boundary conditions on different boundaries. In
this mode, the original shapes of the solid building objects constitute
borders between subdomains of the model. Such borders can be
eliminated in this mode. The outer boundaries are color coded to indicate
the type of boundary conditions. A red outer boundary corresponds to
Dirichlet boundary conditions, blue to generalized Neumann boundary
conditions, and green to mixed boundary conditions. You can return to
the boundary condition display by clicking the
button or by selecting
Boundary Mode from the Boundary menu.
In PDE mode, you can specify the type of PDE problem, and the
coefficients c, a, f, and d. You can specify the coefficients for each
subdomain independently. This makes it easy to specify, e.g.,
various material properties in one PDE model. The PDE to be solved
can be specified by clicking the PDE button or by selecting PDE
Specification from the PDE menu. This brings up a dialog box.
In mesh mode, you can control the automated mesh generation and plot
the mesh. An initial mesh can be generated by clicking the button or
by selecting Initialize Mesh from the Mesh menu. The initial mesh
can be repeatedly refined by clicking the refine button or by selecting
Refine Mesh from the Mesh menu.
In solve mode, you can specify solve parameters and solve the PDE. For
parabolic and hyperbolic PDE problems, you can also specify the initial
conditions, and the times at which the output should be generated.
For eigenvalue problems, the search range can be specified. Also, the
adaptive and nonlinear solvers for elliptic PDEs can be invoked. The
5-94
pdetool
PDE problem is solved by clicking the = button or by selecting Solve
PDE from the Solve menu. By default, the solution is plotted in the
pdetool axes.
In plot mode, you can select a wide variety of visualization methods
such as surface, mesh, contour, and quiver (vector field) plots. For
surface plots, you can choose between interpolated and flat rendering
schemes. The mesh can be hidden in all plot types. For parabolic and
hyperbolic equations, you can animate the solution as it changes with
time. You can show the solution both in 2-D and 3-D. 2-D plots are
shown inside pdetool. 3-D plots are plotted in separate figure windows.
Different types of plots can be selected by clicking the button with the
solution plot icon or by selecting Parameters from the Plot menu. This
opens a dialog box.
Boundary Condition Dialog Box
In this dialog box, the boundary condition for the selected boundaries is
entered. The following boundary conditions can be handled:
• Dirichlet: hu = r on the boundary.
• Generalized Neumann:
on the boundary.
• Mixed: a combination of Dirichlet and generalized Neumann
condition.
is the outward unit length normal.
The boundary conditions can be entered in a variety of ways. (See
assemb and “Boundary Menu” on page 2-12.)
PDE Specification Dialog Box
In this dialog box, the type of PDE and the PDE coefficients are entered.
The following types of PDEs can be handled:
• Elliptic PDE: -∇ · (c∇u) + au = f
• Parabolic PDE:
5-95
pdetool
• Hyperbolic PDE:
• Eigenvalue PDE: -∇ · (c∇u) + au = "du
for x and y on the problem’s 2-D domain !.
The PDE coefficients can be entered in a variety of ways. (See assempde
and “PDE Menu” on page 2-16.)
Model M-File
The Model M-file contains the MATLAB commands necessary to create
a CSG model. It can also contain additional commands to set boundary
conditions, define the PDE, create the mesh, solve the pde, and plot
the solution. This type of M-file can be saved and opened from the
File menu.
The Model M-file is a MATLAB function and not a script. This way
name clashes between variables used in the function and in the main
workspace are avoided. The name of the file must coincide with the
model name. The beginning of the file always looks similar to the
following code fragment:
function pdemodel
pdeinit;
pde_fig=gcf;
ax=gca;
pdetool('appl_cb',1);
setappdata(pde_fig,'currparam',...
str2mat('1.0','0.0','10.0','1.0'));
pdetool('snapon');
set(ax,'XLim',[-1.5 1.5]);
set(ax,'YLim',[-1 1]);
set(ax,'XTickMode','auto');
set(ax,'YTickMode','auto');
grid on;
5-96
pdetool
The pdeinit command starts up pdetool. If pdetool has already been
started, the current model is cleared. The following commands set
up the scaling and tick marks of the axis of pdetool and other user
parameters.
Then a sequence of drawing commands is issued. The commands that
can be used are named pdecirc, pdeellip, pdepoly, and pderect.
The following command sequence creates the L-shaped membrane as
the union of three squares. The solid objects are given names SQ1,
SQ2, SQ3, etc.
% Geometry description:
pderect([-1 0 0 -1],'SQ1');
pderect([0 1 0 -1],'SQ2');
pderect([0 1 1 0],'SQ3');
We do not intend to fully document the format of the Model M-file. It
can be used to change the geometry of the drawn objects, since the
pdecirc, pdeellip, pdepoly, and pderect commands are documented.
See Also
assempde
Partial Differential Equation Toolbox
initmesh
Partial Differential Equation Toolbox
parabolic
Partial Differential Equation Toolbox
pdecont
Partial Differential Equation Toolbox
pdeeig
Partial Differential Equation Toolbox
pdesurf
Partial Differential Equation Toolbox
5-97
pdetrg
Purpose
Triangle geometry data
Syntax
[ar,a1,a2,a3]=pdetrg(p,t)
[ar,g1x,g1y,g2x,g2y,g3x,g3y]=pdetrg(p,t)
Description
[ar,a1,a2,a3]=pdetrg(p,t) returns the area of each triangle in ar
and half of the negative cotangent of each angle in a1, a2, and a3.
[ar,g1x,g1y,g2x,g2y,g3x,g3y]=pdetrg(p,t) returns the area and
the gradient components of the triangle base functions.
The triangular mesh of the PDE problem is given by the mesh data p
and t. For details on the mesh data representation, see initmesh.
5-98
pdetriq
Purpose
Triangle quality measure
Syntax
q=pdetriq(p,t)
Description
q=pdetriq(p,t) returns a triangle quality measure given mesh data.
The triangular mesh is given by the mesh data p, e, and t. For details
on the mesh data representation, see initmesh.
The triangle quality is given by the formula
q=
4a 3
h12
+ h22 + h32
where a is the area and h1, h2, and h3 the side lengths of the triangle.
If q > 0.6 the triangle is of acceptable quality. q = 1 when h1 = h2 = h3.
Reference
See Also
Bank, Randolph E., PLTMG: A Software Package for Solving Elliptic
Partial Differential Equations, User’s Guide 6.0, Society for Industrial
and Applied Mathematics, Philadelphia, PA, 1990.
initmesh
Partial Differential Equation Toolbox
jigglemesh
Partial Differential Equation Toolbox
refinemesh
Partial Differential Equation Toolbox
5-99
poiasma
Purpose
Boundary point matrix contributions for fast solvers of Poisson’s
equation
Syntax
K=poiasma(n1,n2,h1,h2)
K=poiasma(n1,n2)
K=poiasma(n)
Description
K=poiasma(n1,n2,h1,h2) assembles the contributions to the stiffness
matrix from boundary points. n1 and n2 are the numbers of points in
the first and second directions, and h1 and h2 are the mesh spacings.
K is a sparse n1*n2-by-n1*n2 matrix. The point numbering is the
canonical numbering for a rectangular mesh.
K=poiasma(n1,n2) uses h1=h2.
K=poiasma(n) uses n1=n2=n.
See Also
5-100
poiindex
Partial Differential Equation Toolbox
poisolv
Partial Differential Equation Toolbox
poicalc
Purpose
Fast solver for Poisson’s equation on rectangular grid
Syntax
u=poicalc(f,h1,h2,n1,n2)
u=poicalc(f,h1,h2)
u=poicalc(f)
Description
u=poicalc(f,h1,h2,n1,n2) calculates the solution of Poisson’s
equation for the interior points of an evenly spaced rectangular grid.
The columns of u contain the solutions corresponding to the columns of
the right-hand side f. h1 and h2 are the spacings in the first and second
direction, and n1 and n2 are the number of points.
The number of rows in f must be n1*n2. If n1 and n2 are not given, the
square root of the number of rows of f is assumed. If h1 and h2 are not
given, they are assumed to be equal.
The ordering of the rows in u and f is the canonical ordering of interior
points, as returned by poiindex.
The solution is obtained by sine transforms in the first direction and
tridiagonal matrix solution in the second direction. n1 should be 1 less
than a power of 2 for best performance.
See Also
dst
Partial Differential Equation Toolbox
idst
Partial Differential Equation Toolbox
poiasma
Partial Differential Equation Toolbox
poiindex
Partial Differential Equation Toolbox
poisolv
Partial Differential Equation Toolbox
5-101
poiindex
Purpose
Indices of points in canonical ordering for rectangular grid
Syntax
[n1,n2,h1,h2,i,c,ii,cc]=poiindex(p,e,t,sd)
Description
[n1,n2,h1,h2,i,c,ii,cc]=poiindex(p,e,t,sd) identifies a given
grid p, e, t in the subdomain sd as an evenly spaced rectangular grid. If
the grid is not rectangular, n1 is 0 on return. Otherwise n1 and n2 are
the number of points in the first and second directions, h1 and h2 are
the spacings. i and ii are of length (n1-2)*(n2-2) and contain indices
of interior points. i contains indices of the original mesh, whereas
ii contains indices of the canonical ordering. c and cc are of length
n1*n2-(n1-2)*(n2-2) and contain indices of border points. ii and cc
are increasing.
In the canonical ordering, points are numbered from left to right and
then from bottom to top. Thus if n1=3 and n2=5, then ii=[5 8 11] and
cc=[1 2 3 4 6 7 9 10 12 13 14 15].
See Also
5-102
poiasma
Partial Differential Equation Toolbox
poisolv
Partial Differential Equation Toolbox
poimesh
Purpose
Make regular mesh on rectangular geometry
Syntax
[p,e,t]=poimesh(g,nx,ny)
[p,e,t]=poimesh(g,n)
[p,e,t]=poimesh(g)
Description
[p,e,t]=poimesh(g,nx,ny) constructs a regular mesh on the
rectangular geometry specified by g, by dividing the “x edge” into nx
pieces and the “y edge” into ny pieces, and placing (nx+1)*(ny+1)
points at the intersections.
The “x edge” is the one that makes the smallest angle with the x-axis.
[p,e,t]=poimesh(g,n) uses nx=ny=n, and [p,e,t]=poimesh(g) uses
nx=ny=1.
The triangular mesh is described by the mesh data p, e, and t. For
details on the mesh data representation, see initmesh.
For best performance with poisolv, the larger of nx and ny should
be a power of 2.
If g does not seem to describe a rectangle, p is zero on return.
Examples
See Also
Try the demo command pdedemo8. The solution of Poisson’s equation
over a rectangular grid with boundary condition given by the file
squareb4 is returned. The solution time is compared to the usual Finite
Element Method (FEM) approach.
initmesh
Partial Differential Equation Toolbox
poisolv
Partial Differential Equation Toolbox
5-103
poisolv
Purpose
Fast solution of Poisson’s equation on rectangular grid
Syntax
u=poisolv(b,p,e,t,f)
Description
u=poisolv(b,p,e,t,f) solves Poisson’s equation with Dirichlet
boundary conditions on a regular rectangular grid. A combination
of sine transforms and tridiagonal solutions is used for increased
performance.
The boundary conditions b must specify Dirichlet conditions for all
boundary points.
The mesh p, e, and t must be a regular rectangular grid. For details on
the mesh data representation, see initmesh.
f gives the right-hand side of Poisson’s equation.
Apart from roundoff errors, the result should be the same as
u=assempde(b,p,e,t,1,0,f).
Reference
See Also
5-104
Strang, Gilbert, Introduction to Applied Mathematics,
Wellesley-Cambridge Press, Cambridge, MA, 1986, pp. 453–458.
poicalc
Partial Differential Equation Toolbox
poimesh
Partial Differential Equation Toolbox
refinemesh
Purpose
Refine triangular mesh
Syntax
[p1,e1,t1]=refinemesh(g,p,e,t)
[p1,e1,t1]=refinemesh(g,p,e,t,'regular')
[p1,e1,t1]=refinemesh(g,p,e,t,'longest')
[p1,e1,t1]=refinemesh(g,p,e,t,it)
[p1,e1,t1]=refinemesh(g,p,e,t,it,'regular')
[p1,e1,t1]=refinemesh(g,p,e,t,it,'longest')
[p1,e1,t1,u1]=refinemesh(g,p,e,t,u)
[p1,e1,t1,u1]=refinemesh(g,p,e,t,u,'regular')
[p1,e1,t1,u1]=refinemesh(g,p,e,t,u,'longest')
[p1,e1,t1,u1]=refinemesh(g,p,e,t,u,it)
[p1,e1,t1,u1]=refinemesh(g,p,e,t,u,it,'regular')
[p1,e1,t1,u1]=refinemesh(g,p,e,t,u,it,'longest')
Description
[p1,e1,t1]=refinemesh(g,p,e,t) returns a refined version of the
triangular mesh specified by the geometry g, Point matrix p, Edge
matrix e, and Triangle matrix t.
The triangular mesh is given by the mesh data p, e, and t. For details
on the mesh data representation, see initmesh.
[p1,e1,t1,u1]=refinemesh(g,p,e,t,u) refines the mesh and also
extends the function u to the new mesh by linear interpolation. The
number of rows in u should correspond to the number of columns in p,
and u1 has as many rows as there are points in p1. Each column of u
is interpolated separately.
An extra input argument it is interpreted as a list of subdomains to
refine, if it is a row vector, or a list of triangles to refine, if it is a column
vector.
The default refinement method is regular refinement, where all of the
specified triangles are divided into four triangles of the same shape.
Longest edge refinement, where the longest edge of each specified
triangle is bisected, can be demanded by giving longest as a final
parameter. Using regular as a final parameter results in regular
refinement. Some triangles outside of the specified set may also be
refined to preserve the triangulation and its quality.
5-105
refinemesh
Examples
Refine the mesh of the L-shaped membrane several times. Plot the
mesh for the geometry of the L-shaped membrane.
[p,e,t]=initmesh('lshapeg','hmax',inf);
subplot(2,2,1), pdemesh(p,e,t)
[p,e,t]=refinemesh('lshapeg',p,e,t);
subplot(2,2,2), pdemesh(p,e,t)
[p,e,t]=refinemesh('lshapeg',p,e,t);
subplot(2,2,3), pdemesh(p,e,t)
[p,e,t]=refinemesh('lshapeg',p,e,t);
subplot(2,2,4), pdemesh(p,e,t)
subplot
Algorithm
The algorithm is described by the following steps:
1 Pick the initial set of triangles to be refined.
2 Either divide all edges of the selected triangles in half (regular
refinement), or divide the longest edge in half (longest edge
refinement).
3 Divide the longest edge of any triangle that has a divided edge.
4 Repeat step 3 until no further edges are divided.
5 Introduce new points of all divided edges, and replace all divided
entries in e by two new entries.
6 Form the new triangles. If all three sides are divided, new triangles
are formed by joining the side midpoints. If two sides are divided,
the midpoint of the longest edge is joined with the opposing corner
and with the other midpoint. If only the longest edge is divided, its
midpoint is joined with the opposing corner.
See Also
5-106
initmesh
Partial Differential Equation Toolbox
pdeent
Partial Differential Equation Toolbox
refinemesh
pdegeom
Partial Differential Equation Toolbox
pdesdt
Partial Differential Equation Toolbox
5-107
sptarn
Purpose
Solve generalized sparse eigenvalue problem
Syntax
[xv,lmb,iresult]
[xv,lmb,iresult]
[xv,lmb,iresult]
[xv,lmb,iresult]
[xv,lmb,iresult]
Description
[xv,lmb,iresult] =
sptarn(A,B,lb,ub,spd,tolconv,jmax,maxmul) finds eigenvalues of
=
=
=
=
=
sptarn(A,B,lb,ub)
sptarn(A,B,lb,ub,spd)
sptarn(A,B,lb,ub,spd,tolconv)
sptarn(A,B,lb,ub,spd,tolconv,jmax)
sptarn(A,B,lb,ub,spd,tolconv,jmax,maxmul)
the pencil (A - "B)x = 0 in interval [lb,ub]. (A matrix of linear
polynomials Aij - "Bij, A - "B, is called a pencil.)
A and B are sparse matrices. lb and ub are lower and upper bounds for
eigenvalues to be sought. We may have lb=-inf if all eigenvalues to
the left of ub are sought, and rb=inf if all eigenvalues to the right of
lb are sought. One of lb and ub must be finite. A narrower interval
makes the algorithm faster. In the complex case, the real parts of lmb
are compared to lb and ub.
xv are eigenvectors, ordered so that norm(a*xv-b*xv*diag(lmb)) is
small. lmb is the sorted eigenvalues. If iresult>=0 the algorithm
succeeded, and all eigenvalues in the intervals have been found. If
iresult<0 the algorithm has not yet been successful, there may be
more eigenvalues—try with a smaller interval.
spd is 1 if the pencil is known to be symmetric positive definite (default
0).
tolconv is the expected relative accuracy. Default is 100*eps, where
eps is the machine precision.
jmax is the maximum number of basis vectors. The algorithm needs
jmax*n working space so a small value may be justified on a small
computer, otherwise let it be the default value jmax=100. Normally the
algorithm stops earlier when enough eigenvalues have converged.
maxmul is the number of Arnoldi runs tried. Must at least be as large
as maximum multiplicity of any eigenvalue. If a small value of jmax is
5-108
sptarn
given, many Arnoldi runs are necessary. The default value is maxmul=n,
which is needed when all the eigenvalues of the unit matrix are sought.
Algorithm
The Arnoldi algorithm with spectral transformation is used. The shift
is chosen at ub, lb, or at a random point in interval (lb,ub) when both
bounds are finite. The number of steps j in the Arnoldi run depends
on how many eigenvalues there are in the interval, but it stops at
j=min(jmax,n). After a stop, the algorithm restarts to find more Schur
vectors in orthogonal complement to all those already found. When no
more eigenvalues are found in lb < lmb <= ub, the algorithm stops.
For small values of jmax, several restarts may be needed before a
certain eigenvalue has converged. The algorithm works when jmax
is at least one larger than the number of eigenvalues in the interval,
but then many restarts are needed. For large values of jmax, which
is the preferred choice, mul+1 runs are needed. mul is the maximum
multiplicity of an eigenvalue in the interval.
5-109
sptarn
Note The algorithm works on nonsymmetric as well as symmetric
pencils, but then accuracy is approximately tol times the Henrici
departure from normality. The parameter spd is used only to choose
between symamd and colamd when factorizing, the former being
marginally better for symmetric matrices close to the lower end of the
spectrum.
In case of trouble,
If convergence is too slow, try (in this order of priority):
• a smaller interval lb, ub
• a larger jmax
• a larger maxmul
If factorization fails, try again with lb or ub finite. Then shift is chosen
at random and hopefully not at an eigenvalue. If it fails again, check
whether pencil may be singular.
If it goes on forever, there may be too many eigenvalues in the strip.
Try with a small value maxmul=2 and see which eigenvalues you get.
Those you get are some of the eigenvalues, but a negative iresult tells
you that you have not gotten them all.
If memory overflow, try smaller jmax.
The algorithm is designed for eigenvalues close to the real axis. If you
want those close to the imaginary axis, try A=i*A.
When spd=1, the shift is at lb so that advantage is taken of the faster
factorization for symmetric positive definite matrices. No harm is done,
but the execution is slower if lb is above the lowest eigenvalue.
5-110
sptarn
References
[1] Golub, Gene H., and Charles F. Van Loan, Matrix Computations,
2nd edition, Johns Hopkins University Press, Baltimore, MD, 1989.
[2] Saad, Yousef, “Variations on Arnoldi’s Method for Computing
Eigenelements of Large Unsymmetric Matrices,” Linear Algebra and
its Applications, Vol. 34, 1980, pp. 269–295.
See Also
pdeeig
Partial Differential Equation Toolbox
5-111
tri2grid
Purpose
Interpolate from PDE triangular mesh to rectangular grid
Syntax
uxy=tri2grid(p,t,u,x,y)
[uxy,tn,a2,a3]=tri2grid(p,t,u,x,y)
uxy=tri2grid(p,t,u,tn,a2,a3)
Description
uxy=tri2grid(p,t,u,x,y) computes the function values uxy over the
grid defined by the vectors x and y, from the function u with values on
the triangular mesh defined by p and t. Values are computed using
linear interpolation in the triangle containing the grid point. The
vectors x and y must be increasing.
[uxy,tn,a2,a3]=tri2grid(p,t,u,x,y) additionally lists the index tn
of the triangle containing each grid point, and interpolation coefficients
a2 and a3.
uxy=tri2grid(p,t,u,tn,a2,a3) with tn, a2, and a3 computed in an
earlier call to tri2grid, interpolates using the same grid as in the
earlier call. This variant is, however, much faster if several functions
have to be interpolated using the same grid.
For grid points outside of the triangular mesh, NaN is returned in uxy,
tn, a2, and a3.
See Also
5-112
assempde
Partial Differential Equation Toolbox
initmesh
Partial Differential Equation Toolbox
refinemesh
Partial Differential Equation Toolbox
wbound
Purpose
Write boundary condition specification file
Syntax
fid=wbound(bl,mn)
Description
fid=wbound(bl,mn) writes a Boundary M-file with the name
[mn,'.m']. The Boundary M-file is equivalent to the Boundary
Condition matrix bl.fid returns -1 if the file could not be written.
bl describes the boundary conditions of the PDE problem. bl is a
Boundary Condition matrix. For details, see assemb.
The output file [mn,'.m'] is the name of a Boundary M-file. (See
pdebound.)
See Also
decsg
Partial Differential Equation Toolbox
pdebound
Partial Differential Equation Toolbox
pdegeom
Partial Differential Equation Toolbox
wgeom
Partial Differential Equation Toolbox
5-113
wgeom
Purpose
Write geometry specification function
Syntax
fid=wgeom(dl,mn)
Description
fid=wgeom(dl,mn) writes a Geometry M-file with the name [mn,'.m'].
The Geometry M-file is equivalent to the Decomposed Geometry matrix
dl. fid returns -1 if the file could not be written.
dl is a Decomposed Geometry matrix. For a description of the format of
the Decomposed Geometry matrix, see decsg.
The output file [mn,'.m'] is the name of a Geometry M-file. For a
description of the Geometry M-file format, see pdegeom.
See Also
5-114
decsg
Partial Differential Equation Toolbox
pdegeom
Partial Differential Equation Toolbox
wbound
Partial Differential Equation Toolbox
Index
A
D
AC power electromagnetics 1-103
adaptive mesh refinement 1-26
adaptmesh function 5-2
animation 1-67
Application command 2-9
application modes 1-84
Armijo-Goldstein line search 3-24
Arnoldi algorithm 5-109
assema function 5-9
assemb function 5-10
assembling 3-6
assempde function 5-18
Axes Limits command 2-9
decomposed geometry 1-33
Decomposed Geometry matrix 1-45
decsg function 5-32
discrete sine transform 3-32
domain decomposition 1-60
Draw menu 2-10
draw mode 1-31
Index
B
Boolean table 5-32
border segment 5-34
Boundary Condition matrix 1-45
boundary conditions 2-14
Boundary M-file 1-45
Boundary menu 2-12
boundary mode 1-32
boundary segment 5-34
C
circle solid 5-33
Coefficient M-file 1-45
Coefficient matrix 1-45
command-line functions 1-42
conductive media DC 1-108
Constructive Solid Geometry model 1-32
CSG model 1-32
csgchk function 5-29
csgdel function 5-31
cylindrical problem 1-69
E
Edge matrix 1-46
Edit menu 2-5
eigenmodes 1-81
eigenvalue equation 3-19
eigenvalue problems 1-25
eigenvector matrix 5-63
electrostatics 1-93
ellipse solid 5-34
elliptic equation 1-3
elliptic problems 1-49
elliptic system 3-10
energy norm 3-5
F
fast solver 3-32
FEM 1-22
File menu 2-3
Finite Element Method 3-1
G
Gauss-Newton method 3-24
Geometry Description matrix 1-45
Geometry M-file 1-45
graphical user interface 1-10
Green’s formula 1-23
Grid Spacing command 2-8
Index-1
Index
H
heat distribution in radioactive rod 1-69
heat equation 1-64
heat transfer 1-114
Helmholtz’s equation 1-54
Help menu 2-34
hyperbolic equation 1-3
hyperbolic function 5-40
hyperbolic problems 1-71
I
idst function 5-38
initmesh function 5-43
J
jigglemesh function 5-48
L
L-shaped membrane 1-75
Laplace equation 1-94
M
magnetostatics 1-96
mass matrix 3-5
Maxwell’s equations 1-93
mesh data 1-46
Mesh menu 2-20
mesh mode 1-32
mesh parameters 2-21
method of lines 3-14
minimal region 1-45
minimal surface problem 1-58
Model M-file 1-41
N
Name Space matrix 1-45
Index-2
New command 2-3
node data 5-74
nonlinear
equation 3-23
problem 1-58
solver 1-26
O
Open command 2-3
Options menu 2-7
P
parabolic equation 1-3
parabolic function 5-50
parabolic problems 1-64
Paste command 2-6
PDE coefficients 2-17
PDE menu 2-16
PDE mode 1-32
PDE Specification 2-17
pdeadgsc function 5-53
pdeadworst function 5-54
pdearcl function 5-55
pdebound function 5-56
pdecgrad function 5-59
pdecirc function 5-60
pdecont function 5-61
pdeeig function 5-63
pdeellip function 5-66
pdeent function 5-67
pdegeom function 5-68
pdegplot function 5-72
pdegrad function 5-73
pdeintrp function 5-74
pdejmps function 5-75
pdemdlcv function 5-76
pdemesh function 5-77
pdenonlin function 5-79
Index
pdeplot function 5-82
pdepoly function 5-85
pdeprtni function 5-86
pderect function 5-87
pdesde function 5-88
pdesdp function 5-88
pdesdt function 5-88
pdesmech function 5-89
pdesurf function 5-91
pdetool function 5-93
pdetrg function 5-98
pdetriq function 5-99
pencil 5-108
plane strain 1-92
plane stress 1-86
Plot menu 2-27
plot mode 1-32
Plot parameters 2-28
poiasma function 5-100
poicalc function 5-101
poiindex function 5-102
poimesh function 5-103
Point matrix 1-46
poisolv function 5-104
Poisson’s equation 1-10
polygon solid 5-34
Print command 2-4
R
rectangle solid 5-34
refinemesh function 5-105
Robin boundary condition 3-2
Rotate command 2-12
S
Save As command 2-4
scattering problem 1-53
Schur vector 3-21
set formulas 1-6
skin effect 1-105
solid object 1-11
solution vector 1-46
Solve menu 2-22
solve mode 1-32
solve parameters 2-23
sptarn function 5-108
stiff springs 3-11
structural mechanics 1-86
T
test function 1-23
toolbar 1-30
tri2grid function 5-112
Triangle matrix 1-46
triangle quality 2-20
V
von Mises effective stress 1-88
W
wave equation 1-71
wbound function 5-113
weak form 3-3
wgeom function 5-114
Window menu 2-34
Index-3
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement