# FEM2D_HEAT Finite Element Solution of the Heat Equation on a Triangulated Region

FEM2D_HEAT is a MATLAB program which applies the finite element method to solve a form of the time-dependent heat equation over an arbitrary triangulated region.

The computational region is initially unknown by the program. The user specifies it by preparing a file containing the coordinates of the nodes, and a file containing the indices of nodes that make up triangles that form a triangulation of the region.

Normally, the user does not type in this information by hand, but has a program fill in the nodes, and perhaps another program that constructs the triangulation. However, in the simplest case, the user might construct a very crude triangulation by hand, and have TRIANGULATION_REFINE refine it to something more reasonable.

For the following ridiculously small example:

```       10-11-12
|\   |\
| \  | \
6  7 8  9
|   \|   \
1-2--3--4-5
```
the node file would be:
```         0.0  0.0
1.0  0.0
2.0  0.0
3.0  0.0
4.0  0.0
0.0  1.0
1.0  1.0
2.0  1.0
3.0  1.0
0.0  2.0
1.0  2.0
2.0  2.0
```
and the element file would be
```         1  3 10  2  7  6
3  5 12  4  9  8
12 10  3 11  7  8
```

The program is set up to handle the time dependent heat equation with a right hand side function, and nonhomogeneous Dirichlet boundary conditions. The state variable U(T,X,Y) is then constrained by:

```        Ut - ( Uxx + Uyy ) + K(x,y,t) * U = F(x,y,t)  in the region
U = G(x,y,t)  on the boundary
U = H(x,y,t)  at initial time TINIT.
```

To specify the right hand side function F(x,y,t), the linear coefficient K(x,y,t), the boundary condition function G(x,y,t), and the initial condition H(x,y,t), the user has to supply the functions,

• FUNCTION F = RHS ( NODE_NUM, NODE_XY, TIME ) evaluates the right hand side forcing term F(x,y,t);
• FUNCTION K = K_COEF ( NODE_NUM, NODE_XY, TIME ) evaluates K(x,y,t);
• FUNCTION G = DIRICHLET_CONDITION ( NODE_NUM, NODE_XY, TIME ) evaluates G(x,y,t) for nodes on the boundary;
• FUNCTION H = INITIAL_CONDITION ( NODE_NUM, NODE_XY, TIME ) evaluates H(x,y,t), and is only called for TIME = TINIT.

The program writes out a file containing the solution value at every node. This file may be used to create contour plots of the solution.

### Program Usage:

fem2d_heat ( 'prefix' )
where 'prefix' is the common input filename prefix:
• 'prefix_nodes.txt' is the name of the node file;
• 'prefix_elements.txt' is the name of the element file;

### Languages:

FEM2D_HEAT is available in a C++ version and a FORTRAN90 version and a MATLAB version.

### Related Data and Programs:

FEM2D_HEAT_SQUARE, a MATLAB library which defines the geometry of a square region, as well as boundary and initial conditions for a given heat problem, and is called by FEM2D_HEAT as part of a solution procedure.

TRIANGULATION_DISPLAY, a MATLAB program which displays the nodes and elements of a triangulation on the MATLAB graphics screen;

### Reference:

1. Hans Rudolf Schwarz,
Finite Element Methods,
ISBN: 0126330107,
LC: TA347.F5.S3313.
2. Gilbert Strang, George Fix,
An Analysis of the Finite Element Method,
Cambridge, 1973,
ISBN: 096140888X,
LC: TA335.S77.
3. Olgierd Zienkiewicz,
The Finite Element Method,
Sixth Edition,
Butterworth-Heinemann, 2005,
ISBN: 0750663200,
LC: TA640.2.Z54

### Source Code:

You can go up one level to the MATLAB source codes.

Last revised on 07 July 2011.