1D Finite Difference Method
1D Finite Difference Method
1D Finite Difference Method
1
1.1
T
c p
=
t
x
T
k
x
(1)
on the domain L/2 x L/2 subject to the following boundary conditions for fixed
temperature
T ( x = L/2, t) = Tle f t
T ( x = L/2, t) = Tright
(2)
(3)
(4)
where we have again assumed a hot dike intrusion for W/2 x W/2.
Boundary conditions (BCs, see also sec. ??) for PDEs that specify values of the solution
function (here T) to be constant, such as eq. (2), are called Dirichlet boundary conditions.
We can also choose to specify the gradient of the solution function, e.g. T/x (Neumann
boundary condition). This gradient boundary condition corresponds to heat flux for the
heat equation and we might choose, e.g., zero flux in and out of the domain (isolated
BCs):
T
( x = L/2, t) = 0
x
T
( x = L/2, t) = 0.
x
1.2
(5)
As before, the first step is to discretize the spatial domain with n x finite difference points.
The implicit finite difference discretization of the temperature equation within the medium
where we wish to obtain the solution is eq. (??). Starting with fixed temperature BCs
(eq. 2), the boundary condition on the left boundary gives
T1 = Tle f t
(6)
Tnx = Tright .
(7)
Excerpt from GEOL557 Numerical Modeling of Earth Systems by Becker and Kaus (2016)
(8)
1
0
0
0
0
0
s (1 + 2s)
s
0
0
0
0
s
(1 + 2s)
s
0
0
A=
0
0
s
(1 + 2s)
s
0
0
0
0
s
(1 + 2s) s
0
0
0
0
0
1
(9)
x=
b=
T1n+1
T2n+1
T3n+1
T4n+1
T5n+1
T6n+1
Tle f t
T2n
T3n
T4n
T5n
Tright
(10)
(11)
Note that matrix A will have a unity entry on the diagonal and zero else for each node
where Dirichlet (fixed temperature) boundary conditions apply; see derivation below and
eqs. (??) and (??) for how to implement Neumann boundary conditions.
Matrix A also has an overall peculiar form because most entries off the diagonal are
zero. This sparseness can be exploited by specialized linear algebra routines, both in
terms of storage and speed. By avoiding computations involving zero entries of the matrix, much larger problems can be handled than would be possible if we were to store
the full matrix. In particular, the fully implicit FD scheme leads to a tridiagonal system
of linear equations that can be solved efficiently by LU decomposition using the Thomas
algorithm (e.g. Press et al., 1993, sec. 2.4).
1.3
MATLAB implementation
Excerpt from GEOL557 Numerical Modeling of Earth Systems by Becker and Kaus (2016)
MATLAB functions can be used to obtain the solution x and you will not have to worry
about choosing a proper matrix solver for now.
First, however, we have to construct the matrices and vectors. The coefficient matrix
A can be constructed with a simple loop:
A = sparse(nx,nx);
for i=2:nx-1
A(i,i-1) = -s;
A(i,i ) = (1+2*s);
A(i,i+1) = -s;
end
and the boundary conditions are set by:
A(1 ,1 ) = 1;
A(nx,nx) = 1;
(Exercise: Improve on the loop formulation for A assembly by using MATLAB vector
functionality.)
Once the coefficient matrix has been constructed, its structure can be visualized with
the command
>>spy(A)
(Try it, for example by putting a break-point into the MATLAB code below after assembly.)
The right-hand-side vector b can be constructed with
b = zeros(nx,1);
b(2:nx-1) = Told(2:nx-1);
b(1) = Tleft; b(nx) = Tright;
The only thing that remains to be done is to solve the system of equations and find x.
MATLAB does this with
x = A\b;
The vector x is now filled with new temperatures T n+1 , and we can go to the next time
step. Note that, for constant t, , and x, the matrix A does not change with time. Therefore we have to form it only once in the program, which speeds up the code significantly.
Only the vectors b and x need to be recomputed. (Note: Having a constant matrix helps a
lot for large systems because operations such as x = A\b can then be optimized further
by storing A in a special form.)
Excerpt from GEOL557 Numerical Modeling of Earth Systems by Becker and Kaus (2016)
1.4
Exercises
Note: Eq. (13) can be derived using a similarity variable, x = x/xc with xc t.
Looks familiar?
c) A steady-state temperature profile is obtained if the time derivative T/t in the
heat equation (eq. ??) is zero. There are two ways to do this.
(i) Wait until the temperature does not change anymore.
(ii) Write down a finite difference discretization of 2 T/x2 = 0 and solve it. (See
the limit case consideration above.)
Employ both methods to compute steady-state temperatures for Tle f t = 100 and
Tright = 1000 . Derive the analytical solution and compare your numerical solutions accuracies. Use the implicit method for part (a), and think about different
boundary conditions, and the case with heat production.
d) Apply no flux boundary conditions at | x | = L/2 and solve the dike intrusion problem in a fully implicit scheme. Eqs. (??) and (??) need to replace the first and last
columns of your A matrix.
See geodynamics.usc.edu/~becker/Geodynamics557.pdf for complete document.
Excerpt from GEOL557 Numerical Modeling of Earth Systems by Becker and Kaus (2016)
e) Derive and program the Crank-Nicolson method (cf. Figure ??C). This best of both
worlds method is obtained by computing the average of the fully implicit and fully
explicit schemes:
n +1
n +1
n +1
n 2T n + T n
n +1
n
+
T
T
2T
+
T
Ti
Ti
i +1
i
i 1
i +1
i
i 1
.
=
(15)
2
t
2
(x )
This scheme should generally yield the best performance for any diffusion problem,
it is second order time and space accurate, because the averaging of fully explicit
and fully implicit methods to obtain the time derivative corresponds to evaluating
the derivative centered on n + 1/2. Such centered evaluation also lead to second
order accuracy for the spatial derivatives.
Compare the accuracy of the Crank-Nicolson scheme with that of the FTCS and fully
implicit schemes for the cases explored in the two previous problems, and for ideal
values of t and x, and for large values of t that are near the instability region of
FTCS.
Hint: Proceed by writing out eq. (15) and sorting terms into those that depend on
the solution at time step n + 1 and those at time step n, as for eq. (??).
f) Bonus question: Write a codefor the thermal equation with variable thermal con
T
ductivity k: c p T
t = x k x . Assume that the grid spacing x is constant. For
extra bonus, allow for variable grid spacing and variable conductivity.
Excerpt from GEOL557 Numerical Modeling of Earth Systems by Becker and Kaus (2016)
Bibliography
Carslaw, H. S., and J. C. Jaeger (1959), Conduction of Heat in Solids, 2nd ed., Oxford University Press, London, p. 243.
Press, W. H., S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery (1993), Numerical Recipes
in C: The Art of Scientific Computing, 2 ed., Cambridge University Press, Cambridge.