This repository contains Jupyter workbooks for the Partial Differential Equations 3 course. The workbooks cover the numerical methods half of the course and use finite difference methods for the solution of eliptic, parabolic and hyperbolic differential equations. All of these workbooks make use of the matplotlib
, numpy
and scipy
python libraries.
Each workbook covers a different topic from the course. Many of them make use of the refinement_analysis.py
module which must be in the same folder as the workbook so it can be found by the python import:
from refinement_analysis import refinement_analysis
These workbooks contain Worked examples. These are complete solutions with explanations of work being conducted. Separate laboratory problems will be issued which are incomplete and will involve both mathematical and numerical methods for the solution of a particular problem. These will contain the fundamental python tools needed to contruct a numerical solution but will need Python code to be written.
All code is covered by the Creative-Commons by Attribution Licenses and is copyright to The School of Engineering, University of Edinburgh. The code was written by Professor David Ingram.
- Laplace Itterative - Jacobi, Gauss-Siedel and SOR methods for the solution of the Laplace equations.
- Laplace Faster - Making the Gauss-Siedel and SOR methods more computationally efficient by using checker-boarding and other techniques to speed up loops.
- V&V - Verification and validation of solvers. Testiting and checking accuracy including mesh refinement studies (needs
refinement_analysis.py
). - Boundary Conditions - Implementation of Dirichlet, Neumann and Robin boundary conditions for the Laplacian (needs
refinement_analysis.py
). - BiCGStab - The Bi-stabilised conjugate gradient method: A fast, itterative, implicit matrix solver to be used in place of the itterative methods we've used previously (needs
refinement_analysis.py
). - Source Terms - Solving the Poisson equation [i.e. the inhomogenous version of the Laplacian] (needs
refinement_analysis.py
). - Explicit Parabolic Solver - The Forward Time-Centered Space (FTCS) solver for the solution of 1-D parabolic equations (needs
refinement_analysis.py
). - Implicit Parabolic Solver - Using the Crank-Nicholson method to solver for the solution of 1-D parabolic equations (needs
refinement_analysis.py
). - 2D Parabolic - Solving 2D parabolic problems using opperator splitting (the solver used is the explicit FTCS scheme, though it could be modified to use Crank-Nicholson).
- Hyperbolic Solver - Using the Lax-Wendroff and First Order Upwind schemes to solve the 1D linear advection problem with periodic boundary conditions.
The Laboratories folder includes a Jupyter workbook for each of the Laboratories from weeks 1 to 10.
The laboratory folder also contains a folder of scripts and annother of figures. These are needed for the solutions to be available (when released) and for the figures in some of the worksheets. The folder also contains a copy of the refinement_analysis.py
script which is needed for some of the laboratories.
The couursework folder contains Jupyter notebooks needed for the coursework assignments. It also contains the model solution workbook for the courseworks (but only after the submission deadline has passed)